doc: add Meson coding style to contributors guide
[dpdk.git] / lib / librte_eventdev / rte_eventdev.h
index dee468e..a9c496f 100644 (file)
@@ -919,10 +919,30 @@ rte_event_dev_close(uint8_t dev_id);
  * Event vector structure.
  */
 struct rte_event_vector {
-       uint64_t nb_elem : 16;
+       uint16_t nb_elem;
        /**< Number of elements in this event vector. */
-       uint64_t rsvd : 48;
+       uint16_t rsvd : 15;
        /**< Reserved for future use */
+       uint16_t attr_valid : 1;
+       /**< Indicates that the below union attributes have valid information.
+        */
+       union {
+               /* 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;
+                       /* Ethernet device port id. */
+                       uint16_t queue;
+                       /* Ethernet device queue id. */
+               };
+       };
+       /**< Union to hold common attributes of the vector array. */
        uint64_t impl_opaque;
        /**< Implementation specific opaque value.
         * An implementation may use this field to hold implementation specific
@@ -1025,8 +1045,14 @@ struct rte_event_vector {
  *             // Classify and handle event.
  *     }
  */
+#define RTE_EVENT_TYPE_ETHDEV_VECTOR                                           \
+       (RTE_EVENT_TYPE_VECTOR | RTE_EVENT_TYPE_ETHDEV)
+/**< The event vector generated from ethdev subsystem */
 #define RTE_EVENT_TYPE_CPU_VECTOR (RTE_EVENT_TYPE_VECTOR | RTE_EVENT_TYPE_CPU)
 /**< The event vector generated from cpu for pipelining. */
+#define RTE_EVENT_TYPE_ETH_RX_ADAPTER_VECTOR                                   \
+       (RTE_EVENT_TYPE_VECTOR | RTE_EVENT_TYPE_ETH_RX_ADAPTER)
+/**< The event vector generated from eth Rx adapter. */
 
 #define RTE_EVENT_TYPE_MAX              0x10
 /**< Maximum number of event types */
@@ -1171,6 +1197,8 @@ struct rte_event {
  * @see struct rte_event_eth_rx_adapter_queue_conf::ev
  * @see struct rte_event_eth_rx_adapter_queue_conf::rx_queue_flags
  */
+#define RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR      0x8
+/**< Adapter supports event vectorization per ethdev. */
 
 /**
  * Retrieve the event device's ethdev Rx adapter capabilities for the
@@ -1270,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
@@ -1320,6 +1352,10 @@ typedef uint16_t (*event_tx_adapter_enqueue_same_dest)(void *port,
  * burst having same destination Ethernet port & Tx queue.
  */
 
+typedef uint16_t (*event_crypto_adapter_enqueue)(void *port,
+                               struct rte_event ev[], uint16_t nb_events);
+/**< @internal Enqueue burst of events on crypto adapter */
+
 #define RTE_EVENTDEV_NAME_MAX_LEN      (64)
 /**< @internal Max length of name of event PMD */
 
@@ -1402,8 +1438,11 @@ struct rte_eventdev {
        uint8_t attached : 1;
        /**< Flag indicating the device is attached */
 
+       event_crypto_adapter_enqueue ca_enqueue;
+       /**< Pointer to PMD crypto adapter enqueue function. */
+
        uint64_t reserved_64s[4]; /**< Reserved for future fields */
-       void *reserved_ptrs[4];   /**< Reserved for future fields */
+       void *reserved_ptrs[3];   /**< Reserved for future fields */
 } __rte_cache_aligned;
 
 extern struct rte_eventdev *rte_eventdevs;