diff options
author | Jérôme Pouiller <jerome.pouiller@silabs.com> | 2020-04-15 18:11:37 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-04-16 12:29:43 +0200 |
commit | ed4a707d2643de1afb938095558e3e61f6c3badd (patch) | |
tree | c6cd38382dc427824e2978a73423afd94a187bc1 /drivers/staging | |
parent | 0f55a72e7e38b7fc2a7366f3e9dfd5e8d55e5232 (diff) | |
download | linux-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.c | 8 |
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; } |