1. 21 Sep, 2010 1 commit
  2. 16 Aug, 2010 1 commit
  3. 04 Aug, 2010 2 commits
    • Lorenzo Bianconi's avatar
      ath9k: fix an issue in ath_atx_tid paused flag management · 75401849
      Lorenzo Bianconi authored
      
      
      I noticed a possible issue in the paused flag management of the
      ath_atx_tid data structure. In particular, in a noisy environment and
      under heavy load, I observed that the AGGR session establishment could
      fail several times consecutively causing values of the paused flag
      greater than one for this TID (ath_tx_pause_tid is called more than
      once from ath_tx_aggr_start).
      
      Considering that the session for this TID can not be established also
      after the mac80211 stack calls the ieee80211_agg_tx_operational() since
      the ath_tx_aggr_resume() lowers the paused flag only by one.
      
      This patch also replaces some BUG_ON calls with WARN_ON, as even if
      these unlikely conditions happen, it's not fatal enough to justify a
      BUG_ON.
      Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi83@gmail.com>
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      75401849
    • Felix Fietkau's avatar
      ath9k_hw: clean up per-channel calibration data · 20bd2a09
      Felix Fietkau authored
      
      
      The noise floor history buffer is currently not kept per channel, which
      can lead to problems when changing channels from a clean channel to a
      noisy one. Also when switching from HT20 to HT40, the noise floor
      history buffer is full of measurements, but none of them contain data
      for the extension channel, which it needs quite a bit of time to recover
      from.
      
      This patch puts all the per-channel calibration data into a single data
      structure, and gives the the driver control over whether that is used
      per-channel or even not used for some channels.
      
      For ath9k_htc, I decided to keep this per-channel in order to avoid
      creating regressions.
      
      For ath9k, the data is kept only for the operating channel, which saves
      some space. ath9k_hw takes care of wiping old data when the operating
      channel or its channel flags change.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      20bd2a09
  4. 26 Jul, 2010 2 commits
  5. 14 Jul, 2010 1 commit
    • Felix Fietkau's avatar
      ath9k: another fix for the A-MPDU buffer leak · 31e79a59
      Felix Fietkau authored
      
      
      The patch 'ath9k: fix a buffer leak in A-MPDU completion' addressed the
      issue of running out of buffers/descriptors in the tx path if a STA is
      deleted while tx status feedback is still pending.
      The remaining issue is that the skbs of the buffers are not reclaimed,
      leaving a memory leak.
      This patch fixes this issue by running the buffers through
      ath_tx_complete_buf(), ensuring that the pending frames counter is also
      updated.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      31e79a59
  6. 12 Jul, 2010 1 commit
  7. 07 Jul, 2010 2 commits
  8. 28 Jun, 2010 1 commit
    • Felix Fietkau's avatar
      ath9k: fix retry count for A-MPDU rate control status reports · 78c4653a
      Felix Fietkau authored
      
      
      The 'bf_retries' field of the ath_buf structure was used for both
      software retries (AMPDU subframes) and hardware retries (legacy
      frames). This led to a wrong retry count being reported for the A-MPDU
      rate control stats.
      This patch changes the code to no longer use bf_retries for reporting
      retry counts, but instead always using the real on-chip retry count
      from the ath_tx_status.
      Additionally, if the first subframe of an A-MPDU was not acked, the tx
      status report is submitted along with the first acked subframe, which
      may not contain the correct rates in the tx info.
      This is easily corrected by saving the tx rate info before looping over
      subframes, and then copying it back once the A-MPDU status report is
      submitted.
      In my tests this change improves throughput visibly.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Reported-by: default avatarBjörn Smedman <bjorn.smedman@venatech.se>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      78c4653a
  9. 24 Jun, 2010 2 commits
  10. 14 Jun, 2010 4 commits
  11. 03 Jun, 2010 1 commit
    • Felix Fietkau's avatar
      ath9k: fix queue stop/start based on the number of pending frames · 84642d6b
      Felix Fietkau authored
      
      
      Because there is a limited number of tx buffers available, once the
      queue has been filled to a certain point, ath9k needs to stop accepting
      new frames from mac80211. In order to prevent a full WMM queue from
      stopping another queue with fewer frames, this patch limits the number
      of queued frames to a quarter of the total available tx buffers, minus
      some reserved frames to be used for other purposes (e.g. beacons).
      
      Because tx buffers are reserved for frames when they're staged in
      software queues as well, the actual queue depth cannot be used for
      this, so this patch stores a reference to the tx queue in the ath_buf
      struct and keeps track of the total number of pending frames.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      84642d6b
  12. 02 Jun, 2010 1 commit
  13. 28 May, 2010 2 commits
  14. 27 Apr, 2010 1 commit
  15. 20 Apr, 2010 5 commits
  16. 16 Apr, 2010 12 commits
  17. 06 Apr, 2010 1 commit