[dpdk-dev] Weird behavior of DPDK - ongoing problem

Meir Tseitlin mirots at gmail.com
Sun Apr 13 12:21:20 CEST 2014


Hi guys,

I am still struggling to find a solution for a problem each time I face
from different angle (already wrote few posts). Now I think it is some kind
of DMA problem.

I am modifying l2fwd example to collect packet flow from high speed
ethernet device and store it in file, this is why I use pcap driver
attached to file as a one side of l2fwd.
In addition I need to send control packets to the device and receive
answers.

Initially I implemented packet injection mechanism using rte_pktmbuf_alloc
(I tried both original mempool or additional one). I checked receive
packets for specific packet type it header, to detect if it is data packet
or an answer to control packet (answers to control packets are  not
forwarded to file).

The problem is that in 30% of the cases data packet enters the path of
control packet instead of expected answer. Which probably means that after
my packet type check, the mbuf is overwritten before handled properly.

To overcome this problem I created a TAP device for control packets
(instead of allocating them with rte_pktmbuf_alloc) and initialized it with
Pcap driver. But I am facing the same problem - on the receive side, when
control answer packet arrives is it skipped and another data packet sent to
TAP device.

It seems like mbuf containing control packet, intended to be sent to TAP
device is overwritten with data packet after the routing mechanism (maybe
with DMA?)

I also tried enabling sanity check before calling to rte_eth_tx_burst and
it fails.

Please help,
It is really frustrating

Meir


More information about the dev mailing list