From: Rafał Miłecki Date: Thu, 2 Feb 2017 08:59:05 +0000 (+0100) Subject: mac80211: brcmfmac: backport minor code cleanups X-Git-Tag: v18.06.0-rc1~3829 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=4491979dc96afb2de0a7b666f3465af19fba59dd mac80211: brcmfmac: backport minor code cleanups Signed-off-by: Rafał Miłecki --- 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 index 0000000000..23bbe667c5 --- /dev/null +++ b/package/kernel/mac80211/patches/361-0001-brcmfmac-make-brcmf_of_probe-more-generic.patch @@ -0,0 +1,78 @@ +From e457a8a01a19277e96830d3d95887e0e3c1e2f26 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..4e456ca40f --- /dev/null +++ b/package/kernel/mac80211/patches/361-0002-brcmfmac-add-support-for-BCM43455-with-modalias-sdio.patch @@ -0,0 +1,46 @@ +From a62a77881b1b6708ffeddd9bf0529494f7b199e3 Mon Sep 17 00:00:00 2001 +From: Martin Blumenstingl +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 +Acked-by: Arend van Spriel +Reviewed-by: Andreas Färber +Tested-by: Andreas Färber +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..aa97762830 --- /dev/null +++ b/package/kernel/mac80211/patches/361-0003-brcmfmac-fix-incorrect-event-channel-deduction.patch @@ -0,0 +1,34 @@ +From 8e290cecdd0178f3d4cf7d463c51dc7e462843b4 Mon Sep 17 00:00:00 2001 +From: Gavin Li +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 +Cc: # 4.7+ +Acked-by: Arend van Spriel +[kvalo@codeaurora.org: improve commit logs based on email discussion] +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..17d4a2e3e3 --- /dev/null +++ b/package/kernel/mac80211/patches/362-0001-brcmfmac-drop-unneeded-function-declarations-from-he.patch @@ -0,0 +1,63 @@ +From c8d870794d5dd42d6e05a78cc92d1ff7acf11f6a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..4ded6d6a29 --- /dev/null +++ b/package/kernel/mac80211/patches/362-0002-brcmfmac-move-brcmf_c_set_joinpref_default-declarati.patch @@ -0,0 +1,41 @@ +From f5611e038172101561b570554c81e290a39517ed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..13e5d52bd0 --- /dev/null +++ b/package/kernel/mac80211/patches/362-0003-brcmfmac-drop-brcmf_bus_detach-and-inline-its-code.patch @@ -0,0 +1,49 @@ +From bfa7295e5b4d32cdab28d4cdc3a9791f73aed089 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..8cf6c38a95 --- /dev/null +++ b/package/kernel/mac80211/patches/362-0004-brcmfmac-rename-brcmf_bus_start-function-to-brcmf_bu.patch @@ -0,0 +1,93 @@ +From e8cd47501fa0c0a591bb07d5878dcc8d63d60e57 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + 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 index 0000000000..f066a4f63f --- /dev/null +++ b/package/kernel/mac80211/patches/363-brcmfmac-drop-duplicated-core-selection-from-brcmf_p.patch @@ -0,0 +1,30 @@ +From b3d75a81f07c757ab73c9022631170c3baefe380 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 +Signed-off-by: Rafał Miłecki +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + 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 index 9e07d4a38c..0000000000 --- a/package/kernel/mac80211/patches/840-brcmfmac-make-brcmf_of_probe-more-generic.patch +++ /dev/null @@ -1,72 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -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 ---- - ---- 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/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch index d423cf5b56..d09057f896 100644 --- a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch +++ b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki --- 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;