Skip to content

Commit 35f6272

Browse files
Arend Van SprielKalle Valo
authored andcommitted
brcmfmac: setup passive scan if requested by user-space
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. Cc: [email protected] # v4.0.x Reported-by: Huang, Jiangyang <[email protected]> Reviewed-by: Hante Meuleman <[email protected]> Reviewed-by: Pieter-Paul Giesberts <[email protected]> Reviewed-by: Franky Lin <[email protected]> Signed-off-by: Arend van Spriel <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 17df645 commit 35f6272

File tree

2 files changed

+9
-15
lines changed

2 files changed

+9
-15
lines changed

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

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

981981
eth_broadcast_addr(params_le->bssid);
982982
params_le->bss_type = DOT11_BSSTYPE_ANY;
983-
params_le->scan_type = 0;
983+
params_le->scan_type = BRCMF_SCANTYPE_ACTIVE;
984984
params_le->channel_num = 0;
985985
params_le->nprobes = cpu_to_le32(-1);
986986
params_le->active_time = cpu_to_le32(-1);
987987
params_le->passive_time = cpu_to_le32(-1);
988988
params_le->home_time = cpu_to_le32(-1);
989989
memset(&params_le->ssid_le, 0, sizeof(params_le->ssid_le));
990990

991-
/* if request is null exit so it will be all channel broadcast scan */
992-
if (!request)
993-
return;
994-
995991
n_ssids = request->n_ssids;
996992
n_channels = request->n_channels;
993+
997994
/* Copy channel array if applicable */
998995
brcmf_dbg(SCAN, "### List of channelspecs to scan ### %d\n",
999996
n_channels);
@@ -1030,16 +1027,8 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
10301027
ptr += sizeof(ssid_le);
10311028
}
10321029
} else {
1033-
brcmf_dbg(SCAN, "Broadcast scan %p\n", request->ssids);
1034-
if ((request->ssids) && request->ssids->ssid_len) {
1035-
brcmf_dbg(SCAN, "SSID %s len=%d\n",
1036-
params_le->ssid_le.SSID,
1037-
request->ssids->ssid_len);
1038-
params_le->ssid_le.SSID_len =
1039-
cpu_to_le32(request->ssids->ssid_len);
1040-
memcpy(&params_le->ssid_le.SSID, request->ssids->ssid,
1041-
request->ssids->ssid_len);
1042-
}
1030+
brcmf_dbg(SCAN, "Performing passive scan\n");
1031+
params_le->scan_type = BRCMF_SCANTYPE_PASSIVE;
10431032
}
10441033
/* Adding mask to channel numbers */
10451034
params_le->channel_num =

drivers/net/wireless/broadcom/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
#define BRCMF_WSEC_MAX_PSK_LEN 32
4954
#define BRCMF_WSEC_PASSPHRASE BIT(0)
5055

0 commit comments

Comments
 (0)