mac80211: backport brcmfmac fixes & debugging helpers from 4.18
The most important is probably regression fix in handling platform
NVRAM. That bug stopped hardware from being properly calibrated breaking
e.g. 5 GHz for Netgear R8000.
Other than that it triggers memory dumps when experiencing firmware
problems which is important for debugging purposes.
Fixes: 7e8eb7f309
("mac80211: backport brcmfmac firmware & clm_blob loading rework")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
parent
7316515891
commit
b26214adb5
9 changed files with 341 additions and 2 deletions
|
@ -0,0 +1,52 @@
|
||||||
|
From f8793c26fe586659d6da3fa277e63961a69d314b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Date: Wed, 16 May 2018 14:11:58 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: move ALLFFMAC variable in flowring module
|
||||||
|
|
||||||
|
The only user of ALLFFMAC is the flowring module so no need to
|
||||||
|
expose it in a header file.
|
||||||
|
|
||||||
|
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>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 --
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h | 2 --
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c | 2 ++
|
||||||
|
3 files changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||||
|
@@ -36,8 +36,6 @@ MODULE_AUTHOR("Broadcom Corporation");
|
||||||
|
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
|
||||||
|
MODULE_LICENSE("Dual BSD/GPL");
|
||||||
|
|
||||||
|
-const u8 ALLFFMAC[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||||
|
-
|
||||||
|
#define BRCMF_DEFAULT_SCAN_CHANNEL_TIME 40
|
||||||
|
#define BRCMF_DEFAULT_SCAN_UNASSOC_TIME 40
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||||
|
@@ -19,8 +19,6 @@
|
||||||
|
#include <linux/platform_data/brcmfmac.h>
|
||||||
|
#include "fwil_types.h"
|
||||||
|
|
||||||
|
-extern const u8 ALLFFMAC[ETH_ALEN];
|
||||||
|
-
|
||||||
|
#define BRCMF_FW_ALTPATH_LEN 256
|
||||||
|
|
||||||
|
/* Definitions for the module global and device specific settings are defined
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
|
||||||
|
@@ -46,6 +46,8 @@ static const u8 brcmf_flowring_prio2fifo
|
||||||
|
3
|
||||||
|
};
|
||||||
|
|
||||||
|
+static const u8 ALLFFMAC[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||||
|
+
|
||||||
|
|
||||||
|
static bool
|
||||||
|
brcmf_flowring_is_tdls_mac(struct brcmf_flowring *flow, u8 mac[ETH_ALEN])
|
|
@ -0,0 +1,76 @@
|
||||||
|
From 8e072168f75ebce85b96cbcefea2b10ddbd5913f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Date: Wed, 16 May 2018 14:11:59 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: add support for sysfs initiated coredump
|
||||||
|
|
||||||
|
The driver already supports device coredump initiated by firmware
|
||||||
|
event. Since commit 3c47d19ff4dc ("drivers: base: add coredump driver
|
||||||
|
ops") it is also possible to initiate it from user-space through
|
||||||
|
sysfs. This patch adds support for SDIO and PCIe devices.
|
||||||
|
|
||||||
|
[rafal@milecki.pl: use LINUX_VERSION_CODE]
|
||||||
|
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>
|
||||||
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 2 ++
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 8 ++++++++
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 +
|
||||||
|
4 files changed, 12 insertions(+)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||||
|
@@ -1165,6 +1165,9 @@ static struct sdio_driver brcmf_sdmmc_dr
|
||||||
|
#ifdef CONFIG_PM_SLEEP
|
||||||
|
.pm = &brcmf_sdio_pm_ops,
|
||||||
|
#endif /* CONFIG_PM_SLEEP */
|
||||||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
||||||
|
+ .coredump = brcmf_dev_coredump,
|
||||||
|
+#endif
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||||
|
@@ -250,6 +250,8 @@ int brcmf_attach(struct device *dev, str
|
||||||
|
void brcmf_detach(struct device *dev);
|
||||||
|
/* Indication from bus module that dongle should be reset */
|
||||||
|
void brcmf_dev_reset(struct device *dev);
|
||||||
|
+/* Request from bus module to initiate a coredump */
|
||||||
|
+void brcmf_dev_coredump(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);
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||||
|
@@ -1201,6 +1201,14 @@ void brcmf_dev_reset(struct device *dev)
|
||||||
|
brcmf_fil_cmd_int_set(drvr->iflist[0], BRCMF_C_TERMINATED, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void brcmf_dev_coredump(struct device *dev)
|
||||||
|
+{
|
||||||
|
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||||
|
+
|
||||||
|
+ if (brcmf_debug_create_memdump(bus_if, NULL, 0) < 0)
|
||||||
|
+ brcmf_dbg(TRACE, "failed to create coredump\n");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void brcmf_detach(struct device *dev)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
@@ -2044,6 +2044,9 @@ static struct pci_driver brcmf_pciedrvr
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
.driver.pm = &brcmf_pciedrvr_pm,
|
||||||
|
#endif
|
||||||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
|
||||||
|
+ .driver.coredump = brcmf_dev_coredump,
|
||||||
|
+#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
From d2af9b566554e01f9ad67b330ce569dbc130e5d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Franky Lin <franky.lin@broadcom.com>
|
||||||
|
Date: Wed, 16 May 2018 14:12:01 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: validate user provided data for memdump before
|
||||||
|
copying
|
||||||
|
|
||||||
|
In patch "brcmfmac: add support for sysfs initiated coredump", a new
|
||||||
|
scenario of brcmf_debug_create_memdump was added in which the user of
|
||||||
|
the function might not necessarily provide prefix data. Hence the
|
||||||
|
function should not assume the data is always valid and should perform a
|
||||||
|
check before copying.
|
||||||
|
|
||||||
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Signed-off-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>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
|
||||||
|
@@ -40,7 +40,8 @@ int brcmf_debug_create_memdump(struct br
|
||||||
|
if (!dump)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- memcpy(dump, data, len);
|
||||||
|
+ if (data && len > 0)
|
||||||
|
+ memcpy(dump, data, len);
|
||||||
|
err = brcmf_bus_get_memdump(bus, dump + len, ramsize);
|
||||||
|
if (err) {
|
||||||
|
vfree(dump);
|
|
@ -0,0 +1,38 @@
|
||||||
|
From 8a3ab2f38f1669e3be6433a1f6b82a077b38c4c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Franky Lin <franky.lin@broadcom.com>
|
||||||
|
Date: Wed, 16 May 2018 14:12:02 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: trigger memory dump upon firmware halt signal
|
||||||
|
|
||||||
|
PCIe dongle firmware signals a halt/trap through mailbox interrupt.
|
||||||
|
Trigger a memory dump upon receiving such signal could help to provide
|
||||||
|
useful information for issue debug.
|
||||||
|
|
||||||
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Signed-off-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>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
@@ -182,6 +182,7 @@ static const struct brcmf_firmware_mappi
|
||||||
|
#define BRCMF_D2H_DEV_D3_ACK 0x00000001
|
||||||
|
#define BRCMF_D2H_DEV_DS_ENTER_REQ 0x00000002
|
||||||
|
#define BRCMF_D2H_DEV_DS_EXIT_NOTE 0x00000004
|
||||||
|
+#define BRCMF_D2H_DEV_FWHALT 0x10000000
|
||||||
|
|
||||||
|
#define BRCMF_H2D_HOST_D3_INFORM 0x00000001
|
||||||
|
#define BRCMF_H2D_HOST_DS_ACK 0x00000002
|
||||||
|
@@ -717,6 +718,10 @@ static void brcmf_pcie_handle_mb_data(st
|
||||||
|
devinfo->mbdata_completed = true;
|
||||||
|
wake_up(&devinfo->mbdata_resp_wait);
|
||||||
|
}
|
||||||
|
+ if (dtoh_mb_data & BRCMF_D2H_DEV_FWHALT) {
|
||||||
|
+ brcmf_dbg(PCIE, "D2H_MB_DATA: FW HALT\n");
|
||||||
|
+ brcmf_dev_coredump(&devinfo->pdev->dev);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
From b8248236e92790ac635caeb4156e46ea2417e037 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Franky Lin <franky.lin@broadcom.com>
|
||||||
|
Date: Wed, 16 May 2018 14:12:03 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: trigger memory dump on SDIO firmware halt message
|
||||||
|
|
||||||
|
Attempt to dump dongle memory for debug upon receiving firmware halt
|
||||||
|
message through dongle to host mail box interrupt.
|
||||||
|
|
||||||
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Signed-off-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>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
|
@@ -1072,8 +1072,10 @@ static u32 brcmf_sdio_hostmail(struct br
|
||||||
|
bus->sdcnt.f1regdata += 2;
|
||||||
|
|
||||||
|
/* dongle indicates the firmware has halted/crashed */
|
||||||
|
- if (hmb_data & HMB_DATA_FWHALT)
|
||||||
|
+ if (hmb_data & HMB_DATA_FWHALT) {
|
||||||
|
brcmf_err("mailbox indicates firmware halted\n");
|
||||||
|
+ brcmf_dev_coredump(&sdiod->func1->dev);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Dongle recomposed rx frames, accept them again */
|
||||||
|
if (hmb_data & HMB_DATA_NAKHANDLED) {
|
|
@ -0,0 +1,70 @@
|
||||||
|
From 373c83a801f15b1e3d02d855fad89112bd4ccbe0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Trimarchi <michael@amarulasolutions.com>
|
||||||
|
Date: Wed, 30 May 2018 11:06:34 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: stop watchdog before detach and free everything
|
||||||
|
|
||||||
|
Using built-in in kernel image without a firmware in filesystem
|
||||||
|
or in the kernel image can lead to a kernel NULL pointer deference.
|
||||||
|
Watchdog need to be stopped in brcmf_sdio_remove
|
||||||
|
|
||||||
|
The system is going down NOW!
|
||||||
|
[ 1348.110759] Unable to handle kernel NULL pointer dereference at virtual address 000002f8
|
||||||
|
Sent SIGTERM to all processes
|
||||||
|
[ 1348.121412] Mem abort info:
|
||||||
|
[ 1348.126962] ESR = 0x96000004
|
||||||
|
[ 1348.130023] Exception class = DABT (current EL), IL = 32 bits
|
||||||
|
[ 1348.135948] SET = 0, FnV = 0
|
||||||
|
[ 1348.138997] EA = 0, S1PTW = 0
|
||||||
|
[ 1348.142154] Data abort info:
|
||||||
|
[ 1348.145045] ISV = 0, ISS = 0x00000004
|
||||||
|
[ 1348.148884] CM = 0, WnR = 0
|
||||||
|
[ 1348.151861] user pgtable: 4k pages, 48-bit VAs, pgdp = (____ptrval____)
|
||||||
|
[ 1348.158475] [00000000000002f8] pgd=0000000000000000
|
||||||
|
[ 1348.163364] Internal error: Oops: 96000004 [#1] PREEMPT SMP
|
||||||
|
[ 1348.168927] Modules linked in: ipv6
|
||||||
|
[ 1348.172421] CPU: 3 PID: 1421 Comm: brcmf_wdog/mmc0 Not tainted 4.17.0-rc5-next-20180517 #18
|
||||||
|
[ 1348.180757] Hardware name: Amarula A64-Relic (DT)
|
||||||
|
[ 1348.185455] pstate: 60000005 (nZCv daif -PAN -UAO)
|
||||||
|
[ 1348.190251] pc : brcmf_sdiod_freezer_count+0x0/0x20
|
||||||
|
[ 1348.195124] lr : brcmf_sdio_watchdog_thread+0x64/0x290
|
||||||
|
[ 1348.200253] sp : ffff00000b85be30
|
||||||
|
[ 1348.203561] x29: ffff00000b85be30 x28: 0000000000000000
|
||||||
|
[ 1348.208868] x27: ffff00000b6cb918 x26: ffff80003b990638
|
||||||
|
[ 1348.214176] x25: ffff0000087b1a20 x24: ffff80003b94f800
|
||||||
|
[ 1348.219483] x23: ffff000008e620c8 x22: ffff000008f0b660
|
||||||
|
[ 1348.224790] x21: ffff000008c6a858 x20: 00000000fffffe00
|
||||||
|
[ 1348.230097] x19: ffff80003b94f800 x18: 0000000000000001
|
||||||
|
[ 1348.235404] x17: 0000ffffab2e8a74 x16: ffff0000080d7de8
|
||||||
|
[ 1348.240711] x15: 0000000000000000 x14: 0000000000000400
|
||||||
|
[ 1348.246018] x13: 0000000000000400 x12: 0000000000000001
|
||||||
|
[ 1348.251324] x11: 00000000000002c4 x10: 0000000000000a10
|
||||||
|
[ 1348.256631] x9 : ffff00000b85bc40 x8 : ffff80003be11870
|
||||||
|
[ 1348.261937] x7 : ffff80003dfc7308 x6 : 000000078ff08b55
|
||||||
|
[ 1348.267243] x5 : 00000139e1058400 x4 : 0000000000000000
|
||||||
|
[ 1348.272550] x3 : dead000000000100 x2 : 958f2788d6618100
|
||||||
|
[ 1348.277856] x1 : 00000000fffffe00 x0 : 0000000000000000
|
||||||
|
|
||||||
|
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
|
||||||
|
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||||
|
Tested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
|
||||||
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
|
@@ -4297,6 +4297,13 @@ void brcmf_sdio_remove(struct brcmf_sdio
|
||||||
|
brcmf_dbg(TRACE, "Enter\n");
|
||||||
|
|
||||||
|
if (bus) {
|
||||||
|
+ /* Stop watchdog task */
|
||||||
|
+ if (bus->watchdog_tsk) {
|
||||||
|
+ send_sig(SIGTERM, bus->watchdog_tsk, 1);
|
||||||
|
+ kthread_stop(bus->watchdog_tsk);
|
||||||
|
+ bus->watchdog_tsk = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* De-register interrupt handler */
|
||||||
|
brcmf_sdiod_intr_unregister(bus->sdiodev);
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
From 299b6365a3b7cf7f5ea1c945a420e9ee4841d6f7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||||
|
Date: Sun, 22 Jul 2018 23:46:25 +0200
|
||||||
|
Subject: [PATCH] brcmfmac: fix regression in parsing NVRAM for multiple
|
||||||
|
devices
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
NVRAM is designed to work with Broadcom's SDK Linux kernel which fakes
|
||||||
|
PCI domain 0 for all internal MMIO devices. Since official Linux kernel
|
||||||
|
uses platform devices for that purpose there is a mismatch in numbering
|
||||||
|
PCI domains.
|
||||||
|
|
||||||
|
There used to be a fix for that problem but it was accidentally dropped
|
||||||
|
during the last firmware loading rework. That resulted in brcmfmac not
|
||||||
|
being able to extract device specific NVRAM content and all kind of
|
||||||
|
calibration problems.
|
||||||
|
|
||||||
|
Reported-by: Aditya Xavier <adityaxavier@gmail.com>
|
||||||
|
Fixes: 2baa3aaee27f ("brcmfmac: introduce brcmf_fw_alloc_request() function")
|
||||||
|
Cc: stable@vger.kernel.org # v4.17+
|
||||||
|
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 | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||||
|
@@ -1785,7 +1785,8 @@ brcmf_pcie_prepare_fw_request(struct brc
|
||||||
|
fwreq->items[BRCMF_PCIE_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
|
||||||
|
fwreq->items[BRCMF_PCIE_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
|
||||||
|
fwreq->items[BRCMF_PCIE_FW_NVRAM].flags = BRCMF_FW_REQF_OPTIONAL;
|
||||||
|
- fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus);
|
||||||
|
+ /* NVRAM reserves PCI domain 0 for Broadcom's SDK faked bus */
|
||||||
|
+ fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus) + 1;
|
||||||
|
fwreq->bus_nr = devinfo->pdev->bus->number;
|
||||||
|
|
||||||
|
return fwreq;
|
|
@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||||
@@ -1314,6 +1314,7 @@ int __init brcmf_core_init(void)
|
@@ -1322,6 +1322,7 @@ int __init brcmf_core_init(void)
|
||||||
{
|
{
|
||||||
if (!schedule_work(&brcmf_driver_work))
|
if (!schedule_work(&brcmf_driver_work))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
|
@ -9,7 +9,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||||
@@ -72,7 +72,11 @@ static int brcmf_fcmode;
|
@@ -70,7 +70,11 @@ static int brcmf_fcmode;
|
||||||
module_param_named(fcmode, brcmf_fcmode, int, 0);
|
module_param_named(fcmode, brcmf_fcmode, int, 0);
|
||||||
MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
|
MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue