Commit fc5f527c authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Jim Harris
Browse files

scsi: split Inquiry peripheral type and qualifier



The SCSI spec defines two separate fields within the first byte of
the Inquiry data.  Define them as bitfields and add enum values for the
peripheral qualifier field.

Change-Id: Ibbb158338da199fc1b67b04c52ec91633577c571
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/382713


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent a07416d8
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -328,6 +328,12 @@ enum spdk_spc_vpd {
	SPDK_SPC_VPD_BLOCK_THIN_PROVISION = 0xb2,
};

enum spdk_spc_peripheral_qualifier {
	SPDK_SPC_PERIPHERAL_QUALIFIER_CONNECTED = 0,
	SPDK_SPC_PERIPHERAL_QUALIFIER_NOT_CONNECTED = 1,
	SPDK_SPC_PERIPHERAL_QUALIFIER_NOT_CAPABLE = 3,
};

enum {
	SPDK_SPC_PERIPHERAL_DEVICE_TYPE_DISK = 0x00,
	SPDK_SPC_PERIPHERAL_DEVICE_TYPE_TAPE = 0x01,
@@ -379,7 +385,8 @@ struct spdk_scsi_cdb_inquiry {
SPDK_STATIC_ASSERT(sizeof(struct spdk_scsi_cdb_inquiry) == 6, "incorrect CDB size");

struct spdk_scsi_cdb_inquiry_data {
	uint8_t peripheral;
	uint8_t peripheral_device_type : 5;
	uint8_t peripheral_qualifier : 3;
	uint8_t rmb;
	uint8_t version;
	uint8_t response;
@@ -397,7 +404,8 @@ struct spdk_scsi_cdb_inquiry_data {
};

struct spdk_scsi_vpd_page {
	uint8_t peripheral;
	uint8_t peripheral_device_type : 5;
	uint8_t peripheral_qualifier : 3;
	uint8_t page_code;
	uint8_t alloc_len[2];
	uint8_t params[];
+4 −2
Original line number Diff line number Diff line
@@ -202,7 +202,8 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
		struct spdk_scsi_vpd_page *vpage = (struct spdk_scsi_vpd_page *)data;

		/* PERIPHERAL QUALIFIER(7-5) PERIPHERAL DEVICE TYPE(4-0) */
		vpage->peripheral = pd;
		vpage->peripheral_device_type = pd;
		vpage->peripheral_qualifier = SPDK_SPC_PERIPHERAL_QUALIFIER_CONNECTED;
		/* PAGE CODE */
		vpage->page_code = pc;

@@ -670,7 +671,8 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,

		/* Standard INQUIRY data */
		/* PERIPHERAL QUALIFIER(7-5) PERIPHERAL DEVICE TYPE(4-0) */
		inqdata->peripheral = pd;
		inqdata->peripheral_device_type = pd;
		inqdata->peripheral_qualifier = SPDK_SPC_PERIPHERAL_QUALIFIER_CONNECTED;

		/* RMB(7) */
		inqdata->rmb = 0;