Hi David,
Thanks, that was exactly right- I added 8 bytes and the packet came through.
Rick

On 1/28/2012 12:19 AM, David George wrote:
Hi Rick

I have a design which uses the TenGbE core (version 1) and sends out 8kB
packets.  It works fine and we achieve 6Gb/s throughput which is
plenty.  Recently i made a change to send a short packet with some timer
data following all of the big packets.  This short packet contains just
16 bytes.  For some reason, it doesn't show up at the host.  I have test
points on the tx_valid and tx_eof control lines, and I can see that they
are being asserted properly.  But the packet just doesn't show up.  I
don't believe there is any minimum data size for a UDP packet, but I
wonder if anybody has any ideas about this.  Could it be getting
swallowed up by the NIC in the (windows) host?
The Ethernet payload minimum is 46 bytes - so if you add IPv4+UDP+16B
payload you get 20 + 8 + 16 = 44B, with a frame this size you are
likely to see network hardware classify it as a runt frame and it will
get discarded. I wouldn't be surprised if that is happening. In an
ideal world the FPGA would have the nous to insert an extra 2B in the
payload to make ethernet happy, but FPGAs are better off dumb. (It
takes up less logic that way)

It could also be an issue in the 10Ge controller that it rejects small
frame intelligently or by accident. I cant quite remember.

I would suggest adding an extra 8B to the payload. If that doesn't
work it would disproves my first theory. Whatever you find the minimum
to be, it might be a nice idea to tweak the wiki doc accordingly. (I
would bet the same applies to the 10Gev2 core)

Cheers,
David


Reply via email to