mac80211: rebase ontop of v4.18-rc7
[openwrt/staging/blogic.git] / package / kernel / mac80211 / patches / 312-v4.16-0010-brcmfmac-Remove-repeated-calls-to-brcmf_chip_get_cor.patch
diff --git a/package/kernel/mac80211/patches/312-v4.16-0010-brcmfmac-Remove-repeated-calls-to-brcmf_chip_get_cor.patch b/package/kernel/mac80211/patches/312-v4.16-0010-brcmfmac-Remove-repeated-calls-to-brcmf_chip_get_cor.patch
deleted file mode 100644 (file)
index 69fbf5c..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-From 21a10846d09db3c5e3bdfb0be0fc7aa9fdc7000a Mon Sep 17 00:00:00 2001
-From: Ian Molton <ian@mnementh.co.uk>
-Date: Fri, 8 Dec 2017 13:10:35 +0100
-Subject: [PATCH] brcmfmac: Remove repeated calls to brcmf_chip_get_core()
-
-There is no need to repeatdly call brcmf_chip_get_core(), which
-traverses a list of cores every time its called (including during
-register access code!).
-
-Call it once, and store a pointer to the core structure. The existing
-code does nto keep track of users of the cores anyway, and even so, this
-will allow for easier refcounting in future.
-
-Signed-off-by: Ian Molton <ian@mnementh.co.uk>
-Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
-Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c    | 25 +++++++++++++---------
- 1 file changed, 15 insertions(+), 10 deletions(-)
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-@@ -436,6 +436,7 @@ struct brcmf_sdio_count {
- struct brcmf_sdio {
-       struct brcmf_sdio_dev *sdiodev; /* sdio device handler */
-       struct brcmf_chip *ci;  /* Chip info struct */
-+      struct brcmf_core *sdio_core; /* sdio core info struct */
-       u32 hostintmask;        /* Copy of Host Interrupt Mask */
-       atomic_t intstatus;     /* Intstatus bits (events) pending */
-@@ -665,10 +666,9 @@ static bool data_ok(struct brcmf_sdio *b
-  */
- static int r_sdreg32(struct brcmf_sdio *bus, u32 *regvar, u32 offset)
- {
--      struct brcmf_core *core;
-+      struct brcmf_core *core = bus->sdio_core;
-       int ret;
--      core = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
-       *regvar = brcmf_sdiod_readl(bus->sdiodev, core->base + offset, &ret);
-       return ret;
-@@ -676,10 +676,9 @@ static int r_sdreg32(struct brcmf_sdio *
- static int w_sdreg32(struct brcmf_sdio *bus, u32 regval, u32 reg_offset)
- {
--      struct brcmf_core *core;
-+      struct brcmf_core *core = bus->sdio_core;
-       int ret;
--      core = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
-       brcmf_sdiod_writel(bus->sdiodev, core->base + reg_offset, regval, &ret);
-       return ret;
-@@ -2495,12 +2494,11 @@ static inline void brcmf_sdio_clrintr(st
- static int brcmf_sdio_intr_rstatus(struct brcmf_sdio *bus)
- {
--      struct brcmf_core *buscore;
-+      struct brcmf_core *buscore = bus->sdio_core;
-       u32 addr;
-       unsigned long val;
-       int ret;
--      buscore = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
-       addr = buscore->base + SD_REG(intstatus);
-       val = brcmf_sdiod_readl(bus->sdiodev, addr, &ret);
-@@ -3377,13 +3375,14 @@ static void brcmf_sdio_sr_init(struct br
- /* enable KSO bit */
- static int brcmf_sdio_kso_init(struct brcmf_sdio *bus)
- {
-+      struct brcmf_core *core = bus->sdio_core;
-       u8 val;
-       int err = 0;
-       brcmf_dbg(TRACE, "Enter\n");
-       /* KSO bit added in SDIO core rev 12 */
--      if (brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV)->rev < 12)
-+      if (core->rev < 12)
-               return 0;
-       val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, &err);
-@@ -3412,6 +3411,7 @@ static int brcmf_sdio_bus_preinit(struct
-       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
-       struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
-       struct brcmf_sdio *bus = sdiodev->bus;
-+      struct brcmf_core *core = bus->sdio_core;
-       uint pad_size;
-       u32 value;
-       int err;
-@@ -3420,7 +3420,7 @@ static int brcmf_sdio_bus_preinit(struct
-        * a device perspective, ie. bus:txglom affects the
-        * bus transfers from device to host.
-        */
--      if (brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV)->rev < 12) {
-+      if (core->rev < 12) {
-               /* for sdio core rev < 12, disable txgloming */
-               value = 0;
-               err = brcmf_iovar_data_set(dev, "bus:txglom", &value,
-@@ -3758,11 +3758,10 @@ static void brcmf_sdio_buscore_activate(
-                                       u32 rstvec)
- {
-       struct brcmf_sdio_dev *sdiodev = ctx;
--      struct brcmf_core *core;
-+      struct brcmf_core *core = sdiodev->bus->sdio_core;
-       u32 reg_addr;
-       /* clear all interrupts */
--      core = brcmf_chip_get_core(chip, BCMA_CORE_SDIO_DEV);
-       reg_addr = core->base + SD_REG(intstatus);
-       brcmf_sdiod_writel(sdiodev, reg_addr, 0xFFFFFFFF, NULL);
-@@ -3843,6 +3842,12 @@ brcmf_sdio_probe_attach(struct brcmf_sdi
-               bus->ci = NULL;
-               goto fail;
-       }
-+
-+      /* Pick up the SDIO core info struct from chip.c */
-+      bus->sdio_core   = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
-+      if (!bus->sdio_core)
-+              goto fail;
-+
-       sdiodev->settings = brcmf_get_module_param(sdiodev->dev,
-                                                  BRCMF_BUSTYPE_SDIO,
-                                                  bus->ci->chip,