Signed-off-by: Rafał Miłecki <rafal@milecki.pl>master
parent
2a1d8c1f79
commit
4491979dc9
@ -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
|
||||
|
@ -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,
|
@ -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,
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
Loading…
Reference in new issue