[PATCH 10/20] staging: wfx: ensure that probe requests are filtered when AP

Jerome Pouiller
2020-04-15T16:15:40Z

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>
---
drivers/staging/wfx/sta.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

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;
}
--
2.25.1