On 4/19/2023 10:54 AM, Sivaprasad Tummala wrote:
Add optional support for inline event processing within dequeue call.
For a dequeue callback, events dequeued from the event port were
passed them to a callback function if configured, to allow
additional processing. e.g. unpack batch of packets from each event
on dequeue, before passing back to the application.
Signed-off-by: Sivaprasad Tummala <[email protected]>
---
Hi,
+/**
+ * @internal
+ * Structure used to hold information about the callbacks to be called for a
+ * port on dequeue.
+ */
+struct rte_event_dequeue_callback {
+ struct rte_event_dequeue_callback *next;
+ union{
+ rte_dequeue_callback_fn dequeue;
+ } fn;
+ void *param;
+};
...and...
+
+uint16_t
+rte_event_dequeue_callbacks(uint8_t dev_id, uint8_t port_id,
+ struct rte_event *ev, uint16_t nb_events, void *opaque)
+{
+ static uint16_t nb_rx;
+ const struct rte_event_dequeue_callback *cb = opaque;
+
+ while (cb != NULL) {
+ nb_rx = cb->fn.dequeue(dev_id, port_id, ev,
+ nb_events, cb->param);
+ cb = cb->next;
+ }
+ return nb_rx;
Nitpicking an RFC, but this kind of looks like reimplementation for
TAILQ functionality?
--
Thanks,
Anatoly