]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.4.92/brcmfmac-setup-passive-scan-if-requested-by-user-space.patch
Fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 4.4.92 / brcmfmac-setup-passive-scan-if-requested-by-user-space.patch
1 From 35f62727df0ed8e5e4857e162d94fd46d861f1cf Mon Sep 17 00:00:00 2001
2 From: Arend Van Spriel <arend.vanspriel@broadcom.com>
3 Date: Tue, 12 Sep 2017 10:47:54 +0200
4 Subject: brcmfmac: setup passive scan if requested by user-space
5
6 From: Arend Van Spriel <arend.vanspriel@broadcom.com>
7
8 commit 35f62727df0ed8e5e4857e162d94fd46d861f1cf upstream.
9
10 The driver was not properly configuring firmware with regard to the
11 type of scan. It always performed an active scan even when user-space
12 was requesting for passive scan, ie. the scan request was done without
13 any SSIDs specified.
14
15 Reported-by: Huang, Jiangyang <Jiangyang.Huang@itron.com>
16 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
17 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
18 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
19 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
20 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22
23 ---
24 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 19 ++++---------------
25 drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h | 5 +++++
26 2 files changed, 9 insertions(+), 15 deletions(-)
27
28 --- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
29 +++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
30 @@ -876,7 +876,7 @@ static void brcmf_escan_prep(struct brcm
31
32 eth_broadcast_addr(params_le->bssid);
33 params_le->bss_type = DOT11_BSSTYPE_ANY;
34 - params_le->scan_type = 0;
35 + params_le->scan_type = BRCMF_SCANTYPE_ACTIVE;
36 params_le->channel_num = 0;
37 params_le->nprobes = cpu_to_le32(-1);
38 params_le->active_time = cpu_to_le32(-1);
39 @@ -884,12 +884,9 @@ static void brcmf_escan_prep(struct brcm
40 params_le->home_time = cpu_to_le32(-1);
41 memset(&params_le->ssid_le, 0, sizeof(params_le->ssid_le));
42
43 - /* if request is null exit so it will be all channel broadcast scan */
44 - if (!request)
45 - return;
46 -
47 n_ssids = request->n_ssids;
48 n_channels = request->n_channels;
49 +
50 /* Copy channel array if applicable */
51 brcmf_dbg(SCAN, "### List of channelspecs to scan ### %d\n",
52 n_channels);
53 @@ -926,16 +923,8 @@ static void brcmf_escan_prep(struct brcm
54 ptr += sizeof(ssid_le);
55 }
56 } else {
57 - brcmf_dbg(SCAN, "Broadcast scan %p\n", request->ssids);
58 - if ((request->ssids) && request->ssids->ssid_len) {
59 - brcmf_dbg(SCAN, "SSID %s len=%d\n",
60 - params_le->ssid_le.SSID,
61 - request->ssids->ssid_len);
62 - params_le->ssid_le.SSID_len =
63 - cpu_to_le32(request->ssids->ssid_len);
64 - memcpy(&params_le->ssid_le.SSID, request->ssids->ssid,
65 - request->ssids->ssid_len);
66 - }
67 + brcmf_dbg(SCAN, "Performing passive scan\n");
68 + params_le->scan_type = BRCMF_SCANTYPE_PASSIVE;
69 }
70 /* Adding mask to channel numbers */
71 params_le->channel_num =
72 --- a/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
73 +++ b/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
74 @@ -45,6 +45,11 @@
75 #define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
76 #define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
77
78 +/* scan type definitions */
79 +#define BRCMF_SCANTYPE_DEFAULT 0xFF
80 +#define BRCMF_SCANTYPE_ACTIVE 0
81 +#define BRCMF_SCANTYPE_PASSIVE 1
82 +
83 /* primary (ie tx) key */
84 #define BRCMF_PRIMARY_KEY (1 << 1)
85 #define DOT11_BSSTYPE_ANY 2