1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include "cn10k_worker.h"
6 #include "cnxk_eventdev.h"
7 #include "cnxk_worker.h"
10 cn10k_sso_hws_enq(void *port, const struct rte_event *ev)
12 struct cn10k_sso_hws *ws = port;
15 case RTE_EVENT_OP_NEW:
16 return cn10k_sso_hws_new_event(ws, ev);
17 case RTE_EVENT_OP_FORWARD:
18 cn10k_sso_hws_forward_event(ws, ev);
20 case RTE_EVENT_OP_RELEASE:
21 cnxk_sso_hws_swtag_flush(ws->base + SSOW_LF_GWS_WQE0,
22 ws->base + SSOW_LF_GWS_OP_SWTAG_FLUSH);
32 cn10k_sso_hws_enq_burst(void *port, const struct rte_event ev[],
35 RTE_SET_USED(nb_events);
36 return cn10k_sso_hws_enq(port, ev);
40 cn10k_sso_hws_enq_new_burst(void *port, const struct rte_event ev[],
43 struct cn10k_sso_hws *ws = port;
46 for (i = 0; i < nb_events && rc; i++)
47 rc = cn10k_sso_hws_new_event(ws, &ev[i]);
53 cn10k_sso_hws_enq_fwd_burst(void *port, const struct rte_event ev[],
56 struct cn10k_sso_hws *ws = port;
58 RTE_SET_USED(nb_events);
59 cn10k_sso_hws_forward_event(ws, ev);
65 cn10k_sso_hws_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks)
67 struct cn10k_sso_hws *ws = port;
69 RTE_SET_USED(timeout_ticks);
73 cnxk_sso_hws_swtag_wait(ws->base + SSOW_LF_GWS_WQE0);
77 return cn10k_sso_hws_get_work(ws, ev);
81 cn10k_sso_hws_deq_burst(void *port, struct rte_event ev[], uint16_t nb_events,
82 uint64_t timeout_ticks)
84 RTE_SET_USED(nb_events);
86 return cn10k_sso_hws_deq(port, ev, timeout_ticks);
90 cn10k_sso_hws_tmo_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks)
92 struct cn10k_sso_hws *ws = port;
98 cnxk_sso_hws_swtag_wait(ws->base + SSOW_LF_GWS_WQE0);
102 ret = cn10k_sso_hws_get_work(ws, ev);
103 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)
104 ret = cn10k_sso_hws_get_work(ws, ev);
110 cn10k_sso_hws_tmo_deq_burst(void *port, struct rte_event ev[],
111 uint16_t nb_events, uint64_t timeout_ticks)
113 RTE_SET_USED(nb_events);
115 return cn10k_sso_hws_tmo_deq(port, ev, timeout_ticks);