1. 07 5月, 2009 1 次提交
  2. 28 3月, 2009 4 次提交
    • J
      mac80211/iwlwifi: move virtual A-MDPU queue bookkeeping to iwlwifi · e4e72fb4
      Johannes Berg 提交于
      This patch removes all the virtual A-MPDU-queue bookkeeping from
      mac80211. Curiously, iwlwifi already does its own bookkeeping, so
      it doesn't require much changes except where it needs to handle
      starting and stopping the queues in mac80211.
      
      To handle the queue stop/wake properly, we rewrite the software
      queue number for aggregation frames and internally to iwlwifi keep
      track of the queues that map into the same AC queue, and only talk
      to mac80211 about the AC queue. The implementation requires calling
      two new functions, iwl_stop_queue and iwl_wake_queue instead of the
      mac80211 counterparts.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Cc: Reinette Chattre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e4e72fb4
    • J
      mac80211: fix aggregation to not require queue stop · cd8ffc80
      Johannes Berg 提交于
      Instead of stopping the entire AC queue when enabling aggregation
      (which was only done for hardware with aggregation queues) buffer
      the packets for each station, and release them to the pending skb
      queue once aggregation is turned on successfully.
      
      We get a little more code, but it becomes conceptually simpler and
      we can remove the entire virtual queue mechanism from mac80211 in
      a follow-up patch.
      
      This changes how mac80211 behaves towards drivers that support
      aggregation but have no hardware queues -- those drivers will now
      not be handed packets while the aggregation session is being
      established, but only after it has been fully established.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cd8ffc80
    • J
      mac80211: unify and fix TX aggregation start · b1720231
      Johannes Berg 提交于
      When TX aggregation becomes operational, we do a number of steps:
       1) print a debug message
       2) wake the virtual queue
       3) notify the driver
      
      Unfortunately, 1) and 3) are only done if the driver is first to
      reply to the aggregation request, it is, however, possible that the
      remote station replies before the driver! Thus, unify the code for
      this and call the new function ieee80211_agg_tx_operational in both
      places where TX aggregation can become operational.
      
      Additionally, rename the driver notification from
      IEEE80211_AMPDU_TX_RESUME to IEEE80211_AMPDU_TX_OPERATIONAL.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b1720231
    • S
      mac80211: Tear down aggregation sessions for suspend/resume · 722f069a
      Sujith 提交于
      When the driver has been notified with a STA_REMOVE, it tears down
      the internal ADDBA state. On resume, trying to initiate aggregation would
      fail because mac80211 has not cleared the operational state for that <TID,STA>.
      This can be fixed by tearing down the existing sessions on a suspend.
      
      Also, the driver can initiate a new BA session when suspend is in progress.
      This is fixed by marking the station as being in suspend state and
      denying ADDBA requests for such STAs.
      Signed-off-by: NSujith <Sujith.Manoharan@atheros.com>
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      722f069a
  3. 28 2月, 2009 2 次提交
    • J
      mac80211: split IBSS/managed code · 46900298
      Johannes Berg 提交于
      This patch splits out the ibss code and data from managed (station) mode.
      The reason to do this is to better separate the state machines, and have
      the code be contained better so it gets easier to determine what exactly
      a given change will affect, that in turn makes it easier to understand.
      
      This is quite some churn, especially because I split sdata->u.sta into
      sdata->u.mgd and sdata->u.ibss, but I think it's easier to maintain that
      way. I've also shuffled around some code -- null function sending is only
      applicable to managed interfaces so put that into that file, some other
      functions are needed from various places so put them into util, and also
      rearranged the prototypes in ieee80211_i.h accordingly.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      46900298
    • J
      mac80211: fix aggregation for hardware with ampdu queues · 96f5e66e
      Johannes Berg 提交于
      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: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      96f5e66e
  4. 14 2月, 2009 6 次提交
  5. 30 1月, 2009 4 次提交
  6. 13 1月, 2009 1 次提交
  7. 20 12月, 2008 1 次提交
  8. 26 11月, 2008 1 次提交
  9. 11 11月, 2008 1 次提交
  10. 01 11月, 2008 3 次提交
    • S
      mac80211: Re-enable aggregation · 8b30b1fe
      Sujith 提交于
      Wireless HW without any dedicated queues for aggregation
      do not need the ampdu_queues mechanism present right now
      in mac80211. Since mac80211 is still incomplete wrt TX MQ
      changes, do not allow aggregation sessions for drivers that
      set ampdu_queues.
      
      This is only an interim hack until Intel fixes the requeue issue.
      Signed-off-by: NSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: NLuis Rodriguez <Luis.Rodriguez@Atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8b30b1fe
    • J
      mac80211: rewrite HT handling · ae5eb026
      Johannes Berg 提交于
      The HT handling has the following deficiencies, which I've
      (partially) fixed:
       * it always uses the AP info even if there is no AP,
         hence has no chance of working as an AP
       * it pretends to be HW config, but really is per-BSS
       * channel sanity checking is left to the drivers
       * it generally lets the driver control too much
      
      HT enabling is still wrong with this patch if you have more than
      one virtual STA mode interface, but that never happens currently.
      Once WDS, IBSS or AP/VLAN gets HT capabilities, it will also be
      wrong, see the comment in ieee80211_enable_ht().
      
      Additionally, this fixes a number of bugs:
       * mac80211: ieee80211_set_disassoc doesn't notify the driver any
                   more since the refactoring
       * iwl-agn-rs: always uses the HT capabilities from the wrong stuff
                     mac80211 gives it rather than the actual peer STA
       * ath9k: a number of bugs resulting from the broken HT API
      
      I'm not entirely happy with putting the HT capabilities into
      struct ieee80211_sta as restricted to our own HT TX capabilities,
      but I see no cleaner solution for now.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ae5eb026
    • J
      802.11: clean up/fix HT support · d9fe60de
      Johannes Berg 提交于
      This patch cleans up a number of things:
       * the unusable definition of the HT capabilities/HT information
         information elements
       * variable names that are hard to understand
       * mac80211: move ieee80211_handle_ht to ht.c and remove the unused
                   enable_ht parameter
       * mac80211: fix bug with MCS rate 32 in ieee80211_handle_ht
       * mac80211: fix bug with casting the result of ieee80211_bss_get_ie
                   to an information element _contents_ rather than the
                   whole element, add size checking (another out-of-bounds
                   access bug fixed!)
       * mac80211: remove some unused return values in favour of BUG_ON
                   checking
       * a few minor other things
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d9fe60de
  11. 28 10月, 2008 1 次提交
  12. 16 9月, 2008 2 次提交
  13. 12 9月, 2008 4 次提交