On Mon, Mar 20, 2017 at 09:11:35PM +0000, Eads, Gage wrote: > Hi Jerin, Hi Gage,
> > > -----Original Message----- > > From: Jerin Jacob [mailto:[email protected]] > > Sent: Friday, March 3, 2017 11:28 AM > > To: [email protected] > > Cc: [email protected]; Richardson, Bruce > > <[email protected]>; Van Haaren, Harry > > <[email protected]>; [email protected]; Eads, Gage > > <[email protected]>; [email protected]; > > [email protected]; Jerin Jacob > > <[email protected]> > > 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 <[email protected]> > > Signed-off-by: Santosh Shukla <[email protected]> > > --- > > 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 >

