ethdev: avoid documentation in next lines

Documentation in the next separate line is confusing. If documentation
requires own line it should be before, not after.

Move documentation to the previous line if documentation on the same
line makes it too long.

Fix a number of incorrect markups on the way.

When a lines is touched by the patch anyway, do other cosmetics
changes to avoid changes in next patches.

Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ori Kam <orika@nvidia.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
Andrew Rybchenko 2021-10-20 15:47:19 +03:00 committed by Ferruh Yigit
parent 6353ff43a7
commit 3c2ca0a982
5 changed files with 319 additions and 272 deletions

View File

@ -44,18 +44,17 @@ struct rte_eth_rxtx_callback {
struct rte_eth_dev { struct rte_eth_dev {
eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */ eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */
eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */ eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */
/** Pointer to PMD transmit prepare function */
eth_tx_prep_t tx_pkt_prepare; eth_tx_prep_t tx_pkt_prepare;
/**< Pointer to PMD transmit prepare function. */ /** Get the number of used Rx descriptors */
eth_rx_queue_count_t rx_queue_count; eth_rx_queue_count_t rx_queue_count;
/**< Get the number of used RX descriptors. */ /** Check the status of a Rx descriptor */
eth_rx_descriptor_status_t rx_descriptor_status; eth_rx_descriptor_status_t rx_descriptor_status;
/**< Check the status of a Rx descriptor. */ /** Check the status of a Tx descriptor */
eth_tx_descriptor_status_t tx_descriptor_status; eth_tx_descriptor_status_t tx_descriptor_status;
/**< Check the status of a Tx descriptor. */
/** /**
* points to device data that is shared between * Device data that is shared between primary and secondary processes
* primary and secondary processes.
*/ */
struct rte_eth_dev_data *data; struct rte_eth_dev_data *data;
void *process_private; /**< Pointer to per-process device data. */ void *process_private; /**< Pointer to per-process device data. */
@ -100,64 +99,63 @@ struct rte_eth_dev_data {
struct rte_eth_dev_sriov sriov; /**< SRIOV data */ struct rte_eth_dev_sriov sriov; /**< SRIOV data */
/** PMD-specific private data. @see rte_eth_dev_release_port() */
void *dev_private; void *dev_private;
/**< PMD-specific private data.
* @see rte_eth_dev_release_port()
*/
struct rte_eth_link dev_link; /**< Link-level information & status. */ struct rte_eth_link dev_link; /**< Link-level information & status. */
struct rte_eth_conf dev_conf; /**< Configuration applied to device. */ struct rte_eth_conf dev_conf; /**< Configuration applied to device. */
uint16_t mtu; /**< Maximum Transmission Unit. */ uint16_t mtu; /**< Maximum Transmission Unit. */
/** Common Rx buffer size handled by all queues */
uint32_t min_rx_buf_size; uint32_t min_rx_buf_size;
/**< Common RX buffer size handled by all queues. */
uint64_t rx_mbuf_alloc_failed; /**< RX ring mbuf allocation failures. */ uint64_t rx_mbuf_alloc_failed; /**< RX ring mbuf allocation failures. */
/** Device Ethernet link address. @see rte_eth_dev_release_port() */
struct rte_ether_addr *mac_addrs; struct rte_ether_addr *mac_addrs;
/**< Device Ethernet link address. /** Bitmap associating MAC addresses to pools */
* @see rte_eth_dev_release_port()
*/
uint64_t mac_pool_sel[ETH_NUM_RECEIVE_MAC_ADDR]; uint64_t mac_pool_sel[ETH_NUM_RECEIVE_MAC_ADDR];
/**< Bitmap associating MAC addresses to pools. */ /**
* Device Ethernet MAC addresses of hash filtering.
* @see rte_eth_dev_release_port()
*/
struct rte_ether_addr *hash_mac_addrs; struct rte_ether_addr *hash_mac_addrs;
/**< Device Ethernet MAC addresses of hash filtering.
* @see rte_eth_dev_release_port()
*/
uint16_t port_id; /**< Device [external] port identifier. */ uint16_t port_id; /**< Device [external] port identifier. */
__extension__ __extension__
uint8_t promiscuous : 1, uint8_t /** Rx promiscuous mode ON(1) / OFF(0) */
/**< RX promiscuous mode ON(1) / OFF(0). */ promiscuous : 1,
/** Rx of scattered packets is ON(1) / OFF(0) */
scattered_rx : 1, scattered_rx : 1,
/**< RX of scattered packets is ON(1) / OFF(0) */ /** Rx all multicast mode ON(1) / OFF(0) */
all_multicast : 1, all_multicast : 1,
/**< RX all multicast mode ON(1) / OFF(0). */ /** Device state: STARTED(1) / STOPPED(0) */
dev_started : 1, dev_started : 1,
/**< Device state: STARTED(1) / STOPPED(0). */ /** Rx LRO is ON(1) / OFF(0) */
lro : 1, lro : 1,
/**< RX LRO is ON(1) / OFF(0) */ /**
dev_configured : 1; * Indicates whether the device is configured:
/**< Indicates whether the device is configured. * CONFIGURED(1) / NOT CONFIGURED(0)
* CONFIGURED(1) / NOT CONFIGURED(0).
*/ */
dev_configured : 1;
/** Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0) */
uint8_t rx_queue_state[RTE_MAX_QUEUES_PER_PORT]; uint8_t rx_queue_state[RTE_MAX_QUEUES_PER_PORT];
/**< Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0). */ /** Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0) */
uint8_t tx_queue_state[RTE_MAX_QUEUES_PER_PORT]; uint8_t tx_queue_state[RTE_MAX_QUEUES_PER_PORT];
/**< Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0). */
uint32_t dev_flags; /**< Capabilities. */ uint32_t dev_flags; /**< Capabilities. */
int numa_node; /**< NUMA node connection. */ int numa_node; /**< NUMA node connection. */
/** VLAN filter configuration */
struct rte_vlan_filter_conf vlan_filter_conf; struct rte_vlan_filter_conf vlan_filter_conf;
/**< VLAN filter configuration. */
struct rte_eth_dev_owner owner; /**< The port owner. */ struct rte_eth_dev_owner owner; /**< The port owner. */
/**
* Switch-specific identifier.
* Valid if RTE_ETH_DEV_REPRESENTOR in dev_flags.
*/
uint16_t representor_id; uint16_t representor_id;
/**< Switch-specific identifier. /**
* Valid if RTE_ETH_DEV_REPRESENTOR in dev_flags. * Port ID of the backing device.
*/ * This device will be used to query representor info and calculate
* representor IDs. Valid if RTE_ETH_DEV_REPRESENTOR in dev_flags.
*/
uint16_t backer_port_id; uint16_t backer_port_id;
/**< Port ID of the backing device.
* This device will be used to query representor
* info and calculate representor IDs.
* Valid if RTE_ETH_DEV_REPRESENTOR in dev_flags.
*/
pthread_mutex_t flow_ops_mutex; /**< rte_flow ops mutex. */ pthread_mutex_t flow_ops_mutex; /**< rte_flow ops mutex. */
uint64_t reserved_64s[4]; /**< Reserved for future fields */ uint64_t reserved_64s[4]; /**< Reserved for future fields */
@ -171,7 +169,7 @@ struct rte_eth_dev_data {
*/ */
extern struct rte_eth_dev rte_eth_devices[]; extern struct rte_eth_dev rte_eth_devices[];
/**< @internal Declaration of the hairpin peer queue information structure. */ /** @internal Declaration of the hairpin peer queue information structure. */
struct rte_hairpin_peer_info; struct rte_hairpin_peer_info;
/* /*
@ -180,29 +178,29 @@ struct rte_hairpin_peer_info;
* structure associated with an Ethernet device. * structure associated with an Ethernet device.
*/ */
/** @internal Ethernet device configuration. */
typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev);
/**< @internal Ethernet device configuration. */
/** @internal Function used to start a configured Ethernet device. */
typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev);
/**< @internal Function used to start a configured Ethernet device. */
/** @internal Function used to stop a configured Ethernet device. */
typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev);
/**< @internal Function used to stop a configured Ethernet device. */
/** @internal Function used to link up a configured Ethernet device. */
typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev);
/**< @internal Function used to link up a configured Ethernet device. */
/** @internal Function used to link down a configured Ethernet device. */
typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev);
/**< @internal Function used to link down a configured Ethernet device. */
/** @internal Function used to close a configured Ethernet device. */
typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev);
/**< @internal Function used to close a configured Ethernet device. */
/** @internal Function used to reset a configured Ethernet device. */
typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
/** <@internal Function used to reset a configured Ethernet device. */
/** @internal Function used to detect an Ethernet device removal. */
typedef int (*eth_is_removed_t)(struct rte_eth_dev *dev); typedef int (*eth_is_removed_t)(struct rte_eth_dev *dev);
/**< @internal Function used to detect an Ethernet device removal. */
/** /**
* @internal * @internal
@ -304,13 +302,16 @@ typedef int (*eth_allmulticast_enable_t)(struct rte_eth_dev *dev);
*/ */
typedef int (*eth_allmulticast_disable_t)(struct rte_eth_dev *dev); typedef int (*eth_allmulticast_disable_t)(struct rte_eth_dev *dev);
/**
* @internal
* Get link speed, duplex mode and state (up/down) of an Ethernet device.
*/
typedef int (*eth_link_update_t)(struct rte_eth_dev *dev, typedef int (*eth_link_update_t)(struct rte_eth_dev *dev,
int wait_to_complete); int wait_to_complete);
/**< @internal Get link speed, duplex mode and state (up/down) of an Ethernet device. */
/** @internal Get global I/O statistics of an Ethernet device. */
typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev, typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev,
struct rte_eth_stats *igb_stats); struct rte_eth_stats *igb_stats);
/**< @internal Get global I/O statistics of an Ethernet device. */
/** /**
* @internal * @internal
@ -333,9 +334,9 @@ typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev,
*/ */
typedef int (*eth_stats_reset_t)(struct rte_eth_dev *dev); typedef int (*eth_stats_reset_t)(struct rte_eth_dev *dev);
/** @internal Get extended stats of an Ethernet device. */
typedef int (*eth_xstats_get_t)(struct rte_eth_dev *dev, typedef int (*eth_xstats_get_t)(struct rte_eth_dev *dev,
struct rte_eth_xstat *stats, unsigned int n); struct rte_eth_xstat *stats, unsigned int n);
/**< @internal Get extended stats of an Ethernet device. */
/** /**
* @internal * @internal
@ -381,9 +382,9 @@ typedef int (*eth_xstats_get_by_id_t)(struct rte_eth_dev *dev,
*/ */
typedef int (*eth_xstats_reset_t)(struct rte_eth_dev *dev); typedef int (*eth_xstats_reset_t)(struct rte_eth_dev *dev);
/** @internal Get names of extended stats of an Ethernet device. */
typedef int (*eth_xstats_get_names_t)(struct rte_eth_dev *dev, typedef int (*eth_xstats_get_names_t)(struct rte_eth_dev *dev,
struct rte_eth_xstat_name *xstats_names, unsigned int size); struct rte_eth_xstat_name *xstats_names, unsigned int size);
/**< @internal Get names of extended stats of an Ethernet device. */
/** /**
* @internal * @internal
@ -407,18 +408,21 @@ typedef int (*eth_xstats_get_names_by_id_t)(struct rte_eth_dev *dev,
const uint64_t *ids, struct rte_eth_xstat_name *xstats_names, const uint64_t *ids, struct rte_eth_xstat_name *xstats_names,
unsigned int size); unsigned int size);
/**
* @internal
* Set a queue statistics mapping for a Tx/Rx queue of an Ethernet device.
*/
typedef int (*eth_queue_stats_mapping_set_t)(struct rte_eth_dev *dev, typedef int (*eth_queue_stats_mapping_set_t)(struct rte_eth_dev *dev,
uint16_t queue_id, uint16_t queue_id,
uint8_t stat_idx, uint8_t stat_idx,
uint8_t is_rx); uint8_t is_rx);
/**< @internal Set a queue statistics mapping for a tx/rx queue of an Ethernet device. */
/** @internal Get specific information of an Ethernet device. */
typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev, typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
struct rte_eth_dev_info *dev_info); struct rte_eth_dev_info *dev_info);
/**< @internal Get specific information of an Ethernet device. */
/** @internal Get supported ptypes of an Ethernet device. */
typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *dev); typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *dev);
/**< @internal Get supported ptypes of an Ethernet device. */
/** /**
* @internal * @internal
@ -435,47 +439,47 @@ typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *de
typedef int (*eth_dev_ptypes_set_t)(struct rte_eth_dev *dev, typedef int (*eth_dev_ptypes_set_t)(struct rte_eth_dev *dev,
uint32_t ptype_mask); uint32_t ptype_mask);
/** @internal Start Rx and Tx of a queue of an Ethernet device. */
typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev, typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev,
uint16_t queue_id); uint16_t queue_id);
/**< @internal Start rx and tx of a queue of an Ethernet device. */
/** @internal Stop Rx and Tx of a queue of an Ethernet device. */
typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev, typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev,
uint16_t queue_id); uint16_t queue_id);
/**< @internal Stop rx and tx of a queue of an Ethernet device. */
/** @internal Set up a receive queue of an Ethernet device. */
typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev, typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev,
uint16_t rx_queue_id, uint16_t rx_queue_id,
uint16_t nb_rx_desc, uint16_t nb_rx_desc,
unsigned int socket_id, unsigned int socket_id,
const struct rte_eth_rxconf *rx_conf, const struct rte_eth_rxconf *rx_conf,
struct rte_mempool *mb_pool); struct rte_mempool *mb_pool);
/**< @internal Set up a receive queue of an Ethernet device. */
/** @internal Setup a transmit queue of an Ethernet device. */
typedef int (*eth_tx_queue_setup_t)(struct rte_eth_dev *dev, typedef int (*eth_tx_queue_setup_t)(struct rte_eth_dev *dev,
uint16_t tx_queue_id, uint16_t tx_queue_id,
uint16_t nb_tx_desc, uint16_t nb_tx_desc,
unsigned int socket_id, unsigned int socket_id,
const struct rte_eth_txconf *tx_conf); const struct rte_eth_txconf *tx_conf);
/**< @internal Setup a transmit queue of an Ethernet device. */
/** @internal Enable interrupt of a receive queue of an Ethernet device. */
typedef int (*eth_rx_enable_intr_t)(struct rte_eth_dev *dev, typedef int (*eth_rx_enable_intr_t)(struct rte_eth_dev *dev,
uint16_t rx_queue_id); uint16_t rx_queue_id);
/**< @internal Enable interrupt of a receive queue of an Ethernet device. */
/** @internal Disable interrupt of a receive queue of an Ethernet device. */
typedef int (*eth_rx_disable_intr_t)(struct rte_eth_dev *dev, typedef int (*eth_rx_disable_intr_t)(struct rte_eth_dev *dev,
uint16_t rx_queue_id); uint16_t rx_queue_id);
/**< @internal Disable interrupt of a receive queue of an Ethernet device. */
/** @internal Release memory resources allocated by given Rx/Tx queue. */
typedef void (*eth_queue_release_t)(struct rte_eth_dev *dev, typedef void (*eth_queue_release_t)(struct rte_eth_dev *dev,
uint16_t queue_id); uint16_t queue_id);
/**< @internal Release memory resources allocated by given RX/TX queue. */
/** @internal Get firmware information of an Ethernet device. */
typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev, typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev,
char *fw_version, size_t fw_size); char *fw_version, size_t fw_size);
/**< @internal Get firmware information of an Ethernet device. */
/** @internal Force mbufs to be from Tx ring. */
typedef int (*eth_tx_done_cleanup_t)(void *txq, uint32_t free_cnt); typedef int (*eth_tx_done_cleanup_t)(void *txq, uint32_t free_cnt);
/**< @internal Force mbufs to be from TX ring. */
typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev, typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev,
uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo); uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo);
@ -486,159 +490,159 @@ typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev,
typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev, typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev,
uint16_t queue_id, struct rte_eth_burst_mode *mode); uint16_t queue_id, struct rte_eth_burst_mode *mode);
/** @internal Set MTU. */
typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu); typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu);
/**< @internal Set MTU. */
/** @internal Filtering of a VLAN Tag Identifier by an Ethernet device. */
typedef int (*vlan_filter_set_t)(struct rte_eth_dev *dev, typedef int (*vlan_filter_set_t)(struct rte_eth_dev *dev,
uint16_t vlan_id, uint16_t vlan_id,
int on); int on);
/**< @internal filtering of a VLAN Tag Identifier by an Ethernet device. */
/** @internal Set the outer/inner VLAN-TPID by an Ethernet device. */
typedef int (*vlan_tpid_set_t)(struct rte_eth_dev *dev, typedef int (*vlan_tpid_set_t)(struct rte_eth_dev *dev,
enum rte_vlan_type type, uint16_t tpid); enum rte_vlan_type type, uint16_t tpid);
/**< @internal set the outer/inner VLAN-TPID by an Ethernet device. */
/** @internal Set VLAN offload function by an Ethernet device. */
typedef int (*vlan_offload_set_t)(struct rte_eth_dev *dev, int mask); typedef int (*vlan_offload_set_t)(struct rte_eth_dev *dev, int mask);
/**< @internal set VLAN offload function by an Ethernet device. */
/** @internal Set port based Tx VLAN insertion by an Ethernet device. */
typedef int (*vlan_pvid_set_t)(struct rte_eth_dev *dev, typedef int (*vlan_pvid_set_t)(struct rte_eth_dev *dev,
uint16_t vlan_id, uint16_t vlan_id,
int on); int on);
/**< @internal set port based TX VLAN insertion by an Ethernet device. */
/** @internal VLAN stripping enable/disable by an queue of Ethernet device. */
typedef void (*vlan_strip_queue_set_t)(struct rte_eth_dev *dev, typedef void (*vlan_strip_queue_set_t)(struct rte_eth_dev *dev,
uint16_t rx_queue_id, uint16_t rx_queue_id,
int on); int on);
/**< @internal VLAN stripping enable/disable by an queue of Ethernet device. */
/** @internal Get current flow control parameter on an Ethernet device. */
typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev, typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev,
struct rte_eth_fc_conf *fc_conf); struct rte_eth_fc_conf *fc_conf);
/**< @internal Get current flow control parameter on an Ethernet device */
/** @internal Setup flow control parameter on an Ethernet device. */
typedef int (*flow_ctrl_set_t)(struct rte_eth_dev *dev, typedef int (*flow_ctrl_set_t)(struct rte_eth_dev *dev,
struct rte_eth_fc_conf *fc_conf); struct rte_eth_fc_conf *fc_conf);
/**< @internal Setup flow control parameter on an Ethernet device */
/** @internal Setup priority flow control parameter on an Ethernet device. */
typedef int (*priority_flow_ctrl_set_t)(struct rte_eth_dev *dev, typedef int (*priority_flow_ctrl_set_t)(struct rte_eth_dev *dev,
struct rte_eth_pfc_conf *pfc_conf); struct rte_eth_pfc_conf *pfc_conf);
/**< @internal Setup priority flow control parameter on an Ethernet device */
/** @internal Update RSS redirection table on an Ethernet device. */
typedef int (*reta_update_t)(struct rte_eth_dev *dev, typedef int (*reta_update_t)(struct rte_eth_dev *dev,
struct rte_eth_rss_reta_entry64 *reta_conf, struct rte_eth_rss_reta_entry64 *reta_conf,
uint16_t reta_size); uint16_t reta_size);
/**< @internal Update RSS redirection table on an Ethernet device */
/** @internal Query RSS redirection table on an Ethernet device. */
typedef int (*reta_query_t)(struct rte_eth_dev *dev, typedef int (*reta_query_t)(struct rte_eth_dev *dev,
struct rte_eth_rss_reta_entry64 *reta_conf, struct rte_eth_rss_reta_entry64 *reta_conf,
uint16_t reta_size); uint16_t reta_size);
/**< @internal Query RSS redirection table on an Ethernet device */
/** @internal Update RSS hash configuration of an Ethernet device. */
typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev, typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev,
struct rte_eth_rss_conf *rss_conf); struct rte_eth_rss_conf *rss_conf);
/**< @internal Update RSS hash configuration of an Ethernet device */
/** @internal Get current RSS hash configuration of an Ethernet device. */
typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev, typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev,
struct rte_eth_rss_conf *rss_conf); struct rte_eth_rss_conf *rss_conf);
/**< @internal Get current RSS hash configuration of an Ethernet device */
/** @internal Turn on SW controllable LED on an Ethernet device. */
typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev);
/**< @internal Turn on SW controllable LED on an Ethernet device */
/** @internal Turn off SW controllable LED on an Ethernet device. */
typedef int (*eth_dev_led_off_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_led_off_t)(struct rte_eth_dev *dev);
/**< @internal Turn off SW controllable LED on an Ethernet device */
/** @internal Remove MAC address from receive address register. */
typedef void (*eth_mac_addr_remove_t)(struct rte_eth_dev *dev, uint32_t index); typedef void (*eth_mac_addr_remove_t)(struct rte_eth_dev *dev, uint32_t index);
/**< @internal Remove MAC address from receive address register */
/** @internal Set a MAC address into Receive Address Register. */
typedef int (*eth_mac_addr_add_t)(struct rte_eth_dev *dev, typedef int (*eth_mac_addr_add_t)(struct rte_eth_dev *dev,
struct rte_ether_addr *mac_addr, struct rte_ether_addr *mac_addr,
uint32_t index, uint32_t index,
uint32_t vmdq); uint32_t vmdq);
/**< @internal Set a MAC address into Receive Address Register */
/** @internal Set a MAC address into Receive Address Register. */
typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev, typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
struct rte_ether_addr *mac_addr); struct rte_ether_addr *mac_addr);
/**< @internal Set a MAC address into Receive Address Register */
/** @internal Set a Unicast Hash bitmap. */
typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev, typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev,
struct rte_ether_addr *mac_addr, struct rte_ether_addr *mac_addr,
uint8_t on); uint8_t on);
/**< @internal Set a Unicast Hash bitmap */
/** @internal Set all Unicast Hash bitmap. */
typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev, typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev,
uint8_t on); uint8_t on);
/**< @internal Set all Unicast Hash bitmap */
/** @internal Set queue Tx rate. */
typedef int (*eth_set_queue_rate_limit_t)(struct rte_eth_dev *dev, typedef int (*eth_set_queue_rate_limit_t)(struct rte_eth_dev *dev,
uint16_t queue_idx, uint16_t queue_idx,
uint16_t tx_rate); uint16_t tx_rate);
/**< @internal Set queue TX rate */
/** @internal Add tunneling UDP port. */
typedef int (*eth_udp_tunnel_port_add_t)(struct rte_eth_dev *dev, typedef int (*eth_udp_tunnel_port_add_t)(struct rte_eth_dev *dev,
struct rte_eth_udp_tunnel *tunnel_udp); struct rte_eth_udp_tunnel *tunnel_udp);
/**< @internal Add tunneling UDP port */
/** @internal Delete tunneling UDP port. */
typedef int (*eth_udp_tunnel_port_del_t)(struct rte_eth_dev *dev, typedef int (*eth_udp_tunnel_port_del_t)(struct rte_eth_dev *dev,
struct rte_eth_udp_tunnel *tunnel_udp); struct rte_eth_udp_tunnel *tunnel_udp);
/**< @internal Delete tunneling UDP port */
/** @internal set the list of multicast addresses on an Ethernet device. */
typedef int (*eth_set_mc_addr_list_t)(struct rte_eth_dev *dev, typedef int (*eth_set_mc_addr_list_t)(struct rte_eth_dev *dev,
struct rte_ether_addr *mc_addr_set, struct rte_ether_addr *mc_addr_set,
uint32_t nb_mc_addr); uint32_t nb_mc_addr);
/**< @internal set the list of multicast addresses on an Ethernet device */
/** @internal Function used to enable IEEE1588/802.1AS timestamping. */
typedef int (*eth_timesync_enable_t)(struct rte_eth_dev *dev); typedef int (*eth_timesync_enable_t)(struct rte_eth_dev *dev);
/**< @internal Function used to enable IEEE1588/802.1AS timestamping. */
/** @internal Function used to disable IEEE1588/802.1AS timestamping. */
typedef int (*eth_timesync_disable_t)(struct rte_eth_dev *dev); typedef int (*eth_timesync_disable_t)(struct rte_eth_dev *dev);
/**< @internal Function used to disable IEEE1588/802.1AS timestamping. */
/** @internal Function used to read an Rx IEEE1588/802.1AS timestamp. */
typedef int (*eth_timesync_read_rx_timestamp_t)(struct rte_eth_dev *dev, typedef int (*eth_timesync_read_rx_timestamp_t)(struct rte_eth_dev *dev,
struct timespec *timestamp, struct timespec *timestamp,
uint32_t flags); uint32_t flags);
/**< @internal Function used to read an RX IEEE1588/802.1AS timestamp. */
/** @internal Function used to read a Tx IEEE1588/802.1AS timestamp. */
typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev, typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev,
struct timespec *timestamp); struct timespec *timestamp);
/**< @internal Function used to read a TX IEEE1588/802.1AS timestamp. */
/** @internal Function used to adjust the device clock. */
typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t); typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t);
/**< @internal Function used to adjust the device clock */
/** @internal Function used to get time from the device clock. */
typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev, typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev,
struct timespec *timestamp); struct timespec *timestamp);
/**< @internal Function used to get time from the device clock. */
/** @internal Function used to get time from the device clock. */
typedef int (*eth_timesync_write_time)(struct rte_eth_dev *dev, typedef int (*eth_timesync_write_time)(struct rte_eth_dev *dev,
const struct timespec *timestamp); const struct timespec *timestamp);
/**< @internal Function used to get time from the device clock */
/** @internal Function used to get the current value of the device clock. */
typedef int (*eth_read_clock)(struct rte_eth_dev *dev, typedef int (*eth_read_clock)(struct rte_eth_dev *dev,
uint64_t *timestamp); uint64_t *timestamp);
/**< @internal Function used to get the current value of the device clock. */
/** @internal Retrieve registers. */
typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev, typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev,
struct rte_dev_reg_info *info); struct rte_dev_reg_info *info);
/**< @internal Retrieve registers */
/** @internal Retrieve eeprom size. */
typedef int (*eth_get_eeprom_length_t)(struct rte_eth_dev *dev); typedef int (*eth_get_eeprom_length_t)(struct rte_eth_dev *dev);
/**< @internal Retrieve eeprom size */
/** @internal Retrieve eeprom data. */
typedef int (*eth_get_eeprom_t)(struct rte_eth_dev *dev, typedef int (*eth_get_eeprom_t)(struct rte_eth_dev *dev,
struct rte_dev_eeprom_info *info); struct rte_dev_eeprom_info *info);
/**< @internal Retrieve eeprom data */
/** @internal Program eeprom data. */
typedef int (*eth_set_eeprom_t)(struct rte_eth_dev *dev, typedef int (*eth_set_eeprom_t)(struct rte_eth_dev *dev,
struct rte_dev_eeprom_info *info); struct rte_dev_eeprom_info *info);
/**< @internal Program eeprom data */
/** @internal Retrieve type and size of plugin module eeprom. */
typedef int (*eth_get_module_info_t)(struct rte_eth_dev *dev, typedef int (*eth_get_module_info_t)(struct rte_eth_dev *dev,
struct rte_eth_dev_module_info *modinfo); struct rte_eth_dev_module_info *modinfo);
/**< @internal Retrieve type and size of plugin module eeprom */
/** @internal Retrieve plugin module eeprom data. */
typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev, typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev,
struct rte_dev_eeprom_info *info); struct rte_dev_eeprom_info *info);
/**< @internal Retrieve plugin module eeprom data */
struct rte_flow_ops; struct rte_flow_ops;
/** /**
@ -651,19 +655,19 @@ struct rte_flow_ops;
typedef int (*eth_flow_ops_get_t)(struct rte_eth_dev *dev, typedef int (*eth_flow_ops_get_t)(struct rte_eth_dev *dev,
const struct rte_flow_ops **ops); const struct rte_flow_ops **ops);
/** @internal Get Traffic Management (TM) operations on an Ethernet device. */
typedef int (*eth_tm_ops_get_t)(struct rte_eth_dev *dev, void *ops); typedef int (*eth_tm_ops_get_t)(struct rte_eth_dev *dev, void *ops);
/**< @internal Get Traffic Management (TM) operations on an Ethernet device */
/** @internal Get Traffic Metering and Policing (MTR) operations. */
typedef int (*eth_mtr_ops_get_t)(struct rte_eth_dev *dev, void *ops); typedef int (*eth_mtr_ops_get_t)(struct rte_eth_dev *dev, void *ops);
/**< @internal Get Traffic Metering and Policing (MTR) operations */
/** @internal Get dcb information on an Ethernet device. */
typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev, typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev,
struct rte_eth_dcb_info *dcb_info); struct rte_eth_dcb_info *dcb_info);
/**< @internal Get dcb information on an Ethernet device */
/** @internal Test if a port supports specific mempool ops. */
typedef int (*eth_pool_ops_supported_t)(struct rte_eth_dev *dev, typedef int (*eth_pool_ops_supported_t)(struct rte_eth_dev *dev,
const char *pool); const char *pool);
/**< @internal Test if a port supports specific mempool ops */
/** /**
* @internal * @internal
@ -905,20 +909,20 @@ typedef int (*eth_hairpin_bind_t)(struct rte_eth_dev *dev,
typedef int (*eth_hairpin_unbind_t)(struct rte_eth_dev *dev, typedef int (*eth_hairpin_unbind_t)(struct rte_eth_dev *dev,
uint16_t rx_port); uint16_t rx_port);
/** @internal Update and fetch peer queue information. */
typedef int (*eth_hairpin_queue_peer_update_t) typedef int (*eth_hairpin_queue_peer_update_t)
(struct rte_eth_dev *dev, uint16_t peer_queue, (struct rte_eth_dev *dev, uint16_t peer_queue,
struct rte_hairpin_peer_info *current_info, struct rte_hairpin_peer_info *current_info,
struct rte_hairpin_peer_info *peer_info, uint32_t direction); struct rte_hairpin_peer_info *peer_info, uint32_t direction);
/**< @internal Update and fetch peer queue information. */
/** @internal Bind peer queue to the current queue with fetched information. */
typedef int (*eth_hairpin_queue_peer_bind_t) typedef int (*eth_hairpin_queue_peer_bind_t)
(struct rte_eth_dev *dev, uint16_t cur_queue, (struct rte_eth_dev *dev, uint16_t cur_queue,
struct rte_hairpin_peer_info *peer_info, uint32_t direction); struct rte_hairpin_peer_info *peer_info, uint32_t direction);
/**< @internal Bind peer queue to the current queue with fetched information. */
/** @internal Unbind peer queue from the current queue. */
typedef int (*eth_hairpin_queue_peer_unbind_t) typedef int (*eth_hairpin_queue_peer_unbind_t)
(struct rte_eth_dev *dev, uint16_t cur_queue, uint32_t direction); (struct rte_eth_dev *dev, uint16_t cur_queue, uint32_t direction);
/**< @internal Unbind peer queue from the current queue. */
/** /**
* @internal * @internal
@ -992,8 +996,8 @@ struct eth_dev_ops {
eth_dev_close_t dev_close; /**< Close device. */ eth_dev_close_t dev_close; /**< Close device. */
eth_dev_reset_t dev_reset; /**< Reset device. */ eth_dev_reset_t dev_reset; /**< Reset device. */
eth_link_update_t link_update; /**< Get device link state. */ eth_link_update_t link_update; /**< Get device link state. */
/** Check if the device was physically removed */
eth_is_removed_t is_removed; eth_is_removed_t is_removed;
/**< Check if the device was physically removed. */
eth_promiscuous_enable_t promiscuous_enable; /**< Promiscuous ON. */ eth_promiscuous_enable_t promiscuous_enable; /**< Promiscuous ON. */
eth_promiscuous_disable_t promiscuous_disable;/**< Promiscuous OFF. */ eth_promiscuous_disable_t promiscuous_disable;/**< Promiscuous OFF. */
@ -1002,34 +1006,50 @@ struct eth_dev_ops {
eth_mac_addr_remove_t mac_addr_remove; /**< Remove MAC address. */ eth_mac_addr_remove_t mac_addr_remove; /**< Remove MAC address. */
eth_mac_addr_add_t mac_addr_add; /**< Add a MAC address. */ eth_mac_addr_add_t mac_addr_add; /**< Add a MAC address. */
eth_mac_addr_set_t mac_addr_set; /**< Set a MAC address. */ eth_mac_addr_set_t mac_addr_set; /**< Set a MAC address. */
eth_set_mc_addr_list_t set_mc_addr_list; /**< set list of mcast addrs. */ /** Set list of multicast addresses */
eth_set_mc_addr_list_t set_mc_addr_list;
mtu_set_t mtu_set; /**< Set MTU. */ mtu_set_t mtu_set; /**< Set MTU. */
eth_stats_get_t stats_get; /**< Get generic device statistics. */ /** Get generic device statistics */
eth_stats_reset_t stats_reset; /**< Reset generic device statistics. */ eth_stats_get_t stats_get;
eth_xstats_get_t xstats_get; /**< Get extended device statistics. */ /** Reset generic device statistics */
eth_xstats_reset_t xstats_reset; /**< Reset extended device statistics. */ eth_stats_reset_t stats_reset;
/** Get extended device statistics */
eth_xstats_get_t xstats_get;
/** Reset extended device statistics */
eth_xstats_reset_t xstats_reset;
/** Get names of extended statistics */
eth_xstats_get_names_t xstats_get_names; eth_xstats_get_names_t xstats_get_names;
/**< Get names of extended statistics. */ /** Configure per queue stat counter mapping */
eth_queue_stats_mapping_set_t queue_stats_mapping_set; eth_queue_stats_mapping_set_t queue_stats_mapping_set;
/**< Configure per queue stat counter mapping. */
eth_dev_infos_get_t dev_infos_get; /**< Get device info. */ eth_dev_infos_get_t dev_infos_get; /**< Get device info. */
eth_rxq_info_get_t rxq_info_get; /**< retrieve RX queue information. */ /** Retrieve Rx queue information */
eth_txq_info_get_t txq_info_get; /**< retrieve TX queue information. */ eth_rxq_info_get_t rxq_info_get;
/** Retrieve Tx queue information */
eth_txq_info_get_t txq_info_get;
eth_burst_mode_get_t rx_burst_mode_get; /**< Get RX burst mode */ eth_burst_mode_get_t rx_burst_mode_get; /**< Get RX burst mode */
eth_burst_mode_get_t tx_burst_mode_get; /**< Get TX burst mode */ eth_burst_mode_get_t tx_burst_mode_get; /**< Get TX burst mode */
eth_fw_version_get_t fw_version_get; /**< Get firmware version. */ eth_fw_version_get_t fw_version_get; /**< Get firmware version. */
eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
/**< Get packet types supported and identified by device. */
eth_dev_ptypes_set_t dev_ptypes_set;
/**< Inform Ethernet device about reduced range of packet types to handle. */
vlan_filter_set_t vlan_filter_set; /**< Filter VLAN Setup. */ /** Get packet types supported and identified by device */
vlan_tpid_set_t vlan_tpid_set; /**< Outer/Inner VLAN TPID Setup. */ eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
vlan_strip_queue_set_t vlan_strip_queue_set; /**< VLAN Stripping on queue. */ /**
vlan_offload_set_t vlan_offload_set; /**< Set VLAN Offload. */ * Inform Ethernet device about reduced range of packet types to
vlan_pvid_set_t vlan_pvid_set; /**< Set port based TX VLAN insertion. */ * handle
*/
eth_dev_ptypes_set_t dev_ptypes_set;
/** Filter VLAN Setup */
vlan_filter_set_t vlan_filter_set;
/** Outer/Inner VLAN TPID Setup */
vlan_tpid_set_t vlan_tpid_set;
/** VLAN Stripping on queue */
vlan_strip_queue_set_t vlan_strip_queue_set;
/** Set VLAN Offload */
vlan_offload_set_t vlan_offload_set;
/** Set port based Tx VLAN insertion */
vlan_pvid_set_t vlan_pvid_set;
eth_queue_start_t rx_queue_start;/**< Start RX for a queue. */ eth_queue_start_t rx_queue_start;/**< Start RX for a queue. */
eth_queue_stop_t rx_queue_stop; /**< Stop RX for a queue. */ eth_queue_stop_t rx_queue_stop; /**< Stop RX for a queue. */
@ -1038,8 +1058,11 @@ struct eth_dev_ops {
eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue. */ eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue. */
eth_queue_release_t rx_queue_release; /**< Release RX queue. */ eth_queue_release_t rx_queue_release; /**< Release RX queue. */
eth_rx_enable_intr_t rx_queue_intr_enable; /**< Enable Rx queue interrupt. */ /** Enable Rx queue interrupt */
eth_rx_disable_intr_t rx_queue_intr_disable; /**< Disable Rx queue interrupt. */ eth_rx_enable_intr_t rx_queue_intr_enable;
/** Disable Rx queue interrupt */
eth_rx_disable_intr_t rx_queue_intr_disable;
eth_tx_queue_setup_t tx_queue_setup;/**< Set up device TX queue. */ eth_tx_queue_setup_t tx_queue_setup;/**< Set up device TX queue. */
eth_queue_release_t tx_queue_release; /**< Release TX queue. */ eth_queue_release_t tx_queue_release; /**< Release TX queue. */
eth_tx_done_cleanup_t tx_done_cleanup;/**< Free tx ring mbufs */ eth_tx_done_cleanup_t tx_done_cleanup;/**< Free tx ring mbufs */
@ -1049,94 +1072,108 @@ struct eth_dev_ops {
flow_ctrl_get_t flow_ctrl_get; /**< Get flow control. */ flow_ctrl_get_t flow_ctrl_get; /**< Get flow control. */
flow_ctrl_set_t flow_ctrl_set; /**< Setup flow control. */ flow_ctrl_set_t flow_ctrl_set; /**< Setup flow control. */
priority_flow_ctrl_set_t priority_flow_ctrl_set; /**< Setup priority flow control. */ /** Setup priority flow control */
priority_flow_ctrl_set_t priority_flow_ctrl_set;
eth_uc_hash_table_set_t uc_hash_table_set; /**< Set Unicast Table Array. */ /** Set Unicast Table Array */
eth_uc_all_hash_table_set_t uc_all_hash_table_set; /**< Set Unicast hash bitmap. */ eth_uc_hash_table_set_t uc_hash_table_set;
/** Set Unicast hash bitmap */
eth_uc_all_hash_table_set_t uc_all_hash_table_set;
eth_udp_tunnel_port_add_t udp_tunnel_port_add; /** Add UDP tunnel port. */ /** Add UDP tunnel port */
eth_udp_tunnel_port_del_t udp_tunnel_port_del; /** Del UDP tunnel port. */ eth_udp_tunnel_port_add_t udp_tunnel_port_add;
/** Delete UDP tunnel port */
eth_udp_tunnel_port_del_t udp_tunnel_port_del;
eth_set_queue_rate_limit_t set_queue_rate_limit; /**< Set queue rate limit. */ /** Set queue rate limit */
eth_set_queue_rate_limit_t set_queue_rate_limit;
rss_hash_update_t rss_hash_update; /** Configure RSS hash protocols. */ /** Configure RSS hash protocols and hashing key */
rss_hash_conf_get_t rss_hash_conf_get; /** Get current RSS hash configuration. */ rss_hash_update_t rss_hash_update;
reta_update_t reta_update; /** Update redirection table. */ /** Get current RSS hash configuration */
reta_query_t reta_query; /** Query redirection table. */ rss_hash_conf_get_t rss_hash_conf_get;
/** Update redirection table */
reta_update_t reta_update;
/** Query redirection table */
reta_query_t reta_query;
eth_get_reg_t get_reg; /**< Get registers. */ eth_get_reg_t get_reg; /**< Get registers. */
eth_get_eeprom_length_t get_eeprom_length; /**< Get eeprom length. */ eth_get_eeprom_length_t get_eeprom_length; /**< Get eeprom length. */
eth_get_eeprom_t get_eeprom; /**< Get eeprom data. */ eth_get_eeprom_t get_eeprom; /**< Get eeprom data. */
eth_set_eeprom_t set_eeprom; /**< Set eeprom. */ eth_set_eeprom_t set_eeprom; /**< Set eeprom. */
/** Get plugin module eeprom attribute */
eth_get_module_info_t get_module_info; eth_get_module_info_t get_module_info;
/** Get plugin module eeprom attribute. */ /** Get plugin module eeprom data */
eth_get_module_eeprom_t get_module_eeprom; eth_get_module_eeprom_t get_module_eeprom;
/** Get plugin module eeprom data. */
eth_flow_ops_get_t flow_ops_get; /**< Get flow operations. */ eth_flow_ops_get_t flow_ops_get; /**< Get flow operations. */
eth_get_dcb_info get_dcb_info; /** Get DCB information. */ eth_get_dcb_info get_dcb_info; /**< Get DCB information */
/** Turn IEEE1588/802.1AS timestamping on */
eth_timesync_enable_t timesync_enable; eth_timesync_enable_t timesync_enable;
/** Turn IEEE1588/802.1AS timestamping on. */ /** Turn IEEE1588/802.1AS timestamping off */
eth_timesync_disable_t timesync_disable; eth_timesync_disable_t timesync_disable;
/** Turn IEEE1588/802.1AS timestamping off. */ /** Read the IEEE1588/802.1AS Rx timestamp */
eth_timesync_read_rx_timestamp_t timesync_read_rx_timestamp; eth_timesync_read_rx_timestamp_t timesync_read_rx_timestamp;
/** Read the IEEE1588/802.1AS RX timestamp. */ /** Read the IEEE1588/802.1AS Tx timestamp */
eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp; eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp;
/** Read the IEEE1588/802.1AS TX timestamp. */ /** Adjust the device clock */
eth_timesync_adjust_time timesync_adjust_time; /** Adjust the device clock. */ eth_timesync_adjust_time timesync_adjust_time;
eth_timesync_read_time timesync_read_time; /** Get the device clock time. */ /** Get the device clock time */
eth_timesync_write_time timesync_write_time; /** Set the device clock time. */ eth_timesync_read_time timesync_read_time;
/** Set the device clock time */
eth_timesync_write_time timesync_write_time;
eth_read_clock read_clock; eth_read_clock read_clock;
/** Get extended device statistic values by ID */
eth_xstats_get_by_id_t xstats_get_by_id; eth_xstats_get_by_id_t xstats_get_by_id;
/**< Get extended device statistic values by ID. */ /** Get name of extended device statistics by ID */
eth_xstats_get_names_by_id_t xstats_get_names_by_id; eth_xstats_get_names_by_id_t xstats_get_names_by_id;
/**< Get name of extended device statistics by ID. */
/** Get Traffic Management (TM) operations */
eth_tm_ops_get_t tm_ops_get; eth_tm_ops_get_t tm_ops_get;
/**< Get Traffic Management (TM) operations. */
/** Get Traffic Metering and Policing (MTR) operations */
eth_mtr_ops_get_t mtr_ops_get; eth_mtr_ops_get_t mtr_ops_get;
/**< Get Traffic Metering and Policing (MTR) operations. */
/** Test if a port supports specific mempool ops */
eth_pool_ops_supported_t pool_ops_supported; eth_pool_ops_supported_t pool_ops_supported;
/**< Test if a port supports specific mempool ops */
/** Returns the hairpin capabilities */
eth_hairpin_cap_get_t hairpin_cap_get; eth_hairpin_cap_get_t hairpin_cap_get;
/**< Returns the hairpin capabilities. */ /** Set up device Rx hairpin queue */
eth_rx_hairpin_queue_setup_t rx_hairpin_queue_setup; eth_rx_hairpin_queue_setup_t rx_hairpin_queue_setup;
/**< Set up device RX hairpin queue. */ /** Set up device Tx hairpin queue */
eth_tx_hairpin_queue_setup_t tx_hairpin_queue_setup; eth_tx_hairpin_queue_setup_t tx_hairpin_queue_setup;
/**< Set up device TX hairpin queue. */
/** Get Forward Error Correction(FEC) capability */
eth_fec_get_capability_t fec_get_capability; eth_fec_get_capability_t fec_get_capability;
/**< Get Forward Error Correction(FEC) capability. */ /** Get Forward Error Correction(FEC) mode */
eth_fec_get_t fec_get; eth_fec_get_t fec_get;
/**< Get Forward Error Correction(FEC) mode. */ /** Set Forward Error Correction(FEC) mode */
eth_fec_set_t fec_set; eth_fec_set_t fec_set;
/**< Set Forward Error Correction(FEC) mode. */
/** Get hairpin peer ports list */
hairpin_get_peer_ports_t hairpin_get_peer_ports; hairpin_get_peer_ports_t hairpin_get_peer_ports;
/**< Get hairpin peer ports list. */ /** Bind all hairpin Tx queues of device to the peer port Rx queues */
eth_hairpin_bind_t hairpin_bind; eth_hairpin_bind_t hairpin_bind;
/**< Bind all hairpin Tx queues of device to the peer port Rx queues. */ /** Unbind all hairpin Tx queues from the peer port Rx queues */
eth_hairpin_unbind_t hairpin_unbind; eth_hairpin_unbind_t hairpin_unbind;
/**< Unbind all hairpin Tx queues from the peer port Rx queues. */ /** Pass the current queue info and get the peer queue info */
eth_hairpin_queue_peer_update_t hairpin_queue_peer_update; eth_hairpin_queue_peer_update_t hairpin_queue_peer_update;
/**< Pass the current queue info and get the peer queue info. */ /** Set up the connection between the pair of hairpin queues */
eth_hairpin_queue_peer_bind_t hairpin_queue_peer_bind; eth_hairpin_queue_peer_bind_t hairpin_queue_peer_bind;
/**< Set up the connection between the pair of hairpin queues. */ /** Disconnect the hairpin queues of a pair from each other */
eth_hairpin_queue_peer_unbind_t hairpin_queue_peer_unbind; eth_hairpin_queue_peer_unbind_t hairpin_queue_peer_unbind;
/**< Disconnect the hairpin queues of a pair from each other. */
/** Get power monitoring condition for Rx queue */
eth_get_monitor_addr_t get_monitor_addr; eth_get_monitor_addr_t get_monitor_addr;
/**< Get power monitoring condition for Rx queue. */
/** Get representor info */
eth_representor_info_get_t representor_info_get; eth_representor_info_get_t representor_info_get;
/**< Get representor info. */
/** /**
* Negotiate the NIC's ability to deliver specific * Negotiate the NIC's ability to deliver specific

View File

@ -257,24 +257,25 @@ struct rte_eth_stats {
uint64_t opackets; /**< Total number of successfully transmitted packets.*/ uint64_t opackets; /**< Total number of successfully transmitted packets.*/
uint64_t ibytes; /**< Total number of successfully received bytes. */ uint64_t ibytes; /**< Total number of successfully received bytes. */
uint64_t obytes; /**< Total number of successfully transmitted bytes. */ uint64_t obytes; /**< Total number of successfully transmitted bytes. */
uint64_t imissed; /**
/**< Total of RX packets dropped by the HW, * Total of RX packets dropped by the HW,
* because there are no available buffer (i.e. RX queues are full). * because there are no available buffer (i.e. RX queues are full).
*/ */
uint64_t imissed;
uint64_t ierrors; /**< Total number of erroneous received packets. */ uint64_t ierrors; /**< Total number of erroneous received packets. */
uint64_t oerrors; /**< Total number of failed transmitted packets. */ uint64_t oerrors; /**< Total number of failed transmitted packets. */
uint64_t rx_nombuf; /**< Total number of RX mbuf allocation failures. */ uint64_t rx_nombuf; /**< Total number of RX mbuf allocation failures. */
/* Queue stats are limited to max 256 queues */ /* Queue stats are limited to max 256 queues */
/** Total number of queue RX packets. */
uint64_t q_ipackets[RTE_ETHDEV_QUEUE_STAT_CNTRS]; uint64_t q_ipackets[RTE_ETHDEV_QUEUE_STAT_CNTRS];
/**< Total number of queue RX packets. */ /** Total number of queue TX packets. */
uint64_t q_opackets[RTE_ETHDEV_QUEUE_STAT_CNTRS]; uint64_t q_opackets[RTE_ETHDEV_QUEUE_STAT_CNTRS];
/**< Total number of queue TX packets. */ /** Total number of successfully received queue bytes. */
uint64_t q_ibytes[RTE_ETHDEV_QUEUE_STAT_CNTRS]; uint64_t q_ibytes[RTE_ETHDEV_QUEUE_STAT_CNTRS];
/**< Total number of successfully received queue bytes. */ /** Total number of successfully transmitted queue bytes. */
uint64_t q_obytes[RTE_ETHDEV_QUEUE_STAT_CNTRS]; uint64_t q_obytes[RTE_ETHDEV_QUEUE_STAT_CNTRS];
/**< Total number of successfully transmitted queue bytes. */ /** Total number of queue packets received that are dropped. */
uint64_t q_errors[RTE_ETHDEV_QUEUE_STAT_CNTRS]; uint64_t q_errors[RTE_ETHDEV_QUEUE_STAT_CNTRS];
/**< Total number of queue packets received that are dropped. */
}; };
/**@{@name Link speed capabilities /**@{@name Link speed capabilities
@ -500,8 +501,8 @@ struct rte_eth_rss_conf {
#define RTE_ETH_FLOW_IPV6_EX 15 #define RTE_ETH_FLOW_IPV6_EX 15
#define RTE_ETH_FLOW_IPV6_TCP_EX 16 #define RTE_ETH_FLOW_IPV6_TCP_EX 16
#define RTE_ETH_FLOW_IPV6_UDP_EX 17 #define RTE_ETH_FLOW_IPV6_UDP_EX 17
/** Consider device port number as a flow differentiator */
#define RTE_ETH_FLOW_PORT 18 #define RTE_ETH_FLOW_PORT 18
/**< Consider device port number as a flow differentiator */
#define RTE_ETH_FLOW_VXLAN 19 /**< VXLAN protocol based flow */ #define RTE_ETH_FLOW_VXLAN 19 /**< VXLAN protocol based flow */
#define RTE_ETH_FLOW_GENEVE 20 /**< GENEVE protocol based flow */ #define RTE_ETH_FLOW_GENEVE 20 /**< GENEVE protocol based flow */
#define RTE_ETH_FLOW_NVGRE 21 /**< NVGRE protocol based flow */ #define RTE_ETH_FLOW_NVGRE 21 /**< NVGRE protocol based flow */
@ -769,7 +770,7 @@ rte_eth_rss_hf_refine(uint64_t rss_hf)
ETH_RSS_S_VLAN | \ ETH_RSS_S_VLAN | \
ETH_RSS_C_VLAN) ETH_RSS_C_VLAN)
/**< Mask of valid RSS hash protocols */ /** Mask of valid RSS hash protocols */
#define ETH_RSS_PROTO_MASK ( \ #define ETH_RSS_PROTO_MASK ( \
ETH_RSS_IPV4 | \ ETH_RSS_IPV4 | \
ETH_RSS_FRAG_IPV4 | \ ETH_RSS_FRAG_IPV4 | \
@ -852,10 +853,10 @@ rte_eth_rss_hf_refine(uint64_t rss_hf)
* is needed. * is needed.
*/ */
struct rte_eth_rss_reta_entry64 { struct rte_eth_rss_reta_entry64 {
/** Mask bits indicate which entries need to be updated/queried. */
uint64_t mask; uint64_t mask;
/**< Mask bits indicate which entries need to be updated/queried. */ /** Group of 64 redirection table entries. */
uint16_t reta[RTE_RETA_GROUP_SIZE]; uint16_t reta[RTE_RETA_GROUP_SIZE];
/**< Group of 64 redirection table entries. */
}; };
/** /**
@ -921,8 +922,8 @@ struct rte_eth_vmdq_dcb_conf {
uint16_t vlan_id; /**< The vlan id of the received frame */ uint16_t vlan_id; /**< The vlan id of the received frame */
uint64_t pools; /**< Bitmask of pools for packet rx */ uint64_t pools; /**< Bitmask of pools for packet rx */
} pool_map[ETH_VMDQ_MAX_VLAN_FILTERS]; /**< VMDq vlan pool maps. */ } pool_map[ETH_VMDQ_MAX_VLAN_FILTERS]; /**< VMDq vlan pool maps. */
/** Selects a queue in a pool */
uint8_t dcb_tc[ETH_DCB_NUM_USER_PRIORITIES]; uint8_t dcb_tc[ETH_DCB_NUM_USER_PRIORITIES];
/**< Selects a queue in a pool */
}; };
/** /**
@ -970,12 +971,12 @@ struct rte_eth_txmode {
uint16_t pvid; uint16_t pvid;
__extension__ __extension__
uint8_t hw_vlan_reject_tagged : 1, uint8_t /** If set, reject sending out tagged pkts */
/**< If set, reject sending out tagged pkts */ hw_vlan_reject_tagged : 1,
/** If set, reject sending out untagged pkts */
hw_vlan_reject_untagged : 1, hw_vlan_reject_untagged : 1,
/**< If set, reject sending out untagged pkts */ /** If set, enable port based VLAN insertion */
hw_vlan_insert_pvid : 1; hw_vlan_insert_pvid : 1;
/**< If set, enable port based VLAN insertion */
uint64_t reserved_64s[2]; /**< Reserved for future fields */ uint64_t reserved_64s[2]; /**< Reserved for future fields */
void *reserved_ptrs[2]; /**< Reserved for future fields */ void *reserved_ptrs[2]; /**< Reserved for future fields */
@ -1269,8 +1270,8 @@ struct rte_fdir_conf {
/** RX queue of packets matching a "drop" filter in perfect mode. */ /** RX queue of packets matching a "drop" filter in perfect mode. */
uint8_t drop_queue; uint8_t drop_queue;
struct rte_eth_fdir_masks mask; struct rte_eth_fdir_masks mask;
/** Flex payload configuration. */
struct rte_eth_fdir_flex_conf flex_conf; struct rte_eth_fdir_flex_conf flex_conf;
/**< Flex payload configuration. */
}; };
/** /**
@ -1321,20 +1322,20 @@ struct rte_eth_conf {
are defined in implementation of each driver. */ are defined in implementation of each driver. */
struct { struct {
struct rte_eth_rss_conf rss_conf; /**< Port RSS configuration */ struct rte_eth_rss_conf rss_conf; /**< Port RSS configuration */
/** Port vmdq+dcb configuration. */
struct rte_eth_vmdq_dcb_conf vmdq_dcb_conf; struct rte_eth_vmdq_dcb_conf vmdq_dcb_conf;
/**< Port vmdq+dcb configuration. */ /** Port dcb RX configuration. */
struct rte_eth_dcb_rx_conf dcb_rx_conf; struct rte_eth_dcb_rx_conf dcb_rx_conf;
/**< Port dcb RX configuration. */ /** Port vmdq RX configuration. */
struct rte_eth_vmdq_rx_conf vmdq_rx_conf; struct rte_eth_vmdq_rx_conf vmdq_rx_conf;
/**< Port vmdq RX configuration. */
} rx_adv_conf; /**< Port RX filtering configuration. */ } rx_adv_conf; /**< Port RX filtering configuration. */
union { union {
/** Port vmdq+dcb TX configuration. */
struct rte_eth_vmdq_dcb_tx_conf vmdq_dcb_tx_conf; struct rte_eth_vmdq_dcb_tx_conf vmdq_dcb_tx_conf;
/**< Port vmdq+dcb TX configuration. */ /** Port dcb TX configuration. */
struct rte_eth_dcb_tx_conf dcb_tx_conf; struct rte_eth_dcb_tx_conf dcb_tx_conf;
/**< Port dcb TX configuration. */ /** Port vmdq TX configuration. */
struct rte_eth_vmdq_tx_conf vmdq_tx_conf; struct rte_eth_vmdq_tx_conf vmdq_tx_conf;
/**< Port vmdq TX configuration. */
} tx_adv_conf; /**< Port TX DCB configuration (union). */ } tx_adv_conf; /**< Port TX DCB configuration (union). */
/** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC /** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC
is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */ is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */
@ -1401,17 +1402,19 @@ struct rte_eth_conf {
#define DEV_TX_OFFLOAD_IPIP_TNL_TSO 0x00000800 /**< Used for tunneling packet. */ #define DEV_TX_OFFLOAD_IPIP_TNL_TSO 0x00000800 /**< Used for tunneling packet. */
#define DEV_TX_OFFLOAD_GENEVE_TNL_TSO 0x00001000 /**< Used for tunneling packet. */ #define DEV_TX_OFFLOAD_GENEVE_TNL_TSO 0x00001000 /**< Used for tunneling packet. */
#define DEV_TX_OFFLOAD_MACSEC_INSERT 0x00002000 #define DEV_TX_OFFLOAD_MACSEC_INSERT 0x00002000
#define DEV_TX_OFFLOAD_MT_LOCKFREE 0x00004000 /**
/**< Multiple threads can invoke rte_eth_tx_burst() concurrently on the same * Multiple threads can invoke rte_eth_tx_burst() concurrently on the same
* tx queue without SW lock. * tx queue without SW lock.
*/ */
#define DEV_TX_OFFLOAD_MT_LOCKFREE 0x00004000
/** Device supports multi segment send. */
#define DEV_TX_OFFLOAD_MULTI_SEGS 0x00008000 #define DEV_TX_OFFLOAD_MULTI_SEGS 0x00008000
/**< Device supports multi segment send. */ /**
#define DEV_TX_OFFLOAD_MBUF_FAST_FREE 0x00010000 * Device supports optimization for fast release of mbufs.
/**< Device supports optimization for fast release of mbufs. * When set application must guarantee that per-queue all mbufs comes from
* When set application must guarantee that per-queue all mbufs comes from * the same mempool and has refcnt = 1.
* the same mempool and has refcnt = 1.
*/ */
#define DEV_TX_OFFLOAD_MBUF_FAST_FREE 0x00010000
#define DEV_TX_OFFLOAD_SECURITY 0x00020000 #define DEV_TX_OFFLOAD_SECURITY 0x00020000
/** /**
* Device supports generic UDP tunneled packet TSO. * Device supports generic UDP tunneled packet TSO.
@ -1480,14 +1483,14 @@ struct rte_eth_dev_portconf {
struct rte_eth_switch_info { struct rte_eth_switch_info {
const char *name; /**< switch name */ const char *name; /**< switch name */
uint16_t domain_id; /**< switch domain id */ uint16_t domain_id; /**< switch domain id */
uint16_t port_id; /**
/**< * Mapping to the devices physical switch port as enumerated from the
* mapping to the devices physical switch port as enumerated from the
* perspective of the embedded interconnect/switch. For SR-IOV enabled * perspective of the embedded interconnect/switch. For SR-IOV enabled
* device this may correspond to the VF_ID of each virtual function, * device this may correspond to the VF_ID of each virtual function,
* but each driver should explicitly define the mapping of switch * but each driver should explicitly define the mapping of switch
* port identifier to that physical interconnect/switch * port identifier to that physical interconnect/switch
*/ */
uint16_t port_id;
}; };
/** /**
@ -1544,16 +1547,16 @@ struct rte_eth_dev_info {
uint16_t max_vfs; /**< Maximum number of VFs. */ uint16_t max_vfs; /**< Maximum number of VFs. */
uint16_t max_vmdq_pools; /**< Maximum number of VMDq pools. */ uint16_t max_vmdq_pools; /**< Maximum number of VMDq pools. */
struct rte_eth_rxseg_capa rx_seg_capa; /**< Segmentation capability.*/ struct rte_eth_rxseg_capa rx_seg_capa; /**< Segmentation capability.*/
/** All RX offload capabilities including all per-queue ones */
uint64_t rx_offload_capa; uint64_t rx_offload_capa;
/**< All RX offload capabilities including all per-queue ones */ /** All TX offload capabilities including all per-queue ones */
uint64_t tx_offload_capa; uint64_t tx_offload_capa;
/**< All TX offload capabilities including all per-queue ones */ /** Device per-queue RX offload capabilities. */
uint64_t rx_queue_offload_capa; uint64_t rx_queue_offload_capa;
/**< Device per-queue RX offload capabilities. */ /** Device per-queue TX offload capabilities. */
uint64_t tx_queue_offload_capa; uint64_t tx_queue_offload_capa;
/**< Device per-queue TX offload capabilities. */ /** Device redirection table size, the total number of entries. */
uint16_t reta_size; uint16_t reta_size;
/**< Device redirection table size, the total number of entries. */
uint8_t hash_key_size; /**< Hash key size in bytes */ uint8_t hash_key_size; /**< Hash key size in bytes */
/** Bit mask of RSS offloads, the bit offset also means flow type */ /** Bit mask of RSS offloads, the bit offset also means flow type */
uint64_t flow_type_rss_offloads; uint64_t flow_type_rss_offloads;
@ -1741,13 +1744,13 @@ struct rte_eth_fec_capa {
} while (0) } while (0)
/**@{@name L2 tunnel configuration */ /**@{@name L2 tunnel configuration */
/**< l2 tunnel enable mask */ /** L2 tunnel enable mask */
#define ETH_L2_TUNNEL_ENABLE_MASK 0x00000001 #define ETH_L2_TUNNEL_ENABLE_MASK 0x00000001
/**< l2 tunnel insertion mask */ /** L2 tunnel insertion mask */
#define ETH_L2_TUNNEL_INSERTION_MASK 0x00000002 #define ETH_L2_TUNNEL_INSERTION_MASK 0x00000002
/**< l2 tunnel stripping mask */ /** L2 tunnel stripping mask */
#define ETH_L2_TUNNEL_STRIPPING_MASK 0x00000004 #define ETH_L2_TUNNEL_STRIPPING_MASK 0x00000004
/**< l2 tunnel forwarding mask */ /** L2 tunnel forwarding mask */
#define ETH_L2_TUNNEL_FORWARDING_MASK 0x00000008 #define ETH_L2_TUNNEL_FORWARDING_MASK 0x00000008
/**@}*/ /**@}*/
@ -3348,8 +3351,8 @@ struct rte_eth_dev_tx_buffer {
void *error_userdata; void *error_userdata;
uint16_t size; /**< Size of buffer for buffered tx */ uint16_t size; /**< Size of buffer for buffered tx */
uint16_t length; /**< Number of packets in the array */ uint16_t length; /**< Number of packets in the array */
/** Pending packets to be sent on explicit flush or when full */
struct rte_mbuf *pkts[]; struct rte_mbuf *pkts[];
/**< Pending packets to be sent on explicit flush or when full */
}; };
/** /**
@ -3488,16 +3491,16 @@ rte_eth_tx_done_cleanup(uint16_t port_id, uint16_t queue_id, uint32_t free_cnt);
* eth device. * eth device.
*/ */
enum rte_eth_event_ipsec_subtype { enum rte_eth_event_ipsec_subtype {
/** Unknown event type */
RTE_ETH_EVENT_IPSEC_UNKNOWN = 0, RTE_ETH_EVENT_IPSEC_UNKNOWN = 0,
/**< Unknown event type */ /** Sequence number overflow */
RTE_ETH_EVENT_IPSEC_ESN_OVERFLOW, RTE_ETH_EVENT_IPSEC_ESN_OVERFLOW,
/**< Sequence number overflow */ /** Soft time expiry of SA */
RTE_ETH_EVENT_IPSEC_SA_TIME_EXPIRY, RTE_ETH_EVENT_IPSEC_SA_TIME_EXPIRY,
/**< Soft time expiry of SA */ /** Soft byte expiry of SA */
RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY, RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY,
/**< Soft byte expiry of SA */ /** Max value of this enum */
RTE_ETH_EVENT_IPSEC_MAX RTE_ETH_EVENT_IPSEC_MAX
/**< Max value of this enum */
}; };
/** /**
@ -3505,22 +3508,23 @@ enum rte_eth_event_ipsec_subtype {
* information of the IPsec offload event. * information of the IPsec offload event.
*/ */
struct rte_eth_event_ipsec_desc { struct rte_eth_event_ipsec_desc {
/** Type of RTE_ETH_EVENT_IPSEC_* event */
enum rte_eth_event_ipsec_subtype subtype; enum rte_eth_event_ipsec_subtype subtype;
/**< Type of RTE_ETH_EVENT_IPSEC_* event */ /**
* Event specific metadata.
*
* For the following events, *userdata* registered
* with the *rte_security_session* would be returned
* as metadata,
*
* - @ref RTE_ETH_EVENT_IPSEC_ESN_OVERFLOW
* - @ref RTE_ETH_EVENT_IPSEC_SA_TIME_EXPIRY
* - @ref RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY
*
* @see struct rte_security_session_conf
*
*/
uint64_t metadata; uint64_t metadata;
/**< Event specific metadata
*
* For the following events, *userdata* registered
* with the *rte_security_session* would be returned
* as metadata,
*
* - @ref RTE_ETH_EVENT_IPSEC_ESN_OVERFLOW
* - @ref RTE_ETH_EVENT_IPSEC_SA_TIME_EXPIRY
* - @ref RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY
*
* @see struct rte_security_session_conf
*
*/
}; };
/** /**
@ -3529,10 +3533,10 @@ struct rte_eth_event_ipsec_desc {
enum rte_eth_event_type { enum rte_eth_event_type {
RTE_ETH_EVENT_UNKNOWN, /**< unknown event type */ RTE_ETH_EVENT_UNKNOWN, /**< unknown event type */
RTE_ETH_EVENT_INTR_LSC, /**< lsc interrupt event */ RTE_ETH_EVENT_INTR_LSC, /**< lsc interrupt event */
/** queue state event (enabled/disabled) */
RTE_ETH_EVENT_QUEUE_STATE, RTE_ETH_EVENT_QUEUE_STATE,
/**< queue state event (enabled/disabled) */ /** reset interrupt event, sent to VF on PF reset */
RTE_ETH_EVENT_INTR_RESET, RTE_ETH_EVENT_INTR_RESET,
/**< reset interrupt event, sent to VF on PF reset */
RTE_ETH_EVENT_VF_MBOX, /**< message from the VF received by PF */ RTE_ETH_EVENT_VF_MBOX, /**< message from the VF received by PF */
RTE_ETH_EVENT_MACSEC, /**< MACsec offload related event */ RTE_ETH_EVENT_MACSEC, /**< MACsec offload related event */
RTE_ETH_EVENT_INTR_RMV, /**< device removal event */ RTE_ETH_EVENT_INTR_RMV, /**< device removal event */
@ -3543,9 +3547,9 @@ enum rte_eth_event_type {
RTE_ETH_EVENT_MAX /**< max value of this enum */ RTE_ETH_EVENT_MAX /**< max value of this enum */
}; };
/** User application callback to be registered for interrupts. */
typedef int (*rte_eth_dev_cb_fn)(uint16_t port_id, typedef int (*rte_eth_dev_cb_fn)(uint16_t port_id,
enum rte_eth_event_type event, void *cb_arg, void *ret_param); enum rte_eth_event_type event, void *cb_arg, void *ret_param);
/**< user application callback to be registered for interrupts */
/** /**
* Register a callback function for port event. * Register a callback function for port event.

View File

@ -25,30 +25,36 @@ RTE_TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback);
struct rte_eth_dev; struct rte_eth_dev;
/**
* @internal Retrieve input packets from a receive queue of an Ethernet device.
*/
typedef uint16_t (*eth_rx_burst_t)(void *rxq, typedef uint16_t (*eth_rx_burst_t)(void *rxq,
struct rte_mbuf **rx_pkts, struct rte_mbuf **rx_pkts,
uint16_t nb_pkts); uint16_t nb_pkts);
/**< @internal Retrieve input packets from a receive queue of an Ethernet device. */
/**
* @internal Send output packets on a transmit queue of an Ethernet device.
*/
typedef uint16_t (*eth_tx_burst_t)(void *txq, typedef uint16_t (*eth_tx_burst_t)(void *txq,
struct rte_mbuf **tx_pkts, struct rte_mbuf **tx_pkts,
uint16_t nb_pkts); uint16_t nb_pkts);
/**< @internal Send output packets on a transmit queue of an Ethernet device. */
/**
* @internal Prepare output packets on a transmit queue of an Ethernet device.
*/
typedef uint16_t (*eth_tx_prep_t)(void *txq, typedef uint16_t (*eth_tx_prep_t)(void *txq,
struct rte_mbuf **tx_pkts, struct rte_mbuf **tx_pkts,
uint16_t nb_pkts); uint16_t nb_pkts);
/**< @internal Prepare output packets on a transmit queue of an Ethernet device. */
/** @internal Get number of used descriptors on a receive queue. */
typedef uint32_t (*eth_rx_queue_count_t)(void *rxq); typedef uint32_t (*eth_rx_queue_count_t)(void *rxq);
/**< @internal Get number of used descriptors on a receive queue. */
/** @internal Check the status of a Rx descriptor */
typedef int (*eth_rx_descriptor_status_t)(void *rxq, uint16_t offset); typedef int (*eth_rx_descriptor_status_t)(void *rxq, uint16_t offset);
/**< @internal Check the status of a Rx descriptor */
/** @internal Check the status of a Tx descriptor */
typedef int (*eth_tx_descriptor_status_t)(void *txq, uint16_t offset); typedef int (*eth_tx_descriptor_status_t)(void *txq, uint16_t offset);
/**< @internal Check the status of a Tx descriptor */
/** /**
* @internal * @internal

View File

@ -901,8 +901,8 @@ struct rte_flow_item_vlan {
}; };
struct rte_vlan_hdr hdr; struct rte_vlan_hdr hdr;
}; };
/** Packet header contains at least one more VLAN, after this VLAN. */
uint32_t has_more_vlan:1; uint32_t has_more_vlan:1;
/**< Packet header contains at least one more VLAN, after this VLAN. */
uint32_t reserved:31; /**< Reserved, must be zero. */ uint32_t reserved:31; /**< Reserved, must be zero. */
}; };
@ -944,26 +944,26 @@ static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask = {
*/ */
struct rte_flow_item_ipv6 { struct rte_flow_item_ipv6 {
struct rte_ipv6_hdr hdr; /**< IPv6 header definition. */ struct rte_ipv6_hdr hdr; /**< IPv6 header definition. */
/** Header contains Hop-by-Hop Options extension header. */
uint32_t has_hop_ext:1; uint32_t has_hop_ext:1;
/**< Header contains Hop-by-Hop Options extension header. */ /** Header contains Routing extension header. */
uint32_t has_route_ext:1; uint32_t has_route_ext:1;
/**< Header contains Routing extension header. */ /** Header contains Fragment extension header. */
uint32_t has_frag_ext:1; uint32_t has_frag_ext:1;
/**< Header contains Fragment extension header. */ /** Header contains Authentication extension header. */
uint32_t has_auth_ext:1; uint32_t has_auth_ext:1;
/**< Header contains Authentication extension header. */ /** Header contains Encapsulation Security Payload extension header. */
uint32_t has_esp_ext:1; uint32_t has_esp_ext:1;
/**< Header contains Encapsulation Security Payload extension header. */ /** Header contains Destination Options extension header. */
uint32_t has_dest_ext:1; uint32_t has_dest_ext:1;
/**< Header contains Destination Options extension header. */ /** Header contains Mobility extension header. */
uint32_t has_mobil_ext:1; uint32_t has_mobil_ext:1;
/**< Header contains Mobility extension header. */ /** Header contains Host Identity Protocol extension header. */
uint32_t has_hip_ext:1; uint32_t has_hip_ext:1;
/**< Header contains Host Identity Protocol extension header. */ /** Header contains Shim6 Protocol extension header. */
uint32_t has_shim6_ext:1; uint32_t has_shim6_ext:1;
/**< Header contains Shim6 Protocol extension header. */ /** Reserved for future extension headers, must be zero. */
uint32_t reserved:23; uint32_t reserved:23;
/**< Reserved for future extension headers, must be zero. */
}; };
/** Default mask for RTE_FLOW_ITEM_TYPE_IPV6. */ /** Default mask for RTE_FLOW_ITEM_TYPE_IPV6. */
@ -2777,8 +2777,8 @@ struct rte_flow_action_queue {
struct rte_flow_action_age { struct rte_flow_action_age {
uint32_t timeout:24; /**< Time in seconds. */ uint32_t timeout:24; /**< Time in seconds. */
uint32_t reserved:8; /**< Reserved, must be zero. */ uint32_t reserved:8; /**< Reserved, must be zero. */
/** The user flow context, NULL means the rte_flow pointer. */
void *context; void *context;
/**< The user flow context, NULL means the rte_flow pointer. */
}; };
/** /**
@ -2790,8 +2790,8 @@ struct rte_flow_action_age {
struct rte_flow_query_age { struct rte_flow_query_age {
uint32_t reserved:6; /**< Reserved, must be zero. */ uint32_t reserved:6; /**< Reserved, must be zero. */
uint32_t aged:1; /**< 1 if aging timeout expired, 0 otherwise. */ uint32_t aged:1; /**< 1 if aging timeout expired, 0 otherwise. */
/** sec_since_last_hit value is valid. */
uint32_t sec_since_last_hit_valid:1; uint32_t sec_since_last_hit_valid:1;
/**< sec_since_last_hit value is valid. */
uint32_t sec_since_last_hit:24; /**< Seconds since last traffic hit. */ uint32_t sec_since_last_hit:24; /**< Seconds since last traffic hit. */
}; };
@ -3422,7 +3422,7 @@ struct rte_flow_action_conntrack {
uint32_t last_direction:1; uint32_t last_direction:1;
/** No TCP check will be done except the state change. */ /** No TCP check will be done except the state change. */
uint32_t liberal_mode:1; uint32_t liberal_mode:1;
/**<The current state of this connection. */ /** The current state of this connection. */
enum rte_flow_conntrack_state state; enum rte_flow_conntrack_state state;
/** Scaling factor for maximal allowed ACK window. */ /** Scaling factor for maximal allowed ACK window. */
uint8_t max_ack_window; uint8_t max_ack_window;
@ -3535,9 +3535,9 @@ struct rte_flow_action_modify_data {
RTE_STD_C11 RTE_STD_C11
union { union {
struct { struct {
/**< Encapsulation level or tag index. */ /** Encapsulation level or tag index. */
uint32_t level; uint32_t level;
/**< Number of bits to skip from a field. */ /** Number of bits to skip from a field. */
uint32_t offset; uint32_t offset;
}; };
/** /**
@ -3648,8 +3648,8 @@ struct rte_flow;
*/ */
struct rte_flow_action_sample { struct rte_flow_action_sample {
uint32_t ratio; /**< packets sampled equals to '1/ratio'. */ uint32_t ratio; /**< packets sampled equals to '1/ratio'. */
/** sub-action list specific for the sampling hit cases. */
const struct rte_flow_action *actions; const struct rte_flow_action *actions;
/**< sub-action list specific for the sampling hit cases. */
}; };
/** /**
@ -4281,10 +4281,10 @@ struct rte_flow_indir_action_conf {
* Action should be valid at least for one flow direction, * Action should be valid at least for one flow direction,
* otherwise it is invalid for both ingress and egress rules. * otherwise it is invalid for both ingress and egress rules.
*/ */
/** Action valid for rules applied to ingress traffic. */
uint32_t ingress:1; uint32_t ingress:1;
/**< Action valid for rules applied to ingress traffic. */ /** Action valid for rules applied to egress traffic. */
uint32_t egress:1; uint32_t egress:1;
/**< Action valid for rules applied to egress traffic. */
/** /**
* When set to 1, indicates that the action is valid for * When set to 1, indicates that the action is valid for
* transfer traffic; otherwise, for non-transfer traffic. * transfer traffic; otherwise, for non-transfer traffic.

View File

@ -25,91 +25,91 @@
extern "C" { extern "C" {
#endif #endif
/** @internal MTR capabilities get. */
typedef int (*rte_mtr_capabilities_get_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_capabilities_get_t)(struct rte_eth_dev *dev,
struct rte_mtr_capabilities *cap, struct rte_mtr_capabilities *cap,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR capabilities get */
/** @internal MTR meter profile add. */
typedef int (*rte_mtr_meter_profile_add_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_profile_add_t)(struct rte_eth_dev *dev,
uint32_t meter_profile_id, uint32_t meter_profile_id,
struct rte_mtr_meter_profile *profile, struct rte_mtr_meter_profile *profile,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR meter profile add */
/** @internal MTR meter profile delete. */
typedef int (*rte_mtr_meter_profile_delete_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_profile_delete_t)(struct rte_eth_dev *dev,
uint32_t meter_profile_id, uint32_t meter_profile_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR meter profile delete */
/** @internal MTR meter policy validate. */
typedef int (*rte_mtr_meter_policy_validate_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_policy_validate_t)(struct rte_eth_dev *dev,
struct rte_mtr_meter_policy_params *policy, struct rte_mtr_meter_policy_params *policy,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR meter policy validate */
/** @internal MTR meter policy add. */
typedef int (*rte_mtr_meter_policy_add_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_policy_add_t)(struct rte_eth_dev *dev,
uint32_t policy_id, uint32_t policy_id,
struct rte_mtr_meter_policy_params *policy, struct rte_mtr_meter_policy_params *policy,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR meter policy add */
/** @internal MTR meter policy delete. */
typedef int (*rte_mtr_meter_policy_delete_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_policy_delete_t)(struct rte_eth_dev *dev,
uint32_t policy_id, uint32_t policy_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR meter policy delete */
/** @internal MTR object create. */
typedef int (*rte_mtr_create_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_create_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
struct rte_mtr_params *params, struct rte_mtr_params *params,
int shared, int shared,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object create */
/** @internal MTR object destroy. */
typedef int (*rte_mtr_destroy_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_destroy_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object destroy */
/** @internal MTR object meter enable. */
typedef int (*rte_mtr_meter_enable_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_enable_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object meter enable */
/** @internal MTR object meter disable. */
typedef int (*rte_mtr_meter_disable_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_disable_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object meter disable */
/** @internal MTR object meter profile update. */
typedef int (*rte_mtr_meter_profile_update_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_profile_update_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
uint32_t meter_profile_id, uint32_t meter_profile_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object meter profile update */
/** @internal MTR object meter policy update. */
typedef int (*rte_mtr_meter_policy_update_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_policy_update_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
uint32_t meter_policy_id, uint32_t meter_policy_id,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object meter policy update */
/** @internal MTR object meter DSCP table update. */
typedef int (*rte_mtr_meter_dscp_table_update_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_meter_dscp_table_update_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
enum rte_color *dscp_table, enum rte_color *dscp_table,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object meter DSCP table update */
/** @internal MTR object enabled stats update. */
typedef int (*rte_mtr_stats_update_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_stats_update_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
uint64_t stats_mask, uint64_t stats_mask,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object enabled stats update */
/** @internal MTR object stats read. */
typedef int (*rte_mtr_stats_read_t)(struct rte_eth_dev *dev, typedef int (*rte_mtr_stats_read_t)(struct rte_eth_dev *dev,
uint32_t mtr_id, uint32_t mtr_id,
struct rte_mtr_stats *stats, struct rte_mtr_stats *stats,
uint64_t *stats_mask, uint64_t *stats_mask,
int clear, int clear,
struct rte_mtr_error *error); struct rte_mtr_error *error);
/**< @internal MTR object stats read */
struct rte_mtr_ops { struct rte_mtr_ops {
/** MTR capabilities get */ /** MTR capabilities get */