Strange problems with Marvell 8686 sdio on AT91SAM9263

Dan Williams dcbw at redhat.com
Mon Jun 2 16:26:47 EDT 2008


On Fri, 2008-05-30 at 20:13 +0200, Hans J. Koch wrote:
> Hi,
> I got a strange error report from a customer using libertas-sdio with a
> 8686 on an AT91SAM9263 platform. He tests with pings with different
> blocksizes. It works fine, but only up to a certain blocksize. With
> larger sizes, there's a TX timeout. After that timeout, it works again
> for smaller sizes.

FWIW, pings up to 5000 bytes (ping -s 5000 x.x.x.x) work for me from the
sd8686 reference board using 8.73.7p3 firmware and the libertas bits
from 2.6.25 in both the following configurations:

1) sd8686 -> MacBook Air (bcm4324 I think) with WEP-encrypted
infrastructure connection
2) sd8686 -> Dell Latitude C610 (Cisco Airo 350) with unencrypted Ad-Hoc
connection

I guess the first thing I'd suspect is the SDIO controller on the
embedded board?  That's usually the ultimate source of problems with the
SDIO 8686 stuff, that the SDIO controller acts in ways the SDIO stack
does not necessarily expect.

ef367e08dddf0fd35f825ea68f1ee104971938f0  sd8686_helper.bin
190a58ad1577658944784c024af60fa41e3acbec  sd8686.bin

Dan

