summaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorJérôme Pouiller <jerome.pouiller@silabs.com>2020-04-15 18:11:37 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-04-16 12:29:43 +0200
commited4a707d2643de1afb938095558e3e61f6c3badd (patch)
treec6cd38382dc427824e2978a73423afd94a187bc1 /drivers/staging
parent0f55a72e7e38b7fc2a7366f3e9dfd5e8d55e5232 (diff)
downloadlinux-ed4a707d2643de1afb938095558e3e61f6c3badd.tar.bz2
staging: wfx: ensure that probe requests are filtered when AP
Device is able to automatically reply to probe request (therefore, the probe requests are not forwarded to host). This feature is enabled by wfx_start_ap(). However, further calls to wfx_configure_filter() can disable it. So, relocate the handling of probe request filtering in wfx_configure_filter(). Note that wfx_configure_filter() is always called by mac80211 when an AP start. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20200415161147.69738-11-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/wfx/sta.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index 0b2ef2d3023b..b785b1b7d583 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -241,6 +241,13 @@ void wfx_configure_filter(struct ieee80211_hw *hw,
else
wvif->filter_bssid = true;
+ // In AP mode, chip can reply to probe request itself
+ if (*total_flags & FIF_PROBE_REQ &&
+ wvif->vif->type == NL80211_IFTYPE_AP) {
+ dev_dbg(wdev->dev, "do not forward probe request in AP mode\n");
+ *total_flags &= ~FIF_PROBE_REQ;
+ }
+
if (*total_flags & FIF_PROBE_REQ)
wfx_fwd_probe_req(wvif, true);
else
@@ -577,7 +584,6 @@ int wfx_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
wvif->state = WFX_STATE_AP;
wfx_update_filtering(wvif);
wfx_upload_ap_templates(wvif);
- wfx_fwd_probe_req(wvif, false);
hif_start(wvif, &vif->bss_conf, wvif->channel);
return 0;
}