This logic is already implemented in ieee80211_rx_mgmt_beacon. The purpose is to ignore probe responses that are received on adjacent channels. This can happen in 2.4GHz since channels overlap. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> --- net/mac80211/mlme.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index e3f71b0..d982d61 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2805,6 +2805,7 @@ static void ieee80211_rx_mgmt_probe_resp(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) { struct ieee80211_mgmt *mgmt = (void *)skb->data; + struct ieee80211_chanctx_conf *chanctx_conf; struct ieee80211_if_managed *ifmgd; struct ieee80211_rx_status *rx_status = (void *) skb->cb; size_t baselen, len = skb->len; @@ -2814,6 +2815,19 @@ static void ieee80211_rx_mgmt_probe_resp(struct ieee80211_sub_if_data *sdata, sdata_assert_lock(sdata); + rcu_read_lock(); + chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); + if (!chanctx_conf) { + rcu_read_unlock(); + return; + } + + if (rx_status->freq != chanctx_conf->def.chan->center_freq) { + rcu_read_unlock(); + return; + } + rcu_read_unlock(); + if (!ether_addr_equal(mgmt->da, sdata->vif.addr)) return; /* ignore ProbeResp to foreign address */ -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html