All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC/PATCH] mwifiex: Driver - Firmware Glitches
@ 2015-04-16  9:10 Florian Achleitner
  2015-04-16  9:14 ` [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed" Florian Achleitner
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Florian Achleitner @ 2015-04-16  9:10 UTC (permalink / raw)
  To: linux-wireless; +Cc: Amitkumar Karwar, Avinash Patil, Maithili Hinge

Hi,

we are using a Marvell SD8787-based module by Lesswire, which is connected to 
an imx28 through sdio. We are testing with the most recent kernel from
wireless-drivers-next and Firmware 14.66.35.p52.

Frequently, we see 'glitches' between driver and Firmware. The most recent 
driver answers most of them with an attempt to reset the module, reload the 
firmware, and start over. 

However, this only works for us, because our sdio interface triggers a 
hardware reset for the wireless module whenever it probes the device. Without 
this hardware reset (sdio reset only), the module fails to restart.

Is the necessity of frequent hardware resets a commonly known issue with this 
chip/firmware? Anybody else experiencing these?

Currently, we see three different scenarios. One of them is currently not 
answered by  reset. Refer to the upcoming patch.

(1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
(2)  Firmware wakeup failed.. Ok, after reset.
(3) DNLD_CMD: host to card failed. No reset triggered. See patch.

I can provide detailed logs, if you want.

Regards,
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed".
  2015-04-16  9:10 [RFC/PATCH] mwifiex: Driver - Firmware Glitches Florian Achleitner
@ 2015-04-16  9:14 ` Florian Achleitner
  2015-05-09 13:35   ` Kalle Valo
  2015-04-16  9:30 ` [RFC/PATCH] mwifiex: Driver - Firmware Glitches Amitkumar Karwar
  2015-04-16 10:19 ` James Cameron
  2 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-16  9:14 UTC (permalink / raw)
  To: linux-wireless; +Cc: Amitkumar Karwar, Avinash Patil, Maithili Hinge

Whenever this problem occurs, the driver can not continue. Thus,
trigger a card reset to restart the module firmware. Other firmware
communication issues are resolved by this last resort.
Also dump registers, to eventually allow some diagnostics.

Signed-off-by: Florian Achleitner <flo@fopen.at>
---

This works well at least for us.

 drivers/net/wireless/mwifiex/cmdevt.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
index c5a14ff..410f4f2 100644
--- a/drivers/net/wireless/mwifiex/cmdevt.c
+++ b/drivers/net/wireless/mwifiex/cmdevt.c
@@ -233,6 +233,12 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
                spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);
 
                adapter->dbg.num_cmd_host_to_card_failure++;
+
+               if (adapter->if_ops.fw_dump)
+                       adapter->if_ops.fw_dump(adapter);
+
+               if (adapter->if_ops.card_reset)
+                       adapter->if_ops.card_reset(adapter);
                return -1;
        }
 
-- 
2.1.0



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* RE: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16  9:10 [RFC/PATCH] mwifiex: Driver - Firmware Glitches Florian Achleitner
  2015-04-16  9:14 ` [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed" Florian Achleitner
@ 2015-04-16  9:30 ` Amitkumar Karwar
  2015-04-16 10:34   ` Florian Achleitner
  2015-04-16 10:19 ` James Cameron
  2 siblings, 1 reply; 17+ messages in thread
From: Amitkumar Karwar @ 2015-04-16  9:30 UTC (permalink / raw)
  To: Florian Achleitner, linux-wireless; +Cc: Avinash Patil, Maithili Hinge

Hi Florian,

> 
> Hi,
> 
> we are using a Marvell SD8787-based module by Lesswire, which is
> connected to an imx28 through sdio. We are testing with the most recent
> kernel from wireless-drivers-next and Firmware 14.66.35.p52.
> 
> Frequently, we see 'glitches' between driver and Firmware. The most
> recent driver answers most of them with an attempt to reset the module,
> reload the firmware, and start over.
> 
> However, this only works for us, because our sdio interface triggers a
> hardware reset for the wireless module whenever it probes the device.
> Without this hardware reset (sdio reset only), the module fails to
> restart.

We haven't seen this behavior yet. Could you please share complete log?

> 
> Is the necessity of frequent hardware resets a commonly known issue with
> this chip/firmware? Anybody else experiencing these?
> 
> Currently, we see three different scenarios. One of them is currently
> not answered by  reset. Refer to the upcoming patch.
> 
> (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
> (2)  Firmware wakeup failed.. Ok, after reset.

This is ok. Reset at these places helps us recover if a corner case firmware bug is hit. 

> (3) DNLD_CMD: host to card failed. No reset triggered. See patch.
> 
> I can provide detailed logs, if you want.

"DNLD_CMD: host to card failed" error is expected during heavy Tx traffic if data write port is not available. Traffic will be resumed once the port is available.
Please share detailed logs. It would help us find root cause for the problem.

Regards,
Amitkumar


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16  9:10 [RFC/PATCH] mwifiex: Driver - Firmware Glitches Florian Achleitner
  2015-04-16  9:14 ` [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed" Florian Achleitner
  2015-04-16  9:30 ` [RFC/PATCH] mwifiex: Driver - Firmware Glitches Amitkumar Karwar
@ 2015-04-16 10:19 ` James Cameron
  2015-04-16 10:43   ` Florian Achleitner
  2 siblings, 1 reply; 17+ messages in thread
From: James Cameron @ 2015-04-16 10:19 UTC (permalink / raw)
  To: Florian Achleitner
  Cc: linux-wireless, Amitkumar Karwar, Avinash Patil, Maithili Hinge

On Thu, Apr 16, 2015 at 11:10:02AM +0200, Florian Achleitner wrote:
> Is the necessity of frequent hardware resets a commonly known issue
> with this chip/firmware? Anybody else experiencing these?

Yes, but how frequent?

> Currently, we see three different scenarios. One of them is
> currently not answered by reset. Refer to the upcoming patch.
> 
> (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.

See this a lot during heavy testing.

> (2)  Firmware wakeup failed.. Ok, after reset.

Never see this.

> (3) DNLD_CMD: host to card failed. No reset triggered. See patch.

Very rarely see this.

However, our experience may not be comparable; we are using 8787 with
a 3.5 kernel, because we haven't the resources to use a later kernel
or get backports working.

Also, we use WOL (wake on lan) heavily; frequent automatic suspends,
with a GPIO wakeup in addition to the SDHCI.

-- 
James Cameron
http://quozl.linux.org.au/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16  9:30 ` [RFC/PATCH] mwifiex: Driver - Firmware Glitches Amitkumar Karwar
@ 2015-04-16 10:34   ` Florian Achleitner
  2015-04-16 11:21     ` Amitkumar Karwar
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-16 10:34 UTC (permalink / raw)
  To: Amitkumar Karwar; +Cc: linux-wireless, Avinash Patil, Maithili Hinge

On Thursday 16 April 2015 02:30:59 Amitkumar Karwar wrote:
>[...]
> We haven't seen this behavior yet. Could you please share complete log?
Logs follow per scenario.

> > (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
[164276.211216] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-110
[164276.219198] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-110
[164286.247400] mwifiex_sdio mmc0:0001:1: mwifiex_cmd_timeout_func: Timeout cmd 
id = 0x107, act = 0x0
[164286.256501] mwifiex_sdio mmc0:0001:1: num_data_h2c_failure = 0
[164286.262593] mwifiex_sdio mmc0:0001:1: num_cmd_h2c_failure = 0
[164286.268537] mwifiex_sdio mmc0:0001:1: is_cmd_timedout = 1
[164286.274088] mwifiex_sdio mmc0:0001:1: num_tx_timeout = 0
[164286.279565] mwifiex_sdio mmc0:0001:1: last_cmd_index = 0
[164286.285025] mwifiex_sdio mmc0:0001:1: last_cmd_id: 07 01 07 01 07 01 07 01 
07 01
[164286.292587] mwifiex_sdio mmc0:0001:1: last_cmd_act: 00 00 00 00 00 00 00 00 
00 00
[164286.300245] mwifiex_sdio mmc0:0001:1: last_cmd_resp_index = 4
[164286.306101] mwifiex_sdio mmc0:0001:1: last_cmd_resp_id: 07 81 07 81 07 81 
07 81 07 81
[164286.314097] mwifiex_sdio mmc0:0001:1: last_event_index = 3
[164286.319757] mwifiex_sdio mmc0:0001:1: last_event: 58 00 58 00 58 00 0b 00 
58 00
[164286.327180] mwifiex_sdio mmc0:0001:1: data_sent=0 cmd_sent=1
[164286.333026] mwifiex_sdio mmc0:0001:1: ps_mode=1 ps_state=0
[164286.338698] mwifiex_sdio mmc0:0001:1: cmd timeout
[164286.347116] mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP START===
[164286.348307] mwifiex_sdio mmc0:0001:1: SDIO register DUMP START
[164286.364842] mwifiex_sdio mmc0:0001:1: SDIO Func0 (0x0-0x9): 32 02 02 00 03 
02 00 02 03 00
[164286.375346] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x0-0x9): 00 3f 03 03 01 
00 ff ff 0a 00
[164286.375995] mwifiex_sdio mmc0:0001:1: SDIO Func1: (0x28) 00 (0x30) 00 
(0x34) 07 (0x38) 00 (0x3c) 00
[164286.376881] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x60-0x6a): dc fe ed 00 
1d 00 00 ec ec 00 20
[164286.671632] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x60-0x6a): dc fe 0b 00 
3b 00 00 ec ec 00 20
[164286.671788] mwifiex_sdio mmc0:0001:1: SDIO register DUMP END
[164286.672062] mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP END===
[164286.672087] mwifiex_sdio: Resetting card...
[164286.755091] mmc0: card 0001 removed
[164287.957529] mxs-mmc 80010000.ssp: Device reset triggered!
[164288.628044] mmc0: new high speed SDIO card at address 0001
[164289.750729] mwifiex_sdio mmc0:0001:1: info: FW download over, size 447384 
bytes
[164289.977539] mwifiex_sdio mmc0:0001:1: WLAN FW is active
[164290.445054] ieee80211 phy9: ignoring F/W country code US
[164290.483702] mwifiex_sdio mmc0:0001:1: driver_version = mwifiex 1.0 
(14.66.9.p96)
[165634.314756] cfg80211: Calling CRDA to update world regulatory domain

