EAL did not stop processing further asynchronous requests on encountering a request that should trigger the callback. This resulted in erasing valid requests but not triggering them.
Fix this by stopping the loop once we have a request that we can trigger. Also, remove unnecessary check for trigger request being NULL. Fixes: f05e26051c15 ("eal: add IPC asynchronous request") Cc: anatoly.bura...@intel.com Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> --- lib/librte_eal/common/eal_common_proc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c index f98622f..1ea3b58 100644 --- a/lib/librte_eal/common/eal_common_proc.c +++ b/lib/librte_eal/common/eal_common_proc.c @@ -510,11 +510,11 @@ async_reply_handle(void *arg __rte_unused) TAILQ_REMOVE(&pending_requests.requests, sr, next); free(sr); - } else if (action == ACTION_TRIGGER && - trigger == NULL) { + } else if (action == ACTION_TRIGGER) { TAILQ_REMOVE(&pending_requests.requests, sr, next); trigger = sr; + break; } } } -- 2.7.4