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