> > (2)  Firmware wakeup failed.. Ok, after reset.
[230837.497001] mxs-mmc 80010000.ssp: Device reset triggered!
[230838.189850] mmc0: new high speed SDIO card at address 0001
[230840.415197] mwifiex_sdio mmc0:0001:1: info: FW download over, size 447384 
bytes
[230840.656847] mwifiex_sdio mmc0:0001:1: WLAN FW is active
[230841.111489] ieee80211 phy21: ignoring F/W country code US
[230841.169867] mwifiex_sdio mmc0:0001:1: driver_version = mwifiex 1.0 
(14.66.9.p96) 
[231000.116588] mwifiex_sdio mmc0:0001:1: Firmware wakeup failed
[231000.122550] mwifiex_sdio mmc0:0001:1: failed to get signal information
[231000.129544] mwifiex_sdio: Resetting card...

> > (3) DNLD_CMD: host to card failed. No reset triggered. See patch.
Without patch:
134669.799365] cfg80211: Calling CRDA to update world regulatory domain
[141183.720924] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-110
[141183.721405] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-110
[141183.721893] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-110
[141183.722188] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[178868.935885] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-84
[178868.936295] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-84
[178868.936644] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-84
[178868.936874] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[178868.947200] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-110
[178868.947739] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-110
[178868.948153] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-110
[178868.948451] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[178906.974145] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-84
[178906.974544] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-84
[178906.974890] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-84
[178906.975122] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[178906.985090] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-110
[178906.985565] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-110
[178906.986036] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-110
[178906.986332] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[178930.845685] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-84
[178930.846069] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-84
[178930.846408] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-84
[178930.846638] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed

The interface does not work in this state. Note the long times between some 
messages.

With patch:

[50410.924229] cfg80211: Calling CRDA to update world regulatory domain
[69944.419055] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1) failed: 
-110
[69944.419443] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2) failed: 
-110
[69944.419787] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3) failed: 
-110
[69944.420017] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
[69944.420199] mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP START===
[69944.421173] mwifiex_sdio mmc0:0001:1: SDIO register DUMP START
[69944.423444] mwifiex_sdio mmc0:0001:1: SDIO Func0 (0x0-0x9): 32 02 00 02 03 
00 00 02 03 00 
[69944.425194] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x0-0x9): 00 3f 03 00 00 
00 03 fc 0a 00 
[69944.425571] mwifiex_sdio mmc0:0001:1: SDIO Func1: (0x28) 00 (0x30) 08 (0x34) 
07 (0x38) 00 (0x3c) 00 
[69944.426270] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x60-0x6a): dc fe 08 00 d8 
00 00 80 80 00 20 
[69944.646744] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x60-0x6a): dc fe 24 00 ef 
00 00 80 80 00 20 
[69944.646823] mwifiex_sdio mmc0:0001:1: SDIO register DUMP END
[69944.649330] mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP END===
[69944.649372] mwifiex_sdio: Resetting card...
[69944.719068] mmc0: card 0001 removed
[69946.177879] mxs-mmc 80010000.ssp: Device reset triggered!
[69946.854642] mmc0: new high speed SDIO card at address 0001
[69948.300017] mwifiex_sdio mmc0:0001:1: info: FW download over, size 463240 
bytes

> "DNLD_CMD: host to card failed" error is expected during heavy Tx traffic if
> data write port is not available. Traffic will be resumed once the port is
> available. Please share detailed logs. It would help us find root cause for
> the problem.

In our case it seems to fail to resume somehow.

> 
> Regards,
> Amitkumar

Regards,
Florian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16 10:19 ` James Cameron
@ 2015-04-16 10:43   ` Florian Achleitner
  2015-04-16 11:11     ` Avinash Patil
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-16 10:43 UTC (permalink / raw)
  To: James Cameron
  Cc: linux-wireless, Amitkumar Karwar, Avinash Patil, Maithili Hinge

On Thursday 16 April 2015 20:19:13 James Cameron wrote:
> On Thu, Apr 16, 2015 at 11:10:02AM +0200, Florian Achleitner wrote:
> > Is the necessity of frequent hardware resets a commonly known issue
> > with this chip/firmware? Anybody else experiencing these?
> 
> Yes, but how frequent?

Depends on the specific hardware. Averages follow.

> 
> > Currently, we see three different scenarios. One of them is
> > currently not answered by reset. Refer to the upcoming patch.
> > 
> > (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
> 
> See this a lot during heavy testing.

Also a lot, maybe once a day in low load.

> 
> > (2)  Firmware wakeup failed.. Ok, after reset.
> 
> Never see this.

Once a day.

> 
> > (3) DNLD_CMD: host to card failed. No reset triggered. See patch.
> 
> Very rarely see this.

Also very rarely. Once a week, probably.

> 
> However, our experience may not be comparable; we are using 8787 with
> a 3.5 kernel, because we haven't the resources to use a later kernel
> or get backports working.
> 
> Also, we use WOL (wake on lan) heavily; frequent automatic suspends,
> with a GPIO wakeup in addition to the SDHCI.

We don't use WOL or suspends.

Regards,
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16 10:43   ` Florian Achleitner
@ 2015-04-16 11:11     ` Avinash Patil
  0 siblings, 0 replies; 17+ messages in thread
From: Avinash Patil @ 2015-04-16 11:11 UTC (permalink / raw)
  To: Florian Achleitner, James Cameron
  Cc: linux-wireless, Amitkumar Karwar, Maithili Hinge

Hi Florian,


> -----Original Message-----
> From: Florian Achleitner [mailto:flo@fopen.at]
> Sent: Thursday, April 16, 2015 4:13 PM
> To: James Cameron
> Cc: linux-wireless@vger.kernel.org; Amitkumar Karwar; Avinash Patil; Maithili
> Hinge
> Subject: Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
> 
> On Thursday 16 April 2015 20:19:13 James Cameron wrote:
> > On Thu, Apr 16, 2015 at 11:10:02AM +0200, Florian Achleitner wrote:
> > > Is the necessity of frequent hardware resets a commonly known issue
> > > with this chip/firmware? Anybody else experiencing these?
> >
> > Yes, but how frequent?
> 
> Depends on the specific hardware. Averages follow.
> 
> >
> > > Currently, we see three different scenarios. One of them is
> > > currently not answered by reset. Refer to the upcoming patch.
> > >
> > > (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
> >
> > See this a lot during heavy testing.
> 
> Also a lot, maybe once a day in low load.

Can this be related to SDHCI or MMC host controller?
Could you please collect logs with CONFIG_MMC_DEBUG enbled?

> >
> > > (2)  Firmware wakeup failed.. Ok, after reset.
> >
> > Never see this.
> 
> Once a day.
> 
> >
> > > (3) DNLD_CMD: host to card failed. No reset triggered. See patch.
> >
> > Very rarely see this.
> 
> Also very rarely. Once a week, probably.
> 
> >
> > However, our experience may not be comparable; we are using 8787 with
> > a 3.5 kernel, because we haven't the resources to use a later kernel
> > or get backports working.
> >
> > Also, we use WOL (wake on lan) heavily; frequent automatic suspends,
> > with a GPIO wakeup in addition to the SDHCI.
> 
> We don't use WOL or suspends.
> 
> Regards,
> Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16 10:34   ` Florian Achleitner
@ 2015-04-16 11:21     ` Amitkumar Karwar
  2015-04-16 13:19       ` Florian Achleitner
  0 siblings, 1 reply; 17+ messages in thread
From: Amitkumar Karwar @ 2015-04-16 11:21 UTC (permalink / raw)
  To: Florian Achleitner; +Cc: linux-wireless, Avinash Patil, Maithili Hinge

Hi Florian,

