eventdev: introduce event vector Tx capability
authorPavan Nikhilesh <pbhagavatula@marvell.com>
Wed, 31 Mar 2021 09:29:57 +0000 (14:59 +0530)
committerJerin Jacob <jerinj@marvell.com>
Mon, 12 Apr 2021 07:23:34 +0000 (09:23 +0200)
Introduce event vector transmit capability for event eth
tx adapter.

The capability indicates that the Tx adapter is capable of
transmitting event vectors.
When rte_event_vector::union_valid is set, the Tx adapter should
transmit all the packets to the rte_event_vector::port using the
rte_event_vector::queue.
If rte_event_vector::union_valid is not set then the Tx adapter
should peek into each mbuf to get the destination port and queue
pair.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Jay Jayatheerthan <jay.jayatheerthan@intel.com>
doc/guides/prog_guide/event_ethernet_tx_adapter.rst
lib/librte_eventdev/rte_eventdev.h

index a8c13e1..f80d226 100644 (file)
@@ -164,3 +164,15 @@ The  ``rte_event_eth_tx_adapter_stats_get()`` function reports counters defined
 in struct ``rte_event_eth_tx_adapter_stats``. The counter values are the sum of
 the counts from the eventdev PMD callback if the callback is supported, and
 the counts maintained by the service function, if one exists.
+
+Tx event vectorization
+~~~~~~~~~~~~~~~~~~~~~~
+
+The event device, ethernet device pairs which support the capability
+``RTE_EVENT_ETH_TX_ADAPTER_CAP_EVENT_VECTOR`` can process event vector of mbufs.
+Additionally, application can provide a hint to the Tx adapter that all the
+mbufs are destined to the same ethernet port and queue by setting the bit
+``rte_event_vector::attr_valid`` and filling `rte_event_vector::port`` and
+``rte_event_vector::queue``.
+If ``rte_event_vector::attr_valid`` is not set then the Tx adapter should peek
+into each mbuf and transmit them to the requested ethernet port and queue pair.
index 936c97c..5f1f544 100644 (file)
@@ -927,11 +927,13 @@ struct rte_event_vector {
        /**< Indicates that the below union attributes have valid information.
         */
        union {
-               /* Used by Rx adapter.
+               /* Used by Rx/Tx adapter.
                 * Indicates that all the elements in this vector belong to the
                 * same port and queue pair when originating from Rx adapter,
                 * valid only when event type is ETHDEV_VECTOR or
                 * ETH_RX_ADAPTER_VECTOR.
+                * Can also be used to indicate the Tx adapter the destination
+                * port and queue of the mbufs in the vector
                 */
                struct {
                        uint16_t port;
@@ -1296,6 +1298,10 @@ rte_event_crypto_adapter_caps_get(uint8_t dev_id, uint8_t cdev_id,
 #define RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT     0x1
 /**< This flag is sent when the PMD supports a packet transmit callback
  */
+#define RTE_EVENT_ETH_TX_ADAPTER_CAP_EVENT_VECTOR      0x2
+/**< Indicates that the Tx adapter is capable of handling event vector of
+ * mbufs.
+ */
 
 /**
  * Retrieve the event device's eth Tx adapter capabilities