staging: wfx: fix support for CSA
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Mon, 13 Sep 2021 13:01:41 +0000 (15:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Sep 2021 07:16:32 +0000 (09:16 +0200)
The WF200 is able to filter beacons. However, it uses a positive filter:
any change to an IE not listed won't be reported.

In current code, the changes in Channel Switch Announcement (CSA) are
not reported to the host. Thus, it fixes the support for CSA in station
mode.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20210913130203.1903622-11-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/sta.c

index aff0559653bf7385498deea5067175b7cb516636..5f2f8900ce998dab0cb5eb520f4531d09cbd4b8f 100644 (file)
@@ -80,13 +80,18 @@ static void wfx_filter_beacon(struct wfx_vif *wvif, bool filter_beacon)
                        .has_changed  = 1,
                        .no_longer    = 1,
                        .has_appeared = 1,
+               }, {
+                       .ie_id        = WLAN_EID_CHANNEL_SWITCH,
+                       .has_changed  = 1,
+                       .no_longer    = 1,
+                       .has_appeared = 1,
                }
        };
 
        if (!filter_beacon) {
                hif_beacon_filter_control(wvif, 0, 1);
        } else {
-               hif_set_beacon_filter_table(wvif, 3, filter_ies);
+               hif_set_beacon_filter_table(wvif, ARRAY_SIZE(filter_ies), filter_ies);
                hif_beacon_filter_control(wvif, HIF_BEACON_FILTER_ENABLE, 0);
        }
 }