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