summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/broadcom/brcm80211
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2019-09-03 06:29:28 +0200
committerKalle Valo <kvalo@codeaurora.org>2019-09-13 16:42:34 +0300
commita1f5aac1765afbeace9581afa27da34085f68e1d (patch)
tree19ebadb8c10458c04f14b62595c9e8bb1dac783a /drivers/net/wireless/broadcom/brcm80211
parent450914c39f88d1adada26256360dea7050ff4e83 (diff)
downloadtalos-op-linux-a1f5aac1765afbeace9581afa27da34085f68e1d.tar.gz
talos-op-linux-a1f5aac1765afbeace9581afa27da34085f68e1d.zip
brcmfmac: don't realloc wiphy during PCIe reset
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 <rafal@milecki.pl> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/broadcom/brcm80211')
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index b01b33e99c14..6c463475e90b 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -1430,7 +1430,6 @@ static int brcmf_pcie_reset(struct device *dev)
brcmf_pcie_bus_console_read(devinfo, true);
brcmf_detach(dev);
- brcmf_free(dev);
brcmf_pcie_release_irq(devinfo);
brcmf_pcie_release_scratchbuffers(devinfo);
@@ -1826,9 +1825,6 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
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;
@@ -1931,6 +1927,10 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
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;
OpenPOWER on IntegriCloud