Re: mwifiex reset buggy
From: Doug Anderson <dianders@chromium.org>
Date: 2021-11-19 21:48:46
Also in:
linux-mmc
Hi, On Fri, Nov 19, 2021 at 1:36 PM Jupiter [off-list ref] wrote:
Hi, After days debugging, enabled CONFIG_MMC_DEBUG=y, I suspect the mwifiex reset issue could still be a mwifiex bug. I use firmware sd8801_uapsta.bin, it is able to connect to the WiFi network, but reset either from WiFi modem or following command killed WiFi, disabled mwifiex and wiped off /sys/kernel/debug/mwifiex/mlan0: # echo 1 > /sys/kernel/debug/mwifiex/mlan0/reset [ 416.311114] mwifiex_sdio mmc0:0001:1: Resetting per request [ 416.333491] mwifiex_sdio mmc0:0001:1: info: successfully disconnected from 34:08:04:12:b1:a2: reason code 3 [ 416.366368] mwifiex_sdio mmc0:0001:1: info: shutdown mwifiex... [ 416.374812] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.381431] mwifiex_sdio mmc0:0001:1: deleting the crypto keys [ 416.387455] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.393423] mwifiex_sdio mmc0:0001:1: deleting the crypto keys [ 416.399401] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.405364] mwifiex_sdio mmc0:0001:1: deleting the crypto keys [ 416.411332] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.417410] mwifiex_sdio mmc0:0001:1: deleting the crypto keys [ 416.423293] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.429349] mwifiex_sdio mmc0:0001:1: deleting the crypto keys root@solar:~# [ 416.546386] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.583278] mwifiex_sdio mmc0:0001:1: PREP_CMD: card is removed [ 416.888906] IPv6: ADDRCONF(NETDEV_UP): sit0: link is not ready [ 416.894822] IPv6: ADDRCONF(NETDEV_UP): wwan0: link is not ready [ 417.302781] mwifiex_sdio mmc0:0001:1: WLAN FW already running! Skip FW dnld [ 417.310149] mwifiex_sdio mmc0:0001:1: WLAN FW is active [ 427.490344] mwifiex_sdio mmc0:0001:1: mwifiex_cmd_timeout_func: Timeout cmd id = 0xa9, act = 0x0 [ 427.499732] mwifiex_sdio mmc0:0001:1: num_data_h2c_failure = 0 [ 427.505825] mwifiex_sdio mmc0:0001:1: num_cmd_h2c_failure = 0 [ 427.511751] mwifiex_sdio mmc0:0001:1: is_cmd_timedout = 1 [ 427.517216] mwifiex_sdio mmc0:0001:1: num_tx_timeout = 0 [ 427.522686] mwifiex_sdio mmc0:0001:1: last_cmd_index = 1 [ 427.528063] mwifiex_sdio mmc0:0001:1: last_cmd_id: 28 00 a9 00 07 01 07 01 24 00 [ 427.535612] mwifiex_sdio mmc0:0001:1: last_cmd_act: 13 00 00 00 00 00 00 00 34 08 [ 427.543248] mwifiex_sdio mmc0:0001:1: last_cmd_resp_index = 0 [ 427.549058] mwifiex_sdio mmc0:0001:1: last_cmd_resp_id: 28 80 07 81 07 81 07 81 24 80 [ 427.557033] mwifiex_sdio mmc0:0001:1: last_event_index = 3 [ 427.562670] mwifiex_sdio mmc0:0001:1: last_event: 0b 00 0a 00 0b 00 0a 00 0a 00 [ 427.570045] mwifiex_sdio mmc0:0001:1: data_sent=0 cmd_sent=0 [ 427.575852] mwifiex_sdio mmc0:0001:1: ps_mode=0 ps_state=0 [ 427.591087] mwifiex_sdio mmc0:0001:1: info: _mwifiex_fw_dpc: unregister device The /sys/kernel/debug/mwifiex/mlan0 was deleted: # ls /sys/kernel/debug/mwifiex/ Looked at Douglas Anderson post "Fix Marvell WiFi reset by adding SDIO API to replug card" https://patchwork.kernel.org/project/linux-mmc/cover/20190716164209.62320-1-dianders@chromium.org/, I believe mwifiex should be able to replug card after reset, is it still buggy or is it the firmware sd8801_uapsta.bin problem?
I think I blocked most of this stuff out of my mind and it's also been over 2 years. ;-) ...but any chance that Bluetooth could somehow be involved, too? I seem to remember that things got complicated because we could have both functions going at once. I think I advocated for keeping it simple and always doing a full unplug / replug of the card to reset it, but from notes I guess upstream landed it so you need to handle the two cases (just WiFi vs WiFi+BT) in totally different ways. It looks like there's ongoing discussion going on in https://issuetracker.google.com/172214846. Maybe something there would be helpful? -Doug