-
Notifications
You must be signed in to change notification settings - Fork 536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong data retrieved in the last slot of the rx ring when the ring is filled for the first time. #905
Comments
Are you sure the issue is not on the TX side? This would happen if you write to a buffer not in the range Also, you may try to use emulated netmap on the RX side ( |
Hello, Many thanks for the help. I do not observe the issue when using the emulated adapter ( The TX side is just a for loop that uses pcap.h to send one packet per iteration. It is not using Netmap. Also, if on the RX side I set the ring size to e.g. 1024, the problematic packet would be the 1024th and not the 512th. |
OK so that definitely points to some bug with i40e. Does the following patch make any difference?
|
Hi, Thanks for the help. Unfortunately, it doesn't seem to make any difference.
Please let me know if you need any further information. |
Is this any better?
|
By the way, I assume that, after
|
Hi, Yes, that fixes the problem. Thank you very much! Mario |
pushed to mater, thanks! |
Thanks for describing and fixing this issue. |
Hello,
I am observing the following issue with the i40e driver:
The setup:
The sending side: sends sorted packets with a tag that goes 0, 1, 2, 3, ... one after another.
The receiving side: runs pkt-gen. Some information is printed for each received packet (see below).
All the packets go to a single RX queue. Each RX ring has 512 slots, although the issue does not depend on the number of slots.
The observation:
When the RX ring gets filled for the first time (and only for the first time), the last packet of the ring (which has
head=511
andslot->buf_idx=513
) does not correspond to the packet I would expect, which would have tag = 511. See the output below:The packet with the tag
pktid
= 511 is never received. Instead, it seems that the information is being read out from the wrong memory address, and its contents seem to be whatever was left there from the previous time I ran the program. I don't know if this makes sense. As I said before, this happens only the first time the ring gets filled. The 2nd, 3rd... timehead
reaches 511, the expected packet is received. Also, this does not depend on the number of rx slots. I have observed this behaviour with i40e versions 2.22.8, 2.20.12 and 2.21.12. So far I have not tested other versions.Any help or hints on this would be very appreciated.
Thank you,
Mario
The text was updated successfully, but these errors were encountered: