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 <jerin.ja...@caviumnetworks.com> --- 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 ad3fe684d..1b372148f 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++) -- 2.13.1