OSDN Git Service

staging: wfx: ensure that probe requests are filtered when AP
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Wed, 15 Apr 2020 16:11:37 +0000 (18:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Apr 2020 10:29:43 +0000 (12:29 +0200)
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>
drivers/staging/wfx/sta.c

index 0b2ef2d..b785b1b 100644 (file)
@@ -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;
 }