Unexpected behavior when using mbuf pool with external buffers
Gábor LENCSE
lencse at hit.bme.hu
Wed Dec 22 13:28:31 CET 2021
Dear Michal,
12/22/2021 10:56 AM keltezéssel, Michał Niciejewski írta:
> auto tx_num = rte_eth_tx_burst(1, queue, mbufs.data(), rx_num);
I suspect that the frame is sometimes simply not transmitted at high rates.
The rte_eth_tx_burst() function reports the number of actually
transmitted frames. I usually send a frame using the following loop:
while ( !rte_eth_tx_burst(eth_id, 0, &pkt_mbuf, 1) )
;
> Did anyone have similar issues or know what could cause such behavior?
I met a somewhat similar issue, when I implemented the first version of
siitperf: https://github.com/lencsegabor/siitperf
Then I was not aware of RFC 4814 yet, so I always transmitted the very
same frame for throughput measurements, but I used a counter to be able
to uniquely identify the test frames for packet delay variation
measurement. I wanted to use the frame as a template and I modified its
counter (and checksum) field after sending. I have found that even if
the rte_eth_tx_burst() function reported that the frame was sent, it was
still in the buffer and I have rewritten its counter. (The receiver
reported no frame with counter value 0, and 2 frames with the highest
value of the counter.)
To circumvent the problem, I used an array of frames and I modified
always the next element (modulo array size).
Best regards,
Gábor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20211222/a95f7d57/attachment.htm>
More information about the users
mailing list