> Below is the report I got from him (he cannot post it himself as they've
> to use Lotus Notes in his company...)
> 
> Any ideas?
> 
> Thanks,
> Hans
> 
> >>>>SNIP<<<<<
> 
> Pierre Ossman <drzeus at drzeus.cx>
> 
> 
> Dear Mr. Koch,
> 
> here the informations, you wanted to get.
> 
> My problem: When I send larger pings (greater than 186 byte) to a host, I 
> get no answer. In my kernel logs  is written "NETDEV WATCHDOG TIMEOUT"
> 
> The WLan Network is a Ad-Hoc Network between 2 Hosts, one is a Laptop with 
> Intel Chipset, works fine. The embedded Device is a ATMEL AT91SAM9263.
> The Wireless Lan chip is a Wi2Wi Chip with a Marvel 8686 Chip connected 
> via SDIO.
> 
> I did some checks and  could see that a packet is immediately transmitted, 
> but it looks like, that the netdev watchdog is not refreshed. The next 
> packet is then blocked for about 10s.
> If I do the opposide test and I send a ping from my Host to the Device, 
> the first ping is answerd correct and all the following pings are lost.
> 
> Here some Outputs for you. Please don't hesitate to contact me.
> 
> DMESG Output:
> 
> ~ # dmesg
> [    0.000000] Linux version 2.6.25-rc7 (hans at blackbox) (gcc version 4.1.0 
> 20060304 (TimeSys 4.1.0-3)) #28 Fri Apr 4 17:48:51 CEST 2008
> [    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), 
> cr=00053177
> [    0.000000] Machine: Atmel AT91SAM9263-EK
> [    0.000000] Ignoring unrecognised tag 0x54410008
> [    0.000000] Memory policy: ECC disabled, Data cache writeback
> [    0.000000] On node 0 totalpages: 16384
> [    0.000000]   DMA zone: 128 pages used for memmap
> [    0.000000]   DMA zone: 0 pages reserved
> [    0.000000]   DMA zone: 16256 pages, LIFO batch:3
> [    0.000000]   Normal zone: 0 pages used for memmap
> [    0.000000]   Movable zone: 0 pages used for memmap
> [    0.000000] Clocks: CPU 199 MHz, master 99 MHz, main 16.367 MHz
> [    0.000000] CPU0: D VIVT write-back cache
> [    0.000000] CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 
> 128 sets
> [    0.000000] CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 
> 128 sets
> [    0.010000] Built 1 zonelists in Zone order, mobility grouping on. 
> Total pages: 16256
> [    0.010000] Kernel command line: root=/dev/mtdblock1 rootfstype=jffs2 
> console=ttyS0,115200n8 debug
> [    0.010000] AT91: 160 gpio irqs in 5 banks
> [    0.010000] PID hash table entries: 256 (order: 8, 1024 bytes)
> [    0.010000] Console: colour dummy device 80x30
> [    0.010000] console [ttyS0] enabled
> [    0.110000] Dentry cache hash table entries: 8192 (order: 3, 32768 
> bytes)
> [    0.120000] Inode-cache hash table entries: 4096 (order: 2, 16384 
> bytes)
> [    0.140000] Memory: 64MB = 64MB total
> [    0.140000] Memory: 59544KB available (2976K code, 2241K data, 100K 
> init)
> [    0.150000] Calibrating delay loop... 99.73 BogoMIPS (lpj=498688)
> [    0.340000] Security Framework initialized
> [    0.340000] Capability LSM initialized
> [    0.350000] Mount-cache hash table entries: 512
> [    0.350000] CPU: Testing write buffer coherency: ok
> [    0.370000] net_namespace: 152 bytes
> [    0.370000] NET: Registered protocol family 16
> [    0.410000] SCSI subsystem initialized
> [    0.450000] NET: Registered protocol family 2
> [    0.560000] IP route cache hash table entries: 1024 (order: 0, 4096 
> bytes)
> [    0.570000] TCP established hash table entries: 2048 (order: 2, 16384 
> bytes)
> [    0.570000] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
> [    0.580000] TCP: Hash tables configured (established 2048 bind 2048)
> [    0.590000] TCP reno registered
> [    0.620000] NetWinder Floating Point Emulator V0.97 (extended 
> precision)
> [    0.630000] JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
> [    0.640000] io scheduler noop registered
> [    0.640000] io scheduler anticipatory registered
> [    0.650000] io scheduler deadline registered
> [    0.650000] io scheduler cfq registered (default)
> [    0.720000] atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a 
> ATMEL_SERIAL
> [    0.730000] atmel_usart.1: ttyS1 at MMIO 0xfff8c000 (irq = 7) is a 
> ATMEL_SERIAL
> [    0.740000] loop: module loaded
> [    0.750000] MACB_mii_bus: probed
> [    0.760000] eth0: Atmel MACB at 0xfffbc000 irq 21 (00:14:2d:00:01:43)
> [    0.760000] eth0: attached PHY driver [Generic PHY] 
> (mii_bus:phy_addr=ffffffff:00, irq=-1)
> [    0.770000] Driver 'sd' needs updating - please use bus_type methods
> [    0.800000] NAND device: Manufacturer ID: 0xec, Chip ID: 0xa1 (Samsung 
> NAND 128MiB 1,8V 8-bit)
> [    0.810000] Scanning device for bad blocks
> [    0.850000] Creating 3 MTD partitions on "at91_nand":
> [    0.860000] 0x00000000-0x00800000 : "Kernel"
> [    0.860000] 0x00800000-0x02800000 : "Root FS"
> [    0.870000] 0x02800000-0x08000000 : "Data"
> [    0.880000] mice: PS/2 mouse device common for all mice
> [    0.890000] i2c /dev entries driver
> [    0.910000] IPv4 over IPv4 tunneling driver
> [    0.920000] TCP cubic registered
> [    0.920000] NET: Registered protocol family 1
> [    0.920000] NET: Registered protocol family 17
> [    0.930000] RPC: Registered udp transport module.
> [    0.930000] RPC: Registered tcp transport module.
> [    0.940000] ieee80211: 802.11 data/management/control stack, git-1.1.13
> [    0.950000] ieee80211: Copyright (C) 2004-2005 Intel Corporation 
> <jketreno at linux.intel.com>
> [    0.950000] ieee80211_crypt: registered algorithm 'NULL'
> [    5.140000] VFS: Mounted root (jffs2 filesystem).
> [    5.140000] Freeing init memory: 100K
> [    5.510000] mmc0: new SDIO card at address 0001
> [   10.080000] can: controller area network core (rev 20071116 abi 8)
> [   10.090000] NET: Registered protocol family 29
> [   10.220000] can: raw protocol (rev 20071116)
> [   10.360000] AT91-AT91_CAN driver v0.0.1 (2007-10-26)
> [   10.360000] AT91-AT91_CAN - options [clk 100.000000 MHz] [restart_ms 
> 100ms] [debug 1]
> [   10.430000] net can0: can_open called
> [   10.440000] net can0: set_baud, baud=250000, clock=100000000
> [   10.440000] CAN: MAX3051 enabled.
> [   13.810000] eth0: link up (100/Full)
> [  206.520000] libertas_sdio: Libertas SDIO driver
> [  206.520000] libertas_sdio: Copyright Pierre Ossman
> [  207.290000] libertas: 00:19:88:05:1c:56, fw 8.73.7p3, cap 0x00000393
> [  207.310000] libertas: PREP_CMD: command 0x00a3 failed: 2
> [  207.320000] libertas: PREP_CMD: command 0x00a3 failed: 2
> [  207.320000] libertas: eth1: Marvell WLAN 802.11 adapter
> [  559.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  559.000000] libertas: tx watch dog timeout
> [  569.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  569.000000] libertas: tx watch dog timeout
> [  579.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  579.000000] libertas: tx watch dog timeout
> [  589.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  589.000000] libertas: tx watch dog timeout
> [  744.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  744.000000] libertas: tx watch dog timeout
> [  789.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [  789.000000] libertas: tx watch dog timeout
> [ 1564.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 1564.000000] libertas: tx watch dog timeout
> [ 1574.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 1574.000000] libertas: tx watch dog timeout
> [ 1584.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 1584.000000] libertas: tx watch dog timeout
> [ 1659.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 1659.000000] libertas: tx watch dog timeout
> [ 2611.240000] net can0: can_close called
> [ 2611.240000] CAN: MAX3051 disabled.
> [ 2611.300000] Trying to free already-free IRQ 12
> [ 2611.300000] CAN: MAX3051 disabled.
> [ 2788.410000] NET: Unregistered protocol family 29
> [ 2829.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 2829.000000] libertas: tx watch dog timeout
> [ 2894.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 2894.000000] libertas: tx watch dog timeout
> [ 2944.000000] NETDEV WATCHDOG: eth1: transmit timed out
> [ 2944.000000] libertas: tx watch dog timeout
> [ 3445.230000] can: controller area network core (rev 20071116 abi 8)
> [ 3445.240000] NET: Registered protocol family 29
> [ 3445.270000] can: request_module (can-proto-1) failed.
> 
> iwconfig eth1
> eth1      IEEE 802.11b/g  ESSID:"1"
>           Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 02:26:B6:FC:D7:F4
>           Bit Rate:54 Mb/s
>           Encryption key:off
>           Power Management:off
>           Link Quality=100/100  Signal level=0 dBm  Noise level=-96 dBm
>           Rx invalid nwid:0  Rx invalid crypt:26  Rx invalid frag:2534
>           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
> 
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev




More information about the libertas-dev mailing list