Message ID | 20220413145652.112271-4-sumit.saxena@broadcom.com |
---|---|
State | Superseded |
Headers | show |
Series | mpi3mr: add BSG interface support for controller management | expand |
> On Apr 13, 2022, at 7:56 AM, Sumit Saxena <sumit.saxena@broadcom.com> 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@broadcom.com> > --- > 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@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
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
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@broadcom.com> --- 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(-)