evt_rsrc->evq.nb_queues - 1];
const uint64_t timer_period = rsrc->timer_period;
const uint8_t event_d_id = evt_rsrc->event_d_id;
+ uint8_t enq = 0, deq = 0;
struct rte_event ev;
if (port_id < 0)
while (!rsrc->force_quit) {
/* Read packet from eventdev */
- if (!rte_event_dequeue_burst(event_d_id, port_id, &ev, 1, 0))
+ deq = rte_event_dequeue_burst(event_d_id, port_id, &ev, 1, 0);
+ if (!deq)
continue;
l2fwd_event_fwd(rsrc, &ev, tx_q_id, timer_period, flags);
if (flags & L2FWD_EVENT_TX_ENQ) {
- while (rte_event_enqueue_burst(event_d_id, port_id,
- &ev, 1) &&
- !rsrc->force_quit)
- ;
+ do {
+ enq = rte_event_enqueue_burst(event_d_id,
+ port_id, &ev, 1);
+ } while (!enq && !rsrc->force_quit);
}
if (flags & L2FWD_EVENT_TX_DIRECT) {
- while (!rte_event_eth_tx_adapter_enqueue(event_d_id,
- port_id,
- &ev, 1, 0) &&
- !rsrc->force_quit)
- ;
+ do {
+ enq = rte_event_eth_tx_adapter_enqueue(
+ event_d_id, port_id, &ev, 1, 0);
+ } while (!enq && !rsrc->force_quit);
}
}
+
+ l2fwd_event_worker_cleanup(event_d_id, port_id, &ev, enq, deq, 0);
}
static __rte_always_inline void
const uint8_t event_d_id = evt_rsrc->event_d_id;
const uint8_t deq_len = evt_rsrc->deq_depth;
struct rte_event ev[MAX_PKT_BURST];
- uint16_t nb_rx, nb_tx;
+ uint16_t nb_rx = 0, nb_tx = 0;
uint8_t i;
if (port_id < 0)
ev + nb_tx, nb_rx - nb_tx, 0);
}
}
+
+ l2fwd_event_worker_cleanup(event_d_id, port_id, ev, nb_rx, nb_tx, 0);
}
static __rte_always_inline void
const uint8_t event_d_id = evt_rsrc->event_d_id;
const uint8_t deq_len = evt_rsrc->deq_depth;
struct rte_event ev[MAX_PKT_BURST];
- uint16_t nb_rx, nb_tx;
+ uint16_t nb_rx = 0, nb_tx = 0;
uint8_t i;
if (port_id < 0)
nb_rx - nb_tx, 0);
}
}
+
+ l2fwd_event_worker_cleanup(event_d_id, port_id, ev, nb_rx, nb_tx, 1);
}
static void __rte_noinline