Kan Yan <kyan@xxxxxxxxxx> writes: > Patchset v6 works for me with ath10k driver. AQL does its job as > expected and tests show very significant reduction in latency in > congested environment. The txq stuck issue in patchset v4 got fixed. > > However, the device's total pending airtime count still underflows > sometimes. Even though it doesn't cause apparent side effect, there is > some issue with the pending airtime update and needs further > debugging. > > Regards, > Kan That's great to hear! I have been trying to clear some time to get on this too (I have a HUGE number of fq_codel related updates on top of this worth testing) but it's still looking a few weeks out. > > > On Wed, Oct 23, 2019 at 2:59 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: >> >> This series is a first attempt at porting the Airtime Queue Limits concept from >> the out-of-tree ath10k implementation[0] to mac80211. This version takes Kan's >> patch to do the throttling in mac80211, and replaces the driver API with the >> mechanism from the previous version of my series, which instead calculated the >> expected airtime at dequeue time inside mac80211, storing it in the SKB cb >> field. >> >> This series also imports Felix' airtime calculation code from mt76 into >> mac80211, adjusting the API so it can be used from TX dequeue, by extracting the >> latest TX rate from the tx_stats structure kept for each station. >> >> As before, I've only compile tested this (lacking the proper hardware to do more >> testing). So I'm hoping someone with a proper testing setup can take the whole >> thing for a spin... :) >> >> The series is also available in my git repo here: >> https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git/log/?h=mac80211-aql-06 >> >> Changelog: >> >> v6: >> - Fix sta lookup in ieee80211_report_used_skb(). >> - Move call to ieee80211_sta_update_pending_airtime() to a bit later in >> __ieee80211_tx_status() >> v5: >> - Add missing export of ieee80211_calc_rx_airtime() and make >> ieee80211_calc_tx_airtime_rate() static (kbuildbot). >> - Use skb_get_queue_mapping() to get the AC from the skb. >> - Take basic rate configuration for the BSS into account when calculating >> multicast rate. >> v4: >> - Fix calculation that clamps the maximum airtime to fit into 10 bits >> - Incorporate Rich Brown's nits for the commit message in Kan's patch >> - Add fewer local variables to ieee80211_tx_dequeue() >> v3: >> - Move the tx_time_est field so it's shared with ack_frame_id, and use units >> of 4us for the value stored in it. >> - Move the addition of the Ethernet header size into ieee80211_calc_expected_tx_airtime() >> v2: >> - Integrate Kan's approach to airtime throttling. >> - Hopefully fix the cb struct alignment on big-endian architectures. >> >> --- >> >> Kan Yan (1): >> mac80211: Implement Airtime-based Queue Limit (AQL) >> >> Toke Høiland-Jørgensen (3): >> mac80211: Shrink the size of ack_frame_id to make room for tx_time_est >> mac80211: Import airtime calculation code from mt76 >> mac80211: Use Airtime-based Queue Limits (AQL) on packet dequeue >> >> >> include/net/cfg80211.h | 7 + >> include/net/mac80211.h | 45 +++++ >> net/mac80211/Makefile | 3 >> net/mac80211/airtime.c | 390 ++++++++++++++++++++++++++++++++++++++++++++ >> net/mac80211/cfg.c | 2 >> net/mac80211/debugfs.c | 78 +++++++++ >> net/mac80211/debugfs_sta.c | 43 ++++- >> net/mac80211/ieee80211_i.h | 8 + >> net/mac80211/main.c | 9 + >> net/mac80211/sta_info.c | 32 ++++ >> net/mac80211/sta_info.h | 8 + >> net/mac80211/status.c | 33 ++++ >> net/mac80211/tx.c | 69 +++++++- >> 13 files changed, 709 insertions(+), 18 deletions(-) >> create mode 100644 net/mac80211/airtime.c >> > _______________________________________________ > Make-wifi-fast mailing list > Make-wifi-fast@xxxxxxxxxxxxxxxxxxxxx > https://lists.bufferbloat.net/listinfo/make-wifi-fast