+__rte_always_inline uint16_t __rte_hot
+ssows_deq_mseg(void *port, struct rte_event *ev, uint64_t timeout_ticks)
+{
+ struct ssows *ws = port;
+
+ RTE_SET_USED(timeout_ticks);
+
+ if (ws->swtag_req) {
+ ws->swtag_req = 0;
+ ssows_swtag_wait(ws);
+ return 1;
+ } else {
+ return ssows_get_work(ws, ev, OCCTX_RX_OFFLOAD_NONE |
+ OCCTX_RX_MULTI_SEG_F);
+ }
+}
+
+__rte_always_inline uint16_t __rte_hot
+ssows_deq_timeout_mseg(void *port, struct rte_event *ev, uint64_t timeout_ticks)
+{
+ struct ssows *ws = port;
+ uint64_t iter;
+ uint16_t ret = 1;
+
+ if (ws->swtag_req) {
+ ws->swtag_req = 0;
+ ssows_swtag_wait(ws);
+ } else {
+ ret = ssows_get_work(ws, ev, OCCTX_RX_OFFLOAD_NONE |
+ OCCTX_RX_MULTI_SEG_F);
+ for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)
+ ret = ssows_get_work(ws, ev, OCCTX_RX_OFFLOAD_NONE |
+ OCCTX_RX_MULTI_SEG_F);
+ }
+ return ret;
+}
+
+uint16_t __rte_hot
+ssows_deq_burst_mseg(void *port, struct rte_event ev[], uint16_t nb_events,
+ uint64_t timeout_ticks)
+{
+ RTE_SET_USED(nb_events);
+
+ return ssows_deq_mseg(port, ev, timeout_ticks);
+}
+
+uint16_t __rte_hot
+ssows_deq_timeout_burst_mseg(void *port, struct rte_event ev[],
+ uint16_t nb_events, uint64_t timeout_ticks)
+{
+ RTE_SET_USED(nb_events);
+
+ return ssows_deq_timeout_mseg(port, ev, timeout_ticks);
+}
+