diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-02-14 19:39:02 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-02-14 19:41:07 +0100 |
commit | 9cb63f53609b77958ff069091f2ad8fc884ceaeb (patch) | |
tree | a97a0445ff32c35da32ace58232b90eba6ea2db3 | |
parent | ed1e234d87fc2fc1561b02dcc2f67a464721fc6f (diff) | |
download | upstream-9cb63f53609b77958ff069091f2ad8fc884ceaeb.tar.gz upstream-9cb63f53609b77958ff069091f2ad8fc884ceaeb.tar.bz2 upstream-9cb63f53609b77958ff069091f2ad8fc884ceaeb.zip |
mac80211: fix a regression in processing rx stats
A logic error caused rx rate update to be missed for any driver not using
fast-rx
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | package/kernel/mac80211/patches/subsys/316-mac80211-fix-a-mistake-check-for-rx_stats-update.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/316-mac80211-fix-a-mistake-check-for-rx_stats-update.patch b/package/kernel/mac80211/patches/subsys/316-mac80211-fix-a-mistake-check-for-rx_stats-update.patch new file mode 100644 index 0000000000..91a602bd27 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/316-mac80211-fix-a-mistake-check-for-rx_stats-update.patch @@ -0,0 +1,28 @@ +From: Wen Gong <wgong@codeaurora.org> +Date: Wed, 9 Dec 2020 11:06:29 +0800 +Subject: [PATCH] mac80211: fix a mistake check for rx_stats update + +It should be !is_multicast_ether_addr() in ieee80211_rx_h_sta_process() +for the rx_stats update, below commit remove the !, this patch is to +change it back. + +It lead the rx rate "iw wlan0 station dump" become invalid for some +scenario when IEEE80211_HW_USES_RSS is set. + +Fixes: 09a740ce352e ("mac80211: receive and process S1G beacons") +Signed-off-by: Wen Gong <wgong@codeaurora.org> +Link: https://lore.kernel.org/r/1607483189-3891-1-git-send-email-wgong@codeaurora.org +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -1758,7 +1758,7 @@ ieee80211_rx_h_sta_process(struct ieee80 + } else if (rx->sdata->vif.type == NL80211_IFTYPE_OCB) { + sta->rx_stats.last_rx = jiffies; + } else if (!ieee80211_is_s1g_beacon(hdr->frame_control) && +- is_multicast_ether_addr(hdr->addr1)) { ++ !is_multicast_ether_addr(hdr->addr1)) { + /* + * Mesh beacons will update last_rx when if they are found to + * match the current local configuration when processed. |