15 Feb, 2017

1 commit

  • commit fd551bac4795854adaa87bad7e5136083719802b upstream.

    A previous change to fix checks for NL80211_MESHCONF_HT_OPMODE
    missed setting the flag when replacing FILL_IN_MESH_PARAM_IF_SET
    with checking codes. This results in dropping the received HT
    operation value when called by nl80211_update_mesh_config(). Fix
    this by setting the flag properly.

    Fixes: 9757235f451c ("nl80211: correct checks for NL80211_MESHCONF_HT_OPMODE value")
    Signed-off-by: Masashi Honma
    [rewrite commit message to use Fixes: line]
    Signed-off-by: Johannes Berg
    Signed-off-by: Greg Kroah-Hartman

    Masashi Honma
     

20 Jan, 2017

1 commit

  • commit 753aacfd2e95df6a0caf23c03dc309020765bea9 upstream.

    A single netlink socket might own multiple interfaces *and* a
    scheduled scan request (which might belong to another interface),
    so when it goes away both may need to be destroyed.

    Remove the schedule_scan_stop indirection to fix this - it's only
    needed for interface destruction because of the way this works
    right now, with a single work taking care of all interfaces.

    Fixes: 93a1e86ce10e4 ("nl80211: Stop scheduled scan if netlink client disappears")
    Signed-off-by: Johannes Berg
    Signed-off-by: Greg Kroah-Hartman

    Johannes Berg
     

12 Jan, 2017

