1. 26 8月, 2011 1 次提交
    • 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
  2. 12 8月, 2011 1 次提交
  3. 09 7月, 2011 1 次提交
  4. 17 5月, 2011 2 次提交
  5. 13 5月, 2011 1 次提交
  6. 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
  7. 20 4月, 2011 1 次提交
  8. 13 4月, 2011 1 次提交
  9. 05 4月, 2011 1 次提交
  10. 31 3月, 2011 2 次提交
  11. 22 3月, 2011 1 次提交
  12. 04 2月, 2011 1 次提交
  13. 08 12月, 2010 1 次提交
  14. 25 11月, 2010 1 次提交
  15. 19 11月, 2010 1 次提交
  16. 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
  17. 07 10月, 2010 2 次提交
  18. 28 9月, 2010 1 次提交
  19. 17 9月, 2010 1 次提交
  20. 15 9月, 2010 1 次提交
  21. 26 8月, 2010 1 次提交
  22. 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
  23. 15 6月, 2010 4 次提交
  24. 04 6月, 2010 1 次提交
  25. 25 5月, 2010 1 次提交
  26. 04 5月, 2010 1 次提交
  27. 20 4月, 2010 1 次提交
  28. 09 4月, 2010 1 次提交
  29. 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
  30. 07 4月, 2010 1 次提交
  31. 11 3月, 2010 1 次提交
  32. 09 2月, 2010 1 次提交
    • J
      mac80211: allow station add/remove to sleep · 34e89507
      Johannes Berg 提交于
      Many drivers would like to sleep during station
      addition and removal, and currently have a high
      complexity there from not being able to.
      
      This introduces two new callbacks sta_add() and
      sta_remove() that drivers can implement instead
      of using sta_notify() and that can sleep, and
      the new sta_add() callback is also allowed to
      fail.
      
      The reason we didn't do this previously is that
      the IBSS code wants to insert stations from the
      RX path, which is a tasklet, so cannot sleep.
      This patch will keep the station allocation in
      that path, but moves adding the station to the
      driver out of line. Since the addition can now
      fail, we can have IBSS peer structs the driver
      rejected -- in that case we still talk to the
      station but never tell the driver about it in
      the control.sta pointer. If there will ever be
      a driver that has a low limit on the number of
      stations and that cannot talk to any stations
      that are not known to it, we need to do come up
      with a new strategy of handling larger IBSSs,
      maybe quicker expiry or rejecting peers.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      34e89507
  33. 13 1月, 2010 1 次提交