Thread (218 messages) 218 messages, 12 authors, 2022-02-24

Re: [dpdk-dev] [PATCH 3/3] ethdev: add async queue-based flow rules operations

From: Ori Kam <hidden>
Date: 2021-10-13 13:17:38

Hi Ajit,
-----Original Message-----
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Wednesday, October 13, 2021 7:58 AM
Subject: Re: [PATCH 3/3] ethdev: add async queue-based flow rules operations

On Tue, Oct 5, 2021 at 9:49 PM Alexander Kozyrev [off-list ref] wrote:
quoted
A new, faster, queue-based flow rules management mechanism is needed
for applications offloading rules inside the datapath. This
asynchronous and lockless mechanism frees the CPU for further packet
processing and reduces the performance impact of the flow rules
creation/destruction on the datapath. Note that queues are not
thread-safe and queue-based operations can be safely invoked without any locks from a single
thread.
quoted
The rte_flow_q_flow_create() function enqueues a flow creation to the
requested queue. It benefits from already configured resources and
sets unique values on top of item and action templates. A flow rule is
enqueued on the specified flow queue and offloaded asynchronously to the hardware.
The function returns immediately to spare CPU for further packet
processing. The application must invoke the rte_flow_q_dequeue()
function to complete the flow rule operation offloading, to clear the
queue, and to receive the operation status. The
rte_flow_q_flow_destroy() function enqueues a flow destruction to the requested queue.

Signed-off-by: Alexander Kozyrev <redacted>
Suggested-by: Ori Kam <redacted>
---
 lib/ethdev/rte_flow.h | 288
++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 288 insertions(+)
diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index
ba3204b17e..8cdffd8d2e 100644
--- a/lib/ethdev/rte_flow.h
+++ b/lib/ethdev/rte_flow.h
@@ -4298,6 +4298,13 @@ struct rte_flow_port_attr {
         * Version of the struct layout, should be 0.
         */
        uint32_t version;
+       /**
+        * Number of flow queues to be configured.
+        * Flow queues are used for asyncronous flow rule creation/destruction.
+        * The order of operations is not guaranteed inside a queue.
+        * Flow queues are not thread-safe.
+        */
+       uint16_t nb_queues;
Will it matter if PMD can create a smaller set of queues? Or may be just one?
Should the application set this based on get_infos_get() or some other mechanism?
This is the number of queues from application point of view.
PMD can implement just one queue using locks.

Best,
Ori
::::
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help