1. 27 Feb, 2009 1 commit
    • Johannes Berg's avatar
      mac80211: fix aggregation for hardware with ampdu queues · 96f5e66e
      Johannes Berg authored
      Hardware with AMPDU queues currently has broken aggregation.
      
      This patch fixes it by making all A-MPDUs go over the regular AC queues,
      but keeping track of the hardware queues in mac80211. As a first rough
      version, it actually stops the AC queue for extended periods of time,
      which can be removed by adding buffering internal to mac80211, but is
      currently not a huge problem because people rarely use multiple TIDs
      that are in the same AC (and iwlwifi currently doesn't operate as AP).
      
      This is a short-term fix, my current medium-term plan, which I hope to
      execute soon as well, but am not sure can finish before .30, looks like
      this:
       1) rework the internal queuing layer in mac80211 that we use for
          fragments if the driver stopped queue in the middle of a fragmented
          frame to be able to queue more frames at once (rather than just a
          single frame with its fragments)
       2) instead of stopping the entire AC queue, queue up the frames in a
          per-station/per-TID queue during aggregation session initiation,
          when the session has come up take all those frames and put them
          onto the queue from 1)
       3) push the ampdu queue layer abstraction this patch introduces in
          mac80211 into the driver, and remove the virtual queue stuff from
          mac80211 again
      
      This plan will probably also affect ath9k in that mac80211 queues the
      frames instead of passing them down, even when there are no ampdu queues.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      96f5e66e
  2. 29 Jan, 2009 6 commits
  3. 19 Dec, 2008 2 commits
  4. 05 Dec, 2008 1 commit
  5. 31 Oct, 2008 5 commits
  6. 14 Oct, 2008 1 commit
  7. 15 Sep, 2008 5 commits
  8. 11 Sep, 2008 3 commits
  9. 22 Aug, 2008 2 commits
  10. 01 Aug, 2008 1 commit
  11. 17 Jul, 2008 1 commit
  12. 14 Jul, 2008 1 commit
    • Johannes Berg's avatar
      mac80211: make master netdev handling sane · 3e122be0
      Johannes Berg authored
      Currently, almost every interface type has a 'bss' pointer
      pointing to BSS information. This BSS information, however,
      is for a _local_ BSS, not for the BSS we joined, so having
      it on a STA mode interface makes little sense, but now they
      have it pointing to the master device, which is an AP mode
      virtual interface. However, except for some bitrate control
      data, this pointer is only used in AP/VLAN modes (for power
      saving stations.)
      
      Overall, it is not necessary to even have the master netdev
      be a valid virtual interface, and it doesn't have to be on
      the list of interfaces either.
      
      This patch changes the master netdev to be special, it now
       - no longer is on the list of virtual interfaces, which
         lets me remove a lot of tests for that
       - no longer has sub_if_data attached, since that isn't used
      
      Additionally, this patch changes some vlan/ap mode handling
      that is related to these 'bss' pointers described above (but
      in the VLAN case they actually make sense because there they
      point to the AP they belong to); it also adds some debugging
      code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
      on the master netdev any more.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      3e122be0
  13. 14 Jun, 2008 3 commits
  14. 28 May, 2008 1 commit
  15. 21 May, 2008 5 commits
  16. 16 May, 2008 1 commit
    • Ivo van Doorn's avatar
      mac80211: Add RTNL version of ieee80211_iterate_active_interfaces · 2f561feb
      Ivo van Doorn authored
      Since commit e38bad47
      	mac80211: make ieee80211_iterate_active_interfaces not need rtnl
      rt2500usb and rt73usb broke down due to attempting register access
      in atomic context (which is not possible for USB hardware).
      
      This patch restores ieee80211_iterate_active_interfaces() to use RTNL lock,
      and provides the non-RTNL version under a new name:
      	ieee80211_iterate_active_interfaces_atomic()
      
      So far only rt2x00 uses ieee80211_iterate_active_interfaces(), and those
      drivers require the RTNL version of ieee80211_iterate_active_interfaces().
      Since they already call that function directly, this patch will automatically
      fix the USB rt2x00 drivers.
      
      v2: Rename ieee80211_iterate_active_interfaces_rtnl
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2f561feb
  17. 12 May, 2008 1 commit