Bug 196019

Summary: Broadcom BCM43602 brcmfmac detection/suspend issues
Product: Drivers Reporter: Daniel J Blueman (daniel)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: NEW ---    
Severity: normal CC: cedric.connes, daniel, kvalo, nos1609, psylox
Priority: P1    
Hardware: x86-64   
OS: Linux   
Kernel Version: 4.11.4 mainline Tree: Mainline
Regression: No
Attachments: kernel log of suspend/resume cycles illustrating the issue
Kernel logs showing brcmfmac timeout on boot

Description Daniel J Blueman 2017-06-08 07:15:26 UTC
Created attachment 256915 [details]
kernel log of suspend/resume cycles illustrating the issue

I find around 10% of boots or suspend/resume cycles, the brcmfmac driver will fail to work as expected.

On a resume or boot that fails, we see:
brcmfmac: brcmf_msgbuf_query_dcmd: Timeout on response for query command

This is reproducible on a clean and updated install of Ubuntu 16.04.2 with the mainline 4.11.4 kernel on a Dell XPS 15 9550 with BIOS 1.2.21.

I have attached a log of suspend/resume cycles illustrating the issue.
Comment 1 Daniel J Blueman 2017-06-08 07:20:07 UTC
Additionally, I install Windows 10 and all the drivers and was able to power-cycle and suspend-resume cycle many times without observing this issue, so the platform is reliable.
Comment 2 Daniel J Blueman 2017-06-08 07:33:18 UTC
Interestingly, updating to BIOS 1.2.25 makes this issue somewhat acute in Linux across all kernels, including the stock 4.8.0-52 Ubuntu 16.04.2 kernel.

I observe the same 'Timeout on response for query command' signature, but at 70% of boots. Booting into windows, wireless works every time and across suspend/resume cycles.
Comment 3 Daniel J Blueman 2017-06-08 07:33:58 UTC
Created attachment 256917 [details]
Kernel logs showing brcmfmac timeout on boot
Comment 4 Emmanuel Grumbach 2017-06-08 07:41:02 UTC
adding Intel on a BRCM bug isn't exactly useful :)
Comment 5 Daniel J Blueman 2017-06-10 05:06:48 UTC
In the failure case, if I 'modprobe -r brcmfmac; sleep 1; modprobe brcmfmac', we observe:

brcmfmac 0000:02:00.0: enabling device (0000 -> 0002)
brcmfmac: brcmf_chip_recognition: chip backplane type 15 is not supported
brcmfmac: brcmf_pcie_probe: failed 14e4:43ba

This comes from:

socitype = (regdata & CID_TYPE_MASK) >> CID_TYPE_SHIFT
...
brcmf_err("chip backplane type %u is not supported\n", socitype);

where CID_TYPE_MASK is 0xf0000000. This suggests the read32 (which maps to ioread32) returned all ones (0xffffffff), which may suggest power is gated to part of the device.
Comment 6 Daniel J Blueman 2017-06-10 05:10:59 UTC
Resetting the device via PCIe reset makes it work every time (including on BIOS 1.2.25):

echo 1 >/sys/bus/pci/devices/0000:02:00.0/remove
sleep 1
echo 1 >/sys/bus/pci/rescan

This tends to suggest there is some missing/incorrect register programming in the driver.
Comment 7 Daniel J Blueman 2017-06-10 05:13:40 UTC
Related kernel messages showing the device failing to initialise, then success when reinitialising the PCI device:

[    8.862446] brcmfmac: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[    8.862450] brcmfmac: brcmf_c_preinit_dcmds: Retreiving cur_etheraddr failed, -5
[    8.862451] brcmfmac: brcmf_bus_started: failed: -5
[    8.862455] brcmfmac: brcmf_pcie_attach_bus: dongle is not responding

