diff --git a/include/spdk/env.h b/include/spdk/env.h index 6c0fec9e6..0eeb07a94 100644 --- a/include/spdk/env.h +++ b/include/spdk/env.h @@ -159,6 +159,13 @@ struct spdk_pci_addr { uint8_t func; }; +struct spdk_pci_id { + uint16_t vendor_id; + uint16_t device_id; + uint16_t subvendor_id; + uint16_t subdevice_id; +}; + typedef int (*spdk_pci_enum_cb)(void *enum_ctx, struct spdk_pci_device *pci_dev); int spdk_pci_enumerate(enum spdk_pci_device_type type, @@ -180,6 +187,9 @@ uint16_t spdk_pci_device_get_vendor_id(struct spdk_pci_device *dev); uint16_t spdk_pci_device_get_device_id(struct spdk_pci_device *dev); uint16_t spdk_pci_device_get_subvendor_id(struct spdk_pci_device *dev); uint16_t spdk_pci_device_get_subdevice_id(struct spdk_pci_device *dev); + +struct spdk_pci_id spdk_pci_device_get_id(struct spdk_pci_device *dev); + uint32_t spdk_pci_device_get_class(struct spdk_pci_device *dev); const char *spdk_pci_device_get_device_name(struct spdk_pci_device *dev); int spdk_pci_device_get_serial_number(struct spdk_pci_device *dev, char *sn, size_t len); diff --git a/lib/env/pci.c b/lib/env/pci.c index 24ed24264..fd3ee3052 100644 --- a/lib/env/pci.c +++ b/lib/env/pci.c @@ -299,6 +299,19 @@ spdk_pci_device_get_subdevice_id(struct spdk_pci_device *dev) return dev->id.subsystem_device_id; } +struct spdk_pci_id +spdk_pci_device_get_id(struct spdk_pci_device *pci_dev) +{ + struct spdk_pci_id pci_id; + + pci_id.vendor_id = spdk_pci_device_get_vendor_id(pci_dev); + pci_id.device_id = spdk_pci_device_get_device_id(pci_dev); + pci_id.subvendor_id = spdk_pci_device_get_subvendor_id(pci_dev); + pci_id.subdevice_id = spdk_pci_device_get_subdevice_id(pci_dev); + + return pci_id; +} + uint32_t spdk_pci_device_get_class(struct spdk_pci_device *dev) { diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 358e9adbd..5ed4e620c 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -163,7 +163,7 @@ static void nvme_ctrlr_construct_intel_support_log_page_list(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_intel_log_page_directory *log_page_directory) { - struct pci_id pci_id; + struct spdk_pci_id pci_id; if (log_page_directory == NULL) { return; @@ -995,7 +995,7 @@ nvme_mutex_init_recursive_shared(pthread_mutex_t *mtx) int nvme_ctrlr_construct(struct spdk_nvme_ctrlr *ctrlr) { - struct pci_id pci_id; + struct spdk_pci_id pci_id; nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_INIT, NVME_TIMEOUT_INFINITE); ctrlr->flags = 0; diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 32aaeb6f0..d8fbaa688 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -207,20 +207,13 @@ struct nvme_request { void *user_buffer; }; -struct pci_id { - uint16_t vendor_id; - uint16_t dev_id; - uint16_t sub_vendor_id; - uint16_t sub_dev_id; -}; - struct spdk_nvme_transport { struct spdk_nvme_ctrlr *(*ctrlr_construct)(void *devhandle); void (*ctrlr_destruct)(struct spdk_nvme_ctrlr *ctrlr); int (*ctrlr_enable)(struct spdk_nvme_ctrlr *ctrlr); - int (*ctrlr_get_pci_id)(struct spdk_nvme_ctrlr *ctrlr, struct pci_id *pci_id); + int (*ctrlr_get_pci_id)(struct spdk_nvme_ctrlr *ctrlr, struct spdk_pci_id *pci_id); int (*ctrlr_set_reg_4)(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint32_t value); int (*ctrlr_set_reg_8)(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint64_t value); @@ -514,7 +507,7 @@ struct nvme_request *nvme_allocate_request_user_copy(void *buffer, uint32_t payl spdk_nvme_cmd_cb cb_fn, void *cb_arg, bool host_to_controller); void nvme_free_request(struct nvme_request *req); void nvme_request_remove_child(struct nvme_request *parent, struct nvme_request *child); -uint64_t nvme_get_quirks(const struct pci_id *id); +uint64_t nvme_get_quirks(const struct spdk_pci_id *id); void spdk_nvme_ctrlr_opts_set_defaults(struct spdk_nvme_ctrlr_opts *opts); diff --git a/lib/nvme/nvme_ns.c b/lib/nvme/nvme_ns.c index d4b1cb0a9..240c74414 100644 --- a/lib/nvme/nvme_ns.c +++ b/lib/nvme/nvme_ns.c @@ -183,7 +183,7 @@ spdk_nvme_ns_get_data(struct spdk_nvme_ns *ns) int nvme_ns_construct(struct spdk_nvme_ns *ns, uint16_t id, struct spdk_nvme_ctrlr *ctrlr) { - struct pci_id pci_id; + struct spdk_pci_id pci_id; assert(id > 0); @@ -193,7 +193,7 @@ int nvme_ns_construct(struct spdk_nvme_ns *ns, uint16_t id, if (ctrlr->transport->ctrlr_get_pci_id(ctrlr, &pci_id) == 0) { if (pci_id.vendor_id == SPDK_PCI_VID_INTEL && - pci_id.dev_id == INTEL_DC_P3X00_DEVID && + pci_id.device_id == INTEL_DC_P3X00_DEVID && ctrlr->cdata.vs[3] != 0) { ns->stripe_size = (1 << ctrlr->cdata.vs[3]) * ctrlr->min_page_size; } diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index a0a74684e..c28ed6b3f 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -178,7 +178,7 @@ nvme_pcie_qpair(struct spdk_nvme_qpair *qpair) } static int -nvme_pcie_ctrlr_get_pci_id(struct spdk_nvme_ctrlr *ctrlr, struct pci_id *pci_id) +nvme_pcie_ctrlr_get_pci_id(struct spdk_nvme_ctrlr *ctrlr, struct spdk_pci_id *pci_id) { struct spdk_pci_device *pci_dev; @@ -188,10 +188,7 @@ nvme_pcie_ctrlr_get_pci_id(struct spdk_nvme_ctrlr *ctrlr, struct pci_id *pci_id) pci_dev = ctrlr->devhandle; assert(pci_dev != NULL); - pci_id->vendor_id = spdk_pci_device_get_vendor_id(pci_dev); - pci_id->dev_id = spdk_pci_device_get_device_id(pci_dev); - pci_id->sub_vendor_id = spdk_pci_device_get_subvendor_id(pci_dev); - pci_id->sub_dev_id = spdk_pci_device_get_subdevice_id(pci_dev); + *pci_id = spdk_pci_device_get_id(pci_dev); return 0; } diff --git a/lib/nvme/nvme_quirks.c b/lib/nvme/nvme_quirks.c index 7b6d05000..9f8954976 100644 --- a/lib/nvme/nvme_quirks.c +++ b/lib/nvme/nvme_quirks.c @@ -34,8 +34,8 @@ #include "nvme_internal.h" struct nvme_quirk { - struct pci_id id; - uint64_t flags; + struct spdk_pci_id id; + uint64_t flags; }; static const struct nvme_quirk nvme_quirks[] = { @@ -51,19 +51,19 @@ static const struct nvme_quirk nvme_quirks[] = { /* Compare each field. SPDK_PCI_ANY_ID in s1 matches everything */ static bool -pci_id_match(const struct pci_id *s1, const struct pci_id *s2) +pci_id_match(const struct spdk_pci_id *s1, const struct spdk_pci_id *s2) { if ((s1->vendor_id == SPDK_PCI_ANY_ID || s1->vendor_id == s2->vendor_id) && - (s1->dev_id == SPDK_PCI_ANY_ID || s1->dev_id == s2->dev_id) && - (s1->sub_vendor_id == SPDK_PCI_ANY_ID || s1->sub_vendor_id == s2->sub_vendor_id) && - (s1->sub_dev_id == SPDK_PCI_ANY_ID || s1->sub_dev_id == s2->sub_dev_id)) { + (s1->device_id == SPDK_PCI_ANY_ID || s1->device_id == s2->device_id) && + (s1->subvendor_id == SPDK_PCI_ANY_ID || s1->subvendor_id == s2->subvendor_id) && + (s1->subdevice_id == SPDK_PCI_ANY_ID || s1->subdevice_id == s2->subdevice_id)) { return true; } return false; } uint64_t -nvme_get_quirks(const struct pci_id *id) +nvme_get_quirks(const struct spdk_pci_id *id) { const struct nvme_quirk *quirk = nvme_quirks; diff --git a/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c b/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c index bd4b73f5c..4cdbc9949 100644 --- a/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c +++ b/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c @@ -74,16 +74,16 @@ ut_ctrlr_enable(struct spdk_nvme_ctrlr *ctrlr) } static int -ut_ctrlr_get_pci_id(struct spdk_nvme_ctrlr *ctrlr, struct pci_id *pci_id) +ut_ctrlr_get_pci_id(struct spdk_nvme_ctrlr *ctrlr, struct spdk_pci_id *pci_id) { if (ctrlr == NULL || pci_id == NULL) { return -EINVAL; } pci_id->vendor_id = g_pci_vendor_id; - pci_id->dev_id = g_pci_device_id; - pci_id->sub_vendor_id = g_pci_subvendor_id; - pci_id->sub_dev_id = g_pci_subdevice_id; + pci_id->device_id = g_pci_device_id; + pci_id->subvendor_id = g_pci_subvendor_id; + pci_id->subdevice_id = g_pci_subdevice_id; return 0; } @@ -1156,7 +1156,7 @@ test_nvme_ctrlr_construct_intel_support_log_page_list(void) bool res; struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_intel_log_page_directory payload = {}; - struct pci_id pci_id; + struct spdk_pci_id pci_id; ctrlr.transport = &nvme_ctrlr_ut_transport;