1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include "cn9k_worker.h"
6 #include "cnxk_eventdev.h"
7 #include "cnxk_worker.h"
9 #define R(name, f6, f5, f4, f3, f2, f1, f0, flags) \
10 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_##name( \
11 void *port, struct rte_event *ev, uint64_t timeout_ticks) \
13 struct cn9k_sso_hws_dual *dws = port; \
17 if (dws->swtag_req) { \
19 cnxk_sso_hws_swtag_wait(dws->base[!dws->vws] + \
24 ret = cn9k_sso_hws_dual_get_work( \
25 dws->base[dws->vws], dws->base[!dws->vws], ev, flags, \
26 dws->lookup_mem, dws->tstamp); \
27 dws->vws = !dws->vws; \
28 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++) { \
29 ret = cn9k_sso_hws_dual_get_work( \
30 dws->base[dws->vws], dws->base[!dws->vws], ev, \
31 flags, dws->lookup_mem, dws->tstamp); \
32 dws->vws = !dws->vws; \
38 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_burst_##name( \
39 void *port, struct rte_event ev[], uint16_t nb_events, \
40 uint64_t timeout_ticks) \
42 RTE_SET_USED(nb_events); \
44 return cn9k_sso_hws_dual_deq_tmo_##name(port, ev, \
48 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_seg_##name( \
49 void *port, struct rte_event *ev, uint64_t timeout_ticks) \
51 struct cn9k_sso_hws_dual *dws = port; \
55 if (dws->swtag_req) { \
57 cnxk_sso_hws_swtag_wait(dws->base[!dws->vws] + \
62 ret = cn9k_sso_hws_dual_get_work( \
63 dws->base[dws->vws], dws->base[!dws->vws], ev, flags, \
64 dws->lookup_mem, dws->tstamp); \
65 dws->vws = !dws->vws; \
66 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++) { \
67 ret = cn9k_sso_hws_dual_get_work( \
68 dws->base[dws->vws], dws->base[!dws->vws], ev, \
69 flags, dws->lookup_mem, dws->tstamp); \
70 dws->vws = !dws->vws; \
76 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_seg_burst_##name( \
77 void *port, struct rte_event ev[], uint16_t nb_events, \
78 uint64_t timeout_ticks) \
80 RTE_SET_USED(nb_events); \
82 return cn9k_sso_hws_dual_deq_tmo_seg_##name(port, ev, \