[   28.338383] pci 0000:02:00.0: [14e4:43ba] type 00 class 0x028000
[   28.338404] pci 0000:02:00.0: reg 0x10: [mem 0x00000000-0x00007fff 64bit]
[   28.338416] pci 0000:02:00.0: reg 0x18: [mem 0x00000000-0x003fffff 64bit]
[   28.338443] pci 0000:02:00.0: Max Payload Size set to 256 (was 128, max 256)
[   28.338526] pci 0000:02:00.0: supports D1 D2
[   28.338527] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   28.338638] pci 0000:02:00.0: System wakeup disabled by ACPI
[   28.370417] pci 0000:02:00.0: BAR 2: assigned [mem 0xdd400000-0xdd7fffff 64bit]
[   28.370428] pci 0000:02:00.0: BAR 0: assigned [mem 0xdd800000-0xdd807fff 64bit]
[   28.370516] brcmfmac 0000:02:00.0: enabling device (0000 -> 0002)
[   28.479083] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[   28.986498] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[   28.998460] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[   29.024710] brcmfmac 0000:02:00.0 wlp2s0: renamed from wlan0
[   66.742110] brcmfmac: brcmf_inetaddr_changed: fail to get arp ip table err:-23
Comment 8 Kalle Valo 2017-06-11 08:24:38 UTC
I recommend bringing this up in the linux-wireless mailing list and CC Arend and other brcmfmac developers. Not everyone follow bugzilla, or at least not so actively as they follow the mailing list.
Comment 9 Daniel J Blueman 2017-06-16 13:00:53 UTC
I find the issue also occurs from time to time out of suspend (wifi was working fine before suspend), here on 4.11.5:

