> On Apr 13, 2022, at 7:56 AM, Sumit Saxena <sumit.saxena@xxxxxxxxxxxx> wrote: > > This patch moves the data structures/definitions which are used by > user space applications from MPI headers to uapi/scsi/scsi_bsg_mpi3mr.h > > Signed-off-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx> > --- > drivers/scsi/mpi3mr/mpi/mpi30_init.h | 53 ---------- > drivers/scsi/mpi3mr/mpi/mpi30_ioc.h | 28 ------ > drivers/scsi/mpi3mr/mpi/mpi30_pci.h | 31 +----- > drivers/scsi/mpi3mr/mpi3mr.h | 1 + > include/uapi/scsi/scsi_bsg_mpi3mr.h | 139 +++++++++++++++++++++++++++ > 5 files changed, 141 insertions(+), 111 deletions(-) > > diff --git a/drivers/scsi/mpi3mr/mpi/mpi30_init.h b/drivers/scsi/mpi3mr/mpi/mpi30_init.h > index e2e8b22e9122..aac11c58cca9 100644 > --- a/drivers/scsi/mpi3mr/mpi/mpi30_init.h > +++ b/drivers/scsi/mpi3mr/mpi/mpi30_init.h > @@ -115,57 +115,4 @@ struct mpi3_scsi_io_reply { > #define MPI3_SCSI_RSP_ARI0_MASK (0xff000000) > #define MPI3_SCSI_RSP_ARI0_SHIFT (24) > #define MPI3_SCSI_TASKTAG_UNKNOWN (0xffff) > -struct mpi3_scsi_task_mgmt_request { > - __le16 host_tag; > - u8 ioc_use_only02; > - u8 function; > - __le16 ioc_use_only04; > - u8 ioc_use_only06; > - u8 msg_flags; > - __le16 change_count; > - __le16 dev_handle; > - __le16 task_host_tag; > - u8 task_type; > - u8 reserved0f; > - __le16 task_request_queue_id; > - __le16 reserved12; > - __le32 reserved14; > - u8 lun[8]; > -}; > - > -#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08) > -#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01) > -#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02) > -#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03) > -#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) > -#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) > -#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07) > -#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08) > -#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09) > -#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a) > -#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b) > -struct mpi3_scsi_task_mgmt_reply { > - __le16 host_tag; > - u8 ioc_use_only02; > - u8 function; > - __le16 ioc_use_only04; > - u8 ioc_use_only06; > - u8 msg_flags; > - __le16 ioc_use_only08; > - __le16 ioc_status; > - __le32 ioc_log_info; > - __le32 termination_count; > - __le32 response_data; > - __le32 reserved18; > -}; > - > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00) > -#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a) > -#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80) > -#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81) > #endif > diff --git a/drivers/scsi/mpi3mr/mpi/mpi30_ioc.h b/drivers/scsi/mpi3mr/mpi/mpi30_ioc.h > index 633037dc7012..7b306580d30f 100644 > --- a/drivers/scsi/mpi3mr/mpi/mpi30_ioc.h > +++ b/drivers/scsi/mpi3mr/mpi/mpi30_ioc.h > @@ -38,17 +38,6 @@ struct mpi3_ioc_init_request { > #define MPI3_WHOINIT_ROM_BIOS (0x02) > #define MPI3_WHOINIT_HOST_DRIVER (0x03) > #define MPI3_WHOINIT_MANUFACTURER (0x04) > -struct mpi3_driver_info_layout { > - __le32 information_length; > - u8 driver_signature[12]; > - u8 os_name[16]; > - u8 os_version[12]; > - u8 driver_name[20]; > - u8 driver_version[32]; > - u8 driver_release_date[20]; > - __le32 driver_capabilities; > -}; > - > struct mpi3_ioc_facts_request { > __le16 host_tag; > u8 ioc_use_only02; > @@ -647,23 +636,6 @@ struct mpi3_event_data_diag_buffer_status_change { > #define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_RELEASED (0x01) > #define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_PAUSED (0x02) > #define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_RESUMED (0x03) > -#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200) > -#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100) > -#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080) > -#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040) > -#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020) > -#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010) > -#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008) > -#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004) > -#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002) > -#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001) > -#define MPI3_PEL_CLASS_DEBUG (0x00) > -#define MPI3_PEL_CLASS_PROGRESS (0x01) > -#define MPI3_PEL_CLASS_INFORMATIONAL (0x02) > -#define MPI3_PEL_CLASS_WARNING (0x03) > -#define MPI3_PEL_CLASS_CRITICAL (0x04) > -#define MPI3_PEL_CLASS_FATAL (0x05) > -#define MPI3_PEL_CLASS_FAULT (0x06) > #define MPI3_PEL_CLEARTYPE_CLEAR (0x00) > #define MPI3_PEL_WAITTIME_INFINITE_WAIT (0x00) > #define MPI3_PEL_ACTION_GET_SEQNUM (0x01) > diff --git a/drivers/scsi/mpi3mr/mpi/mpi30_pci.h b/drivers/scsi/mpi3mr/mpi/mpi30_pci.h > index 77270f577f90..901dbd788940 100644 > --- a/drivers/scsi/mpi3mr/mpi/mpi30_pci.h > +++ b/drivers/scsi/mpi3mr/mpi/mpi30_pci.h > @@ -5,24 +5,6 @@ > */ > #ifndef MPI30_PCI_H > #define MPI30_PCI_H 1 > -#ifndef MPI3_NVME_ENCAP_CMD_MAX > -#define MPI3_NVME_ENCAP_CMD_MAX (1) > -#endif > -struct mpi3_nvme_encapsulated_request { > - __le16 host_tag; > - u8 ioc_use_only02; > - u8 function; > - __le16 ioc_use_only04; > - u8 ioc_use_only06; > - u8 msg_flags; > - __le16 change_count; > - __le16 dev_handle; > - __le16 encapsulated_command_length; > - __le16 flags; > - __le32 data_length; > - __le32 reserved14[3]; > - __le32 command[MPI3_NVME_ENCAP_CMD_MAX]; > -}; > > #define MPI3_NVME_FLAGS_FORCE_ADMIN_ERR_REPLY_MASK (0x0002) > #define MPI3_NVME_FLAGS_FORCE_ADMIN_ERR_REPLY_FAIL_ONLY (0x0000) > @@ -30,16 +12,5 @@ struct mpi3_nvme_encapsulated_request { > #define MPI3_NVME_FLAGS_SUBMISSIONQ_MASK (0x0001) > #define MPI3_NVME_FLAGS_SUBMISSIONQ_IO (0x0000) > #define MPI3_NVME_FLAGS_SUBMISSIONQ_ADMIN (0x0001) > -struct mpi3_nvme_encapsulated_error_reply { > - __le16 host_tag; > - u8 ioc_use_only02; > - u8 function; > - __le16 ioc_use_only04; > - u8 ioc_use_only06; > - u8 msg_flags; > - __le16 ioc_use_only08; > - __le16 ioc_status; > - __le32 ioc_log_info; > - __le32 nvme_completion_entry[4]; > -}; > + > #endif > diff --git a/drivers/scsi/mpi3mr/mpi3mr.h b/drivers/scsi/mpi3mr/mpi3mr.h > index 877b0925dbc5..fb05aab48aa7 100644 > --- a/drivers/scsi/mpi3mr/mpi3mr.h > +++ b/drivers/scsi/mpi3mr/mpi3mr.h > @@ -38,6 +38,7 @@ > #include <scsi/scsi_device.h> > #include <scsi/scsi_host.h> > #include <scsi/scsi_tcq.h> > +#include <uapi/scsi/scsi_bsg_mpi3mr.h> > > #include "mpi/mpi30_transport.h" > #include "mpi/mpi30_cnfg.h" > diff --git a/include/uapi/scsi/scsi_bsg_mpi3mr.h b/include/uapi/scsi/scsi_bsg_mpi3mr.h > index 2319fc48ed78..870e6d87dd03 100644 > --- a/include/uapi/scsi/scsi_bsg_mpi3mr.h > +++ b/include/uapi/scsi/scsi_bsg_mpi3mr.h > @@ -81,6 +81,28 @@ enum command { > MPI3MR_MPT_CMD = 2, > }; > > +/** > + * struct mpi3_driver_info_layout - Information about driver > + * > + * @information_length: Length of this structure in bytes > + * @driver_signature: Driver Vendor name > + * @os_name: Operating System Name > + * @driver_name: Driver name > + * @driver_version: Driver version > + * @driver_release_date: Driver release date > + * @driver_capabilities: Driver capabilities > + */ > +struct mpi3_driver_info_layout { > + __le32 information_length; > + u8 driver_signature[12]; > + u8 os_name[16]; > + u8 os_version[12]; > + u8 driver_name[20]; > + u8 driver_version[32]; > + u8 driver_release_date[20]; > + __le32 driver_capabilities; > +}; > + > /** > * struct mpi3mr_bsg_in_adpinfo - Adapter information request > * data returned by the driver. > @@ -430,4 +452,121 @@ struct mpi3mr_bsg_packet { > struct mpi3mr_bsg_mptcmd mptcmd; > } cmd; > }; > + > + > +/* MPI3: NVMe Encasulation related definitions */ > +#ifndef MPI3_NVME_ENCAP_CMD_MAX > +#define MPI3_NVME_ENCAP_CMD_MAX (1) > +#endif > + > +struct mpi3_nvme_encapsulated_request { > + __le16 host_tag; > + u8 ioc_use_only02; > + u8 function; > + __le16 ioc_use_only04; > + u8 ioc_use_only06; > + u8 msg_flags; > + __le16 change_count; > + __le16 dev_handle; > + __le16 encapsulated_command_length; > + __le16 flags; > + __le32 data_length; > + __le32 reserved14[3]; > + __le32 command[MPI3_NVME_ENCAP_CMD_MAX]; > +}; > + > +struct mpi3_nvme_encapsulated_error_reply { > + __le16 host_tag; > + u8 ioc_use_only02; > + u8 function; > + __le16 ioc_use_only04; > + u8 ioc_use_only06; > + u8 msg_flags; > + __le16 ioc_use_only08; > + __le16 ioc_status; > + __le32 ioc_log_info; > + __le32 nvme_completion_entry[4]; > +}; > + > +/* MPI3: task management related definitions */ > +struct mpi3_scsi_task_mgmt_request { > + __le16 host_tag; > + u8 ioc_use_only02; > + u8 function; > + __le16 ioc_use_only04; > + u8 ioc_use_only06; > + u8 msg_flags; > + __le16 change_count; > + __le16 dev_handle; > + __le16 task_host_tag; > + u8 task_type; > + u8 reserved0f; > + __le16 task_request_queue_id; > + __le16 reserved12; > + __le32 reserved14; > + u8 lun[8]; > +}; > + > +#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08) > +#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01) > +#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02) > +#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03) > +#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) > +#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) > +#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07) > +#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08) > +#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09) > +#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a) > +#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b) > +struct mpi3_scsi_task_mgmt_reply { > + __le16 host_tag; > + u8 ioc_use_only02; > + u8 function; > + __le16 ioc_use_only04; > + u8 ioc_use_only06; > + u8 msg_flags; > + __le16 ioc_use_only08; > + __le16 ioc_status; > + __le32 ioc_log_info; > + __le32 termination_count; > + __le32 response_data; > + __le32 reserved18; > +}; > + > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00) > +#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a) > +#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80) > +#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81) > + > +/* MPI3: PEL related definitions */ > +#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200) > +#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100) > +#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080) > +#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040) > +#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020) > +#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010) > +#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008) > +#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004) > +#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002) > +#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001) > +#define MPI3_PEL_CLASS_DEBUG (0x00) > +#define MPI3_PEL_CLASS_PROGRESS (0x01) > +#define MPI3_PEL_CLASS_INFORMATIONAL (0x02) > +#define MPI3_PEL_CLASS_WARNING (0x03) > +#define MPI3_PEL_CLASS_CRITICAL (0x04) > +#define MPI3_PEL_CLASS_FATAL (0x05) > +#define MPI3_PEL_CLASS_FAULT (0x06) > + > +/* MPI3: Function definitions */ > +#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a) > +#define MPI3_BSG_FUNCTION_SCSI_IO (0x20) > +#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21) > +#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22) > +#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24) > + > #endif > -- > 2.27.0 > Looks Good. Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering