Thread (12 messages) 12 messages, 6 authors, 2016-02-06

Re: [PATCH] brcmfmac: sdio: Increase the default timeouts a bit

From: Sjoerd Simons <hidden>
Date: 2016-01-25 15:55:31
Also in: linux-mmc, linux-rockchip, lkml, netdev

On Mon, 2016-01-25 at 16:36 +0100, Arend van Spriel wrote:
On 25-01-16 11:47, Sjoerd Simons wrote:
quoted
On a Radxa Rock2 board with a Ampak AP6335 (Broadcom 4339 core) it
seems
the card responds very quickly most of the time, unfortunately
during
initialisation it sometimes seems to take just a bit over 2 seconds
to
respond.

This results intialization failing with message like:
  brcmf_c_preinit_dcmds: Retreiving cur_etheraddr failed, -52
  brcmf_bus_start: failed: -52
  brcmf_sdio_firmware_callback: dongle is not responding

Increasing the timeout to allow for a bit more headroom allows the
card to initialize reliably.
I would prefer to know where the 2 second response time comes from.
Could be sdio retuning. Maybe the chromeos people can comment whether
this has been root caused.
The only reference i could find for where the timeout came from was in
the bcmdhd which has:
  #define IOCTL_RESP_TIMEOUT  2000  /* In milli second default value
for Production FW */

But not sure if that's helpful :). 

There is a mmc patch pending in which retuning procedure can be
deferred
by the driver. Using that API may resolve the issue as well and I
would
prefer that solution.
quoted
A quick search online after diagnosing/fixing this showed that
Google
has a similar patch in their ChromeOS tree, so this doesn't seem
specific to the board I'm using.
As the retuning stuff is not in main line I guess we need this fix
for
now so...

Acked-by: Arend van Spriel <redacted>
quoted
Signed-off-by: Sjoerd Simons <redacted>

---
Still would like to know whether it is firmware initialization or
some
mmc stack procedure. Any suggestions to debug this are welcome.

Regards,
Arend
---
quoted
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git
a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index dd66143..75ac4bd 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -45,8 +45,8 @@
 #include "chip.h"
 #include "firmware.h"
 
-#define DCMD_RESP_TIMEOUT	msecs_to_jiffies(2000)
-#define CTL_DONE_TIMEOUT	msecs_to_jiffies(2000)
+#define DCMD_RESP_TIMEOUT	msecs_to_jiffies(2500)
+#define CTL_DONE_TIMEOUT	msecs_to_jiffies(2500)
 
 #ifdef DEBUG
 
-- 
Sjoerd Simons
Collabora Ltd.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help