I use "rx_iface","tx_iface" (and not just "iface") in order to have multiple TX queues I just gave a simplified setting with 1 queue My app does a full mesh between the ports (not fixed pairs like l2fwd) so all the forwarding lcores can tx to the same port simultaneously and as DPDK docs say: "Multiple logical cores should never share receive or transmit queues for interfaces since this would require global locks and hinder performance." For example if I have 3 ports handled by 3 cores it'll be myapp -c 7 -n1 --no-huge \ --vdev=eth_pcap0,rx_iface=eth0,tx_iface=eth0,tx_iface=eth0,tx_iface=eth0 \ --vdev=eth_pcap0,rx_iface=eth1,tx_iface=eth1,tx_iface=eth1,tx_iface=eth1 \ --vdev=eth_pcap0,rx_iface=eth2,tx_iface=eth2,tx_iface=eth2,tx_iface=eth2 \ -- -p 7 Is there another way to achieve multiple queues in pcap vdev?
I do see that using "iface" behaves differently - I'll try to investigate why And still even when using "iface" I also see packets that are transmitted out of eth1 (e.g. tcpreplay -i eth1 packets.pcap) and not only packets that are received (e.g. ping from far end to eth0 ip) -----Original Message----- From: Ferruh Yigit <ferruh.yi...@intel.com> Sent: Wednesday, June 13, 2018 1:57 PM To: Ido Goshen <i...@cgstowernetworks.com> Cc: dev@dpdk.org Subject: Re: [PATCH v2] net/pcap: rx_iface_in stream type support On 6/5/2018 6:10 PM, Ido Goshen wrote: > The problem is if a dpdk app uses the same iface(s) both as rx_iface and > tx_iface then it will receive back the packets it sends. > If my app sends a packet to portid=X with rte_eth_tx_burst() then I > wouldn't expect to receive it back by rte_eth_rx_burst() for that same > portid=X (assuming of course there's no external loopback) This is coming > from the default nature of pcap that like a sniffer captures both incoming > and outgoing direction. > The patch provides an option to limit pcap rx_iface to get only incoming > traffic which is more like a real (non-pcap) dpdk device. > > for example: > when using existing *rx_iface* > l2fwd -c 3 -n1 --no-huge --vdev=eth_pcap0,rx_iface=eth1,tx_iface=eth1 > --vdev=eth_pcap1,rx_iface=dummy0,tx_iface=dummy0 -- -p 3 -T 1 sending > only 1 single packet into eth1 will end in an infinite loop - If you are using same interface for both Rx & Tx, why not using "iface=xxx" argument, can you please test with following: l2fwd -c 3 -n1 --no-huge --vdev=eth_pcap0,iface=eth1 --vdev=eth_pcap1,iface=dummy0 -- -p 3 -T 1 I can't reproduce the issue with above command. Thanks, ferruh