X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fconfig.c;h=dd051f5ca4b80a4b0433f826641772daa91f448a;hb=cd8c7c7ce241d2ea7c059a9df07caa9411ef19ed;hp=4bb255c6229cf4c9a3aa2bdab4ece09ffdb80ca3;hpb=e4031ced5a3d6afc028ab8551d80d60351c3a180;p=dpdk.git diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 4bb255c622..dd051f5ca4 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -754,6 +754,8 @@ vlan_id_is_invalid(uint16_t vlan_id) static int port_reg_off_is_invalid(portid_t port_id, uint32_t reg_off) { + const struct rte_pci_device *pci_dev; + const struct rte_bus *bus; uint64_t pci_len; if (reg_off & 0x3) { @@ -762,7 +764,21 @@ port_reg_off_is_invalid(portid_t port_id, uint32_t reg_off) (unsigned)reg_off); return 1; } - pci_len = ports[port_id].dev_info.pci_dev->mem_resource[0].len; + + if (!ports[port_id].dev_info.device) { + printf("Invalid device\n"); + return 0; + } + + bus = rte_bus_find_by_device(ports[port_id].dev_info.device); + if (bus && !strcmp(bus->name, "pci")) { + pci_dev = RTE_DEV_TO_PCI(ports[port_id].dev_info.device); + } else { + printf("Not a PCI device\n"); + return 1; + } + + pci_len = pci_dev->mem_resource[0].len; if (reg_off >= pci_len) { printf("Port %d: register offset %u (0x%X) out of port PCI " "resource (length=%"PRIu64")\n",