[ 4143.253871] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[ 4143.265086] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 4143.308204] brcmfmac 0000:02:00.0 wlp2s0: renamed from wlan0
[ 4150.714209] nouveau 0000:01:00.0: DRM: evicting buffers...
[ 4150.714213] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[ 4150.714235] nouveau 0000:01:00.0: DRM: suspending fence...
[ 4150.717169] nouveau 0000:01:00.0: DRM: suspending object tree...
[ 4153.391979] brcmfmac: brcmf_inetaddr_changed: fail to get arp ip table err:-23
[ 8520.473780] nouveau 0000:01:00.0: DRM: resuming object tree...
[ 8520.610761] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1c40822c)
[ 8520.631176] nouveau 0000:01:00.0: DRM: resuming fence...
[ 8526.341351] nouveau 0000:01:00.0: DRM: evicting buffers...
[ 8526.341353] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[ 8526.341372] nouveau 0000:01:00.0: DRM: suspending fence...
[ 8526.344159] nouveau 0000:01:00.0: DRM: suspending object tree...
[19380.477731] nouveau 0000:01:00.0: DRM: resuming object tree...
[19380.614766] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1c40822c)
[19380.635303] nouveau 0000:01:00.0: DRM: resuming fence...
[19386.381476] nouveau 0000:01:00.0: DRM: evicting buffers...
[19386.381480] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[19386.381614] nouveau 0000:01:00.0: DRM: suspending fence...
[19386.384531] nouveau 0000:01:00.0: DRM: suspending object tree...
[20193.476571] nouveau 0000:01:00.0: DRM: resuming object tree...
[20193.613635] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1b40822c)
[20193.634175] nouveau 0000:01:00.0: DRM: resuming fence...
[20199.436320] nouveau 0000:01:00.0: DRM: evicting buffers...
[20199.436324] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[20199.436345] nouveau 0000:01:00.0: DRM: suspending fence...
[20199.439305] nouveau 0000:01:00.0: DRM: suspending object tree...
[21749.562962] brcmfmac: brcmf_inetaddr_changed: fail to get arp ip table err:-23
[21749.563026] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[21760.122470] PM: Syncing filesystems ... done.
[21760.132838] PM: Preparing system for sleep (mem)
[21760.133507] Freezing user space processes ... (elapsed 0.002 seconds) done.
[21760.135669] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[21760.136955] PM: Suspending system (mem)
[21760.137019] Suspending console(s) (use no_console_suspend to debug)
[21760.462086] ACPI : EC: event blocked
[21761.596117] PM: suspend of devices complete after 1245.966 msecs
[21761.617989] PM: late suspend of devices complete after 21.867 msecs
[21761.618562] ACPI : EC: interrupt blocked
[21761.619189] brcmfmac 0000:02:00.0: System wakeup enabled by ACPI
[21761.619533] xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
[21761.689947] PM: noirq suspend of devices complete after 71.954 msecs
[21761.690425] ACPI: Preparing to enter system sleep state S3
[21761.696159] ACPI : EC: EC stopped
[21761.696160] PM: Saving platform NVS memory
[21761.696240] Disabling non-boot CPUs ...
[21761.697797] smpboot: CPU 1 is now offline
[21761.714306] smpboot: CPU 2 is now offline
[21761.741255] smpboot: CPU 3 is now offline
[21761.765315] smpboot: CPU 4 is now offline
[21761.789083] smpboot: CPU 5 is now offline
[21761.812538] smpboot: CPU 6 is now offline
[21761.832718] smpboot: CPU 7 is now offline
[21761.853717] ACPI: Low-level resume complete
[21761.853808] ACPI : EC: EC started
[21761.853809] PM: Restoring platform NVS memory
[21761.854558] Suspended for 41720.400 seconds
[21761.854610] Enabling non-boot CPUs ...
[21761.865800] x86: Booting SMP configuration:
[21761.865801] smpboot: Booting Node 0 Processor 1 APIC 0x2
[21761.866359]  cache: parent cpu1 should not be sleeping
[21761.866503] CPU1 is up
[21761.878068] smpboot: Booting Node 0 Processor 2 APIC 0x4
[21761.878860]  cache: parent cpu2 should not be sleeping
[21761.879087] CPU2 is up
[21761.898171] smpboot: Booting Node 0 Processor 3 APIC 0x6
[21761.898959]  cache: parent cpu3 should not be sleeping
[21761.899200] CPU3 is up
[21761.922357] smpboot: Booting Node 0 Processor 4 APIC 0x1
[21761.923158]  cache: parent cpu4 should not be sleeping
[21761.923419] CPU4 is up
[21761.938432] smpboot: Booting Node 0 Processor 5 APIC 0x3
[21761.939220]  cache: parent cpu5 should not be sleeping
[21761.939508] CPU5 is up
[21761.958550] smpboot: Booting Node 0 Processor 6 APIC 0x5
[21761.959351]  cache: parent cpu6 should not be sleeping
[21761.959649] CPU6 is up
[21761.978626] smpboot: Booting Node 0 Processor 7 APIC 0x7
[21761.979439]  cache: parent cpu7 should not be sleeping
[21761.979758] CPU7 is up
[21761.989828] ACPI: Waking up from system sleep state S3
[21762.503611] ACPI : EC: interrupt unblocked
[21762.633293] xhci_hcd 0000:00:14.0: System wakeup disabled by ACPI
[21762.685497] PM: noirq resume of devices complete after 182.034 msecs
[21762.696573] PM: early resume of devices complete after 11.029 msecs
[21762.696689] ACPI : EC: event unblocked
[21762.696697] brcmfmac 0000:02:00.0: System wakeup disabled by ACPI
[21762.696966] brcmfmac: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[21762.696974] brcmfmac: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[21762.697369] brcmfmac: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[21762.697371] brcmfmac: brcmf_cfg80211_get_channel: chanspec failed (-5)
[21762.755573] [drm] GuC firmware load skipped
[21762.788862] rtc_cmos 00:02: System wakeup disabled by ACPI
[21762.977592] usb 1-12: reset high-speed USB device number 3 using xhci_hcd
[21763.013741] ata2: SATA link down (SStatus 4 SControl 300)
[21763.167377] PM: resume of devices complete after 470.798 msecs
[21763.168218] PM: Finishing wakeup.
[21763.168220] Restarting tasks ... 
[21763.173764] [drm] RC6 on
[21763.173868] done.
[21763.173883] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[21763.174788] nouveau 0000:01:00.0: DRM: resuming object tree...
[21763.317060] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1a40822c)
[21763.343116] nouveau 0000:01:00.0: DRM: resuming fence...
[21763.856241] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[21765.869233] brcmfmac: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[21765.869241] brcmfmac: brcmf_c_preinit_dcmds: failed setting mpc
[21765.869243] brcmfmac: brcmf_bus_started: failed: -5
[21765.869250] brcmfmac: brcmf_pcie_attach_bus: dongle is not responding
[21769.577419] nouveau 0000:01:00.0: DRM: evicting buffers...
[21769.577423] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[21769.577445] nouveau 0000:01:00.0: DRM: suspending fence...
[21769.580427] nouveau 0000:01:00.0: DRM: suspending object tree...
[21869.313511] nouveau 0000:01:00.0: DRM: resuming object tree...
[21869.333269] pci 0000:02:00.0: [14e4:43ba] type 00 class 0x028000
[21869.333305] pci 0000:02:00.0: reg 0x10: [mem 0x00000000-0x00007fff 64bit]
[21869.333326] pci 0000:02:00.0: reg 0x18: [mem 0x00000000-0x003fffff 64bit]
[21869.333370] pci 0000:02:00.0: Max Payload Size set to 256 (was 128, max 256)
[21869.333504] pci 0000:02:00.0: supports D1 D2
[21869.333507] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[21869.333785] pci 0000:02:00.0: System wakeup disabled by ACPI
[21869.365221] pci 0000:02:00.0: BAR 2: assigned [mem 0xdd400000-0xdd7fffff 64bit]
[21869.365233] pci 0000:02:00.0: BAR 0: assigned [mem 0xdd800000-0xdd807fff 64bit]
[21869.365379] brcmfmac 0000:02:00.0: enabling device (0000 -> 0002)
[21869.454550] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1b40822c)
[21869.473939] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[21869.476893] nouveau 0000:01:00.0: DRM: resuming fence...
[21869.980365] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[21869.988607] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[21870.019185] brcmfmac 0000:02:00.0 wlp2s0: renamed from wlan0

