1. 24 3月, 2013 1 次提交
  2. 02 3月, 2013 1 次提交
    • J
      mac80211: fix VHT MCS calculation · 24af717c
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      24af717c
  3. 27 2月, 2013 2 次提交
    • B
      mac80211: Fix crash due to un-canceled work-items · 49921859
      Ben Greear 提交于
      Some mlme work structs are not cancelled on disassociation
      nor interface deletion, which leads to them running after
      the memory has been freed
      
      There is not a clean way to cancel these in the disassociation
      logic because they must be canceled outside of the ifmgd->mtx
      lock, so just cancel them in mgd_stop logic that tears down
      the station.
      
      This fixes the crashes we see in 3.7.9+.  The crash stack
      trace itself isn't so helpful, but this warning gives
      more useful info:
      
      WARNING: at /home/greearb/git/linux-3.7.dev.y/lib/debugobjects.c:261 debug_print_object+0x7c/0x8d()
      ODEBUG: free active (active state 0) object type: work_struct hint: ieee80211_sta_monitor_work+0x0/0x14 [mac80211]
      Modules linked in: [...]
      Pid: 14743, comm: iw Tainted: G         C O 3.7.9+ #11
      Call Trace:
       [<ffffffff81087ef8>] warn_slowpath_common+0x80/0x98
       [<ffffffff81087fa4>] warn_slowpath_fmt+0x41/0x43
       [<ffffffff812a2608>] debug_print_object+0x7c/0x8d
       [<ffffffff812a2bca>] debug_check_no_obj_freed+0x95/0x1c3
       [<ffffffff8114cc69>] slab_free_hook+0x70/0x79
       [<ffffffff8114ea3e>] kfree+0x62/0xb7
       [<ffffffff8149f465>] netdev_release+0x39/0x3e
       [<ffffffff8136ad67>] device_release+0x52/0x8a
       [<ffffffff812937db>] kobject_release+0x121/0x158
       [<ffffffff81293612>] kobject_put+0x4c/0x50
       [<ffffffff8148f0d7>] netdev_run_todo+0x25c/0x27e
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      49921859
    • B
      mac80211: stop timers before canceling work items · 9b5bd5a4
      Ben Greear 提交于
      Re-order the quiesce code so that timers are always
      stopped before work-items are flushed. This was not
      the problem I saw, but I think it may still be more
      correct.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9b5bd5a4
  4. 15 2月, 2013 15 次提交
  5. 12 2月, 2013 8 次提交
  6. 11 2月, 2013 1 次提交
    • J
      mac80211: fix channel selection bug · 3d9646d0
      Johannes Berg 提交于
      When trying to connect to an AP that advertises HT but not
      VHT, the mac80211 code erroneously uses the configuration
      from the AP as is instead of checking it against regulatory
      and local capabilities. This can lead to using an invalid
      or even inexistent channel (like 11/HT40+).
      
      Additionally, the return flags from downgrading must be
      ORed together, to collect them from all of the downgrades.
      Also clarify the message.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      3d9646d0
  7. 08 2月, 2013 1 次提交
  8. 05 2月, 2013 1 次提交
  9. 04 2月, 2013 2 次提交
  10. 31 1月, 2013 3 次提交
    • J
      mac80211: start auth/assoc timeout on frame status · 1672c0e3
      Johannes Berg 提交于
      When sending authentication/association frames they
      might take a bit of time to go out because we may
      have to synchronise with the AP, in particular in
      the case where it's really a P2P GO. In this case
      the 200ms fixed timeout could potentially be too
      short if the beacon interval is relatively large.
      
      For drivers that report TX status we can do better.
      Instead of starting the timeout directly, start it
      only when the frame status arrives. Since then the
      frame was out on the air, we can wait shorter (the
      typical response time is supposed to be 30ms, wait
      100ms.) Also, if the frame failed to be transmitted
      try again right away instead of waiting.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1672c0e3
    • E
      mac80211: inform the driver about update of dtim_period · c65dd147
      Emmanuel Grumbach 提交于
      Currently, when the driver requires the DTIM period,
      mac80211 will wait to hear a beacon before association.
      This behavior is suboptimal since some drivers may be
      able to deal with knowing the DTIM period after the
      association, if they get it at all.
      
      To address this, notify the drivers with bss_info_changed
      with the new BSS_CHANGED_DTIM_PERIOD flag when the DTIM
      becomes known. This might be when changing to associated,
      or later when the entire association was done with only
      probe response information.
      
      Rename the hardware flag for the current behaviour to
      IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC to more accurately
      reflect its behaviour. IEEE80211_HW_NEED_DTIM_PERIOD is
      no longer accurate as all drivers get the DTIM period
      now, just not before association.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      c65dd147
    • J
      mac80211: remove assoc data "sent_assoc" · fdcb7869
      Johannes Berg 提交于
      The field is never used, so remove it.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      fdcb7869
  11. 24 1月, 2013 3 次提交
    • J
      mac80211: remove redundant check · 782d2673
      Johannes Berg 提交于
      There's no need to have two checks for "associated"
      in ieee80211_sta_restart(), make the first one locked
      to not race (unlikely at this point during resume)
      and remove the second check.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      782d2673
    • J
      mac80211: fix aggregation state with current drivers · 8147dc7f
      Johannes Berg 提交于
      For drivers that don't actually flush their queues when
      aggregation stop with the IEEE80211_AMPDU_TX_STOP_FLUSH
      or IEEE80211_AMPDU_TX_STOP_FLUSH_CONT reasons is done,
      like iwlwifi or iwlegacy, mac80211 can then transmit on
      a TID that the driver still considers busy. This happens
      in the following way:
      
       - IEEE80211_AMPDU_TX_STOP_FLUSH requested
       - driver marks TID as emptying
       - mac80211 removes tid_tx data, this can copy packets
         to the TX pending queues and also let new packets
         through to the driver
       - driver gets unexpected TX as it wasn't completely
         converted to the new API
      
      In iwlwifi, this lead to the following warning:
      
      WARNING: at drivers/net/wireless/iwlwifi/dvm/tx.c:442 iwlagn_tx_skb+0xc47/0xce0
      Tx while agg.state = 4
      Modules linked in: [...]
      Pid: 0, comm: kworker/0:0 Tainted: G        W   3.1.0 #1
      Call Trace:
       [<c1046e42>] warn_slowpath_common+0x72/0xa0
       [<c1046f13>] warn_slowpath_fmt+0x33/0x40
       [<fddffa17>] iwlagn_tx_skb+0xc47/0xce0 [iwldvm]
       [<fddfcaa3>] iwlagn_mac_tx+0x23/0x40 [iwldvm]
       [<fd8c98b6>] __ieee80211_tx+0xf6/0x3c0 [mac80211]
       [<fd8cbe00>] ieee80211_tx+0xd0/0x100 [mac80211]
       [<fd8cc176>] ieee80211_xmit+0x96/0xe0 [mac80211]
       [<fd8cc578>] ieee80211_subif_start_xmit+0x348/0xc80 [mac80211]
       [<c1445207>] dev_hard_start_xmit+0x337/0x6d0
       [<c145eee9>] sch_direct_xmit+0xa9/0x210
       [<c14462c0>] dev_queue_xmit+0x1b0/0x8e0
      
      Fortunately, solving this problem is easy as the station
      is being destroyed, so such transmit packets can only
      happen due to races. Instead of trying to close the race
      just let the race not reach the drivers by making two
      changes:
       1) remove the explicit aggregation session teardown in
          the managed mode code, the same thing will be done
          when the station is removed, in __sta_info_destroy.
       2) When aggregation stop with AGG_STOP_DESTROY_STA is
          requested, leave the tid_tx data around as stopped.
          It will be cleared and freed in cleanup_single_sta
          later, but until then any racy packets will be put
          onto the tid_tx pending queue instead of transmitted
          which is fine since the station is being removed.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8147dc7f
    • E
      mac80211: provide the vif in rssi_callback · 887da917
      Emmanuel Grumbach 提交于
      Since drivers can support several BSS / P2P Client
      interfaces, the rssi callback needs to inform the driver
      about the interface teh rssi event relates to.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      887da917
  12. 19 1月, 2013 1 次提交
  13. 11 1月, 2013 1 次提交