aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch')
-rw-r--r--package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch81
1 files changed, 0 insertions, 81 deletions
diff --git a/package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch b/package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch
deleted file mode 100644
index bee43a60fa..0000000000
--- a/package/kernel/mac80211/patches/subsys/305-mac80211-improve-AQL-tx-airtime-estimation.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Fri, 24 Jul 2020 20:25:07 +0200
-Subject: [PATCH] mac80211: improve AQL tx airtime estimation
-
-AQL does not take into account that most HT/VHT/HE traffic is A-MPDU aggregated.
-Because of that, the per-packet airtime overhead is vastly overestimated.
-Improve it by assuming an average aggregation length of 16 for non-legacy
-traffic if not using the VO AC queue.
-This should improve performance with high data rates, especially with multiple
-stations
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/net/mac80211/airtime.c
-+++ b/net/mac80211/airtime.c
-@@ -551,7 +551,7 @@ EXPORT_SYMBOL_GPL(ieee80211_calc_tx_airt
- u32 ieee80211_calc_expected_tx_airtime(struct ieee80211_hw *hw,
- struct ieee80211_vif *vif,
- struct ieee80211_sta *pubsta,
-- int len)
-+ int len, bool ampdu)
- {
- struct ieee80211_supported_band *sband;
- struct ieee80211_chanctx_conf *conf;
-@@ -572,10 +572,26 @@ u32 ieee80211_calc_expected_tx_airtime(s
- if (pubsta) {
- struct sta_info *sta = container_of(pubsta, struct sta_info,
- sta);
-+ struct ieee80211_tx_rate *rate = &sta->tx_stats.last_rate;
-+ u32 airtime;
-
-- return ieee80211_calc_tx_airtime_rate(hw,
-- &sta->tx_stats.last_rate,
-- band, len);
-+ if (!(rate->flags & (IEEE80211_TX_RC_VHT_MCS |
-+ IEEE80211_TX_RC_MCS)))
-+ ampdu = false;
-+
-+ /*
-+ * Assume that HT/VHT transmission on any AC except VO will
-+ * use aggregation. Since we don't have reliable reporting
-+ * of aggregation length, assume an average of 16.
-+ * This will not be very accurate, but much better than simply
-+ * assuming un-aggregated tx.
-+ */
-+ airtime = ieee80211_calc_tx_airtime_rate(hw, rate, band,
-+ ampdu ? len * 16 : len);
-+ if (ampdu)
-+ airtime /= 16;
-+
-+ return airtime;
- }
-
- if (!conf)
---- a/net/mac80211/ieee80211_i.h
-+++ b/net/mac80211/ieee80211_i.h
-@@ -2294,7 +2294,7 @@ extern const struct ethtool_ops ieee8021
- u32 ieee80211_calc_expected_tx_airtime(struct ieee80211_hw *hw,
- struct ieee80211_vif *vif,
- struct ieee80211_sta *pubsta,
-- int len);
-+ int len, bool ampdu);
- #ifdef CPTCFG_MAC80211_NOINLINE
- #define debug_noinline noinline
- #else
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -3707,10 +3707,11 @@ encap_out:
-
- if (vif &&
- wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL)) {
-+ bool ampdu = txq->ac != IEEE80211_AC_VO;
- u32 airtime;
-
- airtime = ieee80211_calc_expected_tx_airtime(hw, vif, txq->sta,
-- skb->len);
-+ skb->len, ampdu);
- if (airtime) {
- airtime = ieee80211_info_set_tx_time_est(info, airtime);
- ieee80211_sta_update_pending_airtime(local, tx.sta,