From ec9f82fa18c7c8deb4875152d7907855d186f4c6 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 13 Jul 2022 07:52:04 +0200 Subject: mac80211: fix AQL issue with multicast traffic Exclude multicast from pending AQL budget Signed-off-by: Felix Fietkau (cherry-picked from commit 9f1d6223289b5571ddc77c0e5327ab51137199d9) --- ...clude-multicast-packets-from-AQL-pending-.patch | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 package/kernel/mac80211/patches/subsys/339-mac80211-exclude-multicast-packets-from-AQL-pending-.patch (limited to 'package/kernel') diff --git a/package/kernel/mac80211/patches/subsys/339-mac80211-exclude-multicast-packets-from-AQL-pending-.patch b/package/kernel/mac80211/patches/subsys/339-mac80211-exclude-multicast-packets-from-AQL-pending-.patch new file mode 100644 index 0000000000..43c3e75d65 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/339-mac80211-exclude-multicast-packets-from-AQL-pending-.patch @@ -0,0 +1,30 @@ +From: Felix Fietkau +Date: Wed, 13 Jul 2022 07:32:26 +0200 +Subject: [PATCH] mac80211: exclude multicast packets from AQL pending airtime + +In AP mode, multicast traffic is handled very differently from normal traffic, +especially if at least one client is in powersave mode. +This means that multicast packets can be buffered a lot longer than normal +unicast packets, and can eat up the AQL budget very quickly because of the low +data rate. +Along with the recent change to maintain a global PHY AQL limit, this can lead +to significant latency spikes for unicast traffic. + +Since queueing multicast to hardware is currently not constrained by AQL limits +anyway, let's just exclude it from the AQL pending airtime calculation entirely. + +Fixes: 8e4bac067105 ("wifi: mac80211: add a per-PHY AQL limit to improve fairness") +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -3792,7 +3792,7 @@ begin: + encap_out: + IEEE80211_SKB_CB(skb)->control.vif = vif; + +- if (vif && ++ if (tx.sta && + wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL)) { + bool ampdu = txq->ac != IEEE80211_AC_VO; + u32 airtime; -- cgit v1.2.3