1. 01 10月, 2011 1 次提交
    • J
      mac80211: let drivers inform it about per TID buffered frames · 042ec453
      Johannes Berg 提交于
      For uAPSD implementation, it is necessary to know on
      which ACs frames are buffered. mac80211 obviously
      knows about the frames it has buffered itself, but
      with aggregation many drivers buffer frames. Thus,
      mac80211 needs to be informed about this.
      
      For now, since we don't have APSD in any form, this
      will unconditionally set the TIM bit for the station
      but later with uAPSD only some ACs might cause the
      TIM bit to be set.
      
      ath9k is the only driver using this API and I only
      modify it in the most basic way, it won't be able
      to implement uAPSD with this yet. But it can't do
      that anyway since there's no way to selectively
      release frames to the peer yet.
      
      Since drivers will buffer frames per TID, let them
      inform mac80211 on a per TID basis, mac80211 will
      then sort out the AC mapping itself.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      042ec453
  2. 15 9月, 2011 1 次提交
  3. 14 9月, 2011 1 次提交
  4. 26 8月, 2011 2 次提交
    • G
      mac80211: fix race condition between assoc_done and first EAP packet · 2a33bee2
      Guy Eilam 提交于
      When associating to an AP, the station might miss the first EAP
      packet that the AP sends due to a race condition between the association
      success procedure and the rx flow in mac80211.
      In such cases, the packet might fall in ieee80211_rx_h_check due to
      the fact that the relevant rx->sta wasn't allocated yet.
      Allocation of the relevant station info struct before actually
      sending the association request and setting it with a new
      dummy_sta flag solve this problem.
      The station will accept only EAP packets from the AP while it
      is in the pre-association/dummy state.
      This dummy station entry is not seen by normal sta_info_get()
      calls, only by sta_info_get_bss_rx().
      The driver is not notified for the first insertion of the
      dummy station. The driver is notified only after the association
      is complete and the dummy flag is removed from the station entry.
      That way, all the rest of the code flow should be untouched by
      this change.
      Signed-off-by: NGuy Eilam <guy@wizery.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2a33bee2
    • G
      mac80211: refactor sta_info_insert_rcu to 3 main stages · 8c71df7a
      Guy Eilam 提交于
      Divided the sta_info_insert_rcu function to 3 mini-functions:
      sta_info_insert_check - the initial checks done when inserting
      a new station
      sta_info_insert_ibss - the function that handles the station
      addition for IBSS interfaces
      sta_info_insert_non_ibss - the function that handles the station
      addition in other cases
      
      The outer API was not changed.
      The refactoring was done for better usage of the different
      stages in the station addition in new scenarios added
      in the next commit.
      Signed-off-by: NGuy Eilam <guy@wizery.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8c71df7a
  5. 12 8月, 2011 1 次提交
  6. 09 7月, 2011 1 次提交
  7. 17 5月, 2011 2 次提交
  8. 13 5月, 2011 1 次提交
  9. 27 4月, 2011 1 次提交
    • R
      mac80211: Fix warnings due to -Wunused-but-set-variable · 0915cba3
      Rajkumar Manoharan 提交于
      These warnings are exposed by gcc 4.6.
      net/mac80211/sta_info.c: In function 'sta_info_cleanup_expire_buffered':
      net/mac80211/sta_info.c:590:32: warning: variable 'sdata' set but not used
      net/mac80211/ibss.c: In function 'ieee80211_rx_mgmt_auth_ibss':
      net/mac80211/ibss.c:43:34: warning: variable 'status_code' set but not used
      net/mac80211/work.c: In function 'ieee80211_send_assoc':
      net/mac80211/work.c:203:9: warning: variable 'len' set but not used
      net/mac80211/tx.c: In function '__ieee80211_parse_tx_radiotap':
      net/mac80211/tx.c:1039:35: warning: variable 'sband' set but not used
      net/mac80211/mesh.c: In function 'ieee80211_mesh_rx_queued_mgmt':
      net/mac80211/mesh.c:616:28: warning: variable 'ifmsh' set but not used
       ...
      Signed-off-by: NRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0915cba3
  10. 20 4月, 2011 1 次提交
  11. 13 4月, 2011 1 次提交
  12. 05 4月, 2011 1 次提交
  13. 31 3月, 2011 2 次提交
  14. 22 3月, 2011 1 次提交
  15. 04 2月, 2011 1 次提交
  16. 08 12月, 2010 1 次提交
  17. 25 11月, 2010 1 次提交
  18. 19 11月, 2010 1 次提交
  19. 18 11月, 2010 1 次提交
    • J
      mac80211: fix powersaving clients races · 50a9432d
      Johannes Berg 提交于
      The code to handle powersaving stations has a race:
      when the powersave flag is lifted from a station,
      we could transmit a packet that is being processed
      for TX at the same time right away, even if there
      are other frames queued for it. This would cause
      frame reordering. To fix this, lift the flag only
      under the appropriate lock that blocks TX.
      
      Additionally, the code to allow drivers to block a
      station while frames for it are on the HW queue is
      never re-enabled the station, so traffic would get
      stuck indefinitely. Fix this by clearing the flag
      for this appropriately.
      
      Finally, as an optimisation, don't do anything if
      the driver unblocks an already unblocked station.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      50a9432d
  20. 07 10月, 2010 2 次提交
  21. 28 9月, 2010 1 次提交
  22. 17 9月, 2010 1 次提交
  23. 15 9月, 2010 1 次提交
  24. 26 8月, 2010 1 次提交
  25. 28 7月, 2010 1 次提交
    • J
      mac80211: Fix key freeing to handle unlinked keys · 32162a4d
      Jouni Malinen 提交于
      Key locking simplification removed key->sdata != NULL verification from
      ieee80211_key_free(). While that is fine for most use cases, there is one
      path where this function can be called with an unlinked key (i.e.,
      key->sdata == NULL && key->local == NULL). This results in a NULL pointer
      dereference with the current implementation. This is known to happen at
      least with FT protocol when wpa_supplicant tries to configure the key
      before association.
      
      Avoid the issue by passing in the local pointer to
      ieee80211_key_free(). In addition, do not clear the key from hw_accel
      or debugfs if it has not yet been added. At least the hw_accel one could
      trigger another NULL pointer dereference.
      Signed-off-by: NJouni Malinen <j@w1.fi>
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      32162a4d
  26. 15 6月, 2010 4 次提交
  27. 04 6月, 2010 1 次提交
  28. 25 5月, 2010 1 次提交
  29. 04 5月, 2010 1 次提交
  30. 20 4月, 2010 1 次提交
  31. 09 4月, 2010 1 次提交
  32. 08 4月, 2010 2 次提交
    • J
      mac80211: clean up/fix aggregation code · 098a6070
      Johannes Berg 提交于
      The aggregation code has a number of quirks, like
      inventing an unneeded WLAN_BACK_TIMER value and
      leaking memory under certain circumstances during
      station destruction. Fix these issues by using
      the regular aggregation session teardown code and
      blocking new aggregation sessions, all before the
      station is really destructed.
      
      As a side effect, this gets rid of the long code
      block to destroy aggregation safely.
      
      Additionally, rename tid_state_rx which can only
      have the values IDLE and OPERATIONAL to
      tid_active_rx to make it easier to understand
      that there is no bitwise stuff going on on the
      RX side -- the TX side remains because it needs
      to keep track of the driver and peer states.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      098a6070
    • J
      mac80211: fix station destruction problem · e64b3795
      Johannes Berg 提交于
      When a station w/o a key is destroyed, or when
      a driver submits work for a station and thereby
      references it again, it seems like potentially
      we could reference the station structure while
      it is being destroyed.
      
      Wait for an RCU grace period to elapse before
      finishing destroying the station after we have
      removed the station from the driver and from
      the hash table etc., even in the case where no
      key is associated with the station.
      
      Also, there's no point in deleting the plink
      timer here since it'll be properly deleted just
      a bit later.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e64b3795