> On Thursday 16 April 2015 02:30:59 Amitkumar Karwar wrote:
> >[...]
> > We haven't seen this behavior yet. Could you please share complete
> log?
> Logs follow per scenario.
> 
> > > (1)  mwifiex_cmd_timeout_func: Timeout cmd .. Ok, after reset.
> [164276.211216] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -110
> [164276.219198] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -110
> [164286.247400] mwifiex_sdio mmc0:0001:1: mwifiex_cmd_timeout_func:
> Timeout cmd id = 0x107, act = 0x0 [164286.256501] mwifiex_sdio
> mmc0:0001:1: num_data_h2c_failure = 0 [164286.262593] mwifiex_sdio
> mmc0:0001:1: num_cmd_h2c_failure = 0 [164286.268537] mwifiex_sdio
> mmc0:0001:1: is_cmd_timedout = 1 [164286.274088] mwifiex_sdio
> mmc0:0001:1: num_tx_timeout = 0 [164286.279565] mwifiex_sdio
> mmc0:0001:1: last_cmd_index = 0 [164286.285025] mwifiex_sdio
> mmc0:0001:1: last_cmd_id: 07 01 07 01 07 01 07 01
> 07 01
> [164286.292587] mwifiex_sdio mmc0:0001:1: last_cmd_act: 00 00 00 00 00
> 00 00 00
> 00 00
> [164286.300245] mwifiex_sdio mmc0:0001:1: last_cmd_resp_index = 4
> [164286.306101] mwifiex_sdio mmc0:0001:1: last_cmd_resp_id: 07 81 07 81
> 07 81
> 07 81 07 81
> [164286.314097] mwifiex_sdio mmc0:0001:1: last_event_index = 3
> [164286.319757] mwifiex_sdio mmc0:0001:1: last_event: 58 00 58 00 58 00
> 0b 00
> 58 00
> [164286.327180] mwifiex_sdio mmc0:0001:1: data_sent=0 cmd_sent=1
> [164286.333026] mwifiex_sdio mmc0:0001:1: ps_mode=1 ps_state=0
> [164286.338698] mwifiex_sdio mmc0:0001:1: cmd timeout [164286.347116]
> mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP START=== [164286.348307]
> mwifiex_sdio mmc0:0001:1: SDIO register DUMP START [164286.364842]
> mwifiex_sdio mmc0:0001:1: SDIO Func0 (0x0-0x9): 32 02 02 00 03
> 02 00 02 03 00
> [164286.375346] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x0-0x9): 00 3f 03
> 03 01
> 00 ff ff 0a 00
> [164286.375995] mwifiex_sdio mmc0:0001:1: SDIO Func1: (0x28) 00 (0x30)
> 00
> (0x34) 07 (0x38) 00 (0x3c) 00
> [164286.376881] mwifiex_sdio mmc0:0001:1: SDIO Func1 (0x60-0x6a): dc fe
> ed 00 1d 00 00 ec ec 00 20 [164286.671632] mwifiex_sdio mmc0:0001:1:
> SDIO Func1 (0x60-0x6a): dc fe 0b 00 3b 00 00 ec ec 00 20 [164286.671788]
> mwifiex_sdio mmc0:0001:1: SDIO register DUMP END [164286.672062]
> mwifiex_sdio mmc0:0001:1: === DRIVER INFO DUMP END=== [164286.672087]
> mwifiex_sdio: Resetting card...
> [164286.755091] mmc0: card 0001 removed
> [164287.957529] mxs-mmc 80010000.ssp: Device reset triggered!
> [164288.628044] mmc0: new high speed SDIO card at address 0001
> [164289.750729] mwifiex_sdio mmc0:0001:1: info: FW download over, size
> 447384 bytes [164289.977539] mwifiex_sdio mmc0:0001:1: WLAN FW is active
> [164290.445054] ieee80211 phy9: ignoring F/W country code US
> [164290.483702] mwifiex_sdio mmc0:0001:1: driver_version = mwifiex 1.0
> (14.66.9.p96)
> [165634.314756] cfg80211: Calling CRDA to update world regulatory domain
> 
> > > (2)  Firmware wakeup failed.. Ok, after reset.
> [230837.497001] mxs-mmc 80010000.ssp: Device reset triggered!
> [230838.189850] mmc0: new high speed SDIO card at address 0001
> [230840.415197] mwifiex_sdio mmc0:0001:1: info: FW download over, size
> 447384 bytes [230840.656847] mwifiex_sdio mmc0:0001:1: WLAN FW is active
> [230841.111489] ieee80211 phy21: ignoring F/W country code US
> [230841.169867] mwifiex_sdio mmc0:0001:1: driver_version = mwifiex 1.0
> (14.66.9.p96)
> [231000.116588] mwifiex_sdio mmc0:0001:1: Firmware wakeup failed
> [231000.122550] mwifiex_sdio mmc0:0001:1: failed to get signal
> information [231000.129544] mwifiex_sdio: Resetting card...
> 
> > > (3) DNLD_CMD: host to card failed. No reset triggered. See patch.
> Without patch:
> 134669.799365] cfg80211: Calling CRDA to update world regulatory domain
> [141183.720924] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -110
> [141183.721405] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -110
> [141183.721893] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -110
> [141183.722188] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> [178868.935885] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -84
> [178868.936295] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -84
> [178868.936644] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -84
> [178868.936874] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> [178868.947200] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -110
> [178868.947739] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -110
> [178868.948153] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -110
> [178868.948451] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> [178906.974145] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -84
> [178906.974544] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -84
> [178906.974890] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -84
> [178906.975122] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> [178906.985090] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -110
> [178906.985565] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -110
> [178906.986036] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -110
> [178906.986332] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> [178930.845685] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (1)
> failed:
> -84
> [178930.846069] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (2)
> failed:
> -84
> [178930.846408] mwifiex_sdio mmc0:0001:1: host_to_card, write iomem (3)
> failed:
> -84
> [178930.846638] mwifiex_sdio mmc0:0001:1: DNLD_CMD: host to card failed
> 
> The interface does not work in this state. Note the long times between
> some messages.


