mac80211: brcmfmac: backport scheduled scan cleanup and chip support
[openwrt/staging/chunkeey.git] / package / kernel / mac80211 / patches / 357-0011-brcmfmac-use-requested-scan-interval-in-scheduled-sc.patch
1 From c6989fd55ceb633d2f18c12ffae01b9123125c89 Mon Sep 17 00:00:00 2001
2 From: Arend Van Spriel <arend.vanspriel@broadcom.com>
3 Date: Wed, 23 Nov 2016 10:25:30 +0000
4 Subject: [PATCH] brcmfmac: use requested scan interval in scheduled scan
5
6 User-space can specify the interval for the scheduled scan. This
7 interval is found in scheduled scan plan. The driver supports only
8 one plan, which is legacy behaviour.
9
10 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
11 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
12 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
13 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
14 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
15 ---
16 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 1 +
17 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c | 6 +++++-
18 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h | 6 ++++--
19 3 files changed, 10 insertions(+), 3 deletions(-)
20
21 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
22 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
23 @@ -6312,6 +6312,7 @@ static void brcmf_wiphy_pno_params(struc
24 wiphy->max_sched_scan_ssids = BRCMF_PNO_MAX_PFN_COUNT;
25 wiphy->max_match_sets = BRCMF_PNO_MAX_PFN_COUNT;
26 wiphy->max_sched_scan_ie_len = BRCMF_SCAN_IE_LEN_MAX;
27 + wiphy->max_sched_scan_plan_interval = BRCMF_PNO_SCHED_SCAN_MAX_PERIOD;
28 wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
29 }
30
31 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c
32 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c
33 @@ -63,6 +63,10 @@ static int brcmf_pno_config(struct brcmf
34 pfn_param.exp = BRCMF_PNO_FREQ_EXPO_MAX;
35
36 /* set up pno scan fr */
37 + if (scan_freq < BRCMF_PNO_SCHED_SCAN_MIN_PERIOD) {
38 + brcmf_dbg(SCAN, "scan period too small, using minimum\n");
39 + scan_freq = BRCMF_PNO_SCHED_SCAN_MIN_PERIOD;
40 + }
41 pfn_param.scan_freq = cpu_to_le32(scan_freq);
42
43 if (mscan) {
44 @@ -191,7 +195,7 @@ int brcmf_pno_start_sched_scan(struct br
45 }
46
47 /* configure pno */
48 - ret = brcmf_pno_config(ifp, BRCMF_PNO_SCHED_SCAN_PERIOD, 0, 0);
49 + ret = brcmf_pno_config(ifp, req->scan_plans[0].interval, 0, 0);
50 if (ret < 0)
51 return ret;
52
53 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h
54 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h
55 @@ -16,8 +16,10 @@
56 #ifndef _BRCMF_PNO_H
57 #define _BRCMF_PNO_H
58
59 -#define BRCMF_PNO_SCAN_COMPLETE 1
60 -#define BRCMF_PNO_MAX_PFN_COUNT 16
61 +#define BRCMF_PNO_SCAN_COMPLETE 1
62 +#define BRCMF_PNO_MAX_PFN_COUNT 16
63 +#define BRCMF_PNO_SCHED_SCAN_MIN_PERIOD 10
64 +#define BRCMF_PNO_SCHED_SCAN_MAX_PERIOD 508
65
66 /**
67 * brcmf_pno_clean - disable and clear pno in firmware.