net/ice: fix TM hierarchy commit flag reset
[dpdk.git] / drivers / event / cnxk / cn10k_worker_deq_tmo.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #include "cn10k_worker.h"
6 #include "cnxk_eventdev.h"
7 #include "cnxk_worker.h"
8
9 #define R(name, f6, f5, f4, f3, f2, f1, f0, flags)                             \
10         uint16_t __rte_hot cn10k_sso_hws_deq_tmo_##name(                       \
11                 void *port, struct rte_event *ev, uint64_t timeout_ticks)      \
12         {                                                                      \
13                 struct cn10k_sso_hws *ws = port;                               \
14                 uint16_t ret = 1;                                              \
15                 uint64_t iter;                                                 \
16                                                                                \
17                 if (ws->swtag_req) {                                           \
18                         ws->swtag_req = 0;                                     \
19                         cnxk_sso_hws_swtag_wait(ws->base + SSOW_LF_GWS_WQE0);  \
20                         return ret;                                            \
21                 }                                                              \
22                                                                                \
23                 ret = cn10k_sso_hws_get_work(ws, ev, flags, ws->lookup_mem);   \
24                 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)     \
25                         ret = cn10k_sso_hws_get_work(ws, ev, flags,            \
26                                                      ws->lookup_mem);          \
27                                                                                \
28                 return ret;                                                    \
29         }                                                                      \
30                                                                                \
31         uint16_t __rte_hot cn10k_sso_hws_deq_tmo_burst_##name(                 \
32                 void *port, struct rte_event ev[], uint16_t nb_events,         \
33                 uint64_t timeout_ticks)                                        \
34         {                                                                      \
35                 RTE_SET_USED(nb_events);                                       \
36                                                                                \
37                 return cn10k_sso_hws_deq_tmo_##name(port, ev, timeout_ticks);  \
38         }                                                                      \
39                                                                                \
40         uint16_t __rte_hot cn10k_sso_hws_deq_tmo_seg_##name(                   \
41                 void *port, struct rte_event *ev, uint64_t timeout_ticks)      \
42         {                                                                      \
43                 struct cn10k_sso_hws *ws = port;                               \
44                 uint16_t ret = 1;                                              \
45                 uint64_t iter;                                                 \
46                                                                                \
47                 if (ws->swtag_req) {                                           \
48                         ws->swtag_req = 0;                                     \
49                         cnxk_sso_hws_swtag_wait(ws->base + SSOW_LF_GWS_WQE0);  \
50                         return ret;                                            \
51                 }                                                              \
52                                                                                \
53                 ret = cn10k_sso_hws_get_work(ws, ev, flags, ws->lookup_mem);   \
54                 for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)     \
55                         ret = cn10k_sso_hws_get_work(ws, ev, flags,            \
56                                                      ws->lookup_mem);          \
57                                                                                \
58                 return ret;                                                    \
59         }                                                                      \
60                                                                                \
61         uint16_t __rte_hot cn10k_sso_hws_deq_tmo_seg_burst_##name(             \
62                 void *port, struct rte_event ev[], uint16_t nb_events,         \
63                 uint64_t timeout_ticks)                                        \
64         {                                                                      \
65                 RTE_SET_USED(nb_events);                                       \
66                                                                                \
67                 return cn10k_sso_hws_deq_tmo_seg_##name(port, ev,              \
68                                                         timeout_ticks);        \
69         }
70
71 NIX_RX_FASTPATH_MODES
72 #undef R