From 520a12b58dc82555c29ed4ce6ebf05e0369d8b4d Mon Sep 17 00:00:00 2001 From: Jerin Jacob Date: Fri, 9 Jun 2017 17:36:50 +0530 Subject: [PATCH] event/octeontx: improve dequeue performance switch tag wait is a costly operation as it may translate to IOB read if core swtag cache is not updated. Do tag switch wait only when there is a tag request on the same hardware work slot. Signed-off-by: Jerin Jacob Acked-by: Gage Eads --- drivers/event/octeontx/ssovf_worker.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/event/octeontx/ssovf_worker.c b/drivers/event/octeontx/ssovf_worker.c index fcb5f316cc..4839f06314 100644 --- a/drivers/event/octeontx/ssovf_worker.c +++ b/drivers/event/octeontx/ssovf_worker.c @@ -126,9 +126,9 @@ ssows_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks) RTE_SET_USED(timeout_ticks); - ssows_swtag_wait(ws); if (ws->swtag_req) { ws->swtag_req = 0; + ssows_swtag_wait(ws); return 1; } else { return ssows_get_work(ws, ev); @@ -142,9 +142,9 @@ ssows_deq_timeout(void *port, struct rte_event *ev, uint64_t timeout_ticks) uint64_t iter; uint16_t ret = 1; - ssows_swtag_wait(ws); if (ws->swtag_req) { ws->swtag_req = 0; + ssows_swtag_wait(ws); } else { ret = ssows_get_work(ws, ev); for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)