Hi,
I'm experimenting with the one_gbe block on ROACH2. So far data
transmission looks flawless, I can capture all the bytes I send. However,
receiving data from a computer seems to result in missing data.
My design is very simple, I have rx_ack tied high, and then counters on
rx_val and the rising edge of rx_eof and also on rx_overrun and rx_badframe.

If I just send a single packet, all looks good, the rx_val counter shows
the number of bytes I sent, and rx_eof shows one packet received. But when
I try to send a sequence of packets, I end up with the rx_val counter
showing fewer bytes than I sent, by about ~ 0.5-5% depending on the exact
combination of parameters I use in sending packets. Sometimes all the ~1024
packets arrive, as indicated by the rx_eof counter, but other times it
seems 1-3 are missing.

 I see consistent results whether the packet payload is 1024 bytes, 4096
bytes, or 8192 bytes.

I never see any counts on the rx_overrun or rx_badframe line.

I am using sendall to send the packets from the host computer, and it
reports that all bytes are being sent, so I assume it's not dropping them
on the way outbound (plus it seems like it would be weird for the host
computer to send partial packets).

I've tried this test with two different network adapters (both directly
connected to the ROACH2 fabric ethernet port, and with various lengths of
CAT 6 ethernet cables.

Has anyone used the one_gbe block in this way? Am I missing something?

Thanks,
Glenn

Reply via email to