* The ethernet Rx event adapter's functions are:
* - rte_event_eth_rx_adapter_create_ext()
* - rte_event_eth_rx_adapter_create()
+ * - rte_event_eth_rx_adapter_create_with_params()
* - rte_event_eth_rx_adapter_free()
* - rte_event_eth_rx_adapter_queue_add()
* - rte_event_eth_rx_adapter_queue_del()
* - rte_event_eth_rx_adapter_stop()
* - rte_event_eth_rx_adapter_stats_get()
* - rte_event_eth_rx_adapter_stats_reset()
+ * - rte_event_eth_rx_adapter_queue_conf_get()
+ * - rte_event_eth_rx_adapter_queue_stats_get()
+ * - rte_event_eth_rx_adapter_queue_stats_reset()
+ * - rte_event_eth_rx_adapter_event_port_get()
*
* The application creates an ethernet to event adapter using
* rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create()
- * functions.
+ * or rte_event_eth_rx_adapter_create_with_params() functions.
* The adapter needs to know which ethernet rx queues to poll for mbufs as well
* as event device parameters such as the event queue identifier, event
* priority and scheduling type that the adapter should use when constructing
* Valid when RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR flag is set in
* @see rte_event_eth_rx_adapter_queue_conf::rx_queue_flags.
*/
+ uint16_t event_buf_size;
+ /**< event buffer size for this queue */
+};
+
+/**
+ * A structure used to retrieve statistics for an
+ * eth rx adapter queue.
+ */
+struct rte_event_eth_rx_adapter_queue_stats {
+ uint64_t rx_event_buf_count;
+ /**< Rx event buffered count */
+ uint64_t rx_event_buf_size;
+ /**< Rx event buffer size */
+ uint64_t rx_poll_count;
+ /**< Receive queue poll count */
+ uint64_t rx_packets;
+ /**< Received packet count */
+ uint64_t rx_dropped;
+ /**< Received packet dropped count */
};
/**
*/
uint64_t rx_intr_packets;
/**< Received packet count for interrupt mode Rx queues */
+ uint64_t rx_event_buf_count;
+ /**< Rx event buffered count */
+ uint64_t rx_event_buf_size;
+ /**< Rx event buffer size */
};
/**
*/
};
+/**
+ * A structure to hold adapter config params
+ */
+struct rte_event_eth_rx_adapter_params {
+ uint16_t event_buf_size;
+ /**< size of event buffer for the adapter.
+ * This value is rounded up for better buffer utilization
+ * and performance.
+ */
+ bool use_queue_event_buf;
+ /**< flag to indicate that event buffer is separate for each queue */
+};
+
/**
*
* Callback function invoked by the SW adapter before it continues
int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
struct rte_event_port_conf *port_config);
+/**
+ * This is a variant of rte_event_eth_rx_adapter_create() with additional
+ * adapter params specified in ``struct rte_event_eth_rx_adapter_params``.
+ *
+ * @param id
+ * The identifier of the ethernet Rx event adapter.
+ *
+ * @param dev_id
+ * The identifier of the event device to configure.
+ *
+ * @param port_config
+ * Argument of type *rte_event_port_conf* that is passed to the conf_cb
+ * function.
+ *
+ * @param rxa_params
+ * Pointer to struct rte_event_eth_rx_adapter_params.
+ * In case of NULL, default values are used.
+ *
+ * @return
+ * - 0: Success
+ * - <0: Error code on failure
+ */
+__rte_experimental
+int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
+ struct rte_event_port_conf *port_config,
+ struct rte_event_eth_rx_adapter_params *rxa_params);
+
/**
* Free an event adapter
*
* - 0: Success.
* - <0: Error code on failure.
*/
-__rte_experimental
int rte_event_eth_rx_adapter_vector_limits_get(
uint8_t dev_id, uint16_t eth_port_id,
struct rte_event_eth_rx_adapter_vector_limits *limits);
+/**
+ * Retrieve Rx queue config information.
+ *
+ * @param id
+ * Adapter identifier.
+
+ * @param eth_dev_id
+ * Port identifier of Ethernet device.
+
+ * @param rx_queue_id
+ * Ethernet device receive queue index.
+
+ * @param[out] queue_conf
+ * Pointer to struct rte_event_eth_rx_adapter_queue_conf
+
+ * @return
+ * - 0: Success, Receive queue added correctly.
+ * - <0: Error code on failure.
+ */
+__rte_experimental
+int rte_event_eth_rx_adapter_queue_conf_get(uint8_t id,
+ uint16_t eth_dev_id,
+ uint16_t rx_queue_id,
+ struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
+
+/**
+ * Retrieve Rx queue statistics.
+ *
+ * @param id
+ * Adapter identifier.
+ *
+ * @param eth_dev_id
+ * Port identifier of Ethernet device.
+ *
+ * @param rx_queue_id
+ * Ethernet device receive queue index.
+ *
+ * @param[out] stats
+ * Pointer to struct rte_event_eth_rx_adapter_queue_stats
+ *
+ * @return
+ * - 0: Success, queue buffer stats retrieved.
+ * - <0: Error code on failure.
+ */
+__rte_experimental
+int
+rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
+ uint16_t eth_dev_id,
+ uint16_t rx_queue_id,
+ struct rte_event_eth_rx_adapter_queue_stats *stats);
+
+/**
+ * Reset Rx queue statistics.
+ *
+ * @param id
+ * Adapter identifier.
+ *
+ * @param eth_dev_id
+ * Port identifier of Ethernet device.
+ *
+ * @param rx_queue_id
+ * Ethernet device receive queue index.
+ *
+ * @return
+ * - 0: Success, queue buffer stats retrieved.
+ * - <0: Error code on failure.
+ */
+__rte_experimental
+int
+rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
+ uint16_t eth_dev_id,
+ uint16_t rx_queue_id);
+
+/**
+ * Retrieve the event port ID of an adapter. If the adapter doesn't use
+ * a rte_service function, this function returns -ESRCH.
+ *
+ * @param id
+ * Adapter identifier.
+ *
+ * @param [out] event_port_id
+ * A pointer to a uint8_t, to be filled in with the port id.
+ *
+ * @return
+ * - 0: Success
+ * - <0: Error code on failure, if the adapter doesn't use a rte_service
+ * function, this function returns -ESRCH.
+ */
+__rte_experimental
+int
+rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
+
#ifdef __cplusplus
}
#endif