event/octeontx: support worker dequeue
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.jacob@caviumnetworks.com> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
This commit is contained in:
parent
f10d322eff
commit
d80f50e829
@ -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__ */
|
||||
|
@ -119,6 +119,58 @@ ssows_release_event(struct ssows *ws)
|
||||
ssows_swtag_untag(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);
|
||||
}
|
||||
}
|
||||
|
||||
force_inline uint16_t __hot
|
||||
ssows_deq_timeout(void *port, struct rte_event *ev, uint64_t timeout_ticks)
|
||||
{
|
||||
struct ssows *ws = port;
|
||||
uint64_t iter;
|
||||
uint16_t ret = 1;
|
||||
|
||||
ssows_swtag_wait(ws);
|
||||
if (ws->swtag_req) {
|
||||
ws->swtag_req = 0;
|
||||
} else {
|
||||
ret = ssows_get_work(ws, ev);
|
||||
for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)
|
||||
ret = ssows_get_work(ws, ev);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint16_t __hot
|
||||
ssows_deq_burst(void *port, struct rte_event ev[], uint16_t nb_events,
|
||||
uint64_t timeout_ticks)
|
||||
{
|
||||
RTE_SET_USED(nb_events);
|
||||
|
||||
return ssows_deq(port, ev, timeout_ticks);
|
||||
}
|
||||
|
||||
uint16_t __hot
|
||||
ssows_deq_timeout_burst(void *port, struct rte_event ev[], uint16_t nb_events,
|
||||
uint64_t timeout_ticks)
|
||||
{
|
||||
RTE_SET_USED(nb_events);
|
||||
|
||||
return ssows_deq_timeout(port, ev, timeout_ticks);
|
||||
}
|
||||
|
||||
force_inline uint16_t __hot
|
||||
ssows_enq(void *port, const struct rte_event *ev)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user