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