1. 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
  2. 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
  3. 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
  4. 11 3月, 2016 1 次提交
  5. 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
  6. 08 12月, 2015 1 次提交
  7. 29 9月, 2015 1 次提交
  8. 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
  9. 31 7月, 2015 1 次提交
  10. 21 7月, 2015 1 次提交
  11. 13 3月, 2015 1 次提交
  12. 03 3月, 2015 1 次提交
  13. 03 2月, 2015 4 次提交
  14. 28 1月, 2015 1 次提交
  15. 26 11月, 2014 1 次提交
  16. 18 11月, 2014 2 次提交
  17. 12 11月, 2014 5 次提交
  18. 28 10月, 2014 9 次提交
  19. 09 10月, 2014 1 次提交
  20. 03 10月, 2014 2 次提交