One thing that might be interesting would be to dump the descriptors in the ring when you generate on of these 590 sized buffers. It would give us more data about what is actually being seen by the hardware.
Also you might want to check the "ethtool -S" output from the device and check for any input or output to management interfaces as that could possibly inject packets that you might not be expecting. Thanks, Alex On 04/15/2014 12:51 PM, Todd Naugle wrote: > Hi all, > > I have come across what appears to be an issue with the igb driver/i350 > NIC that I could use some help with. > > Linux kernel: 3.12.15-rt25 > igb driver: 5.2.5 (and 5.0.5) > > Here is the background. > We are in the process of updating computer hardware and moving to a > system that uses an i350 NIC instead of older e1000 PCI-X hardware. We > have an existing hardware product that sends out raw Ethernet frames at > 48KHz with an Ethernet frame size of 2080 bytes. This is connected to a > computer that processes the data and then sends it back at the same rate > and frame size. > > I have setup a simple loopback application that opens a raw socket and > reads 1 packet from the network and then writes it back out. > > The problem I am having is that I am not reading all the data correctly. > Every packet from the hardware is 2080 bytes, but a small percentage of > socket reads returns a buffer that is only 590 bytes. The fact that I > always get a read of 590 bytes is very odd. > > I wanted to try to verify that the problem was not in the transfer to > userland, so I put a couple of checks in igb_clean_rx_irq (after line > 8346) and kept track of the skb->len value and it is always 2080 bytes > or 590 bytes. The error rate during a recent test was 105 out of > 47,116,519 Ethernet packets. > > I started dumping first 40 bytes of the 590 byte read and that produces > some interesting results. The MAC destination appears correct > (broadcast in this case), but the MAC source is wrong and the rest of > the data that follows is incorrect. Every 590 byte read has the same > first 40 bytes of data in it. I have not compare the rest to see if the > entire 590 byte read is the same. This makes me think that I am some how > getting a stale buffer. > > When I get a good socket read of 2080 bytes, I am able to send it back > to the hardware producer and it verifies that the data is correct. > > Any thoughts on what could be the cause of this or where in the driver > would be a good place to start looking? > > > Thanks, > Todd Naugle > Engineering > Harrison Consoles > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/NeoTech > _______________________________________________ > E1000-devel mailing list > E1000-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/e1000-devel > To learn more about Intel® Ethernet, visit > http://communities.intel.com/community/wired > ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired