]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211_hwsim: Fix MLD address translation
authorIlan Peer <ilan.peer@intel.com>
Sat, 8 Mar 2025 21:03:34 +0000 (23:03 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Mar 2025 09:53:10 +0000 (10:53 +0100)
Do address translations only between shared links. It is
possible that while an non-AP MLD station and an AP MLD
station have shared links, the frame is intended to be sent
on a link which is not shared (for example when sending a
probe response).

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250308225541.1aa461270bb6.Ic21592e1b1634653f02b80628cb2152f6e9de367@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/virtual/mac80211_hwsim.c

index d0d9dab7f11fab9eaf337aca35c780cef726a7d1..b426f3bfab281ced35f4043f2b7a3717ab95ac96 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (c) 2008, Jouni Malinen <j@w1.fi>
  * Copyright (c) 2011, Javier Lopez <jlopex@gmail.com>
  * Copyright (c) 2016 - 2017 Intel Deutschland GmbH
- * Copyright (C) 2018 - 2024 Intel Corporation
+ * Copyright (C) 2018 - 2025 Intel Corporation
  */
 
 /*
@@ -1983,11 +1983,13 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw,
                        return;
                }
 
-               if (sta && sta->mlo) {
-                       if (WARN_ON(!link_sta)) {
-                               ieee80211_free_txskb(hw, skb);
-                               return;
-                       }
+               /* Do address translations only between shared links. It is
+                * possible that while an non-AP MLD station and an AP MLD
+                * station have shared links, the frame is intended to be sent
+                * on a link which is not shared (for example when sending a
+                * probe response).
+                */
+               if (sta && sta->mlo && link_sta) {
                        /* address translation to link addresses on TX */
                        ether_addr_copy(hdr->addr1, link_sta->addr);
                        ether_addr_copy(hdr->addr2, bss_conf->addr);