1. 13 2月, 2019 1 次提交
  2. 31 7月, 2018 5 次提交
  3. 26 3月, 2018 1 次提交
  4. 14 3月, 2018 1 次提交
  5. 19 12月, 2017 1 次提交
  6. 11 12月, 2017 1 次提交
    • T
      mac80211: Add TXQ scheduling API · e937b8da
      Toke Høiland-Jørgensen 提交于
      This adds an API to mac80211 to handle scheduling of TXQs and changes the
      interface between driver and mac80211 for TXQ handling as follows:
      
      - The wake_tx_queue callback interface no longer includes the TXQ. Instead,
        the driver is expected to retrieve that from ieee80211_next_txq()
      
      - Two new mac80211 functions are added: ieee80211_next_txq() and
        ieee80211_schedule_txq(). The former returns the next TXQ that should be
        scheduled, and is how the driver gets a queue to pull packets from. The
        latter is called internally by mac80211 to start scheduling a queue, and
        the driver is supposed to call it to re-schedule the TXQ after it is
        finished pulling packets from it (unless the queue emptied).
      
      The ath9k and ath10k drivers are changed to use the new API.
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e937b8da
  7. 15 2月, 2017 1 次提交
    • F
      ath9k: clean up and fix ath_tx_count_airtime · a6e56d74
      Felix Fietkau 提交于
      ath_tx_count_airtime is doing a lot of unnecessary work:
      
      - Redundant station lookup
      - Redundant rcu_read_lock/unlock
      - Useless memcpy of bf->rates
      - Useless NULL check of bf->bf_mpdu
      - Redundant lookup of the skb tid
      
      Additionally, it tries to look up the mac80211 queue index from the txq,
      which fails if the frame was delivered via the power save queue.
      
      This patch fixes all of these issues by passing down the right set of
      pointers instead of doing extra work
      
      Cc: stable@vger.kernel.org
      Fixes: 63fefa05 ("ath9k: Introduce airtime fairness scheduling between stations")
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      Acked-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      a6e56d74
  8. 07 2月, 2017 1 次提交
  9. 21 12月, 2016 1 次提交
    • T
      ath9k: do not return early to fix rcu unlocking · d1f1c0e2
      Tobias Klausmann 提交于
      Starting with commit d94a461d ("ath9k: use ieee80211_tx_status_noskb
      where possible") the driver uses rcu_read_lock() && rcu_read_unlock(), yet on
      returning early in ath_tx_edma_tasklet() the unlock is missing leading to stalls
      and suspicious RCU usage:
      
       ===============================
       [ INFO: suspicious RCU usage. ]
       4.9.0-rc8 #11 Not tainted
       -------------------------------
       kernel/rcu/tree.c:705 Illegal idle entry in RCU read-side critical section.!
      
       other info that might help us debug this:
      
       RCU used illegally from idle CPU!
       rcu_scheduler_active = 1, debug_locks = 0
       RCU used illegally from extended quiescent state!
       1 lock held by swapper/7/0:
       #0:
        (
       rcu_read_lock
       ){......}
       , at:
       [<ffffffffa06ed110>] ath_tx_edma_tasklet+0x0/0x450 [ath9k]
      
       stack backtrace:
       CPU: 7 PID: 0 Comm: swapper/7 Not tainted 4.9.0-rc8 #11
       Hardware name: Acer Aspire V3-571G/VA50_HC_CR, BIOS V2.21 12/16/2013
        ffff88025efc3f38 ffffffff8132b1e5 ffff88017ede4540 0000000000000001
        ffff88025efc3f68 ffffffff810a25f7 ffff88025efcee60 ffff88017edebdd8
        ffff88025eeb5400 0000000000000091 ffff88025efc3f88 ffffffff810c3cd4
       Call Trace:
        <IRQ>
        [<ffffffff8132b1e5>] dump_stack+0x68/0x93
        [<ffffffff810a25f7>] lockdep_rcu_suspicious+0xd7/0x110
        [<ffffffff810c3cd4>] rcu_eqs_enter_common.constprop.85+0x154/0x200
        [<ffffffff810c5a54>] rcu_irq_exit+0x44/0xa0
        [<ffffffff81058631>] irq_exit+0x61/0xd0
        [<ffffffff81018d25>] do_IRQ+0x65/0x110
        [<ffffffff81672189>] common_interrupt+0x89/0x89
        <EOI>
        [<ffffffff814ffe11>] ? cpuidle_enter_state+0x151/0x200
        [<ffffffff814ffee2>] cpuidle_enter+0x12/0x20
        [<ffffffff8109a6ae>] call_cpuidle+0x1e/0x40
        [<ffffffff8109a8f6>] cpu_startup_entry+0x146/0x220
        [<ffffffff810336f8>] start_secondary+0x148/0x170
      Signed-off-by: NTobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
      Fixes: d94a461d ("ath9k: use ieee80211_tx_status_noskb where possible")
      Cc: <stable@vger.kernel.org> # v4.9
      Acked-by: NFelix Fietkau <nbd@nbd.name>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Tested-by: NGabriel Craciunescu <nix.or.die@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      d1f1c0e2
  10. 15 12月, 2016 3 次提交
    • T
      ath9k: Turn ath_txq_lock/unlock() into static inlines. · 5c4607eb
      Toke Høiland-Jørgensen 提交于
      These are one-line functions that just call spin_lock/unlock_bh(); turn
      them into static inlines to avoid the function call overhead.
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5c4607eb
    • T
      ath9k: Introduce airtime fairness scheduling between stations · 63fefa05
      Toke Høiland-Jørgensen 提交于
      This reworks the ath9k driver to schedule transmissions to connected
      stations in a way that enforces airtime fairness between them. It
      accomplishes this by measuring the time spent transmitting to or
      receiving from a station at TX and RX completion, and accounting this to
      a per-station, per-QoS level airtime deficit. Then, an FQ-CoDel based
      deficit scheduler is employed at packet dequeue time, to control which
      station gets the next transmission opportunity.
      
      Airtime fairness can significantly improve the efficiency of the network
      when station rates vary. The following throughput values are from a
      simple three-station test scenario, where two stations operate at the
      highest HT20 rate, and one station at the lowest, and the scheduler is
      employed at the access point:
      
                        Before   /   After
      Fast station 1:    19.17   /   25.09 Mbps
      Fast station 2:    19.83   /   25.21 Mbps
      Slow station:       2.58   /    1.77 Mbps
      Total:             41.58   /   52.07 Mbps
      
      The benefit of airtime fairness goes up the more stations are present.
      In a 30-station test with one station artificially limited to 1 Mbps,
      we have seen aggregate throughput go from 2.14 to 17.76 Mbps.
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      63fefa05
    • M
      ath9k: consistently use get_eeprom_rev(ah) · 9bff7428
      Martin Blumenstingl 提交于
      The AR5416_VER_MASK macro does the same as get_eeprom_rev, except that
      one has to know the actual EEPROM type (and providing a reference to
      that in a variable named "eep"). Additionally the eeprom_*.c
      implementations used the same shifting logic multiple times to get the
      eeprom revision which was also unnecessary duplication of
      get_eeprom_rev.
      
      Also use the AR5416_EEP_VER_MINOR_MASK macro where needed and introduce
      a similar macro (AR5416_EEP_VER_MAJOR_MASK) for the major version.
      Finally drop AR9287_EEP_VER_MINOR_MASK since it simply duplicates the
      already defined AR5416_EEP_VER_MINOR_MASK.
      Signed-off-by: NMartin Blumenstingl <martin.blumenstingl@googlemail.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      9bff7428
  11. 15 11月, 2016 1 次提交
    • T
      ath9k: Switch to using mac80211 intermediate software queues. · 50f08edf
      Toke Høiland-Jørgensen 提交于
      This switches ath9k over to using the mac80211 intermediate software
      queueing mechanism for data packets. It removes the queueing inside the
      driver, except for the retry queue, and instead pulls from mac80211 when
      a packet is needed. The retry queue is used to store a packet that was
      pulled but can't be sent immediately.
      
      The old code path in ath_tx_start that would queue packets has been
      removed completely, as has the qlen limit tunables (since there's no
      longer a queue in the driver to limit).
      
      The mac80211 intermediate software queues offer significant latency
      reductions, and this patch allows ath9k to realise them. The exact gains
      from this varies with the test scenario, but in an access point scenario
      we have seen latency reductions ranging from 1/3 to as much as an order
      of magnitude. We also achieve slightly better aggregation.
      
      Median latency (ping) figures with this patch applied at the access point,
      with two high-rate stations and one low-rate station (HT20 5Ghz), running
      a Flent rtt_fair_var_up test with one TCP flow and one ping flow going to
      each station:
      
                                       Fast station        Slow station
      Default pfifo_fast qdisc:            430.4 ms            638.7 ms
      fq_codel qdisc on iface:              35.5 ms            211.8 ms
      This patch set:                       22.4 ms             38.2 ms
      
      Median aggregation sizes over the same test:
      
      Default pfifo_fast qdisc:            9.5 pkts            1.9 pkts
      fq_codel qdisc on iface:            11.2 pkts            1.9 pkts
      This patch set:                     13.9 pkts            1.9 pkts
      
      This patch is based on Tim's original patch set, but reworked quite
      thoroughly.
      
      Cc: Tim Shepard <shep@alum.mit.edu>
      Cc: Felix Fietkau <nbd@nbd.name>
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      50f08edf
  12. 09 9月, 2016 2 次提交
    • F
      ath9k: improve powersave filter handling · 315c457f
      Felix Fietkau 提交于
      For non-aggregated frames, ath9k was leaving handling of powersave
      filtered packets to mac80211. This can be too slow if the intermediate
      queue is already filled with packets and mac80211 does not immediately
      send a new packet via drv_tx().
      
      Improve response time with filtered frames by triggering clearing the
      powersave filter internally.
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      315c457f
    • F
      ath9k: use ieee80211_tx_status_noskb where possible · d94a461d
      Felix Fietkau 提交于
      It removes the need for undoing the padding changes to skb->data and it
      improves performance by eliminating one tx status lookup per MPDU in the
      status path. It is also useful for preparing a follow-up fix to better
      handle powersave filtering.
      
      A side effect is that these counters, available via debugfs, become now invalid:
      
      * dot11TransmittedFragmentCount
      * dot11FrameDuplicateCount,
      * dot11ReceivedFragmentCount
      * dot11MulticastReceivedFrameCount
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      [kvalo@qca.qualcomm.com: add a note about counters, thanks to Zefir Kurtisi]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      d94a461d
  13. 12 4月, 2016 1 次提交
  14. 11 12月, 2015 1 次提交
  15. 08 12月, 2015 2 次提交
  16. 06 8月, 2015 2 次提交
  17. 21 7月, 2015 2 次提交
    • M
      ath9k: fix moredata flag endianness in cabq tx · 92cd4032
      Michal Kazior 提交于
      While compiling ath9k with some extra flags I've
      found that:
      
       ath9k/xmit.c +2473 ## 16: warning: restricted __le16 degrades to integer
       ath9k/xmit.c +2474 ## 36: warning: invalid assignment: &=
       ath9k/xmit.c +2474 ## 36:    left side has type restricted __le16
       ath9k/xmit.c +2474 ## 36:    right side has type int
      
      There's no way for frame ftype/stype to be
      mistreated as the offending 'moredata' flag when
      considering cab queue.
      
      This could've however theoretically led sometimes
      to increased power consumption on connected
      stations as they would keep their Rx active
      waiting for frames that would never come.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      92cd4032
    • F
      ath9k: make DMA stop related messages debug-only · e60ac9c7
      Felix Fietkau 提交于
      A long time ago, ath9k had issues during reset where the DMA engine
      would stay active and could potentially corrupt memory.
      To debug those issues, the driver would print warnings whenever they
      occur.
      
      Nowadays, these issues are gone and the primary cause of these messages
      is if the MAC is stuck during reset or busy processing a long
      transmission. This is fairly harmless, yet these messages continue to
      worry users.
      
      To reduce the number of bogus bug reports, turn these messages into
      debug messages and count their occurence in the "reset" debugfs file.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      e60ac9c7
  18. 04 5月, 2015 1 次提交
  19. 03 3月, 2015 1 次提交
  20. 24 1月, 2015 1 次提交
  21. 15 1月, 2015 1 次提交
  22. 25 12月, 2014 1 次提交
  23. 12 12月, 2014 1 次提交
  24. 26 11月, 2014 1 次提交
  25. 24 10月, 2014 1 次提交
  26. 09 10月, 2014 1 次提交
  27. 01 10月, 2014 2 次提交
  28. 27 9月, 2014 2 次提交