diff options
author | Stephen Hemminger <stephen@networkplumber.org> | 2018-10-11 17:04:13 -0700 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-10-15 11:29:17 +0000 |
commit | 3901a038edf47a35665c57961e6620efdd01dbbd (patch) | |
tree | 080e2cfd4a3390c37551b05cb46242191003ac04 /src/plugins/dpdk/device/format.c | |
parent | 59a829533c1345945dc1b6decc3afe29494e85cd (diff) |
dpdk: only look at PCI information on PCI devices
The rte_device is use as a base type of all DPDK devices.
It is not valid to use container_of to find PCI information
unless the bus of the rte_device is pci. Otherwise, the
pointer is looking at some other data, which may or may not
be zero.
This change introduces a helper function to get rte_pci_device
pointer. If device is on PCI bus it returns pointer to
rte_pci_device info, otherwise it returns NULL.
Change-Id: Ia7446006bb93a7a54844969f3b3dd3b918890dfd
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Diffstat (limited to 'src/plugins/dpdk/device/format.c')
-rw-r--r-- | src/plugins/dpdk/device/format.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index a5c8daaa3d2..28e8f0a445c 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -273,9 +273,9 @@ format_dpdk_device_name (u8 * s, va_list * args) } rte_eth_dev_info_get (i, &dev_info); - pci_dev = RTE_DEV_TO_PCI (dev_info.device); + pci_dev = dpdk_get_pci_device (&dev_info); - if (pci_dev && dm->devices[i].port_type != VNET_DPDK_PORT_TYPE_FAILSAFE) + if (pci_dev) ret = format (s, devname_format, device_name, pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function); else @@ -575,7 +575,8 @@ format_dpdk_device (u8 * s, va_list * args) retval = rte_eth_dev_rss_hash_conf_get (xd->port_id, &rss_conf); if (retval < 0) clib_warning ("rte_eth_dev_rss_hash_conf_get returned %d", retval); - pci = RTE_DEV_TO_PCI (di.device); + + pci = dpdk_get_pci_device (&di); if (pci) { |