From 5880dd48d58ec18c0d82bf2a18718639fd8c8d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Mon, 16 Sep 2019 08:04:27 +0200 Subject: mac80211: brcmfmac: backport the last 5.4 changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes brcmfmac use the same wiphy after PCIe reset to help user space handle corner cases (e.g. firmware crash). Signed-off-by: Rafał Miłecki (cherry picked from commit f39f4b2f6d4300995270f635261b07197e8cf61e) --- ...mac-don-t-realloc-wiphy-during-PCIe-reset.patch | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 package/kernel/mac80211/patches/477-v5.4-0003-brcmfmac-don-t-realloc-wiphy-during-PCIe-reset.patch (limited to 'package/kernel/mac80211/patches/477-v5.4-0003-brcmfmac-don-t-realloc-wiphy-during-PCIe-reset.patch') diff --git a/package/kernel/mac80211/patches/477-v5.4-0003-brcmfmac-don-t-realloc-wiphy-during-PCIe-reset.patch b/package/kernel/mac80211/patches/477-v5.4-0003-brcmfmac-don-t-realloc-wiphy-during-PCIe-reset.patch new file mode 100644 index 0000000000..b0f81d7b99 --- /dev/null +++ b/package/kernel/mac80211/patches/477-v5.4-0003-brcmfmac-don-t-realloc-wiphy-during-PCIe-reset.patch @@ -0,0 +1,51 @@ +From a1f5aac1765afbeace9581afa27da34085f68e1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 3 Sep 2019 06:29:28 +0200 +Subject: [PATCH 3/3] brcmfmac: don't realloc wiphy during PCIe reset +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Providing a new wiphy on every PCIe reset was confusing and was causing +configuration problems for some users (supplicant and authenticators). +Sticking to the existing wiphy should make error recovery much simpler +and more reliable. + +Signed-off-by: Rafał Miłecki +Acked-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -1440,7 +1440,6 @@ static int brcmf_pcie_reset(struct devic + brcmf_pcie_bus_console_read(devinfo, true); + + brcmf_detach(dev); +- brcmf_free(dev); + + brcmf_pcie_release_irq(devinfo); + brcmf_pcie_release_scratchbuffers(devinfo); +@@ -1836,9 +1835,6 @@ static void brcmf_pcie_setup(struct devi + brcmf_pcie_intr_enable(devinfo); + brcmf_pcie_hostready(devinfo); + +- ret = brcmf_alloc(&devinfo->pdev->dev, devinfo->settings); +- if (ret) +- goto fail; + ret = brcmf_attach(&devinfo->pdev->dev); + if (ret) + goto fail; +@@ -1941,6 +1937,10 @@ brcmf_pcie_probe(struct pci_dev *pdev, c + bus->wowl_supported = pci_pme_capable(pdev, PCI_D3hot); + dev_set_drvdata(&pdev->dev, bus); + ++ ret = brcmf_alloc(&devinfo->pdev->dev, devinfo->settings); ++ if (ret) ++ goto fail_bus; ++ + fwreq = brcmf_pcie_prepare_fw_request(devinfo); + if (!fwreq) { + ret = -ENOMEM; -- cgit v1.2.3