Thread (135 messages) 135 messages, 4 authors, 2017-04-03

Re: [PATCH 19/39] event/octeontx: add support worker dequeue function

From: Jerin Jacob <hidden>
Date: 2017-03-21 03:21:22

On Mon, Mar 20, 2017 at 09:11:35PM +0000, Eads, Gage wrote:
Hi Jerin,
Hi Gage,
quoted
 -----Original Message-----
 From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
 Sent: Friday, March 3, 2017 11:28 AM
 To: dev@dpdk.org
 Cc: thomas.monjalon@6wind.com; Richardson, Bruce
 [off-list ref]; Van Haaren, Harry
 [off-list ref]; hemant.agrawal@nxp.com; Eads, Gage
 [off-list ref]; nipun.gupta@nxp.com;
 santosh.shukla@caviumnetworks.com; Jerin Jacob
 [off-list ref]
 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 [off-list ref]
 Signed-off-by: Santosh Shukla [off-list ref]
 ---
  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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help