extern "C" {
#endif
+/**
+ * RX/TX queue states
+ */
+#define RTE_ETH_QUEUE_STATE_STOPPED 0
+#define RTE_ETH_QUEUE_STATE_STARTED 1
+#define RTE_ETH_QUEUE_STATE_HAIRPIN 2
+
+/**
+ * @internal
+ * Check if the selected Rx queue is hairpin queue.
+ *
+ * @param dev
+ * Pointer to the selected device.
+ * @param queue_id
+ * The selected queue.
+ *
+ * @return
+ * - (1) if the queue is hairpin queue, 0 otherwise.
+ */
+int rte_eth_dev_is_rx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
+
+/**
+ * @internal
+ * Check if the selected Tx queue is hairpin queue.
+ *
+ * @param dev
+ * Pointer to the selected device.
+ * @param queue_id
+ * The selected queue.
+ *
+ * @return
+ * - (1) if the queue is hairpin queue, 0 otherwise.
+ */
+int rte_eth_dev_is_tx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
+
/**
* @internal
* Returns a ethdev slot specified by the unique identifier name.
* to that slot for the driver to use.
*
* @param name Unique identifier name for each Ethernet device
- * @param type Device type of this Ethernet device
* @return
* - Slot in the rte_dev_devices array for a new device;
*/
/**
* @internal
- * Release the specified ethdev port.
+ * Notify RTE_ETH_EVENT_DESTROY and release the specified ethdev port.
+ *
+ * The following PMD-managed data fields will be freed:
+ * - dev_private
+ * - mac_addrs
+ * - hash_mac_addrs
+ * If one of these fields should not be freed,
+ * it must be reset to NULL by the PMD, typically in dev_close method.
*
* @param eth_dev
- * The *eth_dev* pointer is the address of the *rte_eth_dev* structure.
+ * Device to be detached.
* @return
* - 0 on success, negative on error
*/
* This is the last step of device probing.
* It must be called after a port is allocated and initialized successfully.
*
+ * The notification RTE_ETH_EVENT_NEW is sent to other entities
+ * (libraries and applications).
+ * The state is set as RTE_ETH_DEV_ATTACHED.
+ *
* @param dev
* New ethdev port.
*/
* @return
* Negative errno value on error, 0 on success.
*/
-int __rte_experimental
+__rte_experimental
+int
rte_eth_switch_domain_alloc(uint16_t *domain_id);
/**
* @return
* Negative errno value on error, 0 on success.
*/
-int __rte_experimental
+__rte_experimental
+int
rte_eth_switch_domain_free(uint16_t domain_id);
/** Generic Ethernet device arguments */
* @return
* Negative errno value on error, 0 on success.
*/
-int __rte_experimental
+__rte_experimental
+int
rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs *eth_devargs);
* @return
* Negative errno value on error, 0 on success.
*/
-int __rte_experimental
+__rte_experimental
+int
rte_eth_dev_create(struct rte_device *device, const char *name,
size_t priv_data_size,
ethdev_bus_specific_init bus_specific_init, void *bus_init_params,
* @warning
* @b EXPERIMENTAL: this API may change without prior notice.
*
- * PMD helper function for cleaing up the resources of a ethdev port on it's
+ * PMD helper function for cleaning up the resources of a ethdev port on it's
* destruction.
*
* @param ethdev
* @return
* Negative errno value on error, 0 on success.
*/
-int __rte_experimental
+__rte_experimental
+int
rte_eth_dev_destroy(struct rte_eth_dev *ethdev, ethdev_uninit_t ethdev_uninit);
#ifdef __cplusplus