[dpdk-dev] RX descriptors exhausted?

Anuj Kalia anujkaliaiitd at gmail.com
Fri Apr 18 09:24:03 CEST 2014


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


More information about the dev mailing list