aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSriram R <quic_srirrama@quicinc.com>2022-12-08 09:30:50 +0530
committerJohannes Berg <johannes.berg@intel.com>2023-01-10 13:24:26 +0100
commitfa22b51ace8aa106267636f36170e940e676809c (patch)
tree5c09c5a2ff5fa03307ad3390c9d5d08f0a745016
parent0eb38842ada035d71bb06fb9116f26f24ee0f998 (diff)
downloadiwlwifi-next-fa22b51ace8aa106267636f36170e940e676809c.tar.gz
mac80211: Fix MLO address translation for multiple bss case
When multiple interfaces are present in the local interface list, new skb copy is taken before rx processing except for the first interface. The address translation happens each time only on the original skb since the hdr pointer is not updated properly to the newly created skb. As a result frames start to drop in userspace when address based checks or search fails. Signed-off-by: Sriram R <quic_srirrama@quicinc.com> Link: https://lore.kernel.org/r/20221208040050.25922-1-quic_srirrama@quicinc.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/rx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index c518287b2356bd..c6562a6d250357 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -4838,6 +4838,9 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
*/
shwt = skb_hwtstamps(rx->skb);
shwt->hwtstamp = skb_hwtstamps(skb)->hwtstamp;
+
+ /* Update the hdr pointer to the new skb for translation below */
+ hdr = (struct ieee80211_hdr *)rx->skb->data;
}
if (unlikely(rx->sta && rx->sta->sta.mlo)) {