From: Felix Fietkau Date: Wed, 9 Oct 2024 08:25:52 +0000 (+0200) Subject: wifi: mac80211: filter on monitor interfaces based on configured channel X-Git-Tag: v6.13-rc1~135^2~195^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f92e0cf19ae0fd08e7b60f24d27a5819d8d949ba;p=thirdparty%2Fkernel%2Flinux.git wifi: mac80211: filter on monitor interfaces based on configured channel When a monitor interface has an assigned channel (only happens with the NO_VIRTUAL_MONITOR feature), only pass packets received on that channel. This is useful for monitoring on multiple channels at the same time using multiple monitor interfaces. Signed-off-by: Felix Fietkau Link: https://patch.msgid.link/1bbe55107ba0f2e62ea90f305faeb7ba9247ef29.1728462320.git-series.nbd@nbd.name Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 4849af232ee6f..2bec18fc1b035 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -837,6 +837,13 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, ieee80211_handle_mu_mimo_mon(monitor_sdata, origskb, rtap_space); list_for_each_entry_rcu(sdata, &local->mon_list, u.mntr.list) { + struct cfg80211_chan_def *chandef; + + chandef = &sdata->vif.bss_conf.chanreq.oper; + if (chandef->chan && + chandef->chan->center_freq != status->freq) + continue; + if (!prev_sdata) { prev_sdata = sdata; continue;