diff --git a/lib/nvme/nvme_impl.h b/lib/nvme/nvme_impl.h index 0ccaf2284..f35ae68f0 100644 --- a/lib/nvme/nvme_impl.h +++ b/lib/nvme/nvme_impl.h @@ -55,6 +55,7 @@ #include #include #include +#include #ifdef SPDK_CONFIG_PCIACCESS #include @@ -239,11 +240,18 @@ nvme_pcicfg_get_bar_addr_len(void *devhandle, uint32_t bar, uint64_t *addr, uint *size = (uint64_t)dev->mem_resource[bar].len; } -/* - * TODO: once DPDK supports matching class code instead of device ID, switch to SPDK_PCI_CLASS_NVME - */ static struct rte_pci_id nvme_pci_driver_id[] = { +#if RTE_VERSION >= RTE_VERSION_NUM(16, 7, 0, 1) + { + .class_id = SPDK_PCI_CLASS_NVME, + .vendor_id = PCI_ANY_ID, + .device_id = PCI_ANY_ID, + .subsystem_vendor_id = PCI_ANY_ID, + .subsystem_device_id = PCI_ANY_ID, + }, +#else {RTE_PCI_DEVICE(0x8086, 0x0953)}, +#endif { .vendor_id = 0, /* sentinel */ }, };