* 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
* // 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 */
* @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
#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
* 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 */
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;