rte_eth_dev_info_get函数是DPDK中用于获取网络设备信息的函数。该函数的作用是填充rte_eth_dev_info结构体,以便应用程序可以查询和使用设备的相关信息。
函数原型:
int rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info);
参数说明:
- port_id:端口ID,表示要获取信息的网络接口的编号,范围为[0, RTE_MAX_ETHPORTS - 1]。
- dev_info:指向rte_eth_dev_info结构体的指针,用于存储设备的相关信息。
返回值:
- 返回0表示成功,否则表示失败。
rte_eth_dev_info结构体定义如下:
struct rte_eth_dev_info {
char driver_name[RTE_ETH_NAME_MAX_LEN]; /* 驱动名字 */
uint32_t if_index; /* 接口索引 */
uint64_t dev_flags; /* 设备标志 */
struct rte_pci_device *pci_dev; /* PCI设备信息 */
struct rte_device *device; /* 设备信息 */
struct ether_addr perm_addr; /* 永久MAC地址 */
struct ether_addr addr; /* MAC地址 */
struct ether_addr vmdq_mac_addr[RTE_MAX_QUEUES_PER_PORT]; /* VMDq地址 */
uint32_t max_rx_pktlen; /* 最大接收包长度 */
uint16_t max_rx_queues; /* 最大接收队列数 */
uint16_t max_tx_queues; /* 最大发送队列数 */
uint32_t max_mac_addrs; /* 最大MAC地址数 */
uint32_t max_hash_mac_addrs; /* MAC哈希表项数目 */
uint32_t max_vfs; /* 最大虚拟化功能数 */
uint32_t rx_offload_capa; /* 接收卸载能力 */
uint32_t tx_offload_capa; /* 发送卸载能力 */
uint64_t speed_capa; /* 速率属性 */
struct rte_eth_rxconf default_rxconf; /* 默认接收配置 */
struct rte_eth_txconf default_txconf; /* 默认发送配置 */
const uint32_t *rx_queue_offload_capa; /* 接收队列卸载能力 */
const uint32_t *tx_queue_offload_capa; /* 发送队列卸载能力 */
uint16_t reta_size; /* RETA表大小 */
uint32_t hash_key_size; /* 哈希键值大小 */
uint32_t flow_type_rss_offloads; /* RSS流类型卸载 */
uint32_t switch_info; /* 快速路径信息 */
};
rte_eth_dev_info结构体中各字段的含义如下:
- driver_name:网络设备驱动名称。
- if_index:网络接口索引。
- dev_flags:设备标志位,用于描述设备的属性和能力。
- pci_dev:指向PCI设备信息的指针。
- device:指向设备信息的指针。
- perm_addr:永久MAC地址。
- addr:动态MAC地址。
- vmdq_mac_addr:VMDq地址。
- max_rx_pktlen:最大接收数据包长度。
- max_rx_queues:最大接收队列数。
- max_tx_queues:最大发送队列数。
- max_mac_addrs:最大MAC地址数目。
- max_hash_mac_addrs:MAC哈希表项数目。
- max_vfs:虚拟化功能数。
- rx_offload_capa:接收卸载能力。
- tx_offload_capa:发送卸载能力。
- speed_capa:速率属性。
- default_rxconf:默认接收配置。
- default_txconf:默认发送配置。
- rx_queue_offload_capa:接收队列卸载能力。
- tx_queue_offload_capa:发送队列卸载能力。
- reta_size:RETA表大小。
- hash_key_size:哈希键值大小。
- flow_type_rss_offloads:RSS流类型卸载。
- switch_info:快速路径信息。
使用rte_eth_dev_info_get函数可以获取网络设备的驱动名称、MAC地址、最大队列数等信息,应用程序可以根据这些信息对网络接口进行合适的配置和管理。