However, it is no surprise we see 'brcmf_msgbuf_query_dcmd: Timeout' before the device memory response has been reenabled 'enabling device (0000 -> 0002)', which is almost certainly the issue here.
Comment 10 Daniel J Blueman 2017-06-17 01:09:28 UTC
In other cases, we don't see pci_enable_device() and related called, and observe the PCI memory-response, DMA and MSI interrupt aren't enabled, and ASPM is active:

02:00.0 Network controller: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC (rev 01)
	Subsystem: Dell BCM43602 802.11ac Wireless LAN SoC
	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
	Interrupt: pin A routed to IRQ 137
	Region 0: Memory at dd800000 (64-bit, non-prefetchable) [size=32K]
	Region 2: Memory at dd400000 (64-bit, non-prefetchable) [size=4M]
	Capabilities: [48] 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] MSI: Enable- Count=1/16 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [68] Vendor Specific Information: Len=44 <?>
	Capabilities: [ac] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via WAKE#
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	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, GenCap+ CGenEn- ChkCap+ ChkEn-
	Capabilities: [13c v1] Device Serial Number 0b-6f-c7-ff-ff-c6-60-6d
	Capabilities: [150 v1] Power Budgeting <?>
	Capabilities: [160 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=ff
			Status:	NegoPending- InProgress-
	Capabilities: [1b0 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [220 v1] #15
	Capabilities: [240 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=0us PortTPowerOnTime=50us
	Kernel driver in use: brcmfmac
	Kernel modules: brcmfmac

In the working case, we see:

02:00.0 Network controller: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC (rev 01)
	Subsystem: Dell BCM43602 802.11ac Wireless LAN SoC
	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
	Interrupt: pin A routed to IRQ 137
	Region 0: Memory at dd800000 (64-bit, non-prefetchable) [size=32K]
	Region 2: Memory at dd400000 (64-bit, non-prefetchable) [size=4M]
	Capabilities: [48] 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] MSI: Enable+ Count=1/16 Maskable- 64bit+
		Address: 00000000fee00438  Data: 0000
	Capabilities: [68] Vendor Specific Information: Len=44 <?>
	Capabilities: [ac] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via WAKE#
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	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: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
	Capabilities: [13c v1] Device Serial Number 0b-6f-c7-ff-ff-c6-60-6d
	Capabilities: [150 v1] Power Budgeting <?>
	Capabilities: [160 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=ff
			Status:	NegoPending- InProgress-
	Capabilities: [1b0 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [220 v1] #15
	Capabilities: [240 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=0us PortTPowerOnTime=50us
	Kernel driver in use: brcmfmac
	Kernel modules: brcmfmac
Comment 11 Ben 2017-07-11 13:07:20 UTC
*** Bug 178601 has been marked as a duplicate of this bug. ***
Comment 12 Aleksei Nosachev 2018-07-04 20:08:06 UTC
In Dell's reddit community to avoid BSODs people are encouraged using a bit more fresh firmware. Tried it already, but seems like it have some differences in init/settings with the linux one. Maybe it is possible to copy only the proprietary part of it.
Currently used version: 7.35.177.61 (r598657) FWID 01-ea662a8c
Attached version: 7.35.240.55 (r609579) FWID 01-89725025
https://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=JKRJ9
The firmware itself resides in Drivers/WinThresh/WL/x64/43602a1rtecdc.bin