"host_to_card, write iomem (1) failed: -110" error indicates that MMC subsystem's sdio_writesb() API failed with timeout error.

WLAN driver or FW has nothing to do with this. This seems to be your MMC host controller/hardware problem. Adding a recovering mechanism in WLAN driver doesn't look correct here. We should rather need to root cause the problem.
Our "DNLD_CMD: host to card failed" error message is displayed for other failures also. As explained earlier, if it's write data port not available problem. It will automatically resolve after sometimes. Triggering reset would be unnecessary for that case.

Regards,
Amitkumar

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16 11:21     ` Amitkumar Karwar
@ 2015-04-16 13:19       ` Florian Achleitner
  2015-04-17  8:29         ` Florian Achleitner
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-16 13:19 UTC (permalink / raw)
  To: Amitkumar Karwar, Avinash Patil; +Cc: linux-wireless, Maithili Hinge

Hi Avanish, Amitkumar,

Thx for your ideas to check the mmc interface.

On Thursday 16 April 2015 04:21:50 Amitkumar Karwar wrote:
> "host_to_card, write iomem (1) failed: -110" error indicates that MMC
> subsystem's sdio_writesb() API failed with timeout error.
> 
> WLAN driver or FW has nothing to do with this. This seems to be your MMC
> host controller/hardware problem. Adding a recovering mechanism in WLAN
> driver doesn't look correct here. We should rather need to root cause the
> problem. Our "DNLD_CMD: host to card failed" error message is displayed for
> other failures also. As explained earlier, if it's write data port not
> available problem. It will automatically resolve after sometimes.
> Triggering reset would be unnecessary for that case.

I will try to figure out whether the root cause is the MMC interface.
Probably in this case, the reset actually recovers from a bug in the mmc 
driver.

> 
> Regards,
> Amitkumar

Regards,
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-16 13:19       ` Florian Achleitner
@ 2015-04-17  8:29         ` Florian Achleitner
  2015-04-17  9:45           ` Amitkumar Karwar
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-17  8:29 UTC (permalink / raw)
  To: Amitkumar Karwar; +Cc: Avinash Patil, linux-wireless, Maithili Hinge

On Thursday 16 April 2015 15:19:27 Florian Achleitner wrote:
> I will try to figure out whether the root cause is the MMC interface.
> Probably in this case, the reset actually recovers from a bug in the mmc 
> driver.

Anyways, we have a virtually identical hardware with a Marvell SD8688 based 
wireless module, which uses the libertas driver. Running kernel 3.10.41 we 
have no problems for 50 days. 

Running the same kernel with mwifiex with the SD8788 we see a freeze which 
requires a hw-reset within about a day. Similar to the most recent kernel.

Are there known sdio issues with SD8788?
Will try to get useful information from the mmc system..

Regards,
Florian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-17  8:29         ` Florian Achleitner
@ 2015-04-17  9:45           ` Amitkumar Karwar
  2015-04-23  8:33             ` Florian Achleitner
  0 siblings, 1 reply; 17+ messages in thread
From: Amitkumar Karwar @ 2015-04-17  9:45 UTC (permalink / raw)
  To: Florian Achleitner; +Cc: Avinash Patil, linux-wireless, Maithili Hinge

Hi Florian,

> From: Florian Achleitner [mailto:achleitner.florian@fronius.com]
> Sent: Friday, April 17, 2015 2:00 PM
> To: Amitkumar Karwar
> Cc: Avinash Patil; linux-wireless@vger.kernel.org; Maithili Hinge
> Subject: Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
> 
> On Thursday 16 April 2015 15:19:27 Florian Achleitner wrote:
> > I will try to figure out whether the root cause is the MMC interface.
> > Probably in this case, the reset actually recovers from a bug in the
> > mmc driver.
> 
> Anyways, we have a virtually identical hardware with a Marvell SD8688
> based wireless module, which uses the libertas driver. Running kernel
> 3.10.41 we have no problems for 50 days.
> 
> Running the same kernel with mwifiex with the SD8788 we see a freeze
> which requires a hw-reset within about a day. Similar to the most recent
> kernel.
> 
> Are there known sdio issues with SD8788?
> Will try to get useful information from the mmc system..

Known firmware issues are command timeout and wakeup failure. They are not specific to SDIO. As Avinash mentioned earlier, we need to check CONFIG_MMC_DEBUG enbled dmesg logs for "write iomem (1) failed: -110" issue.

Regards,
Amitkumar


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-17  9:45           ` Amitkumar Karwar
@ 2015-04-23  8:33             ` Florian Achleitner
  2015-04-23  8:43               ` James Cameron
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-04-23  8:33 UTC (permalink / raw)
  To: Amitkumar Karwar; +Cc: Avinash Patil, linux-wireless, Maithili Hinge

