vhost: improve vhost-user layer logs
[dpdk.git] / lib / eventdev / rte_event_eth_rx_adapter.h
index 182dd2e..3608a7b 100644 (file)
@@ -26,6 +26,7 @@
  * 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
@@ -171,9 +176,6 @@ struct rte_event_eth_rx_adapter_queue_conf {
         * The event adapter sets ev.event_type to RTE_EVENT_TYPE_ETHDEV in the
         * enqueued event.
         */
-};
-
-struct rte_event_eth_rx_adapter_event_vector_config {
        uint16_t vector_sz;
        /**<
         * Indicates the maximum number for mbufs to combine and form a vector.
@@ -201,6 +203,25 @@ struct rte_event_eth_rx_adapter_event_vector_config {
         * 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 */
 };
 
 /**
@@ -231,6 +252,10 @@ struct rte_event_eth_rx_adapter_stats {
         */
        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 */
 };
 
 /**
@@ -259,6 +284,19 @@ struct rte_event_eth_rx_adapter_vector_limits {
         */
 };
 
+/**
+ * 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
@@ -359,6 +397,33 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
 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
  *
@@ -543,37 +608,101 @@ int rte_event_eth_rx_adapter_cb_register(uint8_t id, uint16_t eth_dev_id,
  *  - 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);
 
 /**
- * Configure event vectorization for a given ethernet device queue, that has
- * been added to a event eth Rx adapter.
+ * Retrieve Rx queue config information.
  *
  * @param id
- *  The identifier of the ethernet Rx event adapter.
+ *  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
- *  The identifier of the ethernet device.
+ *  Port identifier of Ethernet device.
  *
  * @param rx_queue_id
  *  Ethernet device receive queue index.
- *  If rx_queue_id is -1, then all Rx queues configured for the ethernet device
- *  are configured with event vectorization.
  *
- * @param config
- *  Event vector configuration structure.
+ * @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, Receive queue configured correctly.
+ *  - 0: Success, queue buffer stats retrieved.
  *  - <0: Error code on failure.
  */
 __rte_experimental
-int rte_event_eth_rx_adapter_queue_event_vector_config(
-       uint8_t id, uint16_t eth_dev_id, int32_t rx_queue_id,
-       struct rte_event_eth_rx_adapter_event_vector_config *config);
+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
 }