1. 25 Mar, 2013 2 commits
  2. 24 Mar, 2013 2 commits
    • Ben Greear's avatar
      mac80211: Don't restart sta-timer if not associated. · 370bd005
      Ben Greear authored
      I found another crash when deleting lots of virtual stations
      in a congested environment.  I think the problem is that
      the ieee80211_mlme_notify_scan_completed could call
      ieee80211_restart_sta_timer for a stopped interface
      that was about to be deleted.
      
      With the following patch I am unable to reproduce the
      crash.
      Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
      [move check, also make the same change in mesh]
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      370bd005
    • Johannes Berg's avatar
      cfg80211: always check for scan end on P2P device · f9f47529
      Johannes Berg authored
      If a P2P device wdev is removed while it has a scan, then the
      scan completion might crash later as it is already freed by
      that time. To avoid the crash always check the scan completion
      when the P2P device is being removed for some reason. If the
      driver already canceled it, don't want and free it, otherwise
      warn and leak it to avoid later crashes.
      
      In order to do this, locking needs to be changed away from the
      rdev mutex (which can't always be guaranteed). For now, use
      the sched_scan_mtx instead, I'll rename it to just scan_mtx in
      a later patch.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f9f47529
  3. 20 Mar, 2013 2 commits
  4. 11 Mar, 2013 1 commit
  5. 07 Mar, 2013 2 commits
  6. 06 Mar, 2013 1 commit
    • Johannes Berg's avatar
      mac80211: always synchronize_net() during station removal · 27a737ff
      Johannes Berg authored
      If there are keys left during station removal, then a
      synchronize_net() will be done (for each key, I have a
      patch to address this for 3.10), otherwise it won't be
      done at all which causes issues because the station
      could be used for TX while it's being removed from the
      driver -- that might confuse the driver.
      
      Fix this by always doing synchronize_net() if no key
      was present any more.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      27a737ff
  7. 02 Mar, 2013 1 commit
  8. 01 Mar, 2013 3 commits
    • Johannes Berg's avatar
      mac80211: fix VHT MCS calculation · 24af717c
      Johannes Berg authored
      The VHT MCSes we advertise to the AP were supposed to
      be restricted to the AP, but due to a bug in the logic
      mac80211 will advertise rates to the AP that aren't
      even supported by the local device. To fix this skip
      any adjustment if the NSS isn't supported at all.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      24af717c
    • Marco Porsch's avatar
      mac80211: fix oops on mesh PS broadcast forwarding · 7cbf9d01
      Marco Porsch authored
      Introduced with de74a1d9
      "mac80211: fix WPA with VLAN on AP side with ps-sta".
      Apparently overwrites the sdata pointer with non-valid data in
      the case of mesh.
      Fix this by checking for IFTYPE_AP_VLAN.
      Signed-off-by: default avatarMarco Porsch <marco@cozybit.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7cbf9d01
    • Johannes Berg's avatar
      nl80211: increase wiphy dump size dynamically · 645e77de
      Johannes Berg authored
      Given a device with many channels capabilities the wiphy
      information can still overflow even though its size in
      3.9 was reduced to 3.8 levels. For new userspace and
      kernel 3.10 we're going to implement a new "split dump"
      protocol that can use multiple messages per wiphy.
      
      For now though, add a workaround to be able to send more
      information to userspace. Since generic netlink doesn't
      have a way to set the minimum dump size globally, and we
      wouldn't really want to set it globally anyway, increase
      the size only when needed, as described in the comments.
      As userspace might not be prepared for large buffers, we
      can only use 4k.
      
      Also increase the size for the get_wiphy command.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      645e77de
  9. 28 Feb, 2013 1 commit
  10. 27 Feb, 2013 1 commit
  11. 26 Feb, 2013 5 commits
  12. 25 Feb, 2013 4 commits
  13. 18 Feb, 2013 5 commits
  14. 15 Feb, 2013 10 commits
    • Seth Forshee's avatar
      mac80211: Fix incorrect use of STA_PR_FMT in trace points · 15ac7c47
      Seth Forshee authored
      Several tracepoints are using STA_PR_FMT where STA_PR_ARG should be
      used, resulting in messages like "phy0 sta:ARG TYPE NOT FIELD BUT 1".
      Change these to STA_PR_ARG.
      Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      15ac7c47
    • Bob Copeland's avatar
      mac80211: enable vif.cab_queue for mesh · 8ffb5c00
      Bob Copeland authored
      Since mesh powersaving was added, pending bcast/mcast frames may go out the
      CAB queue now.  Unfortunately, the queue was only set up for AP mode, so we
      would try to tx on the IEEE80211_INVAL_HW_QUEUE.  Allow cab_queue for mesh
      interfaces as well.
      
      Fixes the following warning (or crash without MAC80211_VERBOSE_DEBUG):
      
      WARNING: at net/mac80211/tx.c:1223 __ieee80211_tx+0x162/0x35f [mac80211]()
      Modules linked in: mac80211_hwsim mac80211 cfg80211 [...]
      Pid: 3085, comm: avahi-daemon Tainted: G        W    3.8.0-rc1+ #377
      Call Trace:
       [<ffffffff81045c20>] warn_slowpath_common+0x83/0x9c
       [<ffffffff81045c53>] warn_slowpath_null+0x1a/0x1c
       [<ffffffffa083aef0>] __ieee80211_tx+0x162/0x35f [mac80211]
       [<ffffffffa083cb1d>] ieee80211_tx+0xd3/0xf9 [mac80211]
       [<ffffffffa083cc0f>] ieee80211_xmit+0xcc/0xd5 [mac80211]
       [<ffffffffa083db59>] ieee80211_subif_start_xmit+0xc53/0xcd8 [mac80211]
       [<ffffffff81319acd>] dev_hard_start_xmit+0x259/0x3ce
       [<ffffffff81333d6b>] sch_direct_xmit+0x74/0x17d
       [<ffffffff8131a0b1>] dev_queue_xmit+0x230/0x414
       [<ffffffff8134877a>] ip_finish_output2+0x348/0x3aa
       [<ffffffff81349029>] ip_finish_output+0x6c/0x71
       [<ffffffff81349046>] NF_HOOK_COND.constprop.44+0x18/0x58
       [<ffffffff8134a03a>] ip_mc_output+0x134/0x13c
       [<ffffffff8134835a>] dst_output+0x18/0x1c
       [<ffffffff81349a24>] ip_local_out+0x20/0x24
       [<ffffffff8134a8cf>] ip_send_skb+0x16/0x3c
       [<ffffffff8136bfba>] udp_send_skb+0x254/0x2b9
       [<ffffffff8136c85e>] udp_sendmsg+0x5a8/0x7d4
      Signed-off-by: default avatarBob Copeland <bob@cozybit.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8ffb5c00
    • Johannes Berg's avatar
      mac80211: clean up mesh code · bf7cd94d
      Johannes Berg authored
      There's various code with strange indentation,
      questionable loop and locking constructs, etc.
      
      The bigger change is moving the "sdata" argument
      to the first argument of all functions, like all
      other mac80211 functions that have one.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      bf7cd94d
    • Johannes Berg's avatar
      mac80211: prevent spurious HT/VHT downgrade message · 586e01ed
      Johannes Berg authored
      Even when connecting to an AP that doesn't support VHT,
      and even when the local device doesn't support it either,
      the downgrade message gets printed. Suppress the message
      if HT and/or VHT is disabled.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      586e01ed
    • Johannes Berg's avatar
      nl80211: renumber NL80211_FEATURE_FULL_AP_CLIENT_STATE · 932dd97c
      Johannes Berg authored
      Adding the flag to mac80211 already without testing was
      clearly a mistake, one that we now pay for by having to
      reserve bit 13 forever. The problem is cfg80211 doesn't
      allow capability/rate changes for station entries that
      were added unassociated, so the station entries cannot
      be set up properly when marked associated.
      
      Change the NL80211_FEATURE_FULL_AP_CLIENT_STATE value
      to make it clear to userspace implementations that all
      current kernels don't actually support it, even though
      the previous bit is set, and of course also remove the
      flag from mac80211 until we test and fix the issues.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      932dd97c
    • Jouni Malinen's avatar
      cfg80211: Pass TDLS peer's QoS/HT/VHT information during set_station · df881293
      Jouni Malinen authored
      The information of the peer's capabilities is required for the driver
      to perform TDLS Peer UAPSD operations. This information of the peer is
      passed by the supplicant using NL80211_CMD_SET_STATION command. This
      commit enhances the function nl80211_set_station to pass this
      information of the peer to the driver in case this command is used
      with the TDLS peer STA.
      
      In addition, make the HT/VHT capability configuration handled more
      consistently for other STA cases (reject both instead of just HT).
      Signed-off-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      df881293
    • Jouni Malinen's avatar
      cfg80211: Pass station (extended) capability info to kernel · 9d62a986
      Jouni Malinen authored
      The information of the peer's capabilities and extended capabilities are
      required for the driver to perform TDLS Peer UAPSD operations and off
      channel operations. This information of the peer is passed from user space
      using NL80211_CMD_SET_STATION command. This commit enhances
      the function nl80211_set_station to pass the capability information of
      the peer to the driver.
      
      Similarly, there may be need for capability information for other modes,
      so allow this to be provided with both add_station and change_station.
      Signed-off-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      9d62a986
    • Johannes Berg's avatar
      mac80211: advertise operating mode notification capability · c6f9d6c3
      Johannes Berg authored
      Use the new extended capabilities advertising to advertise
      the fact that operating mode notification is supported.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c6f9d6c3
    • Johannes Berg's avatar
      cfg80211: advertise extended capabilities to userspace · a50df0c4
      Johannes Berg authored
      In many cases, userspace may need to know which of the
      802.11 extended capabilities ("Extended Capabilities
      element") are implemented in the driver or device, to
      include them e.g. in beacons, assoc request/response
      or other frames. Add a new nl80211 attribute to hold
      the extended capabilities bitmap for this.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      a50df0c4
    • Johannes Berg's avatar
      mac80211: stop modifying HT SMPS capability · af0ed69b
      Johannes Berg authored
      Instead of modifying the HT SMPS capability field
      for stations, track the SMPS mode explicitly in a
      new field in the station struct and use it in the
      drivers that care about it. This simplifies the
      code using it.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      af0ed69b