1. 29 1月, 2011 1 次提交
    • F
      ath9k: fix tx queue index confusion in debugfs code · 5bec3e5a
      Felix Fietkau 提交于
      Various places printing tx queue information used various different ways to
      get a tx queue index for printing statistics. Most of these ways were wrong.
      
      ATH_TXQ_AC_* cannot be used as an index for sc->tx.txq, because it is only
      used internally for queue assignment.
      
      One place used WME_AC_* as a queue index for sc->debug.stats.txstats, however
      this array uses the ath9k_hw queue number as well.
      
      Fix all of this by always using the ath9k_hw queue number as an index, and
      always looking it up by going through sc->tx.txq_map.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Cc: Ben Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5bec3e5a
  2. 22 1月, 2011 2 次提交
  3. 03 12月, 2010 1 次提交
  4. 16 11月, 2010 1 次提交
    • F
      ath9k: rework tx queue selection and fix queue stopping/waking · 066dae93
      Felix Fietkau 提交于
      The current ath9k tx queue handling code showed a few issues that could
      lead to locking issues, tx stalls due to stopped queues, and maybe even
      DMA issues.
      
      The main source of these issues is that in some places the queue is
      selected via skb queue mapping in places where this mapping may no
      longer be valid. One such place is when data frames are transmitted via
      the CAB queue (for powersave buffered frames). This is made even worse
      by a lookup WMM AC values from the assigned tx queue (which is
      undefined for the CAB queue).
      
      This messed up the pending frame counting, which in turn caused issues
      with queues getting stopped, but not woken again.
      
      To fix these issues, this patch removes an unnecessary abstraction
      separating a driver internal queue number from the skb queue number
      (not to be confused with the hardware queue number).
      
      It seems that this abstraction may have been necessary because of tx
      queue preinitialization from the initvals. This patch avoids breakage
      here by pushing the software <-> hardware queue mapping to the function
      that assigns the tx queues and redefining the WMM AC definitions to
      match the numbers used by mac80211 (also affects ath9k_htc).
      
      To ensure consistency wrt. pending frame count tracking, these counters
      are moved to the ath_txq struct, updated with the txq lock held, but
      only where the tx queue selected by the skb queue map actually matches
      the tx queue used by the driver for the frame.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Reported-by: NBjörn Smedman <bjorn.smedman@venatech.se>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      066dae93
  5. 16 10月, 2010 1 次提交
  6. 06 10月, 2010 1 次提交
  7. 03 6月, 2010 1 次提交
    • L
      ath9k: enable the baseband watchdog events for AR9003 · 08578b8f
      Luis R. Rodriguez 提交于
      This enables the baseband watchdog events for the AR9003
      family on ath9k. Upon an a baseband watchdog interrupt we reset
      the hardware, this should address corner case conditions where
      normal operation can stall. Enable ATH_DBG_RESET to be able
      to review details of the bb watchdog interrupt once it happens.
      If you're curious how often this happens just grep the debugfs
      interrupt file.
      
      Cc: Sam Ng <sam.ng@atheros.com>
      Cc: Paul Shaw <paul.shaw@atheros.com>
      Cc: Don Breslin <don.breslin@atheros.com>
      Cc: Cliff Holden <cliff.holden@atheros.com
      Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      08578b8f
  8. 13 5月, 2010 2 次提交
  9. 17 4月, 2010 1 次提交
  10. 07 4月, 2010 1 次提交
  11. 01 4月, 2010 2 次提交
  12. 13 1月, 2010 1 次提交
  13. 29 11月, 2009 2 次提交
  14. 08 10月, 2009 2 次提交
  15. 29 8月, 2009 2 次提交
  16. 30 7月, 2009 1 次提交
  17. 04 6月, 2009 2 次提交
  18. 21 5月, 2009 1 次提交
    • J
      ath9k: Fix PS mode operation to receive buffered broadcast/multicast frames · cc65965c
      Jouni Malinen 提交于
      The previous implementation was moving back to NETWORK SLEEP state
      immediately after receiving a Beacon frame. This means that we are
      unlikely to receive all the buffered broadcast/multicast frames that
      would be sent after DTIM Beacon frames. Fix this by parsing the Beacon
      frame and remaining awake, if needed, to receive the buffered
      broadcast/multicast frames. The last buffered frame will trigger the
      move back into NETWORK SLEEP state.
      
      If the last broadcast/multicast frame is not received properly (or if
      the AP fails to send it), the next Beacon frame will work as a backup
      trigger for returning into NETWORK SLEEP.
      
      A new debug type, PS (debug=0x800 module parameter), is added to make
      it easier to debug potential power save issues in the
      future. Currently, this is only used for the Beacon frame and buffered
      broadcast/multicast receiving.
      Signed-off-by: NJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cc65965c
  19. 23 4月, 2009 2 次提交
  20. 28 3月, 2009 1 次提交
  21. 17 3月, 2009 1 次提交
  22. 06 3月, 2009 1 次提交
    • J
      ath9k: Add a debugfs interface for controlling virtual wiphys · 39d89cd3
      Jouni Malinen 提交于
      debugfs ath9k/phy#/wiphy can be used to show the current list of
      virtual wiphys and to add/remove virtual wiphys. Eventually, this
      interface could be replaced with a cfg80211/nl80211 command that is
      passed through mac80211.
      
      For example:
      # cat /debug/ath9k/phy0/wiphy
      primary: phy0
      # echo add > /debug/ath9k/phy0/wiphy
      # cat /debug/ath9k/phy0/wiphy
      primary: phy0
      secondary: phy1
      # echo del=phy1 > /debug/ath9k/phy0/wiphy
      # cat /debug/ath9k/phy0/wiphy
      primary: phy0
      
      In addition, following commands can be used to test pausing and
      unpausing of the virtual wiphys:
      pause=phy1
      unpause=phy1
      select=phy1
      (select pauses and unpauses wiphys automatically based on channel)
      schedule=500
      (set wiphy scheduling interval in msec; 0 = disable; default value: 500)
      Signed-off-by: NJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      39d89cd3
  23. 28 2月, 2009 1 次提交
  24. 14 2月, 2009 1 次提交