Re: [PATCH] sky2: receive dma mapping error handling

From: Michael Breuer
Date: Sun Jan 31 2010 - 23:26:15 EST


On 1/31/2010 7:19 PM, Michael Breuer wrote:
On 1/31/2010 5:18 PM, Jarek Poplawski wrote:
solves the dma-debug issue - i.e., elements are now being unmapped.

Will leave up and hit with traffic unless a crash occurs. If I hit something unrelated I'll backport to 2.6.32.7 and try that for a while. I do think it's plausible that the dma errors after (during) load were due to hardware limitations on the number of mapped entries (haven't researched what that limit was). I would also assume that the sw map would also have failed eventually.

I'd suggest that regardless of whether this patch solves my crash that it ought to be backported as it seems unlikely that any machine would be able to survive for long without the tx entries being unmapped.

FYI - tried generating lots of extra tx traffic... found a way to generate the rx status messages on demand:
ping -i .0000001 -s 8000 -t 2 <host> >/dev/null

Yields:
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:07 mail kernel: sky2 eth0: rx error, status 0x1f6a0010 length 1518
Jan 31 23:08:12 mail kernel: net_ratelimit: 316 callbacks suppressed
etc.
Looking at the packet trace, it seems that my Windows7 box is under *some* circumstances not observing the MTU. In this case, the ICMP reply is going back with the 8000 byte jumbo frame unfragmented. It seems that the reverse is also true. I don't know why sometimes win7 does this, and at other times properly fragments.

Oddly, prior to this attempt if I set no fragment on a ping from the windows box back to the linux box and a size of > mtu (like 8000), the ping failed. Absent the no-fragment flag, the ping properly fragmented. I am not sure why Windows now thinks the MTU is > 1500. I'll look into that when I have some time. It's possible that with 2.6.33-rc5 & the patches I've got that somehow path mtu discovery is broken as nothing changed on the windows side.

Understanding that the other side is out of spec, I'd still wonder why the sky2 driver generates rx errors. Perhaps overruns should be tossed silently... by the hardware if possible.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/