wifi: mac80211_hwsim: avoid warning with MLO PS stations
authorJohannes Berg <johannes.berg@intel.com>
Thu, 4 May 2023 13:45:07 +0000 (16:45 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 6 Jun 2023 12:14:03 +0000 (14:14 +0200)
If the station disables all links it's in powersave and
we shouldn't transmit anything to it, but we don't handle
that correctly yet. For now, just avoid the warning, once
we really add support for this case we can revert to the
old warning.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230504134511.828474-8-gregory.greenman@intel.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/virtual/mac80211_hwsim.c

index 9a8faaf..5ff193b 100644 (file)
@@ -1940,7 +1940,14 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw,
                                                                 hdr, &link_sta);
                }
 
-               if (WARN_ON(!bss_conf)) {
+               if (unlikely(!bss_conf)) {
+                       /* if it's an MLO STA, it might have deactivated all
+                        * links temporarily - but we don't handle real PS in
+                        * this code yet, so just drop the frame in that case
+                        */
+                       WARN(link != IEEE80211_LINK_UNSPECIFIED || !sta || !sta->mlo,
+                            "link:%d, sta:%pM, sta->mlo:%d\n",
+                            link, sta ? sta->addr : NULL, sta ? sta->mlo : -1);
                        ieee80211_free_txskb(hw, skb);
                        return;
                }