[dpdk-dev] rx_eth_tx_burst not work in slave app.

zengxg14 zengxg14 at gmail.com
Fri Sep 19 11:12:32 CEST 2014


Hi all.

I wrote a program to recv and send pkt at the same port.
First  init the port then use below code to receive pkts and send pkts. It works OK.

Then I try the multi-process. I init the port in master app,  and run the recv and send in slave spp.
In this mode rx_eth_tx_burst() always return 0.

while ( 1 ) {
            int nb_rx, t;
            int tmp;
            nb_rx = rte_eth_rx_burst(1, 0, pkt_mbuf, BURST_COUNT);
            if (nb_rx == 0) {
                    rte_delay_us(20);
                    continue;
            }
            t = 0;
            while (t < nb_rx) {
                    tmp = rte_eth_tx_burst(1, 0, &pkt_mbuf[t], nb_rx - t);  
                    t += tmp;
            }
    }

What I found is: 
In single-process mode, the tx_pkt_burst is set to ixgbe_xmit_pkts_vec.
In multi-process mode, after the master app is up, it shows tx_pkt_burst is  ixgbe_xmit_pkts_vec.
But when the slave app is runing,   "perf top" shows ixgbe_xmit_pkts is runing,   not the ixgbe_xmit_pkts_vec.

How can I make the slave app still call the ixgbe_xmit_pkts_vec?
 
zengxg


More information about the dev mailing list