SDIO and DHCP

Dan Williams dcbw at redhat.com
Tue Dec 16 14:02:44 EST 2008


On Tue, 2008-12-16 at 13:27 -0500, Jeff Sutherland wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On Tuesday 16 December 2008, Simon Twogood wrote:
> > Hell everyone,
> >
> > I've been having success using the a Libertas SDIO module with Linux
> > 2.6.27, but only with static IP addresses. My board is an Atmel
> > AT91SAM9263. Has anyone had success obtaining an IP address through
> > DHCP on a similar board, or any other board for that matter?
> >
> > I found a old thread that mentions a similar problem here
> > http://lists.infradead.org/pipermail/libertas-dev/2008-May/001526.html ,
> > but it seems it was unresolved.
> >
> > My firmware version is 9.70.3p24. Here's a sample of the the procedure
> > I use to reproduce my error:
> >
> >
> > root at mydevice:~$ modprobe libertas_sdio
> > libertas_sdio: Libertas SDIO driver
> > libertas_sdio: Copyright Pierre Ossman
> > firmware: requesting sd8686_helper.bin
> > firmware: requesting sd8686.bin
> > libertas: 00:19:88:05:11:56, fw 9.70.3p24, cap 0x00000303
> > libertas: PREP_CMD: command 0x00a3 failed: 2
> > libertas: PREP_CMD: command 0x00a3 failed: 2
> > libertas: eth1: Marvell WLAN 802.11 adapter
> >
> > root at mydevice:~$ ifconfig eth1 up
> >
> > root at mydevice:~$ iwlist eth1 scan
> > eth1      Scan completed :
> >            Cell 01 - Address: 00:21:29:71:19:E8
> >                      ESSID:"emptynetwork"
> >                      Mode:Managed
> >                      Frequency:2.437 GHz (Channel 6)
> >                      Quality=92/100  Signal level=-58 dBm  Noise
> > level=-96 dBm
> >                      Encryption key:off
> >                      Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18
> > Mb/s
> >                                24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
> >                                12 Mb/s; 48 Mb/s
> >
> > root at mydevice:~$ iwconfig eth1 essid emptynetwork
> >
> > root at mydevice:~$ udhcpc -H mydevice -i eth1
> > udhcpc (v1.2.1) started
> > Sending discover...
> > Sending discover...
> > Sending discover...
> > ------------[ cut here ]------------
> > WARNING: at net/sched/sch_generic.c:219 dev_watchdog+0x154/0x240()
> > NETDEV WATCHDOG: eth1 (libertas_sdio): transmit timed out
> > Modules linked in: libertas_sdio libertas at91_mci
> > [<c0025fa0>] (dump_stack+0x0/0x14) from [<c003822c>] (warn_slowpath
> > +0x64/0x80)
> > [<c00381c8>] (warn_slowpath+0x0/0x80) from [<c0180b0c>] (dev_watchdog
> > +0x154/0x240)
> >   r3:c394c000 r2:c0238d80
> >   r6:c01809b8 r5:c394c000 r4:c027ef34
> > [<c01809b8>] (dev_watchdog+0x0/0x240) from [<c0041440>]
> > (run_timer_softirq+0x150/0x1e8)
> >   r6:c01809b8 r5:00000100 r4:c026f740
> > [<c00412f0>] (run_timer_softirq+0x0/0x1e8) from [<c003cf08>]
> > (__do_softirq+0x60/0xc8)
> >   r7:c0255c80 r6:0000000a r5:c026f544 r4:00000001
> > [<c003cea8>] (__do_softirq+0x0/0xc8) from [<c003d258>] (irq_exit
> > +0x48/0x50)
> >   r7:c0255c80 r6:00000000 r5:c0259ea4 r4:00000001
> > [<c003d210>] (irq_exit+0x0/0x50) from [<c0021054>]
> > (__exception_text_start+0x54/0x6c)
> > [<c0021000>] (__exception_text_start+0x0/0x6c) from [<c0021834>]
> > (__irq_svc+0x34/0x60)
> > Exception stack(0xc0253f50 to 0xc0253f98)
> > 3f40:                                     00000000 0005317f 0005217f
> > 60000013
> > 3f60: c0023270 c0252000 c001eee8 c0255c80 2001d32c 41069265 2001d2f8
> > c0253fa4
> > 3f80: 600000d3 c0253f98 c00232b8 c00232c4 60000013 ffffffff
> >   r7:c0255c80 r6:00000001 r5:fefff000 r4:ffffffff
> > [<c0023270>] (default_idle+0x0/0x5c) from [<c002314c>] (cpu_idle+0x3c/
> > 0x58)
> > [<c0023110>] (cpu_idle+0x0/0x58) from [<c01d6610>] (rest_init+0x58/0x6c)
> >   r5:c0269e10 r4:c0271f88
> > [<c01d65b8>] (rest_init+0x0/0x6c) from [<c0008bc8>] (start_kernel
> > +0x284/0x2dc)
> > [<c0008944>] (start_kernel+0x0/0x2dc) from [<20008034>] (0x20008034)
> >   r5:c026a320 r4:00053175
> > ---[ end trace 4093a6ca7302871d ]---
> > libertas: tx watch dog timeout
> > Sending select for 192.168.5.128...
> > Sending select for 192.168.5.128...
> > Sending select for 192.168.5.128...
> > libertas: tx watch dog timeout
> > Sending discover...
> > Sending discover...
> > libertas: tx watch dog timeout
> > Sending discover...
> > libertas: tx watch dog timeout
> > libertas: tx watch dog timeout
> > libertas: tx watch dog timeout
> > libertas: tx watch dog timeout
> > Sending select for 192.168.5.128...
> > Sending select for 192.168.5.128...
> > Sending select for 192.168.5.128...
> > libertas: tx watch dog timeout
> > Sending discover...
> > Sending discover...
> 
> Please try one thing and let us know how you get on: turn on all the debugging 
> for the wifi subsystem and libertas module and try again.  This looks 
> suspiciously like a problem I encountered with this chipset on another 
> platform.

Yeah, in general this stuff is highly controller-dependent; there are
some comments in if_sdio about that sort of thing.  Some controllers
don't really support reads of certain byte widths, others require random
alignments, etc.  I've usually tested libertas_sdio on an generic laptop
Ricoh SD/MMC controller and that normally works well, but we certainly
had to quirk a few things for the OLPC "Cafe" SD controller.  Also make
sure you're using a fairly recent kernel (2.6.26 if possible) since
there have been fixes to the SDIO stack itself in the kernel since it
got merged in 2.6.24.

Dan





More information about the libertas-dev mailing list