diff options
Diffstat (limited to 'package/kernel/mac80211/patches/357-0008-brcmfmac-move-scheduled-scan-activation-to-pno-sourc.patch')
-rw-r--r-- | package/kernel/mac80211/patches/357-0008-brcmfmac-move-scheduled-scan-activation-to-pno-sourc.patch | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/package/kernel/mac80211/patches/357-0008-brcmfmac-move-scheduled-scan-activation-to-pno-sourc.patch b/package/kernel/mac80211/patches/357-0008-brcmfmac-move-scheduled-scan-activation-to-pno-sourc.patch deleted file mode 100644 index 6dcea2832a..0000000000 --- a/package/kernel/mac80211/patches/357-0008-brcmfmac-move-scheduled-scan-activation-to-pno-sourc.patch +++ /dev/null @@ -1,292 +0,0 @@ -From 3e48611d31dd333be01576902f2dc11adefc9a06 Mon Sep 17 00:00:00 2001 -From: Arend Van Spriel <arend.vanspriel@broadcom.com> -Date: Wed, 23 Nov 2016 10:25:27 +0000 -Subject: [PATCH] brcmfmac: move scheduled scan activation to pno source file - -Rework .sched_scan_start() callback moving actual configuration of -the device in pno source file. - -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> ---- - .../broadcom/brcm80211/brcmfmac/cfg80211.c | 65 +----------- - .../net/wireless/broadcom/brcm80211/brcmfmac/pno.c | 110 +++++++++++++++++---- - .../net/wireless/broadcom/brcm80211/brcmfmac/pno.h | 29 +----- - 3 files changed, 94 insertions(+), 110 deletions(-) - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -42,7 +42,6 @@ - #include "common.h" - - #define BRCMF_SCAN_IE_LEN_MAX 2048 --#define BRCMF_SCHED_SCAN_PERIOD 30 - - #define WPA_OUI "\x00\x50\xF2" /* WPA OUI */ - #define WPA_OUI_TYPE 1 -@@ -3342,24 +3341,6 @@ free_req: - return err; - } - --static bool brcmf_is_ssid_active(struct cfg80211_ssid *ssid, -- struct cfg80211_sched_scan_request *req) --{ -- int i; -- -- if (!ssid || !req->ssids || !req->n_ssids) -- return false; -- -- for (i = 0; i < req->n_ssids; i++) { -- if (ssid->ssid_len == req->ssids[i].ssid_len) { -- if (!strncmp(ssid->ssid, req->ssids[i].ssid, -- ssid->ssid_len)) -- return true; -- } -- } -- return false; --} -- - static int - brcmf_cfg80211_sched_scan_start(struct wiphy *wiphy, - struct net_device *ndev, -@@ -3367,9 +3348,6 @@ brcmf_cfg80211_sched_scan_start(struct w - { - struct brcmf_if *ifp = netdev_priv(ndev); - struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); -- struct cfg80211_ssid *ssid; -- int i; -- int ret = 0; - - brcmf_dbg(SCAN, "Enter n_match_sets:%d n_ssids:%d\n", - req->n_match_sets, req->n_ssids); -@@ -3389,48 +3367,7 @@ brcmf_cfg80211_sched_scan_start(struct w - return -EINVAL; - } - -- /* clean up everything */ -- ret = brcmf_pno_clean(ifp); -- if (ret < 0) { -- brcmf_err("failed error=%d\n", ret); -- return ret; -- } -- -- /* configure pno */ -- ret = brcmf_pno_config(ifp, BRCMF_SCHED_SCAN_PERIOD, 0, 0); -- if (ret < 0) -- return ret; -- -- /* configure random mac */ -- if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { -- ret = brcmf_pno_set_random(ifp, req->mac_addr, -- req->mac_addr_mask); -- if (ret < 0) -- return ret; -- } -- -- /* configure each match set */ -- for (i = 0; i < req->n_match_sets; i++) { -- -- ssid = &req->match_sets[i].ssid; -- -- if (!ssid->ssid_len) { -- brcmf_err("skip broadcast ssid\n"); -- continue; -- } -- -- ret = brcmf_pno_add_ssid(ifp, ssid, -- brcmf_is_ssid_active(ssid, req)); -- if (ret < 0) -- brcmf_dbg(SCAN, ">>> PNO filter %s for ssid (%s)\n", -- ret == 0 ? "set" : "failed", ssid->ssid); -- } -- /* Enable the PNO */ -- ret = brcmf_fil_iovar_int_set(ifp, "pfn", 1); -- if (ret < 0) -- brcmf_err("PNO enable failed!! ret=%d\n", ret); -- -- return ret; -+ return brcmf_pno_start_sched_scan(ifp, req); - } - - static int brcmf_cfg80211_sched_scan_stop(struct wiphy *wiphy, ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c -@@ -32,25 +32,10 @@ - #define BRCMF_PNO_SCAN_INCOMPLETE 0 - #define BRCMF_PNO_WPA_AUTH_ANY 0xFFFFFFFF - #define BRCMF_PNO_HIDDEN_BIT 2 -+#define BRCMF_PNO_SCHED_SCAN_PERIOD 30 - --int brcmf_pno_clean(struct brcmf_if *ifp) --{ -- int ret; -- -- /* Disable pfn */ -- ret = brcmf_fil_iovar_int_set(ifp, "pfn", 0); -- if (ret == 0) { -- /* clear pfn */ -- ret = brcmf_fil_iovar_data_set(ifp, "pfnclear", NULL, 0); -- } -- if (ret < 0) -- brcmf_err("failed code %d\n", ret); -- -- return ret; --} -- --int brcmf_pno_config(struct brcmf_if *ifp, u32 scan_freq, -- u32 mscan, u32 bestn) -+static int brcmf_pno_config(struct brcmf_if *ifp, u32 scan_freq, -+ u32 mscan, u32 bestn) - { - struct brcmf_pno_param_le pfn_param; - u16 flags; -@@ -102,7 +87,8 @@ exit: - return err; - } - --int brcmf_pno_set_random(struct brcmf_if *ifp, u8 *mac_addr, u8 *mac_mask) -+static int brcmf_pno_set_random(struct brcmf_if *ifp, u8 *mac_addr, -+ u8 *mac_mask) - { - struct brcmf_pno_macaddr_le pfn_mac; - int err, i; -@@ -128,8 +114,8 @@ int brcmf_pno_set_random(struct brcmf_if - return err; - } - --int brcmf_pno_add_ssid(struct brcmf_if *ifp, struct cfg80211_ssid *ssid, -- bool active) -+static int brcmf_pno_add_ssid(struct brcmf_if *ifp, struct cfg80211_ssid *ssid, -+ bool active) - { - struct brcmf_pno_net_param_le pfn; - -@@ -144,3 +130,85 @@ int brcmf_pno_add_ssid(struct brcmf_if * - return brcmf_fil_iovar_data_set(ifp, "pfn_add", &pfn, sizeof(pfn)); - } - -+static bool brcmf_is_ssid_active(struct cfg80211_ssid *ssid, -+ struct cfg80211_sched_scan_request *req) -+{ -+ int i; -+ -+ if (!ssid || !req->ssids || !req->n_ssids) -+ return false; -+ -+ for (i = 0; i < req->n_ssids; i++) { -+ if (ssid->ssid_len == req->ssids[i].ssid_len) { -+ if (!strncmp(ssid->ssid, req->ssids[i].ssid, -+ ssid->ssid_len)) -+ return true; -+ } -+ } -+ return false; -+} -+ -+int brcmf_pno_clean(struct brcmf_if *ifp) -+{ -+ int ret; -+ -+ /* Disable pfn */ -+ ret = brcmf_fil_iovar_int_set(ifp, "pfn", 0); -+ if (ret == 0) { -+ /* clear pfn */ -+ ret = brcmf_fil_iovar_data_set(ifp, "pfnclear", NULL, 0); -+ } -+ if (ret < 0) -+ brcmf_err("failed code %d\n", ret); -+ -+ return ret; -+} -+ -+int brcmf_pno_start_sched_scan(struct brcmf_if *ifp, -+ struct cfg80211_sched_scan_request *req) -+{ -+ struct cfg80211_ssid *ssid; -+ int i, ret; -+ -+ /* clean up everything */ -+ ret = brcmf_pno_clean(ifp); -+ if (ret < 0) { -+ brcmf_err("failed error=%d\n", ret); -+ return ret; -+ } -+ -+ /* configure pno */ -+ ret = brcmf_pno_config(ifp, BRCMF_PNO_SCHED_SCAN_PERIOD, 0, 0); -+ if (ret < 0) -+ return ret; -+ -+ /* configure random mac */ -+ if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { -+ ret = brcmf_pno_set_random(ifp, req->mac_addr, -+ req->mac_addr_mask); -+ if (ret < 0) -+ return ret; -+ } -+ -+ /* configure each match set */ -+ for (i = 0; i < req->n_match_sets; i++) { -+ ssid = &req->match_sets[i].ssid; -+ if (!ssid->ssid_len) { -+ brcmf_err("skip broadcast ssid\n"); -+ continue; -+ } -+ -+ ret = brcmf_pno_add_ssid(ifp, ssid, -+ brcmf_is_ssid_active(ssid, req)); -+ if (ret < 0) -+ brcmf_dbg(SCAN, ">>> PNO filter %s for ssid (%s)\n", -+ ret == 0 ? "set" : "failed", ssid->ssid); -+ } -+ /* Enable the PNO */ -+ ret = brcmf_fil_iovar_int_set(ifp, "pfn", 1); -+ if (ret < 0) -+ brcmf_err("PNO enable failed!! ret=%d\n", ret); -+ -+ return ret; -+} -+ ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h -@@ -27,33 +27,12 @@ - int brcmf_pno_clean(struct brcmf_if *ifp); - - /** -- * brcmf_pno_config - configure pno parameters. -+ * brcmf_pno_start_sched_scan - initiate scheduled scan on device. - * - * @ifp: interface object used. -- * @scan_freq: scan frequency period in seconds. -- * @mscan: maximum number of scans stored in firmware. -- * @bestn: maximum number of APs per scan stored in firmware. -+ * @req: configuration parameters for scheduled scan. - */ --int brcmf_pno_config(struct brcmf_if *ifp, u32 scan_freq, -- u32 mscan, u32 bestn); -- --/** -- * brcmf_pno_set_random - setup randomisation mac address for pno. -- * -- * @ifp: interface object used. -- * @mac_addr: MAC address used with randomisation. -- * @mac_mask: MAC address mask used for randomisation. -- */ --int brcmf_pno_set_random(struct brcmf_if *ifp, u8 *mac_addr, u8 *mac_mask); -- --/** -- * brcmf_pno_add_ssid - add ssid for pno in firmware. -- * -- * @ifp: interface object used. -- * @ssid: ssid information. -- * @active: indicate this ssid needs to be actively probed. -- */ --int brcmf_pno_add_ssid(struct brcmf_if *ifp, struct cfg80211_ssid *ssid, -- bool active); -+int brcmf_pno_start_sched_scan(struct brcmf_if *ifp, -+ struct cfg80211_sched_scan_request *req); - - #endif /* _BRCMF_PNO_H */ |