linux/drivers/net/wireless
Bing Zhao 466026989f libertas: fix crash for SD8688
For SD8688, FUNC_INIT command is queued before fw_ready flag is
set. This causes the following crash as lbs_thread blocks any
command if fw_ready is not set.

[  209.338953] [<c0502248>] (__schedule+0x610/0x764) from [<bf20ae24>] (__lbs_cmd+0xb8/0x130 [libertas])
[  209.348340] [<bf20ae24>] (__lbs_cmd+0xb8/0x130 [libertas]) from [<bf222474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio])
[  209.360136] [<bf222474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio]) from [<bf2226c4>] (if_sdio_power_on+0x18c/0x20c [libertas_sdio])
[  209.373052] [<bf2226c4>] (if_sdio_power_on+0x18c/0x20c [libertas_sdio]) from [<bf222944>] (if_sdio_probe+0x200/0x31c [libertas_sdio])
[  209.385316] [<bf222944>] (if_sdio_probe+0x200/0x31c [libertas_sdio]) from [<bf01d820>] (sdio_bus_probe+0x94/0xfc [mmc_core])
[  209.396748] [<bf01d820>] (sdio_bus_probe+0x94/0xfc [mmc_core]) from [<c02e729c>] (driver_probe_device+0x12c/0x348)
[  209.407214] [<c02e729c>] (driver_probe_device+0x12c/0x348) from [<c02e7530>] (__driver_attach+0x78/0x9c)
[  209.416798] [<c02e7530>] (__driver_attach+0x78/0x9c) from [<c02e5658>] (bus_for_each_dev+0x50/0x88)
[  209.425946] [<c02e5658>] (bus_for_each_dev+0x50/0x88) from [<c02e6810>] (bus_add_driver+0x108/0x268)
[  209.435180] [<c02e6810>] (bus_add_driver+0x108/0x268) from [<c02e782c>] (driver_register+0xa4/0x134)
[  209.444426] [<c02e782c>] (driver_register+0xa4/0x134) from [<bf22601c>] (if_sdio_init_module+0x1c/0x3c [libertas_sdio])
[  209.455339] [<bf22601c>] (if_sdio_init_module+0x1c/0x3c [libertas_sdio]) from [<c00085b8>] (do_one_initcall+0x98/0x174)
[  209.466236] [<c00085b8>] (do_one_initcall+0x98/0x174) from [<c0076504>] (load_module+0x1c5c/0x1f80)
[  209.475390] [<c0076504>] (load_module+0x1c5c/0x1f80) from [<c007692c>] (sys_init_module+0x104/0x128)
[  209.484632] [<c007692c>] (sys_init_module+0x104/0x128) from [<c0008c40>] (ret_fast_syscall+0x0/0x38)

Fix it by setting fw_ready flag prior to queuing FUNC_INIT command.

Cc: <stable@vger.kernel.org> # 3.5+
Reported-by: Lubomir Rintel <lkundrak@v3.sk>
Tested-by: Lubomir Rintel <lkundrak@v3.sk>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-02-27 14:12:52 -05:00
..
ath ath9k_hw: improve reset reliability after errors 2013-02-27 14:12:52 -05:00
b43 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-01-28 13:54:03 -05:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-12-11 16:24:55 -05:00
brcm80211 brcmfmac: fix missing unlock on error in brcmf_notify_vif_event() 2013-02-22 14:50:47 -05:00
hostap net: wireless: hostap: hostap_ap.c: Return -ENOMEM instead of -1 for if kmalloc() fails. 2013-02-18 15:30:40 -05:00
ipw2x00 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
iwlegacy Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2013-02-15 13:59:53 -05:00
iwlwifi iwlwifi: mvm: Remove testing of static PIC in PhyDB 2013-02-27 09:14:08 +01:00
libertas libertas: fix crash for SD8688 2013-02-27 14:12:52 -05:00
libertas_tf
mwifiex mwifiex: correct sleep delay counter 2013-02-27 14:12:52 -05:00
orinoco net: wireless: orinoco: orinoco_usb.c: fix DMA buffers on stack 2013-02-18 15:30:40 -05:00
p54 p54usb: corrected USB ID for T-Com Sinus 154 data II 2013-02-08 14:51:32 -05:00
prism54 prism54: bug in getting auth type 2013-01-22 16:01:29 -05:00
rt2x00 rt2x00: error in configurations with mesh support disabled 2013-02-27 14:12:52 -05:00
rtl818x rtl8187: remove __dev* attributes 2012-12-06 15:04:59 -05:00
rtlwifi rtlwifi: usb: allocate URB control message setup_packet and data buffer separately 2013-02-18 15:30:40 -05:00
ti Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2013-02-15 13:59:53 -05:00
zd1211rw treewide: fix typo of "suppport" in various comments 2012-11-19 14:13:52 +01:00
adm8211.c wireless: remove __dev* attributes 2012-12-06 15:04:55 -05:00
adm8211.h
airo_cs.c
airo.c wireless: remove __dev* attributes 2012-12-06 15:04:55 -05:00
airo.h
at76c50x-usb.c wireless: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-11-14 14:55:32 -05:00
at76c50x-usb.h
atmel_cs.c
atmel_pci.c atmel: remove __dev* attributes 2012-12-06 15:04:56 -05:00
atmel.c treewide: fix typo of "suport" in various comments and Kconfig 2012-11-19 14:16:09 +01:00
atmel.h
Kconfig drivers: remove reference to feature-removal-schedule.txt 2012-12-17 17:15:12 -08:00
mac80211_hwsim.c mac80211_hwsim: ask mac80211 to reserve space for chanctx.drv_priv 2013-02-15 09:41:45 +01:00
mac80211_hwsim.h
Makefile wireless: fix Atheros drivers compilation 2012-12-17 15:48:43 -05:00
mwl8k.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-02-14 14:23:33 -05:00
ray_cs.c drivers/net/wireless: need consider the not '\0' terminated string. 2013-01-22 16:01:29 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: pass wiphy to cfg80211_ref_bss/put_bss 2013-02-11 18:44:52 +01:00
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h