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

Reply via email to