1. 06 10月, 2010 1 次提交
  2. 25 9月, 2010 2 次提交
  3. 17 9月, 2010 2 次提交
  4. 28 8月, 2010 3 次提交
  5. 25 8月, 2010 1 次提交
  6. 27 7月, 2010 1 次提交
  7. 21 7月, 2010 1 次提交
    • J
      mac80211: move QoS-enable to BSS info · 4ced3f74
      Johannes Berg 提交于
      Ever since
      
      commit e1b3ec1a
      Author: Stanislaw Gruszka <sgruszka@redhat.com>
      Date:   Mon Mar 29 12:18:34 2010 +0200
      
          mac80211: explicitly disable/enable QoS
      
      mac80211 is telling drivers, in particular
      iwlwifi, whether QoS is enabled or not.
      
      However, this is only relevant for station mode,
      since only then will any device send nullfunc
      frames and need to know whether they should be
      QoS frames or not. In other modes, there are
      (currently) no frames the device is supposed to
      send.
      
      When you now consider virtual interfaces, it
      becomes apparent that the current mechanism is
      inadequate since it enables/disables QoS on a
      global scale, where for nullfunc frames it has
      to be on a per-interface scale.
      
      Due to the above considerations, we can change
      the way mac80211 advertises the QoS state to
      drivers to only ever advertise it as "off" in
      station mode, and make it a per-BSS setting.
      Tested-by: NStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4ced3f74
  8. 15 6月, 2010 1 次提交
    • J
      mac80211: simplify station/aggregation code · 2a419056
      Johannes Berg 提交于
      A number of places use RCU locking for accessing
      the station list, even though they do not need
      to. Use mutex locking instead to prepare for the
      locking changes I want to make. The mlme code is
      also using a WLAN_STA_DISASSOC flag that has the
      same meaning as WLAN_STA_BLOCK_BA, so use that.
      
      While doing so, combine places where we loop
      over stations twice, and optimise away some of
      the loops by checking if the hardware supports
      aggregation at all first.
      
      Also fix a more theoretical race condition: right
      now we could resume, set up an aggregation session,
      and right after tear it down again due to the code
      that is needed for hardware reconfiguration here.
      Also mark add a comment to that code marking it as
      a workaround.
      
      Finally, remove a pointless aggregation disabling
      loop when an interface is stopped, directly after
      that we remove all stations from it which will also
      disable all aggregation sessions that may still be
      active, and does so in a race-free way unlike the
      current loop that doesn't block new sessions.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2a419056
  9. 08 5月, 2010 1 次提交
  10. 09 4月, 2010 1 次提交
  11. 08 4月, 2010 1 次提交
  12. 01 4月, 2010 1 次提交
  13. 31 3月, 2010 2 次提交
  14. 09 2月, 2010 2 次提交
    • W
      mac80211: tear down all agg queues when restart/reconfig hw · 74e2bd1f
      Wey-Yi Guy 提交于
      When there is a need to restart/reconfig hw, tear down all the
      aggregation queues and let the mac80211 and driver get in-sync to have
      the opportunity to re-establish the aggregation queues again.
      
      Need to wait until driver re-establish all the station information before tear
      down the aggregation queues, driver(at least iwlwifi driver) will reject the
      stop aggregation queue request if station is not ready. But also need to make
      sure the aggregation queues are tear down before waking up the queues, so
      mac80211 will not sending frames with aggregation bit set.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      74e2bd1f
    • 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
  15. 16 1月, 2010 1 次提交
  16. 13 1月, 2010 3 次提交
    • K
      mac80211: add U-APSD client support · ab13315a
      Kalle Valo 提交于
      Add Unscheduled Automatic Power-Save Delivery (U-APSD) client support. The
      idea is that the data frames from the client trigger AP to send the buffered
      frames with ACs which have U-APSD enabled. This decreases latency and makes it
      possible to save even more power.
      
      Driver needs to use IEEE80211_HW_UAPSD to enable the feature. The current
      implementation assumes that firmware takes care of the wakeup and
      hardware needing IEEE80211_HW_PS_NULLFUNC_STACK is not yet supported.
      
      Tested with wl1251 on a Nokia N900 and Cisco Aironet 1231G AP and running
      various test traffic with ping.
      Signed-off-by: NKalle Valo <kalle.valo@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ab13315a
    • L
      mac80211: flush workqueue before calling driver ->stop() method · 678f415f
      Lennert Buytenhek 提交于
      Since commit "mwl8k: handle station database update for AP's sta entry
      via ->sta_notify()", mwl8k every now and then gets a command timeout
      when ifconfig'ing a STA interface down.  This turns out to be due to
      mwl8k_stop() being called while the work queue item that was scheduled
      by mwl8k_sta_notify() to remove the STA entry for the associated AP is
      still queued, and the former disables interrupts so that when the
      latter eventually runs, a command completion interrupt is never seen.
      
      Fix this by changing ieee80211_stop_device() so that the workqueue is
      flushed before drv_stop() is called, instead of doing it the other way
      around as is done now.  (As ->stop() is allowed to sleep, there isn't
      any reason for drivers to queue work from within it.)
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      678f415f
    • K
      mac80211: use Probe Request template when sending a direct scan · 7c12ce8b
      Kalle Valo 提交于
      As mac80211 now has a separate function for creating Probe Request templates,
      better to use it when sending direct Probe Requests to an AP. Only the
      bssid needs to be updated in the template before sending it.
      Signed-off-by: NKalle Valo <kalle.valo@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7c12ce8b
  17. 06 1月, 2010 2 次提交
  18. 05 1月, 2010 1 次提交
  19. 29 12月, 2009 4 次提交
  20. 23 12月, 2009 2 次提交
  21. 22 12月, 2009 2 次提交
  22. 08 12月, 2009 1 次提交
  23. 20 11月, 2009 1 次提交
    • J
      mac80211: fix resume · ceb99fe0
      Johannes Berg 提交于
      When mac80211 resumes, it currently first sets suspended
      to false so the driver can start doing things and we can
      receive frames.
      
      However, if we actually receive frames then it can end
      up starting some work which adds timers and then later
      runs into a BUG_ON in the timer code because it tries
      add_timer() on a pending timer.
      
      Fix this by keeping track of the resuming process by
      introducing a new variable 'resuming' which gets set to
      true early on instead of setting 'suspended' to false,
      and allow queueing work but not receiving frames while
      resuming.
      Reported-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ceb99fe0
  24. 19 11月, 2009 2 次提交
  25. 14 11月, 2009 1 次提交