Hi Jerin, > -----Original Message----- > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com] > Sent: Friday, March 3, 2017 11:28 AM > To: dev@dpdk.org > Cc: thomas.monja...@6wind.com; Richardson, Bruce > <bruce.richard...@intel.com>; Van Haaren, Harry > <harry.van.haa...@intel.com>; hemant.agra...@nxp.com; Eads, Gage > <gage.e...@intel.com>; nipun.gu...@nxp.com; > santosh.shu...@caviumnetworks.com; Jerin Jacob > <jerin.ja...@caviumnetworks.com> > Subject: [dpdk-dev] [PATCH 19/39] event/octeontx: add support worker > dequeue function > > If device is configured with RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT > configuration then use different fast path dequeue handler to wait till > requested amount of nanosecond if the event is not available. > > Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> > --- > drivers/event/octeontx/ssovf_evdev.h | 7 +++++ > drivers/event/octeontx/ssovf_worker.c | 52 > +++++++++++++++++++++++++++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/drivers/event/octeontx/ssovf_evdev.h > b/drivers/event/octeontx/ssovf_evdev.h > index fac42f5..2cd9147 100644 > --- a/drivers/event/octeontx/ssovf_evdev.h > +++ b/drivers/event/octeontx/ssovf_evdev.h > @@ -190,5 +190,12 @@ ssovf_pmd_priv(const struct rte_eventdev *eventdev) > uint16_t ssows_enq(void *port, const struct rte_event *ev); uint16_t > ssows_enq_burst(void *port, > const struct rte_event ev[], uint16_t nb_events); > +uint16_t ssows_deq(void *port, struct rte_event *ev, uint64_t > +timeout_ticks); uint16_t ssows_deq_burst(void *port, struct rte_event ev[], > + uint16_t nb_events, uint64_t timeout_ticks); uint16_t > +ssows_deq_timeout(void *port, struct rte_event *ev, > + uint64_t timeout_ticks); > +uint16_t ssows_deq_timeout_burst(void *port, struct rte_event ev[], > + uint16_t nb_events, uint64_t timeout_ticks); > > #endif /* __SSOVF_EVDEV_H__ */ > diff --git a/drivers/event/octeontx/ssovf_worker.c > b/drivers/event/octeontx/ssovf_worker.c > index 7ec78b4..e0d17b9 100644 > --- a/drivers/event/octeontx/ssovf_worker.c > +++ b/drivers/event/octeontx/ssovf_worker.c > @@ -226,6 +226,58 @@ ssows_release_event(struct ssows *ws) } > > force_inline uint16_t __hot > +ssows_deq(void *port, struct rte_event *ev, uint64_t timeout_ticks) { > + struct ssows *ws = port; > + > + RTE_SET_USED(timeout_ticks); > + > + ssows_swtag_wait(ws); > + if (ws->swtag_req) { > + ws->swtag_req = 0; > + return 1; > + } else { > + return ssows_get_work(ws, ev); > + } > +}
Should ssows_deq() fill in the ev structure when swtag_req is 1? I see that the flag is set when an event is forwarded to the same queue/group it was received on -- is the expectation that ev will point to that forwarded event, such that the user receives it when they next dequeue an event? Thanks, Gage