diff options
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.patch | 81 |
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, |