>> >> From: Pavan Nikhilesh <pbhagavat...@marvell.com> >> >> Add event dev main loop based on enabled l2fwd options and >eventdev >> capabilities. >> >> Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> >> --- > ><snip> > >> + if (flags & L2FWD_EVENT_TX_DIRECT) { >> + rte_event_eth_tx_adapter_txq_set(mbuf, 0); >> + while >> (!rte_event_eth_tx_adapter_enqueue(event_d_id, >> + port_id, >> + &ev, 1) >&& >> + !*done) >> + ; >> + } > >In the TX direct mode we can send packets directly to the ethernet >device using ethdev >API's. This will save unnecessary indirections and event unfolds within >the driver.
How would we guarantee atomicity of access to Tx queues? Between cores as we can only use one Tx queue. Also, if SCHED_TYPE is ORDERED how would we guarantee flow ordering? The capability of MT_LOCKFREE and flow ordering is abstracted through ` rte_event_eth_tx_adapter_enqueue `. @see examples/eventdev_pipeline and app/test-eventdev/test_pipeline_*. > >> + >> + if (timer_period > 0) >> + __atomic_fetch_add(&eventdev_rsrc- >>stats[mbuf- >> >port].tx, >> + 1, __ATOMIC_RELAXED); >> + } >> +}