gpt4 book ai didi

c - 如何从 dpdk 18.08 中的 rte_device 获取 rte_pci_device 详细信息

转载 作者:行者123 更新时间:2023-11-30 16:23:16 26 4
gpt4 key购买 nike

我想将与每个端口关联的检测到的设备信息( struct rte_eth_dev_info dev_info 类型的 dev_info )与配置的 pci 设备地址详细信息( struct rte_pci_addr pciaddr 类型)进行比较。

 for (port = 0; port < nb_sys_ports; port++) {
rte_eth_dev_info_get(port, &dev_info);
}

但是在struct struct rte_eth_dev_info中,字段rte_pci_device *pci_dev已被字段struct rte_device *device替换。那么如何从rte_device获取rte_pci_device详细信息。

最佳答案

DPDK现在支持非PCI总线,所以有点复杂。但例子仍然很少。这是 Ethtool 的片段:

struct rte_pci_device *pci_dev;

rte_eth_dev_info_get(port_id, &dev_info);

if (dev_info.device)
bus = rte_bus_find_by_device(dev_info.device);
if (bus && !strcmp(bus->name, "pci")) {
pci_dev = RTE_DEV_TO_PCI(dev_info.device);
snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info),
"%04x:%02x:%02x.%x",
pci_dev->addr.domain, pci_dev->addr.bus,
pci_dev->addr.devid, pci_dev->addr.function);
}

基本上我们得到了DPDK端口的总线。如果是 PCI,则可以安全地使用 RTE_DEV_TO_PCI() 宏。该宏返回一个指向 struct rte_pci_device 的指针,其中包含 PCI 地址。

关于c - 如何从 dpdk 18.08 中的 rte_device 获取 rte_pci_device 详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54049208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com