簡體   English   中英

如何從dpdk 18.08中的rte_device獲取rte_pci_device詳細信息

[英]How do I obtain rte_pci_device details from rte_device in dpdk 18.08

我想將檢測到的與每個端口關聯的設備信息(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地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM