[openwrt/openwrt] mac80211: add more AQL fixes/improvements

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 1 11:02:27 EDT 2020


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/2c14710c54befc69e70fff52240875b2bbf94cd1

commit 2c14710c54befc69e70fff52240875b2bbf94cd1
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Thu Aug 27 13:02:42 2020 +0200

    mac80211: add more AQL fixes/improvements
    
    Fix aggregation length estimation, add HE and VHT160 support
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...tend-AQL-aggregation-estimation-to-HE-and.patch | 49 ++++++++++++++++++++++
 ...80211-add-AQL-support-for-VHT160-tx-rates.patch | 23 ++++++++++
 2 files changed, 72 insertions(+)

diff --git a/package/kernel/mac80211/patches/subsys/327-mac80211-extend-AQL-aggregation-estimation-to-HE-and.patch b/package/kernel/mac80211/patches/subsys/327-mac80211-extend-AQL-aggregation-estimation-to-HE-and.patch
new file mode 100644
index 0000000000..3d687f8341
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/327-mac80211-extend-AQL-aggregation-estimation-to-HE-and.patch
@@ -0,0 +1,49 @@
+From: Felix Fietkau <nbd at nbd.name>
+Date: Thu, 27 Aug 2020 12:44:36 +0200
+Subject: [PATCH] mac80211: extend AQL aggregation estimation to HE and fix
+ unit mismatch
+
+The unit of the return value of ieee80211_get_rate_duration is nanoseconds, not
+milliseconds. Adjust the duration checks to account for that.
+For higher data rates, allow larger estimated aggregation sizes, and add some
+values for HE as well, which can use much larger aggregates.
+Since small packets with high data rates can now lead to duration values too
+small for info->tx_time_est, return a minimum of 4us.
+
+Signed-off-by: Felix Fietkau <nbd at nbd.name>
+---
+
+--- a/net/mac80211/airtime.c
++++ b/net/mac80211/airtime.c
+@@ -668,20 +668,26 @@ u32 ieee80211_calc_expected_tx_airtime(s
+ 		 * This will not be very accurate, but much better than simply
+ 		 * assuming un-aggregated tx in all cases.
+ 		 */
+-		if (duration > 400) /* <= VHT20 MCS2 1S */
++		if (duration > 400 * 1024) /* <= VHT20 MCS2 1S */
+ 			agg_shift = 1;
+-		else if (duration > 250) /* <= VHT20 MCS3 1S or MCS1 2S */
++		else if (duration > 250 * 1024) /* <= VHT20 MCS3 1S or MCS1 2S */
+ 			agg_shift = 2;
+-		else if (duration > 150) /* <= VHT20 MCS5 1S or MCS3 2S */
++		else if (duration > 150 * 1024) /* <= VHT20 MCS5 1S or MCS2 2S */
+ 			agg_shift = 3;
+-		else
++		else if (duration > 70 * 1024) /* <= VHT20 MCS5 2S */
+ 			agg_shift = 4;
++		else if (stat.encoding != RX_ENC_HE ||
++			 duration > 20 * 1024) /* <= HE40 MCS6 2S */
++			agg_shift = 5;
++		else
++			agg_shift = 6;
+ 
+ 		duration *= len;
+ 		duration /= AVG_PKT_SIZE;
+ 		duration /= 1024;
++		duration += (overhead >> agg_shift);
+ 
+-		return duration + (overhead >> agg_shift);
++		return max_t(u32, duration, 4);
+ 	}
+ 
+ 	if (!conf)
diff --git a/package/kernel/mac80211/patches/subsys/328-mac80211-add-AQL-support-for-VHT160-tx-rates.patch b/package/kernel/mac80211/patches/subsys/328-mac80211-add-AQL-support-for-VHT160-tx-rates.patch
new file mode 100644
index 0000000000..e22a09e711
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/328-mac80211-add-AQL-support-for-VHT160-tx-rates.patch
@@ -0,0 +1,23 @@
+From: Felix Fietkau <nbd at nbd.name>
+Date: Thu, 27 Aug 2020 12:47:48 +0200
+Subject: [PATCH] mac80211: add AQL support for VHT160 tx rates
+
+When converting from struct ieee80211_tx_rate to ieee80211_rx_status,
+there was one check missing to fill in the bandwidth for 160 MHz
+
+Signed-off-by: Felix Fietkau <nbd at nbd.name>
+---
+
+--- a/net/mac80211/airtime.c
++++ b/net/mac80211/airtime.c
+@@ -560,7 +560,9 @@ static int ieee80211_fill_rx_status(stru
+ 	if (rate->idx < 0 || !rate->count)
+ 		return -1;
+ 
+-	if (rate->flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
++	if (rate->flags & IEEE80211_TX_RC_160_MHZ_WIDTH)
++		stat->bw = RATE_INFO_BW_160;
++	else if (rate->flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
+ 		stat->bw = RATE_INFO_BW_80;
+ 	else if (rate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
+ 		stat->bw = RATE_INFO_BW_40;



More information about the lede-commits mailing list