On Friday 17 April 2015 02:45:02 Amitkumar Karwar wrote:
> Known firmware issues are command timeout and wakeup failure. They are not
> specific to SDIO. As Avinash mentioned earlier, we need to check
> CONFIG_MMC_DEBUG enbled dmesg logs for "write iomem (1) failed: -110"
> issue.

Thx.
A kernel with CONFIG_MMC_DEBUG is  running since 6 days on 4 devices, but 
nothing valuable captured yet. Unfortunately, it looks like the debugging code 
modifies the timing, such that the failure doesn't occur.. 

> 
> Regards,
> Amitkumar

Regards, 
Flo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-23  8:33             ` Florian Achleitner
@ 2015-04-23  8:43               ` James Cameron
  2015-04-23  9:48                 ` Avinash Patil
  0 siblings, 1 reply; 17+ messages in thread
From: James Cameron @ 2015-04-23  8:43 UTC (permalink / raw)
  To: Florian Achleitner
  Cc: Amitkumar Karwar, Avinash Patil, linux-wireless, Maithili Hinge

On Thu, Apr 23, 2015 at 10:33:02AM +0200, Florian Achleitner wrote:
> On Friday 17 April 2015 02:45:02 Amitkumar Karwar wrote:
> > Known firmware issues are command timeout and wakeup failure. They
> > are not specific to SDIO. As Avinash mentioned earlier, we need to
> > check CONFIG_MMC_DEBUG enbled dmesg logs for "write iomem (1)
> > failed: -110" issue.
> 
> Thx.
> A kernel with CONFIG_MMC_DEBUG is running since 6 days on 4 devices,
> but nothing valuable captured yet. Unfortunately, it looks like the
> debugging code modifies the timing, such that the failure doesn't
> occur..

Yes, I've seen something similar last year, when I began to add
instrumentation code the problems became less reproducible.

So in my situation either there was a race condition with the
firmware, or a signal integrity problem on the SDIO.

I wasn't able to go into full signal integrity work at the time.

I also have rather hazy memory of which particular problem I was
working on.  ;-)

Perhaps you might review the effects of CONFIG_MMC_DEBUG and remove
some of it?

-- 
James Cameron
http://quozl.linux.org.au/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
  2015-04-23  8:43               ` James Cameron
