Dear DPDK experts. Thank you very much for your excellent work and great contributions.
I have a question about distributor library source code. /dpdk/lib/librte_distributor/rte_distributor.c In rte_distributor_process(), rte_distributor_process() { mbufs[] -> d->backlog -> d->bufs } => lcore_worker() reads d->bufs (with 0x0 empty flag packet) and sets response bit(RTE_DISTRIB_GET_BUF) of a received packet (d->bufs). When the first packet arrives at rte_distributor_process(), the match value is 0. And it is not enqueued in d->backlog nor in d->bufs because the match value equals 0 . The received first packet is never enqueued to d->bufs until the lcore_worker() returns the packet bufs (with the response bit(RTE_DISTRIB_GET_BUF) of bufs packet is set). Since the lcore_worker cannot return packet if it cannot receive packet (Since the lcore_worker only reads the received packet with 0x0 flag). It seems to be a deadlock. Thus. first packet is never processed, I think. Would you check this? Am I wrong? Does the lcore_worker() return packet even though it does not have received packet? Thank you very much. Sincerely Yours, Ick-Sung Choi.