From: Takashi Iwai <tiwai@suse.de>
To: linux-wireless@vger.kernel.org
Cc: Amitkumar Karwar <akarwar@marvell.com>,
Nishant Sarmukadam <nishants@marvell.com>,
Oliver Neukum <oneukum@suse.de>
Subject: Re: Non-working mwifiex_sdio with SD8897
Date: Tue, 06 Dec 2016 17:48:43 +0100 [thread overview]
Message-ID: <s5hy3ztovf8.wl-tiwai@suse.de> (raw)
In-Reply-To: <s5hvav2wa2e.wl-tiwai@suse.de>
On Fri, 02 Dec 2016 17:49:13 +0100,
Takashi Iwai wrote:
>
> Hi,
>
> we've got an Intel Cherry Trail-based system with Marvell SD8897 chip
> over MMC (sdhci), and WiFi / BT always fails at starting (or better to
> say, it never worked properly).
>
> For avoiding the race between WiFi and BT, I blacklisted btmrvl_sdio,
> so let's concentrate only on mwifiex_sdio now.
>
> At the beginning of the driver loading, it looks fine:
>
> mwifiex_sdio mmc1:0001:1: info: FW download over, size 802164 bytes
> mwifiex_sdio mmc1:0001:1: WLAN FW is active
> mwifiex_sdio mmc1:0001:1: info: MWIFIEX VERSION: mwifiex 1.0 (15.68.7.p77)
> mwifiex_sdio mmc1:0001:1: driver_version = mwifiex 1.0 (15.68.7.p77)
> cfg80211: Regulatory domain changed to country: US
> .....
>
> Then it gets a timeout
>
> mwifiex_sdio mmc1:0001:1: mwifiex_cmd_timeout_func: Timeout cmd id = 0x107, act = 0x0
> mwifiex_sdio mmc1:0001:1: num_data_h2c_failure = 0
> mwifiex_sdio mmc1:0001:1: num_cmd_h2c_failure = 0
> mwifiex_sdio mmc1:0001:1: is_cmd_timedout = 1
> mwifiex_sdio mmc1:0001:1: num_tx_timeout = 0
> mwifiex_sdio mmc1:0001:1: last_cmd_index = 4
> mwifiex_sdio mmc1:0001:1: last_cmd_id: 1e 00 0c 01 1e 00 20 00 07 01
> mwifiex_sdio mmc1:0001:1: last_cmd_act: 00 00 01 00 00 00 08 00 00 00
> mwifiex_sdio mmc1:0001:1: last_cmd_resp_index = 3
> mwifiex_sdio mmc1:0001:1: last_cmd_resp_id: 1e 80 0c 81 1e 80 20 80 20 80
> mwifiex_sdio mmc1:0001:1: last_event_index = 1
> mwifiex_sdio mmc1:0001:1: last_event: 00 00 0b 00 00 00 00 00 00 00
> mwifiex_sdio mmc1:0001:1: data_sent=0 cmd_sent=0
> mwifiex_sdio mmc1:0001:1: ps_mode=1 ps_state=1
> mwifiex_sdio mmc1:0001:1: ===mwifiex driverinfo dump start===
> mwifiex_sdio mmc1:0001:1: info: MWIFIEX VERSION: mwifiex 1.0 (15.68.7.p77)
> mwifiex_sdio mmc1:0001:1: SDIO register dump start
> mwifiex_sdio mmc1:0001:1: SDIO Func0 (0x0-0x9): 43 03 02 02 03 02 00 02 03 00
> mwifiex_sdio mmc1:0001:1: SDIO Func1 (0x0-0xb): 02 ff c3 40 00 00 00 00 ff ff ff ff
> mwifiex_sdio mmc1:0001:1: SDIO Func1: (0x4c) 00 (0x50) 08 (0x54) 07 (0x55) 0c (0x58) 10 (0x59) 00 (0x5c) 00 (0x5d) 00
> mwifiex_sdio mmc1:0001:1: SDIO Func1 (0xc0-0xca): dc fe 6c 00 10 00 3f 36 36 02 20
> mwifiex_sdio mmc1:0001:1: SDIO Func1 (0xc0-0xca): dc fe 76 00 1a 00 3f 36 36 02 20
> mwifiex_sdio mmc1:0001:1: SDIO register dump end
> mwifiex_sdio mmc1:0001:1: ===mwifiex driverinfo dump end===
> mwifiex_sdio mmc1:0001:1: == mwifiex firmware dump start ==
> mwifiex_sdio mmc1:0001:1: Ignore scan. Card removed or firmware in bad state
> mwifiex_sdio mmc1:0001:1: scan failed: -14
> mwifiex_sdio mmc1:0001:1: == mwifiex firmware dump end ==
> mwifiex_sdio mmc1:0001:1: == mwifiex dump information to /sys/class/devcoredump start
> mwifiex_sdio mmc1:0001:1: == mwifiex dump information to /sys/class/devcoredump end
>
> And the reset fails as well:
>
> mwifiex_sdio mmc1:0001:1: info: shutdown mwifiex...
> mwifiex_sdio mmc1:0001:1: PREP_CMD: card is removed
> mmc1: tried to reset card
> mwifiex_sdio mmc1:0001:1: failed to enable function
>
>
> I can give the output with CONFIG_MMC_DEBUG and dyndbg for mwifiex*,
> but the full log is way too big to post, as the system is eMMC and it
> contains lots of noises. In case it helps, the log snippet before the
> timeout is like:
>
> [ 42.367403] mwifiex_sdio mmc1:0001:1: bgscan already stopped!
> [ 42.398871] mmc1: starting CMD53 arg 93000100 flags 000001b5
> [ 42.398880] mmc1: blksz 256 blocks 1 flags 00000100 tsac 1000 ms nsac 0
> [ 42.399136] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.400415] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.401787] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.403044] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.404498] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.405874] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.407192] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.408703] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.410229] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.411464] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.412754] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.414211] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.415365] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.416635] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.417968] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.419163] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.420439] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.421891] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.423206] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.424531] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.425974] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.427268] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.428575] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.429959] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.431153] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.432436] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.433793] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.435034] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.436447] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.437957] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.439244] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.440559] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000020
> [ 42.441993] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000103
> [ 42.442061] mmc1: req done (CMD53): 0: 00002000 00000000 00000000 00000000
> [ 42.442067] mmc1: 256 bytes transferred: 0
> [ 42.442183] mmc1: starting CMD53 arg 100000b8 flags 000001b5
> [ 42.442189] mmc1: blksz 184 blocks 1 flags 00000200 tsac 1000 ms nsac 0
> [ 42.442217] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000003
> [ 42.442228] mmc1: req done (CMD53): 0: 00002000 00000000 00000000 00000000
> [ 42.442229] mmc1: 184 bytes transferred: 0
> [ 42.442368] mmc1: starting CMD53 arg 13000100 flags 000001b5
> [ 42.442374] mmc1: blksz 256 blocks 1 flags 00000200 tsac 1000 ms nsac 0
> [ 42.442472] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000003
> [ 42.442483] mmc1: req done (CMD53): 0: 00002000 00000000 00000000 00000000
> [ 42.442484] mmc1: 256 bytes transferred: 0
> [ 42.442645] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000100
> [ 42.442675] mmc1: starting CMD53 arg 100000b8 flags 000001b5
> [ 42.442681] mmc1: blksz 184 blocks 1 flags 00000200 tsac 1000 ms nsac 0
> [ 42.442804] sdhci [sdhci_irq()]: *** mmc1 got interrupt: 0x00000003
> [ 42.442814] mmc1: req done (CMD53): 0: 00002000 00000000 00000000 00000000
> [ 42.442816] mmc1: 184 bytes transferred: 0
> [ 52.447746] mwifiex_sdio mmc1:0001:1: mwifiex_cmd_timeout_func: Timeout cmd id = 0x6, act = 0x3
>
> So there seems really no ack before the timeout.
>
>
> Looking through the web, some earlier bug reports (in year 2014)
> showed the similar problem,
>
> https://bugzilla.kernel.org/show_bug.cgi?id=76111
>
> The bug entry remains opened, so I'm not sure about the situation of
> that bug. Also there are some other hits, but not quite sure whether
> it's the same issue.
>
>
> A few more things to be noted:
>
> - The timeout isn't always 0x107. Sometimes it gets 0xa9.
> - I already tried to set can_ext_scan=false, but it didn't help.
> - The symptom appears on all kernel version from 4.4 to 4.9.
> - Backporting the stuff in mwifiex from linux-next as of today didn't
> help, either.
>
>
> Does anyone have a hint for further debugging?
> Any suggestions appreciated.
Does anyone have an idea how to debug further?
thanks,
Takashi
next prev parent reply other threads:[~2016-12-06 16:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-02 16:49 Non-working mwifiex_sdio with SD8897 Takashi Iwai
2016-12-06 16:48 ` Takashi Iwai [this message]
[not found] ` <d7abecd9e9074f53bd1369cdd93d3472@SC-EXCH04.marvell.com>
2016-12-08 10:18 ` Takashi Iwai
2016-12-08 10:37 ` Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hy3ztovf8.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=akarwar@marvell.com \
--cc=linux-wireless@vger.kernel.org \
--cc=nishants@marvell.com \
--cc=oneukum@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox