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( \
20 dws->ws_state[!dws->vws].tag_op); \
24 ret = cn9k_sso_hws_dual_get_work( \
25 &dws->ws_state[dws->vws], &dws->ws_state[!dws->vws], \
26 ev, flags, 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->ws_state[dws->vws], \
31 &dws->ws_state[!dws->vws], ev, flags, \
32 dws->lookup_mem, dws->tstamp); \
33 dws->vws = !dws->vws; \
39 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_burst_##name( \
40 void *port, struct rte_event ev[], uint16_t nb_events, \
41 uint64_t timeout_ticks) \
43 RTE_SET_USED(nb_events); \
45 return cn9k_sso_hws_dual_deq_tmo_##name(port, ev, \
49 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_seg_##name( \
50 void *port, struct rte_event *ev, uint64_t timeout_ticks) \
52 struct cn9k_sso_hws_dual *dws = port; \
56 if (dws->swtag_req) { \
58 cnxk_sso_hws_swtag_wait( \
59 dws->ws_state[!dws->vws].tag_op); \
63 ret = cn9k_sso_hws_dual_get_work( \
64 &dws->ws_state[dws->vws], &dws->ws_state[!dws->vws], \
65 ev, flags, dws->lookup_mem, dws->tstamp); \
66 dws->vws = !dws->vws; \
67 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++) { \
68 ret = cn9k_sso_hws_dual_get_work( \
69 &dws->ws_state[dws->vws], \
70 &dws->ws_state[!dws->vws], ev, flags, \
71 dws->lookup_mem, dws->tstamp); \
72 dws->vws = !dws->vws; \
78 uint16_t __rte_hot cn9k_sso_hws_dual_deq_tmo_seg_burst_##name( \
79 void *port, struct rte_event ev[], uint16_t nb_events, \
80 uint64_t timeout_ticks) \
82 RTE_SET_USED(nb_events); \
84 return cn9k_sso_hws_dual_deq_tmo_seg_##name(port, ev, \