Commit ed1e7ca2 authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

env: add struct spdk_pci_id and getter function



Use the new public PCI ID structure in the NVMe library to replace the
previously private struct pci_id.

Change-Id: I267d343917f60bdae949a824bc0fe67457cbbc0d
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent c0527bef
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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);
+13 −0
Original line number Diff line number Diff line
@@ -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)
{
+2 −2
Original line number Diff line number Diff line
@@ -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;
+2 −9
Original line number Diff line number Diff line
@@ -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);

+2 −2
Original line number Diff line number Diff line
@@ -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;
		}
Loading