RE: Memory allocation modifications in ibm_newemac driver

From: Jonathan Haws
Date: Wed Sep 01 2010 - 17:18:43 EST


I found out what was causing the crash, but still am not there and could use some direction:

What was happening was that I was not allocating a new SKB to replace the one in the ring that was being passed up the stack. I have remedied that and am now having another issue:

Once the ring index rolls over (it does so at 64) I start to lose packets because they are not being handled correctly (or do not contain the correct headers or something of that sort). Here is a simple ping test showing what is happening:

64 bytes from 172.31.22.21: seq=29 ttl=128 time=10.826 ms
emac/plb/opb/ethernet@ef600900: PACKET: 54 0X1800 110 0XC04E6B80
emac/plb/opb/ethernet@ef600900: PACKET: 55 0X1800 110 0XC04E6EC0
emac/plb/opb/ethernet@ef600900: PACKET: 56 0X1800 98 0XC04E70C0
64 bytes from 172.31.22.21: seq=30 ttl=128 time=10.839 ms
emac/plb/opb/ethernet@ef600900: PACKET: 57 0X1800 110 0XC04E6580
emac/plb/opb/ethernet@ef600900: PACKET: 58 0X1800 98 0XC04E5B80
64 bytes from 172.31.22.21: seq=31 ttl=128 time=10.832 ms
emac/plb/opb/ethernet@ef600900: PACKET: 59 0X1800 219 0XC04E5740
emac/plb/opb/ethernet@ef600900: PACKET: 60 0X1800 249 0XC04E5000
emac/plb/opb/ethernet@ef600900: PACKET: 61 0X1800 92 0XC04E5340
emac/plb/opb/ethernet@ef600900: PACKET: 62 0X1800 98 0XC04E4A00
64 bytes from 172.31.22.21: seq=32 ttl=128 time=10.825 ms
emac/plb/opb/ethernet@ef600900: PACKET: 63 0X5800 92 0XC04E4E00
emac/plb/opb/ethernet@ef600900: PACKET: 0 0X1800 98 0XC04EF520
emac/plb/opb/ethernet@ef600900: PACKET: 1 0X1800 92 0XC04D8340
emac/plb/opb/ethernet@ef600900: PACKET: 2 0X1800 98 0XC04D8260
emac/plb/opb/ethernet@ef600900: PACKET: 3 0X1800 60 0XC04E7AA0
emac/plb/opb/ethernet@ef600900: PACKET: 4 0X1800 92 0XC04E74A0
emac/plb/opb/ethernet@ef600900: PACKET: 5 0X1800 92 0XC04E6BC0
emac/plb/opb/ethernet@ef600900: PACKET: 6 0X1800 98 0XC04E6F80
emac/plb/opb/ethernet@ef600900: PACKET: 7 0X1800 92 0XC04E64E0
emac/plb/opb/ethernet@ef600900: PACKET: 8 0X1800 98 0XC04E5BC0

The first number in my debug print statement is what the driver calls the slot number (the ring index). When it rolls over I start losing the ping replies. What have I done wrong to cause that? The data is coming in and is there. Have any other network device developers seen similar behavior?

Thanks,

Jonathan

--
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/