Message ID | 20180722214625.12101-1-zajec5@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 299b6365a3b7cf7f5ea1c945a420e9ee4841d6f7 |
Delegated to: | Kalle Valo |
Headers | show |
Series | brcmfmac: fix regression in parsing NVRAM for multiple devices | expand |
Rafał Miłecki <zajec5@gmail.com> writes: > From: Rafał Miłecki <rafal@milecki.pl> > > 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> I'll queue this to 4.18 (if there's still time). I just came from vacation and have some catching up to do :)
On 7/22/2018 11:46 PM, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@milecki.pl> > > 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+ oops. my bad. Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> > Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > --- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c > index 45928b5b8d97..4fffa6988087 100644 > --- 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 brcmf_pciedev_info *devinfo) > 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; >
Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@milecki.pl> > > 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> Patch applied to wireless-drivers.git, thanks. 299b6365a3b7 brcmfmac: fix regression in parsing NVRAM for multiple devices
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index 45928b5b8d97..4fffa6988087 100644 --- 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 brcmf_pciedev_info *devinfo) 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;