On Mon, Mar 20, 2017 at 09:11:35PM +0000, Eads, Gage wrote: > Hi Jerin, Hi Gage,
> > > -----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? Yes. The user receives the same event.HW supports event pinning to lower the latency. > > Thanks, > Gage >