mac80211: brcmfmac: backport minor code cleanups
authorRafał Miłecki <rafal@milecki.pl>
Thu, 2 Feb 2017 08:59:05 +0000 (09:59 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Sun, 5 Feb 2017 23:10:49 +0000 (00:10 +0100)
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
package/kernel/mac80211/patches/361-0001-brcmfmac-make-brcmf_of_probe-more-generic.patch [new file with mode: 0644]
package/kernel/mac80211/patches/361-0002-brcmfmac-add-support-for-BCM43455-with-modalias-sdio.patch [new file with mode: 0644]
package/kernel/mac80211/patches/361-0003-brcmfmac-fix-incorrect-event-channel-deduction.patch [new file with mode: 0644]
package/kernel/mac80211/patches/362-0001-brcmfmac-drop-unneeded-function-declarations-from-he.patch [new file with mode: 0644]
package/kernel/mac80211/patches/362-0002-brcmfmac-move-brcmf_c_set_joinpref_default-declarati.patch [new file with mode: 0644]
package/kernel/mac80211/patches/362-0003-brcmfmac-drop-brcmf_bus_detach-and-inline-its-code.patch [new file with mode: 0644]
package/kernel/mac80211/patches/362-0004-brcmfmac-rename-brcmf_bus_start-function-to-brcmf_bu.patch [new file with mode: 0644]
package/kernel/mac80211/patches/363-brcmfmac-drop-duplicated-core-selection-from-brcmf_p.patch [new file with mode: 0644]
package/kernel/mac80211/patches/840-brcmfmac-make-brcmf_of_probe-more-generic.patch [deleted file]
package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch

diff --git a/package/kernel/mac80211/patches/361-0001-brcmfmac-make-brcmf_of_probe-more-generic.patch b/package/kernel/mac80211/patches/361-0001-brcmfmac-make-brcmf_of_probe-more-generic.patch
new file mode 100644 (file)
index 0000000..23bbe66
--- /dev/null
@@ -0,0 +1,78 @@
+From e457a8a01a19277e96830d3d95887e0e3c1e2f26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Sat, 7 Jan 2017 23:43:45 +0100
+Subject: [PATCH] brcmfmac: make brcmf_of_probe more generic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We may want to use Open Firmware for other devices than just SDIO ones.
+In future we may want to support more Broadcom properties so there is
+really no reason for such limitation.
+
+Call brcmf_of_probe for all kind of devices & move extra conditions to
+the body of that funcion.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 8 +++-----
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c     | 7 +++++--
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h     | 6 ++++--
+ 3 files changed, 12 insertions(+), 9 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+@@ -299,11 +299,9 @@ struct brcmf_mp_device *brcmf_get_module
+                       }
+               }
+       }
+-      if ((bus_type == BRCMF_BUSTYPE_SDIO) && (!found)) {
+-              /* No platform data for this device. In case of SDIO try OF
+-               * (Open Firwmare) Device Tree.
+-               */
+-              brcmf_of_probe(dev, &settings->bus.sdio);
++      if (!found) {
++              /* No platform data for this device, try OF (Open Firwmare) */
++              brcmf_of_probe(dev, bus_type, settings);
+       }
+       return settings;
+ }
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
+@@ -23,14 +23,17 @@
+ #include "common.h"
+ #include "of.h"
+-void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio)
++void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
++                  struct brcmf_mp_device *settings)
+ {
++      struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
+       struct device_node *np = dev->of_node;
+       int irq;
+       u32 irqf;
+       u32 val;
+-      if (!np || !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
++      if (!np || bus_type != BRCMF_BUSTYPE_SDIO ||
++          !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
+               return;
+       if (of_property_read_u32(np, "brcm,drive-strength", &val) == 0)
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
+@@ -14,9 +14,11 @@
+  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+  */
+ #ifdef CONFIG_OF
+-void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio);
++void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
++                  struct brcmf_mp_device *settings);
+ #else
+-static void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio)
++static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
++                         struct brcmf_mp_device *settings)
+ {
+ }
+ #endif /* CONFIG_OF */
diff --git a/package/kernel/mac80211/patches/361-0002-brcmfmac-add-support-for-BCM43455-with-modalias-sdio.patch b/package/kernel/mac80211/patches/361-0002-brcmfmac-add-support-for-BCM43455-with-modalias-sdio.patch
new file mode 100644 (file)
index 0000000..4e456ca
--- /dev/null
@@ -0,0 +1,46 @@
+From a62a77881b1b6708ffeddd9bf0529494f7b199e3 Mon Sep 17 00:00:00 2001
+From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+Date: Mon, 16 Jan 2017 11:17:57 +0100
+Subject: [PATCH] brcmfmac: add support for BCM43455 with modalias
+ sdio:c00v02D0dA9BF
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BCM43455 is a more recent revision of the BCM4345. Some of the BCM43455
+got a dedicated SDIO device ID which is currently not supported by
+brcmfmac.
+Adding the new sdio_device_id to brcmfmac is enough to get the BCM43455
+supported because the chip itself is already supported (due to BCM4345
+support in the driver).
+
+Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Reviewed-by: Andreas Färber <afaerber@suse.de>
+Tested-by: Andreas Färber <afaerber@suse.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
+ include/linux/mmc/sdio_ids.h                              | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+@@ -1104,6 +1104,7 @@ static const struct sdio_device_id brcmf
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43430),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4345),
++      BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
+       { /* end: all zeroes */ }
+--- a/include/linux/mmc/sdio_ids.h
++++ b/include/linux/mmc/sdio_ids.h
+@@ -36,6 +36,7 @@
+ #define SDIO_DEVICE_ID_BROADCOM_43362         0xa962
+ #define SDIO_DEVICE_ID_BROADCOM_43430         0xa9a6
+ #define SDIO_DEVICE_ID_BROADCOM_4345          0x4345
++#define SDIO_DEVICE_ID_BROADCOM_43455         0xa9bf
+ #define SDIO_DEVICE_ID_BROADCOM_4354          0x4354
+ #define SDIO_DEVICE_ID_BROADCOM_4356          0x4356
diff --git a/package/kernel/mac80211/patches/361-0003-brcmfmac-fix-incorrect-event-channel-deduction.patch b/package/kernel/mac80211/patches/361-0003-brcmfmac-fix-incorrect-event-channel-deduction.patch
new file mode 100644 (file)
index 0000000..aa97762
--- /dev/null
@@ -0,0 +1,34 @@
+From 8e290cecdd0178f3d4cf7d463c51dc7e462843b4 Mon Sep 17 00:00:00 2001
+From: Gavin Li <git@thegavinli.com>
+Date: Tue, 17 Jan 2017 15:24:05 -0800
+Subject: [PATCH] brcmfmac: fix incorrect event channel deduction
+
+brcmf_sdio_fromevntchan() was being called on the the data frame
+rather than the software header, causing some frames to be
+mischaracterized as on the event channel rather than the data channel.
+
+This fixes a major performance regression (due to dropped packets). With
+this patch the download speed jumped from 1Mbit/s back up to 40MBit/s due
+to the sheer amount of packets being incorrectly processed.
+
+Fixes: c56caa9db8ab ("brcmfmac: screening firmware event packet")
+Signed-off-by: Gavin Li <git@thegavinli.com>
+Cc: <stable@vger.kernel.org> # 4.7+
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+[kvalo@codeaurora.org: improve commit logs based on email discussion]
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+@@ -1661,7 +1661,7 @@ static u8 brcmf_sdio_rxglom(struct brcmf
+                                          pfirst->len, pfirst->next,
+                                          pfirst->prev);
+                       skb_unlink(pfirst, &bus->glom);
+-                      if (brcmf_sdio_fromevntchan(pfirst->data))
++                      if (brcmf_sdio_fromevntchan(&dptr[SDPCM_HWHDR_LEN]))
+                               brcmf_rx_event(bus->sdiodev->dev, pfirst);
+                       else
+                               brcmf_rx_frame(bus->sdiodev->dev, pfirst,
diff --git a/package/kernel/mac80211/patches/362-0001-brcmfmac-drop-unneeded-function-declarations-from-he.patch b/package/kernel/mac80211/patches/362-0001-brcmfmac-drop-unneeded-function-declarations-from-he.patch
new file mode 100644 (file)
index 0000000..17d4a2e
--- /dev/null
@@ -0,0 +1,63 @@
+From c8d870794d5dd42d6e05a78cc92d1ff7acf11f6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 18 Jan 2017 11:48:51 +0100
+Subject: [PATCH] brcmfmac: drop unneeded function declarations from headers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Functions brcmf_c_prec_enq and brcmf_sdio_init don't exist so we
+really don't need their declarations. Function brcmf_parse_tlvs is used
+in cfg80211.c only so make it static and drop from header as well.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h      | 4 ----
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h | 2 --
+ 3 files changed, 1 insertion(+), 7 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+@@ -218,9 +218,6 @@ int brcmf_bus_get_memdump(struct brcmf_b
+  * interface functions from common layer
+  */
+-bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, struct sk_buff *pkt,
+-                    int prec);
+-
+ /* Receive frame for delivery to OS.  Callee disposes of rxp. */
+ void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp, bool handle_event);
+ /* Receive async event packet from firmware. Callee disposes of rxp. */
+@@ -247,7 +244,6 @@ void brcmf_bus_add_txhdrlen(struct devic
+ #ifdef CPTCFG_BRCMFMAC_SDIO
+ void brcmf_sdio_exit(void);
+-void brcmf_sdio_init(void);
+ void brcmf_sdio_register(void);
+ #endif
+ #ifdef CPTCFG_BRCMFMAC_USB
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+@@ -326,7 +326,7 @@ u16 channel_to_chanspec(struct brcmu_d11
+  * triples, returning a pointer to the substring whose first element
+  * matches tag
+  */
+-const struct brcmf_tlv *
++static const struct brcmf_tlv *
+ brcmf_parse_tlvs(const void *buf, int buflen, uint key)
+ {
+       const struct brcmf_tlv *elt = buf;
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
+@@ -396,8 +396,6 @@ void brcmf_free_vif(struct brcmf_cfg8021
+ s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
+                         const u8 *vndr_ie_buf, u32 vndr_ie_len);
+ s32 brcmf_vif_clear_mgmt_ies(struct brcmf_cfg80211_vif *vif);
+-const struct brcmf_tlv *
+-brcmf_parse_tlvs(const void *buf, int buflen, uint key);
+ u16 channel_to_chanspec(struct brcmu_d11inf *d11inf,
+                       struct ieee80211_channel *ch);
+ bool brcmf_get_vif_state_any(struct brcmf_cfg80211_info *cfg,
diff --git a/package/kernel/mac80211/patches/362-0002-brcmfmac-move-brcmf_c_set_joinpref_default-declarati.patch b/package/kernel/mac80211/patches/362-0002-brcmfmac-move-brcmf_c_set_joinpref_default-declarati.patch
new file mode 100644 (file)
index 0000000..4ded6d6
--- /dev/null
@@ -0,0 +1,41 @@
+From f5611e038172101561b570554c81e290a39517ed Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 18 Jan 2017 11:48:52 +0100
+Subject: [PATCH] brcmfmac: move brcmf_c_set_joinpref_default declaration to
+ common.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Function brcmf_c_set_joinpref_default is in common.c, so move it to the
+related header.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h | 2 ++
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h   | 1 -
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
+@@ -65,6 +65,8 @@ struct brcmf_mp_device {
+       } bus;
+ };
++void brcmf_c_set_joinpref_default(struct brcmf_if *ifp);
++
+ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
+                                              enum brcmf_bus_type bus_type,
+                                              u32 chip, u32 chiprev);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
+@@ -216,7 +216,6 @@ void brcmf_txflowblock_if(struct brcmf_i
+ void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success);
+ void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb);
+ void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on);
+-void brcmf_c_set_joinpref_default(struct brcmf_if *ifp);
+ int __init brcmf_core_init(void);
+ void __exit brcmf_core_exit(void);
diff --git a/package/kernel/mac80211/patches/362-0003-brcmfmac-drop-brcmf_bus_detach-and-inline-its-code.patch b/package/kernel/mac80211/patches/362-0003-brcmfmac-drop-brcmf_bus_detach-and-inline-its-code.patch
new file mode 100644 (file)
index 0000000..13e5d52
--- /dev/null
@@ -0,0 +1,49 @@
+From bfa7295e5b4d32cdab28d4cdc3a9791f73aed089 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 18 Jan 2017 11:48:53 +0100
+Subject: [PATCH] brcmfmac: drop brcmf_bus_detach and inline its code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Driver used to call brcmf_bus_detach only from one place and it already
+contained a check for drvr not being NULL. We can get rid of this extra
+function, call brcmf_bus_stop directly and simplify the code.
+There also isn't brcmf_bus_attach function which one could expect so it
+looks more consistent this way.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -1075,16 +1075,6 @@ void brcmf_bus_add_txhdrlen(struct devic
+       }
+ }
+-static void brcmf_bus_detach(struct brcmf_pub *drvr)
+-{
+-      brcmf_dbg(TRACE, "Enter\n");
+-
+-      if (drvr) {
+-              /* Stop the bus module */
+-              brcmf_bus_stop(drvr->bus_if);
+-      }
+-}
+-
+ void brcmf_dev_reset(struct device *dev)
+ {
+       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+@@ -1131,7 +1121,7 @@ void brcmf_detach(struct device *dev)
+       brcmf_fws_deinit(drvr);
+-      brcmf_bus_detach(drvr);
++      brcmf_bus_stop(drvr->bus_if);
+       brcmf_proto_detach(drvr);
diff --git a/package/kernel/mac80211/patches/362-0004-brcmfmac-rename-brcmf_bus_start-function-to-brcmf_bu.patch b/package/kernel/mac80211/patches/362-0004-brcmfmac-rename-brcmf_bus_start-function-to-brcmf_bu.patch
new file mode 100644 (file)
index 0000000..8cf6c38
--- /dev/null
@@ -0,0 +1,93 @@
+From e8cd47501fa0c0a591bb07d5878dcc8d63d60e57 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 18 Jan 2017 11:48:54 +0100
+Subject: [PATCH] brcmfmac: rename brcmf_bus_start function to
+ brcmf_bus_started
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This intends to make init/attach process slightly easier to follow.
+
+What driver was doing in brcmf_bus_start wasn't bus specific at all and
+function brcmf_bus_stop wasn't undoing things done there. This function
+is supposed to be called by bus specific code when the bus is ready.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h    | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c   | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c   | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c   | 2 +-
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c    | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+@@ -238,7 +238,7 @@ void brcmf_txcomplete(struct device *dev
+ /* Configure the "global" bus state used by upper layers */
+ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
+-int brcmf_bus_start(struct device *dev);
++int brcmf_bus_started(struct device *dev);
+ s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len);
+ void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+@@ -74,7 +74,7 @@ module_param_named(roamoff, brcmf_roamof
+ MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine");
+ #ifdef DEBUG
+-/* always succeed brcmf_bus_start() */
++/* always succeed brcmf_bus_started() */
+ static int brcmf_ignore_probe_fail;
+ module_param_named(ignore_probe_fail, brcmf_ignore_probe_fail, int, 0);
+ MODULE_PARM_DESC(ignore_probe_fail, "always succeed probe for debugging");
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -966,7 +966,7 @@ static int brcmf_revinfo_read(struct seq
+       return 0;
+ }
+-int brcmf_bus_start(struct device *dev)
++int brcmf_bus_started(struct device *dev)
+ {
+       int ret = -1;
+       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+@@ -1572,7 +1572,7 @@ static int brcmf_pcie_attach_bus(struct
+       if (ret) {
+               brcmf_err("brcmf_attach failed\n");
+       } else {
+-              ret = brcmf_bus_start(&devinfo->pdev->dev);
++              ret = brcmf_bus_started(&devinfo->pdev->dev);
+               if (ret)
+                       brcmf_err("dongle is not responding\n");
+       }
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+@@ -4065,7 +4065,7 @@ static void brcmf_sdio_firmware_callback
+       sdio_release_host(sdiodev->func[1]);
+-      err = brcmf_bus_start(dev);
++      err = brcmf_bus_started(dev);
+       if (err != 0) {
+               brcmf_err("dongle is not responding\n");
+               goto fail;
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+@@ -1148,7 +1148,7 @@ static int brcmf_usb_bus_setup(struct br
+       if (ret)
+               goto fail;
+-      ret = brcmf_bus_start(devinfo->dev);
++      ret = brcmf_bus_started(devinfo->dev);
+       if (ret)
+               goto fail;
diff --git a/package/kernel/mac80211/patches/363-brcmfmac-drop-duplicated-core-selection-from-brcmf_p.patch b/package/kernel/mac80211/patches/363-brcmfmac-drop-duplicated-core-selection-from-brcmf_p.patch
new file mode 100644 (file)
index 0000000..f066a4f
--- /dev/null
@@ -0,0 +1,30 @@
+From b3d75a81f07c757ab73c9022631170c3baefe380 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 19 Jan 2017 10:51:25 +0100
+Subject: [PATCH] brcmfmac: drop duplicated core selection from
+ brcmf_pcie_attach
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It was left after reworking PCIe reset in commit 07fe2e38c7fd
+("brcmfmac: Reset PCIE devices after recognition.").
+
+Cc: Hante Meuleman <meuleman@broadcom.com>
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+@@ -601,7 +601,6 @@ static void brcmf_pcie_attach(struct brc
+ {
+       u32 config;
+-      brcmf_pcie_select_core(devinfo, BCMA_CORE_PCIE2);
+       /* BAR1 window may not be sized properly */
+       brcmf_pcie_select_core(devinfo, BCMA_CORE_PCIE2);
+       brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGADDR, 0x4e0);
diff --git a/package/kernel/mac80211/patches/840-brcmfmac-make-brcmf_of_probe-more-generic.patch b/package/kernel/mac80211/patches/840-brcmfmac-make-brcmf_of_probe-more-generic.patch
deleted file mode 100644 (file)
index 9e07d4a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Sat, 7 Jan 2017 23:43:45 +0100
-Subject: [PATCH] brcmfmac: make brcmf_of_probe more generic
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We may want to use Open Firmware for other devices than just SDIO ones.
-In future we may want to support more Broadcom properties so there is
-really no reason for such limitation.
-
-Call brcmf_of_probe for all kind of devices & move extra conditions to
-the body of that funcion.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
-@@ -299,11 +299,9 @@ struct brcmf_mp_device *brcmf_get_module
-                       }
-               }
-       }
--      if ((bus_type == BRCMF_BUSTYPE_SDIO) && (!found)) {
--              /* No platform data for this device. In case of SDIO try OF
--               * (Open Firwmare) Device Tree.
--               */
--              brcmf_of_probe(dev, &settings->bus.sdio);
-+      if (!found) {
-+              /* No platform data for this device, try OF (Open Firwmare) */
-+              brcmf_of_probe(dev, bus_type, settings);
-       }
-       return settings;
- }
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
-@@ -23,14 +23,17 @@
- #include "common.h"
- #include "of.h"
--void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio)
-+void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
-+                  struct brcmf_mp_device *settings)
- {
-+      struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
-       struct device_node *np = dev->of_node;
-       int irq;
-       u32 irqf;
-       u32 val;
--      if (!np || !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
-+      if (!np || bus_type != BRCMF_BUSTYPE_SDIO ||
-+          !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
-               return;
-       if (of_property_read_u32(np, "brcm,drive-strength", &val) == 0)
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
-@@ -14,9 +14,11 @@
-  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-  */
- #ifdef CONFIG_OF
--void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio);
-+void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
-+                  struct brcmf_mp_device *settings);
- #else
--static void brcmf_of_probe(struct device *dev, struct brcmfmac_sdio_pd *sdio)
-+static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
-+                         struct brcmf_mp_device *settings)
- {
- }
- #endif /* CONFIG_OF */
index d423cf5..d09057f 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1206,6 +1206,7 @@ int __init brcmf_core_init(void)
+@@ -1196,6 +1196,7 @@ int __init brcmf_core_init(void)
  {
        if (!schedule_work(&brcmf_driver_work))
                return -EBUSY;