DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev]  Would you check if there is deadlock in rte_distributor_process() librte_distributor?
@ 2015-10-16  6:33 최익성
  0 siblings, 0 replies; only message in thread
From: 최익성 @ 2015-10-16  6:33 UTC (permalink / raw)
  To: dev

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.
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-10-16  6:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-16  6:33 [dpdk-dev] Would you check if there is deadlock in rte_distributor_process() librte_distributor? 최익성

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).