@ 2015-04-23  9:48                 ` Avinash Patil
  0 siblings, 0 replies; 17+ messages in thread
From: Avinash Patil @ 2015-04-23  9:48 UTC (permalink / raw)
  To: quozl, Florian Achleitner
  Cc: Amitkumar Karwar, linux-wireless, Maithili Hinge

Hi Florian,

> -----Original Message-----
> From: quozl@laptop.org [mailto:quozl@laptop.org]
> Sent: Thursday, April 23, 2015 2:13 PM
> To: Florian Achleitner
> Cc: Amitkumar Karwar; Avinash Patil; linux-wireless@vger.kernel.org; Maithili
> Hinge
> Subject: Re: [RFC/PATCH] mwifiex: Driver - Firmware Glitches
> 
> On Thu, Apr 23, 2015 at 10:33:02AM +0200, Florian Achleitner wrote:
> > On Friday 17 April 2015 02:45:02 Amitkumar Karwar wrote:
> > > Known firmware issues are command timeout and wakeup failure. They
> > > are not specific to SDIO. As Avinash mentioned earlier, we need to
> > > check CONFIG_MMC_DEBUG enbled dmesg logs for "write iomem (1)
> > > failed: -110" issue.
> >
> > Thx.
> > A kernel with CONFIG_MMC_DEBUG is running since 6 days on 4 devices,
> > but nothing valuable captured yet. Unfortunately, it looks like the
> > debugging code modifies the timing, such that the failure doesn't
> > occur..
> 
> Yes, I've seen something similar last year, when I began to add
> instrumentation code the problems became less reproducible.
> 
> So in my situation either there was a race condition with the firmware, or a
> signal integrity problem on the SDIO.
> 
> I wasn't able to go into full signal integrity work at the time.
> 
> I also have rather hazy memory of which particular problem I was working on.
> ;-)
> 
> Perhaps you might review the effects of CONFIG_MMC_DEBUG and remove some of
> it?

As James suggested could you please check if reducing MMC_DEBUG frequency and printks only at error conditions helps?

> --
> James Cameron
> http://quozl.linux.org.au/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed".
  2015-04-16  9:14 ` [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed" Florian Achleitner
@ 2015-05-09 13:35   ` Kalle Valo
  2015-05-09 16:18     ` Florian Achleitner
  0 siblings, 1 reply; 17+ messages in thread
From: Kalle Valo @ 2015-05-09 13:35 UTC (permalink / raw)
  To: Florian Achleitner
  Cc: linux-wireless, Amitkumar Karwar, Avinash Patil, Maithili Hinge

Florian Achleitner <flo@fopen.at> writes:

> Whenever this problem occurs, the driver can not continue. Thus,
> trigger a card reset to restart the module firmware. Other firmware
> communication issues are resolved by this last resort.
> Also dump registers, to eventually allow some diagnostics.
>
> Signed-off-by: Florian Achleitner <flo@fopen.at>

Doesn't apply to wireless-drivers-next.git. Can you rebase, please?

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed".
  2015-05-09 13:35   ` Kalle Valo
@ 2015-05-09 16:18     ` Florian Achleitner
  2015-05-11  6:35       ` Kalle Valo
  0 siblings, 1 reply; 17+ messages in thread
From: Florian Achleitner @ 2015-05-09 16:18 UTC (permalink / raw)
  To: Kalle Valo
  Cc: linux-wireless, Amitkumar Karwar, Avinash Patil, Maithili Hinge

On Saturday 09 May 2015 16:35:03 Kalle Valo wrote:
> Florian Achleitner <flo@fopen.at> writes:
> > Whenever this problem occurs, the driver can not continue. Thus,
> > trigger a card reset to restart the module firmware. Other firmware
> > communication issues are resolved by this last resort.
> > Also dump registers, to eventually allow some diagnostics.
> > 
> > Signed-off-by: Florian Achleitner <flo@fopen.at>
> 
> Doesn't apply to wireless-drivers-next.git. Can you rebase, please?

Please drop my patch! We agreed that it likely tries to fix a problem actually 
caused in MMC system.

Florian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed".
  2015-05-09 16:18     ` Florian Achleitner
@ 2015-05-11  6:35       ` Kalle Valo
  0 siblings, 0 replies; 17+ messages in thread
From: Kalle Valo @ 2015-05-11  6:35 UTC (permalink / raw)
  To: Florian Achleitner
  Cc: linux-wireless, Amitkumar Karwar, Avinash Patil, Maithili Hinge

Florian Achleitner <flo@fopen.at> writes:

> On Saturday 09 May 2015 16:35:03 Kalle Valo wrote:
>> Florian Achleitner <flo@fopen.at> writes:
>> > Whenever this problem occurs, the driver can not continue. Thus,
>> > trigger a card reset to restart the module firmware. Other firmware
>> > communication issues are resolved by this last resort.
>> > Also dump registers, to eventually allow some diagnostics.
>> > 
>> > Signed-off-by: Florian Achleitner <flo@fopen.at>
>> 
>> Doesn't apply to wireless-drivers-next.git. Can you rebase, please?
>
> Please drop my patch! We agreed that it likely tries to fix a problem actually 
> caused in MMC system.

Sorry, I had missed that as patchwork didn't contain anything. In the
future it's a good idea to reply to the patch and say something like
"Kalle, please drop this because of foo". That way I see it in
patchwork:

https://patchwork.kernel.org/patch/6224961/

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2015-05-11  6:35 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-16  9:10 [RFC/PATCH] mwifiex: Driver - Firmware Glitches Florian Achleitner
2015-04-16  9:14 ` [PATCH] mwifiex: Trigger a card reset on "DNLD_CMD: host to card failed" Florian Achleitner
2015-05-09 13:35   ` Kalle Valo
2015-05-09 16:18     ` Florian Achleitner
2015-05-11  6:35       ` Kalle Valo
2015-04-16  9:30 ` [RFC/PATCH] mwifiex: Driver - Firmware Glitches Amitkumar Karwar
2015-04-16 10:34   ` Florian Achleitner
2015-04-16 11:21     ` Amitkumar Karwar
2015-04-16 13:19       ` Florian Achleitner
2015-04-17  8:29         ` Florian Achleitner
2015-04-17  9:45           ` Amitkumar Karwar
2015-04-23  8:33             ` Florian Achleitner
2015-04-23  8:43               ` James Cameron
2015-04-23  9:48                 ` Avinash Patil
2015-04-16 10:19 ` James Cameron
2015-04-16 10:43   ` Florian Achleitner
2015-04-16 11:11     ` Avinash Patil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.