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->tag_wqe_op, ws->swtag_flush_op);
31 cn10k_sso_hws_enq_burst(void *port, const struct rte_event ev[],
34 RTE_SET_USED(nb_events);
35 return cn10k_sso_hws_enq(port, ev);
39 cn10k_sso_hws_enq_new_burst(void *port, const struct rte_event ev[],
42 struct cn10k_sso_hws *ws = port;
45 for (i = 0; i < nb_events && rc; i++)
46 rc = cn10k_sso_hws_new_event(ws, &ev[i]);
52 cn10k_sso_hws_enq_fwd_burst(void *port, const struct rte_event ev[],
55 struct cn10k_sso_hws *ws = port;
57 RTE_SET_USED(nb_events);
58 cn10k_sso_hws_forward_event(ws, ev);
64 cn10k_sso_hws_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks)
66 struct cn10k_sso_hws *ws = port;
68 RTE_SET_USED(timeout_ticks);
72 cnxk_sso_hws_swtag_wait(ws->tag_wqe_op);
76 return cn10k_sso_hws_get_work(ws, ev);
80 cn10k_sso_hws_deq_burst(void *port, struct rte_event ev[], uint16_t nb_events,
81 uint64_t timeout_ticks)
83 RTE_SET_USED(nb_events);
85 return cn10k_sso_hws_deq(port, ev, timeout_ticks);
89 cn10k_sso_hws_tmo_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks)
91 struct cn10k_sso_hws *ws = port;
97 cnxk_sso_hws_swtag_wait(ws->tag_wqe_op);
101 ret = cn10k_sso_hws_get_work(ws, ev);
102 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)
103 ret = cn10k_sso_hws_get_work(ws, ev);
109 cn10k_sso_hws_tmo_deq_burst(void *port, struct rte_event ev[],
110 uint16_t nb_events, uint64_t timeout_ticks)
112 RTE_SET_USED(nb_events);
114 return cn10k_sso_hws_tmo_deq(port, ev, timeout_ticks);