1 commit

  • commit 2fa436b3a2a7009c11a3bc03fe0ff4c26e80fd87 upstream.

    NL80211_ATTR_MAC was used to set both the specific BSSID to be scanned
    and the random MAC address to be used when privacy is enabled. When both
    the features are enabled, both the BSSID and the local MAC address were
    getting same value causing Probe Request frames to go with unintended
    DA. Hence, this has been fixed by using a different NL80211_ATTR_BSSID
    attribute to set the specific BSSID (which was the more recent addition
    in cfg80211) for a scan.

    Backwards compatibility with old userspace software is maintained to
    some extent by allowing NL80211_ATTR_MAC to be used to set the specific
    BSSID when scanning without enabling random MAC address use.

    Scanning with random source MAC address was introduced by commit
    ad2b26abc157 ("cfg80211: allow drivers to support random MAC addresses
    for scan") and the issue was introduced with the addition of the second
    user for the same attribute in commit 818965d39177 ("cfg80211: Allow a
    scan request for a specific BSSID").

    Fixes: 818965d39177 ("cfg80211: Allow a scan request for a specific BSSID")
    Signed-off-by: Vamsi Krishna
    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg
    Signed-off-by: Greg Kroah-Hartman

    Vamsi Krishna
     

09 Jan, 2017

1 commit

  • commit e6f462df9acd2a3295e5d34eb29e2823220cf129 upstream.

    When mac80211 abandons an association attempt, it may free
    all the data structures, but inform cfg80211 and userspace
    about it only by sending the deauth frame it received, in
    which case cfg80211 has no link to the BSS struct that was
    used and will not cfg80211_unhold_bss() it.

    Fix this by providing a way to inform cfg80211 of this with
    the BSS entry passed, so that it can clean up properly, and
    use this ability in the appropriate places in mac80211.

    This isn't ideal: some code is more or less duplicated and
    tracing is missing. However, it's a fairly small change and
    it's thus easier to backport - cleanups can come later.

    Signed-off-by: Johannes Berg
    Signed-off-by: Greg Kroah-Hartman

    Johannes Berg
     

18 Nov, 2016

1 commit

  • It's possible to make scanning consume almost arbitrary amounts
    of memory, e.g. by sending beacon frames with random BSSIDs at
    high rates while somebody is scanning.

    Limit the number of BSS table entries we're willing to cache to
    1000, limiting maximum memory usage to maybe 4-5MB, but lower
    in practice - that would be the case for having both full-sized
    beacon and probe response frames for each entry; this seems not
    possible in practice, so a limit of 1000 entries will likely be
    closer to 0.5 MB.

    Cc: stable@vger.kernel.org
    Signed-off-by: Johannes Berg

    Johannes Berg
     

15 Nov, 2016

1 commit

  • Some drivers (ath10k) report MCS 9 @ 20MHz, which
    technically isn't defined. To get more meaningful value
    than 0 out of this however, just extrapolate a bitrate
    from ratio of MCS 7 and 9 in channels where it is allowed.

    Signed-off-by: Thomas Pedersen
    [add a comment about it in the code]
    Signed-off-by: Johannes Berg

    Pedersen, Thomas
     

26 Oct, 2016

1 commit

  • When suspending without WoWLAN, cfg80211 will ask drivers to
    disconnect. Even when the driver does this synchronously, and
    immediately returns with a notification, cfg80211 schedules
    the handling thereof to a workqueue, and may then call back
    into the driver when the driver was already suspended/ing.

    Fix this by processing all events caused by cfg80211_leave_all()
    directly after that function returns. The driver still needs to
    do the right thing here and wait for the firmware response, but
    that is - at least - true for mwifiex where this occurred.

    Reported-by: Amitkumar Karwar
    Tested-by: Amitkumar Karwar
    Signed-off-by: Johannes Berg

    Johannes Berg
     

12 Oct, 2016

2 commits


04 Oct, 2016

1 commit

  • Resolve the merge conflict between Felix's/my and Toke's patches
    coming into the tree through net and mac80211-next respectively.
    Most of Felix's changes go away due to Toke's new infrastructure
    work, my patch changes to "goto begin" (the label wasn't there
    before) instead of returning NULL so flow control towards drivers
    is preserved better.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

30 Sep, 2016

6 commits

  • Provide a function that reports NAN DE function termination. The function
    may be terminated due to one of the following reasons: user request,
    ttl expiration or failure.
    If the NAN instance is tied to the owner, the notification will be
    sent to the socket that started the NAN interface only

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Ayala Beker
     
  • Provide a function the driver can call to report a match.
    This will send the event to the user space.
    If the NAN instance is tied to the owner, the notifications will be
    sent to the socket that started the NAN interface only.

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Ayala Beker
     
  • Some NAN configuration paramaters may change during the operation of
    the NAN device. For example, a user may want to update master preference
    value when the device gets plugged/unplugged to the power.
    Add API that allows to do so.

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Ayala Beker
     
  • A NAN function can be either publish, subscribe or follow
    up. Make all the necessary verifications and just pass the
    request to the driver.
    Allow the user space application that starts NAN to
    forbid any other socket to add or remove functions.

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Ayala Beker
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Ayala Beker
     
  • This allows user space to start/stop NAN interface.
    A NAN interface is like P2P device in a few aspects: it
    doesn't have a netdev associated to it.
    Add the new interface type and prevent operations that
    can't be executed on NAN interface like scan.

    Define several attributes that may be configured by user space
    when starting NAN functionality (master preference and dual
    band operation)

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Ayala Beker
     
  • Add support for drivers that implement static WEP internally, i.e.
    expose connection keys to the driver in connect flow and don't
    upload the keys after the connection.

    Signed-off-by: David Spinadel
    Signed-off-by: Johannes Berg

    David Spinadel
     

29 Sep, 2016

1 commit

  • Jouni reported that during (repeated) wext_pmf test runs (from the
    wpa_supplicant hwsim test suite) the kernel crashes. The reason is
    that after the key is set, the wext code still unnecessarily stores
    it into the key cache. Despite smatch pointing out an overflow, I
    failed to identify the possibility for this in the code and missed
    it during development of the earlier patch series.

    In order to fix this, simply check that we never store anything but
    WEP keys into the cache, adding a comment as to why that's enough.

    Also, since the cache is still allocated early even if it won't be
    used in many cases, add a comment explaining why - otherwise we'd
    have to roll back key settings to the driver in case of allocation
    failures, which is far more difficult.

    Fixes: 89b706fb28e4 ("cfg80211: reduce connect key caching struct size")
    Reported-by: Jouni Malinen
    Bisected-by: Jouni Malinen
    Signed-off-by: Johannes Berg

    Johannes Berg
     

26 Sep, 2016

2 commits


23 Sep, 2016

1 commit


19 Sep, 2016

1 commit

  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    This time we have various things - all across the board:
    * MU-MIMO sniffer support in mac80211
    * a create_singlethread_workqueue() cleanup
    * interface dump filtering that was documented but not implemented
    * support for the new radiotap timestamp field
    * send delBA in two unexpected conditions (as required by the spec)
    * connect keys cleanups - allow only WEP with index 0-3
    * per-station aggregation limit to work around broken APs
    * debugfs improvement for the integrated codel algorithm
    and various other small improvements and cleanups.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     

16 Sep, 2016

1 commit

  • There are a few places where an IE that matches not only the EID, but
    also other bytes inside the element, needs to be found. To simplify
    that and reduce the amount of similar code, implement a new helper
    function to match the EID and an extra array of bytes.

    Additionally, simplify cfg80211_find_vendor_ie() by using the new
    match function.

    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Luca Coelho
     

15 Sep, 2016

4 commits


14 Sep, 2016

7 commits


13 Sep, 2016

1 commit


12 Sep, 2016

2 commits

  • The workqueue "cfg80211_wq" is involved in cleanup, scan and event related
    works. It queues multiple work items &rdev->event_work,
    &rdev->dfs_update_channels_wk,
    &wiphy_to_rdev(request->wiphy)->scan_done_wk,
    &wiphy_to_rdev(wiphy)->sched_scan_results_wk, which require strict
    execution ordering.
    Hence, an ordered dedicated workqueue has been used.

    Since it's a wireless driver, WQ_MEM_RECLAIM has been set to ensure
    forward progress under memory pressure.

    Signed-off-by: Bhaktipriya Shridhar
    Acked-by: Tejun Heo
    Signed-off-by: Johannes Berg

    Bhaktipriya Shridhar
     
  • This patch allows GET_INTERFACE dumps to be filtered based on
    NL80211_ATTR_WIPHY or NL80211_ATTR_WDEV. The documentation for
    GET_INTERFACE mentions that this is possible:
    "Request an interface's configuration; either a dump request on
    a %NL80211_ATTR_WIPHY or ..."

    However, this behavior has not been implemented until now.

    Johannes: rewrite most of the patch:
    * use nl80211_dump_wiphy_parse() to also allow passing an interface
    to be able to dump its siblings
    * fix locking (must hold rtnl around using nl80211_fam.attrbuf)
    * make init self-contained instead of relying on other cb->args

    Signed-off-by: Denis Kenzior
    Signed-off-by: Johannes Berg

    Denis Kenzior
     

31 Aug, 2016

1 commit

  • …kernel/git/jberg/mac80211

    Johannes Berg says:

    ====================
    Three little fixes:
    * revert a recent wext patch, which Ben Hutchings noticed was
    wrong, and it turns out not to be necessary for any driver

    * fix an infinite loop that can occur under certain conditions
    in mac80211's TDLS code (depending on regulatory information)

    * add a cfg80211_get_station() static inline when cfg80211 isn't
    built, to allow other modules to not have to depend on it for it
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     

18 Aug, 2016

2 commits

  • Minor overlapping changes for both merge conflicts.

    Resolution work done by Stephen Rothwell was used
    as a reference.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Pull networking fixes from David Miller:

    1) Buffers powersave frame test is reversed in cfg80211, fix from Felix
    Fietkau.

    2) Remove bogus WARN_ON in openvswitch, from Jarno Rajahalme.

    3) Fix some tg3 ethtool logic bugs, and one that would cause no
    interrupts to be generated when rx-coalescing is set to 0. From
    Satish Baddipadige and Siva Reddy Kallam.

    4) QLCNIC mailbox corruption and napi budget handling fix from Manish
    Chopra.

    5) Fix fib_trie logic when walking the trie during /proc/net/route
    output than can access a stale node pointer. From David Forster.

    6) Several sctp_diag fixes from Phil Sutter.

    7) PAUSE frame handling fixes in mlxsw driver from Ido Schimmel.

    8) Checksum fixup fixes in bpf from Daniel Borkmann.

    9) Memork leaks in nfnetlink, from Liping Zhang.

    10) Use after free in rxrpc, from David Howells.

    11) Use after free in new skb_array code of macvtap driver, from Jason
    Wang.

    12) Calipso resource leak, from Colin Ian King.

    13) mediatek bug fixes (missing stats sync init, etc.) from Sean Wang.

    14) Fix bpf non-linear packet write helpers, from Daniel Borkmann.

    15) Fix lockdep splats in macsec, from Sabrina Dubroca.

    16) hv_netvsc bug fixes from Vitaly Kuznetsov, mostly to do with VF
    handling.

    17) Various tc-action bug fixes, from CONG Wang.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
    net_sched: allow flushing tc police actions
    net_sched: unify the init logic for act_police
    net_sched: convert tcf_exts from list to pointer array
    net_sched: move tc offload macros to pkt_cls.h
    net_sched: fix a typo in tc_for_each_action()
    net_sched: remove an unnecessary list_del()
    net_sched: remove the leftover cleanup_a()
    mlxsw: spectrum: Allow packets to be trapped from any PG
    mlxsw: spectrum: Unmap 802.1Q FID before destroying it
    mlxsw: spectrum: Add missing rollbacks in error path
    mlxsw: reg: Fix missing op field fill-up
    mlxsw: spectrum: Trap loop-backed packets
    mlxsw: spectrum: Add missing packet traps
    mlxsw: spectrum: Mark port as active before registering it
    mlxsw: spectrum: Create PVID vPort before registering netdevice
    mlxsw: spectrum: Remove redundant errors from the code
    mlxsw: spectrum: Don't return upon error in removal path
    i40e: check for and deal with non-contiguous TCs
    ixgbe: Re-enable ability to toggle VLAN filtering
    ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths
    ...

    Linus Torvalds
     

12 Aug, 2016

1 commit