Bug 63821

Summary: [pandaboard] wl12xx borked after one up/down cycle
Product: Drivers Reporter: Tobias Jakobi (liquid.acid)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: RESOLVED CODE_FIX    
Severity: normal CC: coelho, linville
Priority: P1    
Hardware: ARM   
OS: Linux   
Kernel Version: 3.12-rc6 Subsystem:
Regression: No Bisected commit-id:
Attachments: vanilla-3.12-rc6 config
dmesg output after one up/down cycle

Description Tobias Jakobi 2013-10-26 21:56:30 UTC
Hello,

the wifi hardware on the Pandaboard ES, which is a TI wl1271 (WiLink 6.0), gets screwed up by doing one up/down cycle. This can either be a "ifconfig wlan0 up && ifconfig wlan0 down", or something else that trigger firmware booting inside wl12xx (e.g. wpa_supplicant also "works").

I get this output on the first try (which works):
wlcore: firmware booted (Rev 6.3.10.0.133)
wlan0: authenticate with a0:f3:c1:46:2c:e4
wlan0: send auth to a0:f3:c1:46:2c:e4 (try 1/3)
wlan0: authenticated
wlan0: associate with a0:f3:c1:46:2c:e4 (try 1/3)
wlan0: RX AssocResp from a0:f3:c1:46:2c:e4 (capab=0x431 status=0 aid=2)
wlan0: associated
cfg80211: Calling CRDA for country: DE
cfg80211: Regulatory domain changed to country: DE
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 mBm)
cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
wlcore: Association completed.

I then quit wpa_supplicant, and start it again:
wlcore: down
wlcore: ERROR timeout waiting for the hardware to complete initialization
wlcore: ERROR timeout waiting for the hardware to complete initialization
wlcore: ERROR timeout waiting for the hardware to complete initialization
wlcore: ERROR firmware boot failed despite 3 retries

I have to do a cold reboot of the Pandaboard to get it running again. A warm reboot doesn't suffice.

I found a similar report here:
http://comments.gmane.org/gmane.linux.ports.arm.omap/104993

The commit mentioned in the report:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=851320e3f33503f557135a7fef6da66a2f7eec55

Quoting from the commit message:
"Note that looks like the WLAN interface fails to come up after a warm reset, but that most likely was also happening with the legacy booting and needs a separate fix."

I cannot confirm this. With the 3.4 kernel from TI (http://dev.omapzoom.org/?p=integration/kernel-ubuntu.git;a=shortlog;h=refs/heads/ti-ubuntu-3.4-stable) the wl1271 device survives many up/down cycles.

Greets,
Tobias
Comment 1 Tobias Jakobi 2013-10-26 21:59:47 UTC
Created attachment 112351 [details]
vanilla-3.12-rc6 config
Comment 2 Tobias Jakobi 2013-10-26 22:00:11 UTC
Created attachment 112361 [details]
dmesg output after one up/down cycle
Comment 3 Tobias Jakobi 2013-11-28 23:21:27 UTC
Confirming that these patches (applied on top of 3.12.1) fix the issue:
https://patchwork.kernel.org/patch/3218501/
https://patchwork.kernel.org/patch/3218511/

Going to close this, once they hit mainline.
Comment 4 Tobias Jakobi 2014-01-18 15:40:33 UTC
Patches are in mainline. Closing.