wifi: mac80211_hwsim: Support link channel matching on rx
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Tue, 14 Jun 2022 10:41:30 +0000 (13:41 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Jul 2022 09:43:12 +0000 (11:43 +0200)
Accept frames from all the links' channels.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/mac80211_hwsim.c

index 31c8a77932dc576e7f1ea94e86a77d065ec8ff99..4f22f3df161c26186724799a0d699e91e531105e 100644 (file)
@@ -1474,15 +1474,25 @@ static void mac80211_hwsim_tx_iter(void *_data, u8 *addr,
                                   struct ieee80211_vif *vif)
 {
        struct tx_iter_data *data = _data;
+       int i;
 
-       if (!vif->bss_conf.chanctx_conf)
-               return;
+       for (i = 0; i < ARRAY_SIZE(vif->link_conf); i++) {
+               struct ieee80211_bss_conf *conf = vif->link_conf[i];
+               struct ieee80211_chanctx_conf *chanctx;
 
-       if (!hwsim_chans_compat(data->channel,
-                               rcu_dereference(vif->bss_conf.chanctx_conf)->def.chan))
-               return;
+               if (!conf)
+                       continue;
+
+               chanctx = rcu_dereference(conf->chanctx_conf);
+               if (!chanctx)
+                       continue;
+
+               if (!hwsim_chans_compat(data->channel, chanctx->def.chan))
+                       continue;
 
-       data->receive = true;
+               data->receive = true;
+               return;
+       }
 }
 
 static void mac80211_hwsim_add_vendor_rtap(struct sk_buff *skb)