1. 13 2月, 2019 1 次提交
  2. 29 6月, 2018 1 次提交
  3. 19 12月, 2017 1 次提交
  4. 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
  5. 27 10月, 2017 1 次提交
  6. 07 2月, 2017 2 次提交
    • F
      ath9k: fix race condition in enabling/disabling IRQs · 3a5e969b
      Felix Fietkau 提交于
      The code currently relies on refcounting to disable IRQs from within the
      IRQ handler and re-enabling them again after the tasklet has run.
      
      However, due to race conditions sometimes the IRQ handler might be
      called twice, or the tasklet may not run at all (if interrupted in the
      middle of a reset).
      
      This can cause nasty imbalances in the irq-disable refcount which will
      get the driver permanently stuck until the entire radio has been stopped
      and started again (ath_reset will not recover from this).
      
      Instead of using this fragile logic, change the code to ensure that
      running the irq handler during tasklet processing is safe, and leave the
      refcount untouched.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      3a5e969b
    • F
      ath9k: rename tx_complete_work to hw_check_work · d63ffc45
      Felix Fietkau 提交于
      Also include common MAC alive check. This should make the hang checks
      more reliable for modes where beacons are not sent and is used as a
      starting point for further hang check improvements
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      d63ffc45
  7. 15 12月, 2016 2 次提交
    • 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
  8. 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
  9. 08 7月, 2016 1 次提交
    • B
      ath9k: Fix beacon configuration for addition/removal of interfaces · cfda2d8e
      Benjamin Berg 提交于
      This patch fixes some issues with interface reconfiguration. It could
      for example happen that an AP interface in beacon slot 0 was removed
      leaving an IBSS station in one of the other slots. When this happens
      the driver never sends out the beacon as it only tries to send a beacon
      from slot 0.
      
      Appart from that the tracking of required changes to the beacon config is
      relatively complicated and prone to errors.
      
      The approach taken here is to solve reconfiguration issues is to
      reconfigure the beacons when any interface changes. This means that
      the complexity of deciding whether an interface change may modify the
      beacon configuration is gone. It also means that the beacon config will
      be reliably updated when an interface is removed.
      
      The issue that a single non-AP interface might not be in beacon
      slot 0 and wouldn't be send out is solved by moving it into the
      first slot. The TSF value in hardware is adjusted accordingly so
      that the timestamp of the beacons stay consistent.
      Signed-off-by: NBenjamin Berg <benjamin.berg@open-mesh.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      cfda2d8e
  10. 11 3月, 2016 1 次提交
  11. 11 12月, 2015 1 次提交
    • M
      ath9k: feeding entropy in kernel from ADC capture · ed14dc0a
      Miaoqing Pan 提交于
      This patch is derived from
      commit 6301566e ("ath9k: export HW random number generator"),
      
      We evaluated the entropy of the ADC data on QCA9531, QCA9561, QCA955x,
      and AR9340, and it has sufficient quality random data (at least 10 bits
      and up to 22 bits of min-entropy for a 32-bit value). We conservatively
      assume the min-entropy is 10 bits out of 32 bits. Thus, ATH9K_RNG_BUF_SIZE
      is set to 320 (u32) i.e., 1.25 kilobytes of data is inserted to fill up
      the pool as soon as the entropy counter becomes 896/4096 (set by random.c).
      Since ADC was not designed to be a dedicated HW RNG, we do not want to bind
      it to /dev/hwrng framework directly. This patch feeds the entropy directly
      from the WiFi driver to the input pool. The ADC register output is only
      used as a seed for the Linux entropy pool. No conditioning is needed,
      since all the conditioning is performed by the pool itself.
      Signed-off-by: NMiaoqing Pan <miaoqing@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      ed14dc0a
  12. 08 12月, 2015 1 次提交
  13. 29 9月, 2015 1 次提交
  14. 06 8月, 2015 3 次提交
    • F
      ath9k: remove the sched field in struct ath_atx_tid · d70d848a
      Felix Fietkau 提交于
      Use list_empty(&tid->list) instead
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      d70d848a
    • F
      ath9k: remove struct ath_atx_ac · 592fa228
      Felix Fietkau 提交于
      struct ath_atx_ac contains a list of active TIDs belonging to one WMM AC.
      This patch changes the code to track active station TIDs in the txq directly.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      592fa228
    • J
      ath9k: handle RoC cancel correctly · d83520b7
      Janusz.Dziedzic@tieto.com 提交于
      In case we will get ROC cancel from mac80211 we
      should not call ieee80211_remain_on_channel_expired().
      
      In other case I hit such warning on MIPS and
      p2p negotiation failed (tested with use_chanctx=1).
      
      ath: phy0: Starting RoC period
      ath: phy0: Channel definition created: 2412 MHz
      ath: phy0: Assigned next_chan to 2412 MHz
      ath: phy0: Offchannel duration for chan 2412 MHz : 506632
      ath: phy0: ath_chanctx_set_next: current: 2412 MHz, next: 2412 MHz
      ath: phy0: Stopping current chanctx: 2412
      ath: phy0: Flush timeout: 200
      ath: phy0: ath_chanctx_set_next: Set channel 2412 MHz
      ath: phy0: Set channel: 2412 MHz width: 0
      ath: phy0: Reset to 2412 MHz, HT40: 0 fastcc: 0
      ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_TSF_TIMER, state: ATH_CHANCTX_STATE_IDLE
      ath: phy0: ath_offchannel_channel_change: offchannel state: ATH_OFFCHANNEL_ROC_START
      ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_SWITCH, state: ATH_CHANCTX_STATE_IDLE
      ath: phy0: Cancel RoC
      ath: phy0: RoC aborted
      ath: phy0: RoC request on vif: 00:03:7f:4e:a0:cd, type: 1 duration: 500
      ath: phy0: Starting RoC period
      ath: phy0: Channel definition created: 2412 MHz
      ath: phy0: Assigned next_chan to 2412 MHz
      ath: phy0: Offchannel duration for chan 2412 MHz : 506705
      ath: phy0: ath_chanctx_set_next: current: 2412 MHz, next: 2412 MHz
      ath: phy0: ath_offchannel_channel_change: offchannel state: ATH_OFFCHANNEL_ROC_START
      ath: phy0: cur_chan: 2412 MHz, event: ATH_CHANCTX_EVENT_SWITCH, state: ATH_CHANCTX_STATE_IDLE
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 3312 at drivers/net/wireless/ath/ath9k/main.c:2319
      Modules linked in: ath9k ath9k_common ath9k_hw ath mac80211 cfg80211
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      d83520b7
  15. 31 7月, 2015 1 次提交
  16. 21 7月, 2015 1 次提交
  17. 13 3月, 2015 1 次提交
  18. 03 3月, 2015 1 次提交
  19. 03 2月, 2015 4 次提交
  20. 28 1月, 2015 1 次提交
  21. 26 11月, 2014 1 次提交
  22. 18 11月, 2014 2 次提交
  23. 12 11月, 2014 5 次提交
  24. 28 10月, 2014 5 次提交