On 10/8/2018 10:16 PM, Ed Czeck wrote: > Fail with rte_exit() when the lack of mbufs is not recoverable. > > Signed-off-by: Ed Czeck <ed.cz...@atomicrules.com>
<...> > @@ -495,6 +508,33 @@ eth_ark_rx_seed_mbufs(struct ark_rx_queue *queue) > return 0; > } > > +int > +eth_ark_rx_seed_recovery(struct ark_rx_queue *queue, > + uint32_t *pnb, > + struct rte_mbuf **mbufs) > +{ > + int status = -1; > + > + /* Ignore small allocation failures */ > + if (*pnb <= 64) > + return -1; > + > + *pnb = 64U; > + status = rte_pktmbuf_alloc_bulk(queue->mb_pool, mbufs, *pnb); > + if (status != 0) { > + PMD_DRV_LOG(ERR, > + "ARK: Could not allocate %u mbufs from pool for RX > queue %u;" > + " %u free buffers remaining in queue\n", > + *pnb, queue->queue_index, > + queue->seed_index - queue->cons_index); > + if (queue->seed_index - queue->cons_index < 64) { > + rte_exit(EXIT_FAILURE, > + "ARK: No mbufs in pool; do you have a > leak?\n"); Hi Ed, We are trying to get rid of rte_exit() calls, reasoning is DPDK is a library and application should decide to exit or not, and a DPDK application may be using multiple NICs/libraries/functionalities, failure in one of them should not cause all application to exit. Can you please replace rte_exit() usage?