mpt2sas: [Resend] Raid 10 Value is showing as Raid 1E in /va/log/messages
PATCH 7/11 mpt2sas: [Resend] Raid 10 Value is showing as Raid 1E in /va/log/messages
Add support to obtain manufacturing page 10 at driver load time. The driver will display RAID10 string when the volume type is RAID1E, when there is a even drive count, and the manufacturing page 10 GenericFlags0 field has bit 2 is set.
---
Signed-off-by Kashyap Desai <[email protected]>
Signed-off-by Eric Moore <[email protected]>
---
drivers/scsi/mpt2sas/mpt2sas_base.c +5 -2
@@ -1482,6 +1482,8 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) (ioc->bios_pg3.BiosVersion &0x0000FF00 ) >>8 , ioc->bios_pg3.BiosVersion & 0x000000FF); +_base_display_dell_branding (ioc); +printk (MPT2SAS_INFO_FMT "Protocol=(" , ioc->name);if (ioc->facts.ProtocolFlags &MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR ) {
@@ -1494,8 +1496,6 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) i++; } -_base_display_dell_branding (ioc); - i =0 ;printk ("), " );printk ("Capabilities=(" );
@@ -1567,6 +1567,9 @@ _base_static_config_pages(struct MPT2SAS_ADAPTER *ioc)u32 iounit_pg1_flags;mpt2sas_config_get_manufacturing_pg0 (ioc, &mpi_reply, &ioc->manu_pg0); +if (ioc->ir_firmware) +mpt2sas_config_get_manufacturing_pg10 (ioc, &mpi_reply, + &ioc->manu_pg10);mpt2sas_config_get_bios_pg2 (ioc, &mpi_reply, &ioc->bios_pg2);mpt2sas_config_get_bios_pg3 (ioc, &mpi_reply, &ioc->bios_pg3);mpt2sas_config_get_ioc_pg8 (ioc, &mpi_reply, &ioc->ioc_pg8);
drivers/scsi/mpt2sas/mpt2sas_base.h +36 -1
@@ -197,6 +197,38 @@ struct MPT2SAS_TARGET {* @block: device is in SDEV_BLOCK state * @tlr_snoop_check: flag used in determining whether to disable TLR */ + +/* OEM Identifiers */ +#define MFG10_OEM_ID_INVALID (0x00000000) +#define MFG10_OEM_ID_DELL (0x00000001) +#define MFG10_OEM_ID_FSC (0x00000002) +#define MFG10_OEM_ID_SUN (0x00000003) +#define MFG10_OEM_ID_IBM (0x00000004) + +/* GENERIC Flags 0*/ +#define MFG10_GF0_OCE_DISABLED (0x00000001) +#define MFG10_GF0_R1E_DRIVE_COUNT (0x00000002) +#define MFG10_GF0_R10_DISPLAY (0x00000004) +#define MFG10_GF0_SSD_DATA_SCRUB_DISABLE (0x00000008) +#define MFG10_GF0_SINGLE_DRIVE_R0 (0x00000010) + +/* OEM Specific Flags will come from OEM specific header files */ +typedef struct _MPI2_CONFIG_PAGE_MAN_10 { +MPI2_CONFIG_PAGE_HEADER Header;/* 00h */ +U8 OEMIdentifier;/* 04h */ +U8 Reserved1;/* 05h */ +U16 Reserved2;/* 08h */ +U32 Reserved3;/* 0Ch */ +U32 GenericFlags0;/* 10h */ +U32 GenericFlags1;/* 14h */ +U32 Reserved4;/* 18h */ +U32 OEMSpecificFlags0;/* 1Ch */ +U32 OEMSpecificFlags1;/* 20h */ +U32 Reserved5[18 ];/* 24h-60h*/ +}MPI2_CONFIG_PAGE_MAN_10 , + MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_10, + Mpi2ManufacturingPage10_t, MPI2_POINTER pMpi2ManufacturingPage10_t; +struct MPT2SAS_DEVICE {struct MPT2SAS_TARGET *sas_target;unsigned int lun;
@@ -461,6 +493,7 @@ typedef void (*MPT_ADD_SGE)(void *paddr, u32 flags_length, dma_addr_t dma_addr);* @facts: static facts data * @pfacts: static port facts data * @manu_pg0: static manufacturing page 0 +* @manu_pg10: static manufacturing page 10 * @bios_pg2: static bios page 2 * @bios_pg3: static bios page 3 * @ioc_pg8: static ioc page 8
@@ -663,6 +696,7 @@ struct MPT2SAS_ADAPTER {dma_addr_t diag_buffer_dma[MPI2_DIAG_BUF_TYPE_COUNT ];u8 diag_buffer_status[MPI2_DIAG_BUF_TYPE_COUNT ];u32 unique_id[MPI2_DIAG_BUF_TYPE_COUNT ]; +Mpi2ManufacturingPage10_t manu_pg10;u32 product_specific[MPI2_DIAG_BUF_TYPE_COUNT ][23 ];u32 diagnostic_flags[MPI2_DIAG_BUF_TYPE_COUNT ]; };
@@ -774,7 +808,6 @@ int mpt2sas_config_get_volume_handle(struct MPT2SAS_ADAPTER *ioc, u16 pd_handle, u16 *volume_handle);int mpt2sas_config_get_volume_wwid (struct MPT2SAS_ADAPTER *ioc,u16 volume_handle,u64 *wwid); -/* ctl shared API */ extern struct device_attribute *mpt2sas_host_attrs[];extern struct device_attribute *mpt2sas_dev_attrs[];
@@ -802,3 +835,5 @@ extern struct sas_function_template mpt2sas_transport_functions;extern struct scsi_transport_template *mpt2sas_transport_template;#endif /* MPT2SAS_BASE_H_INCLUDED */ +int mpt2sas_config_get_manufacturing_pg10 (struct MPT2SAS_ADAPTER *ioc, +Mpi2ConfigReply_t *mpi_reply,Mpi2ManufacturingPage10_t *config_page);
drivers/scsi/mpt2sas/mpt2sas_config.c +63 -0
69 lines not on this page · raw message
drivers/scsi/mpt2sas/mpt2sas_scsih.c +7 -1
@@ -1501,7 +1501,13 @@ _scsih_slave_configure(struct scsi_device *sdev)break ;case MPI2_RAID_VOL_TYPE_RAID1E : qdepth =MPT2SAS_RAID_QUEUE_DEPTH ; - r_level ="RAID1E" ; +if (ioc->manu_pg10.OEMIdentifier && + (ioc->manu_pg10.GenericFlags0 & +MFG10_GF0_R10_DISPLAY ) && + !(raid_device->num_pds %2 )) + r_level ="RAID10" ; +else + r_level ="RAID1E" ;break ;case MPI2_RAID_VOL_TYPE_RAID1 : qdepth =MPT2SAS_RAID_QUEUE_DEPTH ;