crypto/octeontx: add asymmetric enqueue/dequeue ops
[dpdk.git] / drivers / event / octeontx2 / otx2_worker_dual.c
index b5cf9ac..ff68472 100644 (file)
@@ -158,7 +158,8 @@ otx2_ssogws_dual_deq_ ##name(void *port, struct rte_event *ev,              \
                                                                        \
        gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],          \
                                       &ws->ws_state[!ws->vws], ev,     \
-                                      flags, ws->lookup_mem);          \
+                                      flags, ws->lookup_mem,           \
+                                      ws->tstamp);                     \
        ws->vws = !ws->vws;                                             \
                                                                        \
        return gw;                                                      \
@@ -191,13 +192,15 @@ otx2_ssogws_dual_deq_timeout_ ##name(void *port, struct rte_event *ev,    \
                                                                        \
        gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],          \
                                       &ws->ws_state[!ws->vws], ev,     \
-                                      flags, ws->lookup_mem);          \
+                                      flags, ws->lookup_mem,           \
+                                      ws->tstamp);                     \
        ws->vws = !ws->vws;                                             \
        for (iter = 1; iter < timeout_ticks && (gw == 0); iter++) {     \
                gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],  \
                                               &ws->ws_state[!ws->vws], \
                                               ev, flags,               \
-                                              ws->lookup_mem);         \
+                                              ws->lookup_mem,          \
+                                              ws->tstamp);             \
                ws->vws = !ws->vws;                                     \
        }                                                               \
                                                                        \
@@ -234,7 +237,8 @@ otx2_ssogws_dual_deq_seg_ ##name(void *port, struct rte_event *ev,  \
        gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],          \
                                       &ws->ws_state[!ws->vws], ev,     \
                                       flags | NIX_RX_MULTI_SEG_F,      \
-                                      ws->lookup_mem);                 \
+                                      ws->lookup_mem,                  \
+                                      ws->tstamp);                     \
        ws->vws = !ws->vws;                                             \
                                                                        \
        return gw;                                                      \
@@ -271,14 +275,16 @@ otx2_ssogws_dual_deq_seg_timeout_ ##name(void *port,                      \
        gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],          \
                                       &ws->ws_state[!ws->vws], ev,     \
                                       flags | NIX_RX_MULTI_SEG_F,      \
-                                      ws->lookup_mem);                 \
+                                      ws->lookup_mem,                  \
+                                      ws->tstamp);                     \
        ws->vws = !ws->vws;                                             \
        for (iter = 1; iter < timeout_ticks && (gw == 0); iter++) {     \
                gw = otx2_ssogws_dual_get_work(&ws->ws_state[ws->vws],  \
                                               &ws->ws_state[!ws->vws], \
                                               ev, flags |              \
                                               NIX_RX_MULTI_SEG_F,      \
-                                              ws->lookup_mem);         \
+                                              ws->lookup_mem,          \
+                                              ws->tstamp);             \
                ws->vws = !ws->vws;                                     \
        }                                                               \
                                                                        \
@@ -299,3 +305,38 @@ otx2_ssogws_dual_deq_seg_timeout_burst_ ##name(void *port,         \
 
 SSO_RX_ADPTR_ENQ_FASTPATH_FUNC
 #undef R
+
+#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+uint16_t __hot                                                         \
+otx2_ssogws_dual_tx_adptr_enq_ ## name(void *port,                     \
+                                      struct rte_event ev[],           \
+                                      uint16_t nb_events)              \
+{                                                                      \
+       struct otx2_ssogws_dual *ws = port;                             \
+       struct otx2_ssogws *vws =                                       \
+               (struct otx2_ssogws *)&ws->ws_state[!ws->vws];          \
+       uint64_t cmd[sz];                                               \
+                                                                       \
+       RTE_SET_USED(nb_events);                                        \
+       return otx2_ssogws_event_tx(vws, ev, cmd, flags);               \
+}
+SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
+#undef T
+
+#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+uint16_t __hot                                                         \
+otx2_ssogws_dual_tx_adptr_enq_seg_ ## name(void *port,                 \
+                                          struct rte_event ev[],       \
+                                          uint16_t nb_events)          \
+{                                                                      \
+       struct otx2_ssogws_dual *ws = port;                             \
+       struct otx2_ssogws *vws =                                       \
+               (struct otx2_ssogws *)&ws->ws_state[!ws->vws];          \
+       uint64_t cmd[(sz) + NIX_TX_MSEG_SG_DWORDS - 2];                 \
+                                                                       \
+       RTE_SET_USED(nb_events);                                        \
+       return otx2_ssogws_event_tx(vws, ev, cmd, (flags) |             \
+                                   NIX_TX_MULTI_SEG_F);                \
+}
+SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
+#undef T