summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSriram R <quic_srirrama@quicinc.com>2022-12-08 07:00:50 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-02-06 10:06:31 +0300
commitea2be0ca6913d5d510e91f406d295bd4d3f184aa (patch)
treef61b2705cc9620f7107c094d8e5feef5816d88a0
parent9f31d8c889d9a4e47bfcc6c4537d0c9f89fe582c (diff)
downloadlinux-ea2be0ca6913d5d510e91f406d295bd4d3f184aa.tar.xz
mac80211: Fix MLO address translation for multiple bss case
[ Upstream commit fa22b51ace8aa106267636f36170e940e676809c ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
-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 3262ebb24092..8f0d7c666df7 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -4859,6 +4859,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)) {