Implement rte_event_enqueue_new_prealloced_burst() in DSW. Signed-off-by: Mattias Rönnblom <mattias.ronnb...@ericsson.com> --- drivers/event/dsw/dsw_evdev.c | 1 + drivers/event/dsw/dsw_evdev.h | 3 +++ drivers/event/dsw/dsw_event.c | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+)
diff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c index ecc1d947dd..139f57b5f4 100644 --- a/drivers/event/dsw/dsw_evdev.c +++ b/drivers/event/dsw/dsw_evdev.c @@ -456,6 +456,7 @@ dsw_probe(struct rte_vdev_device *vdev) dev->dev_ops = &dsw_evdev_ops; dev->enqueue_burst = dsw_event_enqueue_burst; dev->enqueue_new_burst = dsw_event_enqueue_new_burst; + dev->enqueue_new_prealloced_burst = dsw_event_enqueue_new_prealloced_burst; dev->enqueue_forward_burst = dsw_event_enqueue_forward_burst; dev->dequeue_burst = dsw_event_dequeue_burst; dev->maintain = dsw_event_maintain; diff --git a/drivers/event/dsw/dsw_evdev.h b/drivers/event/dsw/dsw_evdev.h index c026b0a135..5c5699c64f 100644 --- a/drivers/event/dsw/dsw_evdev.h +++ b/drivers/event/dsw/dsw_evdev.h @@ -277,6 +277,9 @@ uint16_t dsw_event_enqueue_burst(void *port, uint16_t dsw_event_enqueue_new_burst(void *port, const struct rte_event events[], uint16_t events_len); +uint16_t dsw_event_enqueue_new_prealloced_burst(void *port, + const struct rte_event events[], + uint16_t events_len); uint16_t dsw_event_enqueue_forward_burst(void *port, const struct rte_event events[], uint16_t events_len); diff --git a/drivers/event/dsw/dsw_event.c b/drivers/event/dsw/dsw_event.c index 09f353b324..b9529bd5d5 100644 --- a/drivers/event/dsw/dsw_event.c +++ b/drivers/event/dsw/dsw_event.c @@ -1459,6 +1459,21 @@ dsw_event_enqueue_new_burst(void *port, const struct rte_event events[], 0, 0, 0); } +uint16_t +dsw_event_enqueue_new_prealloced_burst(void *port, + const struct rte_event events[], + uint16_t events_len) +{ + struct dsw_port *source_port = port; + + if (unlikely(events_len > source_port->enqueue_depth)) + events_len = source_port->enqueue_depth; + + return dsw_event_enqueue_burst_generic(source_port, events, + events_len, true, 0, events_len, + 0, 0); +} + uint16_t dsw_event_enqueue_forward_burst(void *port, const struct rte_event events[], uint16_t events_len) @@ -1630,6 +1645,9 @@ int dsw_event_credit_alloc(void *port, unsigned int new_event_threshold, struct dsw_evdev *dsw = source_port->dsw; bool enough_credits; + if (new_event_threshold == 0) + new_event_threshold = source_port->new_event_threshold; + if (dsw_should_backpressure(dsw, new_event_threshold)) return 0; -- 2.43.0