You are not logged in.

#1 2018-02-02 21:31:27

promarbler14
Member
From: MD, U.S.
Registered: 2016-03-28
Posts: 40

[Solved] Broadcom B43 wireless driver not functional after linux 4.15

With Linux 4.15 from testing, the wireless driver b43 no longer automatically loads nor recognizes my chip when I modprobe it in manually. I have b43-firmware installed from the AUR; it hasn't changed since I last checked about a week ago.

I have been occasionally following the linux git, and wireless broke sometime after Linux 4.15rc8. Looking through the changes shows no specific cause that I can find, and I would rather not bisect it.

The lshw command lists the device as unclaimed in linux 4.15.

The lspci -vv (vee vee) commands with the relevant devices are shown below.

Linux-lts 4.14.16-1

0c:00.0 Network controller: Broadcom Limited BCM4312 802.11b/g LP-PHY (rev 01)
	Subsystem: Dell Wireless 1397 WLAN Mini-Card
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at f69fc000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
	Capabilities: [58] Vendor Specific Information: Len=78 <?>
	Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [d0] Express (v1) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 6.500W
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP- BadDLLP- Rollover+ Timeout+ NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [13c v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [160 v1] Device Serial Number <SCRUBBED>
	Capabilities: [16c v1] Power Budgeting <?>
	Kernel driver in use: b43-pci-bridge
	Kernel modules: ssb

Linux 4.15.0-1

0c:00.0 Network controller: Broadcom Limited BCM4312 802.11b/g LP-PHY (rev 01)
	Subsystem: Dell Wireless 1397 WLAN Mini-Card
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 4
	Region 0: Memory at f69fc000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
	Capabilities: [58] Vendor Specific Information: Len=78 <?>
	Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [d0] Express (v1) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 6.500W
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [13c v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [160 v1] Device Serial Number <SCRUBBED>
	Capabilities: [16c v1] Power Budgeting <?>

The only difference that seems significant is the interrupt routing, and the fact that the kernel driver doesn't get loaded.

Any advice as to how to specifically diagnose and/or fix this problem?

Last edited by promarbler14 (2018-02-06 04:31:29)

Offline

#2 2018-02-02 21:35:57

Slithery
Administrator
From: Norfolk, UK
Registered: 2013-12-01
Posts: 5,776

Re: [Solved] Broadcom B43 wireless driver not functional after linux 4.15

Please use [code⁣] tags instead of [quote⁣] tags when posting commands and their outputs.


No, it didn't "fix" anything. It just shifted the brokeness one space to the right. - jasonwryan
Closing -- for deletion; Banning -- for muppetry. - jasonwryan

aur - dotfiles

Offline

#3 2018-02-05 04:59:50

promarbler14
Member
From: MD, U.S.
Registered: 2016-03-28
Posts: 40

Re: [Solved] Broadcom B43 wireless driver not functional after linux 4.15

I ended up bisecting anyways:

58eae1416b804d900014d84feadda7195007cc30 is the first bad commit
commit 58eae1416b804d900014d84feadda7195007cc30
Author: James Hogan <jhogan@kernel.org>
Date:   Mon Jan 15 21:17:14 2018 +0000

    ssb: Disable PCI host for PCI_DRIVERS_GENERIC
    
    Since commit d41e6858ba58 ("MIPS: Kconfig: Set default MIPS system type
    as generic") changed the default MIPS platform to the "generic"
    platform, which uses PCI_DRIVERS_GENERIC instead of PCI_DRIVERS_LEGACY,
    various files in drivers/ssb/ have failed to build.
    
    This is particularly due to the existence of struct pci_controller being
    dependent on PCI_DRIVERS_LEGACY since commit c5611df96804 ("MIPS: PCI:
    Introduce CONFIG_PCI_DRIVERS_LEGACY"), so add that dependency to Kconfig
    to prevent these files being built for the "generic" platform including
    all{yes,mod}config builds.
    
    Fixes: c5611df96804 ("MIPS: PCI: Introduce CONFIG_PCI_DRIVERS_LEGACY")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Cc: Michael Buesch <m@bues.ch>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Matt Redfearn <matt.redfearn@imgtec.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: linux-wireless@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

:040000 040000 b7b4c5908ec800fbba19a9615049648d488a5771 18d76731ebb799fc1892d01da59d4c268229d51e M	drivers

Looking further into how a simple dependency change could affect the build so drastically, I compared the differences between the working/nonworking kernel configs and noted the following:

missing config: SSB_B43_PCI_BRIDGE
caused by missing dependency config: SSB_PCIHOST_POSSIBLE
disabling pseudo-config: B43_PCI_AUTOSELECT

also missing config: CONFIG_SSB_DRIVER_PCICORE
caused by missing dependency config: SSB_DRIVER_PCICORE_POSSIBLE
which is missing because of missing dependency config: SSB_PCIHOST
which is missing because of missing dependency config: SSB_PCIHOST_POSSIBLE
disabling pseudo-config: B43_PCICORE_AUTOSELECT

The responsible config SSB_PCIHOST_POSSIBLE was disabled because PCI_DRIVERS_LEGACY is not enabled. The PCI_DRIVERS_LEGACY config dependency was added by the "bad" commit, which was apparently made to fix build errors that resulted from a change a year ago. The problem, as far as I can tell, is that the PCI_DRIVERS_LEGACY config is meant to enable a MIPS-only API, but then it also disables building for hardware that is not exclusive to MIPS, thus disabling my driver.

A solution would be to revert that commit, but the commit needs to be fixed....

Offline

#4 2018-02-06 04:30:18

promarbler14
Member
From: MD, U.S.
Registered: 2016-03-28
Posts: 40

Re: [Solved] Broadcom B43 wireless driver not functional after linux 4.15

This has been patched recently, and will be merged into 4.15 or 4.16 at some point in the near future.

see:
https://patchwork.kernel.org/patch/10185397/
https://git.kernel.org/pub/scm/linux/ke … 068e746ff7

The patch works, so I'll consider this solved.

Offline

Board footer

Powered by FluxBB