diff options
Diffstat (limited to 'package/kernel/mac80211/patches/357-0003-brcmfmac-move-pno-helper-functions-in-separate-sourc.patch')
-rw-r--r-- | package/kernel/mac80211/patches/357-0003-brcmfmac-move-pno-helper-functions-in-separate-sourc.patch | 319 |
1 files changed, 0 insertions, 319 deletions
diff --git a/package/kernel/mac80211/patches/357-0003-brcmfmac-move-pno-helper-functions-in-separate-sourc.patch b/package/kernel/mac80211/patches/357-0003-brcmfmac-move-pno-helper-functions-in-separate-sourc.patch deleted file mode 100644 index 94f2e6b972..0000000000 --- a/package/kernel/mac80211/patches/357-0003-brcmfmac-move-pno-helper-functions-in-separate-sourc.patch +++ /dev/null @@ -1,319 +0,0 @@ -From ac55136f43d3336c7b40238b779c404008229929 Mon Sep 17 00:00:00 2001 -From: Arend Van Spriel <arend.vanspriel@broadcom.com> -Date: Wed, 23 Nov 2016 10:25:22 +0000 -Subject: [PATCH] brcmfmac: move pno helper functions in separate source file - -Introducing new source file for pno related functionality. Moving -existing pno functions. - -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> ---- - .../wireless/broadcom/brcm80211/brcmfmac/Makefile | 3 +- - .../broadcom/brcm80211/brcmfmac/cfg80211.c | 93 ++----------------- - .../net/wireless/broadcom/brcm80211/brcmfmac/pno.c | 100 +++++++++++++++++++++ - .../net/wireless/broadcom/brcm80211/brcmfmac/pno.h | 40 +++++++++ - 4 files changed, 150 insertions(+), 86 deletions(-) - create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c - create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/Makefile -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/Makefile -@@ -35,7 +35,8 @@ brcmfmac-objs += \ - firmware.o \ - feature.o \ - btcoex.o \ -- vendor.o -+ vendor.o \ -+ pno.o - brcmfmac-$(CPTCFG_BRCMFMAC_PROTO_BCDC) += \ - bcdc.o - brcmfmac-$(CPTCFG_BRCMFMAC_PROTO_MSGBUF) += \ ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -32,6 +32,7 @@ - #include "fwil_types.h" - #include "p2p.h" - #include "btcoex.h" -+#include "pno.h" - #include "cfg80211.h" - #include "feature.h" - #include "fwil.h" -@@ -41,16 +42,6 @@ - #include "common.h" - - #define BRCMF_SCAN_IE_LEN_MAX 2048 --#define BRCMF_PNO_VERSION 2 --#define BRCMF_PNO_TIME 30 --#define BRCMF_PNO_REPEAT 4 --#define BRCMF_PNO_FREQ_EXPO_MAX 3 --#define BRCMF_PNO_MAX_PFN_COUNT 16 --#define BRCMF_PNO_ENABLE_ADAPTSCAN_BIT 6 --#define BRCMF_PNO_HIDDEN_BIT 2 --#define BRCMF_PNO_WPA_AUTH_ANY 0xFFFFFFFF --#define BRCMF_PNO_SCAN_COMPLETE 1 --#define BRCMF_PNO_SCAN_INCOMPLETE 0 - - #define WPA_OUI "\x00\x50\xF2" /* WPA OUI */ - #define WPA_OUI_TYPE 1 -@@ -3323,76 +3314,6 @@ out_err: - return err; - } - --static int brcmf_dev_pno_clean(struct net_device *ndev) --{ -- int ret; -- -- /* Disable pfn */ -- ret = brcmf_fil_iovar_int_set(netdev_priv(ndev), "pfn", 0); -- if (ret == 0) { -- /* clear pfn */ -- ret = brcmf_fil_iovar_data_set(netdev_priv(ndev), "pfnclear", -- NULL, 0); -- } -- if (ret < 0) -- brcmf_err("failed code %d\n", ret); -- -- return ret; --} -- --static int brcmf_dev_pno_config(struct brcmf_if *ifp, -- struct cfg80211_sched_scan_request *request) --{ -- struct brcmf_pno_param_le pfn_param; -- struct brcmf_pno_macaddr_le pfn_mac; -- s32 err; -- u8 *mac_mask; -- int i; -- -- memset(&pfn_param, 0, sizeof(pfn_param)); -- pfn_param.version = cpu_to_le32(BRCMF_PNO_VERSION); -- -- /* set extra pno params */ -- pfn_param.flags = cpu_to_le16(1 << BRCMF_PNO_ENABLE_ADAPTSCAN_BIT); -- pfn_param.repeat = BRCMF_PNO_REPEAT; -- pfn_param.exp = BRCMF_PNO_FREQ_EXPO_MAX; -- -- /* set up pno scan fr */ -- pfn_param.scan_freq = cpu_to_le32(BRCMF_PNO_TIME); -- -- err = brcmf_fil_iovar_data_set(ifp, "pfn_set", &pfn_param, -- sizeof(pfn_param)); -- if (err) { -- brcmf_err("pfn_set failed, err=%d\n", err); -- return err; -- } -- -- /* Find out if mac randomization should be turned on */ -- if (!(request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR)) -- return 0; -- -- pfn_mac.version = BRCMF_PFN_MACADDR_CFG_VER; -- pfn_mac.flags = BRCMF_PFN_MAC_OUI_ONLY | BRCMF_PFN_SET_MAC_UNASSOC; -- -- memcpy(pfn_mac.mac, request->mac_addr, ETH_ALEN); -- mac_mask = request->mac_addr_mask; -- for (i = 0; i < ETH_ALEN; i++) { -- pfn_mac.mac[i] &= mac_mask[i]; -- pfn_mac.mac[i] |= get_random_int() & ~(mac_mask[i]); -- } -- /* Clear multi bit */ -- pfn_mac.mac[0] &= 0xFE; -- /* Set locally administered */ -- pfn_mac.mac[0] |= 0x02; -- -- err = brcmf_fil_iovar_data_set(ifp, "pfn_macaddr", &pfn_mac, -- sizeof(pfn_mac)); -- if (err) -- brcmf_err("pfn_macaddr failed, err=%d\n", err); -- -- return err; --} -- - static int - brcmf_cfg80211_sched_scan_start(struct wiphy *wiphy, - struct net_device *ndev, -@@ -3436,15 +3357,16 @@ brcmf_cfg80211_sched_scan_start(struct w - - if (request->n_match_sets > 0) { - /* clean up everything */ -- ret = brcmf_dev_pno_clean(ndev); -+ ret = brcmf_pno_clean(ifp); - if (ret < 0) { - brcmf_err("failed error=%d\n", ret); - return ret; - } - - /* configure pno */ -- if (brcmf_dev_pno_config(ifp, request)) -- return -EINVAL; -+ ret = brcmf_pno_config(ifp, request); -+ if (ret < 0) -+ return ret; - - /* configure each match set */ - for (i = 0; i < request->n_match_sets; i++) { -@@ -3486,11 +3408,12 @@ static int brcmf_cfg80211_sched_scan_sto - struct net_device *ndev) - { - struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); -+ struct brcmf_if *ifp = netdev_priv(ndev); - - brcmf_dbg(SCAN, "enter\n"); -- brcmf_dev_pno_clean(ndev); -+ brcmf_pno_clean(ifp); - if (cfg->sched_escan) -- brcmf_notify_escan_complete(cfg, netdev_priv(ndev), true, true); -+ brcmf_notify_escan_complete(cfg, ifp, true, true); - return 0; - } - ---- /dev/null -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c -@@ -0,0 +1,100 @@ -+/* -+ * Copyright (c) 2016 Broadcom -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+#include <linux/netdevice.h> -+#include <net/cfg80211.h> -+ -+#include "core.h" -+#include "debug.h" -+#include "pno.h" -+#include "fwil.h" -+#include "fwil_types.h" -+ -+#define BRCMF_PNO_VERSION 2 -+#define BRCMF_PNO_TIME 30 -+#define BRCMF_PNO_REPEAT 4 -+#define BRCMF_PNO_FREQ_EXPO_MAX 3 -+#define BRCMF_PNO_ENABLE_ADAPTSCAN_BIT 6 -+#define BRCMF_PNO_SCAN_INCOMPLETE 0 -+ -+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, -+ struct cfg80211_sched_scan_request *request) -+{ -+ struct brcmf_pno_param_le pfn_param; -+ struct brcmf_pno_macaddr_le pfn_mac; -+ s32 err; -+ u8 *mac_mask; -+ int i; -+ -+ memset(&pfn_param, 0, sizeof(pfn_param)); -+ pfn_param.version = cpu_to_le32(BRCMF_PNO_VERSION); -+ -+ /* set extra pno params */ -+ pfn_param.flags = cpu_to_le16(1 << BRCMF_PNO_ENABLE_ADAPTSCAN_BIT); -+ pfn_param.repeat = BRCMF_PNO_REPEAT; -+ pfn_param.exp = BRCMF_PNO_FREQ_EXPO_MAX; -+ -+ /* set up pno scan fr */ -+ pfn_param.scan_freq = cpu_to_le32(BRCMF_PNO_TIME); -+ -+ err = brcmf_fil_iovar_data_set(ifp, "pfn_set", &pfn_param, -+ sizeof(pfn_param)); -+ if (err) { -+ brcmf_err("pfn_set failed, err=%d\n", err); -+ return err; -+ } -+ -+ /* Find out if mac randomization should be turned on */ -+ if (!(request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR)) -+ return 0; -+ -+ pfn_mac.version = BRCMF_PFN_MACADDR_CFG_VER; -+ pfn_mac.flags = BRCMF_PFN_MAC_OUI_ONLY | BRCMF_PFN_SET_MAC_UNASSOC; -+ -+ memcpy(pfn_mac.mac, request->mac_addr, ETH_ALEN); -+ mac_mask = request->mac_addr_mask; -+ for (i = 0; i < ETH_ALEN; i++) { -+ pfn_mac.mac[i] &= mac_mask[i]; -+ pfn_mac.mac[i] |= get_random_int() & ~(mac_mask[i]); -+ } -+ /* Clear multi bit */ -+ pfn_mac.mac[0] &= 0xFE; -+ /* Set locally administered */ -+ pfn_mac.mac[0] |= 0x02; -+ -+ err = brcmf_fil_iovar_data_set(ifp, "pfn_macaddr", &pfn_mac, -+ sizeof(pfn_mac)); -+ if (err) -+ brcmf_err("pfn_macaddr failed, err=%d\n", err); -+ -+ return err; -+} -+ ---- /dev/null -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h -@@ -0,0 +1,40 @@ -+/* -+ * Copyright (c) 2016 Broadcom -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+#ifndef _BRCMF_PNO_H -+#define _BRCMF_PNO_H -+ -+#define BRCMF_PNO_SCAN_COMPLETE 1 -+#define BRCMF_PNO_WPA_AUTH_ANY 0xFFFFFFFF -+#define BRCMF_PNO_HIDDEN_BIT 2 -+#define BRCMF_PNO_MAX_PFN_COUNT 16 -+ -+/** -+ * brcmf_pno_clean - disable and clear pno in firmware. -+ * -+ * @ifp: interface object used. -+ */ -+int brcmf_pno_clean(struct brcmf_if *ifp); -+ -+/** -+ * brcmf_pno_config - configure pno parameters. -+ * -+ * @ifp: interface object used. -+ * @request: scheduled scan parameters. -+ */ -+int brcmf_pno_config(struct brcmf_if *ifp, -+ struct cfg80211_sched_scan_request *request); -+ -+#endif /* _BRCMF_PNO_H */ |