Hi. I'm facing a problem where I stop receiving packets after I have received as many packets as the number of RX descriptors. More details follow:
I have a small program where a server machine and a client machine execute the following loop: int nb_rx_new = rte_eth_rx_burst(0, 0, rx_pkts_burst, MAX_PKT_BURST); int nb_tx_new = rte_eth_tx_burst(0, 0, tx_pkts_burst, MAX_PKT_BURST); for(i = 0; i < nb_rx_new; i++) { rte_pktmbuf_free(rx_pkts_burst[i]); } printf("%d %d\n", nb_rx_new, nb_tx_new); usleep(200000); Both machines use 1 port (port 0) with a single RX and TX queue (RX queue id = 0, TX queue id = 0). The RX queues were created with NUM_RX_DESC descriptors. I observe that after receiving about NUM_RX_DESC packets, either the client or the server stops receiving any more packets (nb_rx_new becomes 0 at either the client or the server). Some more observations: first, RX stops at only one of the machines (as this machine still keeps TX-ing, the other machine keeps getting RX packets). Second, this problem does not occur if I remove the TX code from either the client or the server. My rx_conf is: pthresh = 8, hthresh = 8, wthresh = 4, rx_free_thresh = 64. NUM_RX_DESC is 128 (I've tried with larger values). The NIC is an Intel 82599 10GbE, DPDK version is 1.5. --Anuj Kalia