Skip to content

Commit b8af446

Browse files
Arend Van Sprielgregkh
authored andcommitted
brcmfmac: setup passive scan if requested by user-space
commit 35f62727df0ed8e5e4857e162d94fd46d861f1cf upstream. The driver was not properly configuring firmware with regard to the type of scan. It always performed an active scan even when user-space was requesting for passive scan, ie. the scan request was done without any SSIDs specified. Reported-by: Huang, Jiangyang <Jiangyang.Huang@itron.com> Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent ee5bd0e commit b8af446

2 files changed

Lines changed: 9 additions & 15 deletions

File tree

drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -876,20 +876,17 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
876876

877877
eth_broadcast_addr(params_le->bssid);
878878
params_le->bss_type = DOT11_BSSTYPE_ANY;
879-
params_le->scan_type = 0;
879+
params_le->scan_type = BRCMF_SCANTYPE_ACTIVE;
880880
params_le->channel_num = 0;
881881
params_le->nprobes = cpu_to_le32(-1);
882882
params_le->active_time = cpu_to_le32(-1);
883883
params_le->passive_time = cpu_to_le32(-1);
884884
params_le->home_time = cpu_to_le32(-1);
885885
memset(&params_le->ssid_le, 0, sizeof(params_le->ssid_le));
886886

887-
/* if request is null exit so it will be all channel broadcast scan */
888-
if (!request)
889-
return;
890-
891887
n_ssids = request->n_ssids;
892888
n_channels = request->n_channels;
889+
893890
/* Copy channel array if applicable */
894891
brcmf_dbg(SCAN, "### List of channelspecs to scan ### %d\n",
895892
n_channels);
@@ -926,16 +923,8 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
926923
ptr += sizeof(ssid_le);
927924
}
928925
} else {
929-
brcmf_dbg(SCAN, "Broadcast scan %p\n", request->ssids);
930-
if ((request->ssids) && request->ssids->ssid_len) {
931-
brcmf_dbg(SCAN, "SSID %s len=%d\n",
932-
params_le->ssid_le.SSID,
933-
request->ssids->ssid_len);
934-
params_le->ssid_le.SSID_len =
935-
cpu_to_le32(request->ssids->ssid_len);
936-
memcpy(&params_le->ssid_le.SSID, request->ssids->ssid,
937-
request->ssids->ssid_len);
938-
}
926+
brcmf_dbg(SCAN, "Performing passive scan\n");
927+
params_le->scan_type = BRCMF_SCANTYPE_PASSIVE;
939928
}
940929
/* Adding mask to channel numbers */
941930
params_le->channel_num =

drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
#define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
4646
#define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
4747

48+
/* scan type definitions */
49+
#define BRCMF_SCANTYPE_DEFAULT 0xFF
50+
#define BRCMF_SCANTYPE_ACTIVE 0
51+
#define BRCMF_SCANTYPE_PASSIVE 1
52+
4853
/* primary (ie tx) key */
4954
#define BRCMF_PRIMARY_KEY (1 << 1)
5055
#define DOT11_BSSTYPE_ANY 2

0 commit comments

Comments
 (0)