Message ID | 20220217132956.484818-9-damien.lemoal@opensource.wdc.com |
---|---|
State | Superseded |
Headers | show |
Series | libsas and pm8001 fixes | expand |
On Thu, Feb 17, 2022 at 2:30 PM Damien Le Moal <damien.lemoal@opensource.wdc.com> wrote: > > All fields of the SASProtocolTimerConfig structure have the __le32 type. > As such, use cpu_to_le32() to initialize them. This change suppresses > many sparse warnings: > > warning: incorrect type in assignment (different base types) > expected restricted __le32 [addressable] [usertype] pageCode > got int > > Note that the check to limit the value of the STP_IDLE_TMO field is > removed as this field is initialized using the fixed (and small) value > defined by the STP_IDLE_TIME macro. > > The pm8001_dbg() calls printing the values of the SASProtocolTimerConfig > structure fileds are changed to use le32_to_cpu() to present the values > in human readable form. > > Fixes: a6cb3d012b98 ("[SCSI] pm80xx: thermal, sas controller config and error handling update") > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Reviewed-by: Jack Wang <jinpu.wang@ionos.com> thx! > --- > drivers/scsi/pm8001/pm80xx_hwi.c | 52 +++++++++++++++----------------- > 1 file changed, 25 insertions(+), 27 deletions(-) > > diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c > index b303bc347f3d..e6fb89138030 100644 > --- a/drivers/scsi/pm8001/pm80xx_hwi.c > +++ b/drivers/scsi/pm8001/pm80xx_hwi.c > @@ -1245,43 +1245,41 @@ pm80xx_set_sas_protocol_timer_config(struct pm8001_hba_info *pm8001_ha) > circularQ = &pm8001_ha->inbnd_q_tbl[0]; > payload.tag = cpu_to_le32(tag); > > - SASConfigPage.pageCode = SAS_PROTOCOL_TIMER_CONFIG_PAGE; > - SASConfigPage.MST_MSI = 3 << 15; > - SASConfigPage.STP_SSP_MCT_TMO = (STP_MCT_TMO << 16) | SSP_MCT_TMO; > - SASConfigPage.STP_FRM_TMO = (SAS_MAX_OPEN_TIME << 24) | > - (SMP_MAX_CONN_TIMER << 16) | STP_FRM_TIMER; > - SASConfigPage.STP_IDLE_TMO = STP_IDLE_TIME; > - > - if (SASConfigPage.STP_IDLE_TMO > 0x3FFFFFF) > - SASConfigPage.STP_IDLE_TMO = 0x3FFFFFF; > - > - > - SASConfigPage.OPNRJT_RTRY_INTVL = (SAS_MFD << 16) | > - SAS_OPNRJT_RTRY_INTVL; > - SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO = (SAS_DOPNRJT_RTRY_TMO << 16) > - | SAS_COPNRJT_RTRY_TMO; > - SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR = (SAS_DOPNRJT_RTRY_THR << 16) > - | SAS_COPNRJT_RTRY_THR; > - SASConfigPage.MAX_AIP = SAS_MAX_AIP; > + SASConfigPage.pageCode = cpu_to_le32(SAS_PROTOCOL_TIMER_CONFIG_PAGE); > + SASConfigPage.MST_MSI = cpu_to_le32(3 << 15); > + SASConfigPage.STP_SSP_MCT_TMO = > + cpu_to_le32((STP_MCT_TMO << 16) | SSP_MCT_TMO); > + SASConfigPage.STP_FRM_TMO = > + cpu_to_le32((SAS_MAX_OPEN_TIME << 24) | > + (SMP_MAX_CONN_TIMER << 16) | STP_FRM_TIMER); > + SASConfigPage.STP_IDLE_TMO = cpu_to_le32(STP_IDLE_TIME); > + > + SASConfigPage.OPNRJT_RTRY_INTVL = > + cpu_to_le32((SAS_MFD << 16) | SAS_OPNRJT_RTRY_INTVL); > + SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO = > + cpu_to_le32((SAS_DOPNRJT_RTRY_TMO << 16) | SAS_COPNRJT_RTRY_TMO); > + SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR = > + cpu_to_le32((SAS_DOPNRJT_RTRY_THR << 16) | SAS_COPNRJT_RTRY_THR); > + SASConfigPage.MAX_AIP = cpu_to_le32(SAS_MAX_AIP); > > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.pageCode 0x%08x\n", > - SASConfigPage.pageCode); > + le32_to_cpu(SASConfigPage.pageCode)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.MST_MSI 0x%08x\n", > - SASConfigPage.MST_MSI); > + le32_to_cpu(SASConfigPage.MST_MSI)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_SSP_MCT_TMO 0x%08x\n", > - SASConfigPage.STP_SSP_MCT_TMO); > + le32_to_cpu(SASConfigPage.STP_SSP_MCT_TMO)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_FRM_TMO 0x%08x\n", > - SASConfigPage.STP_FRM_TMO); > + le32_to_cpu(SASConfigPage.STP_FRM_TMO)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_IDLE_TMO 0x%08x\n", > - SASConfigPage.STP_IDLE_TMO); > + le32_to_cpu(SASConfigPage.STP_IDLE_TMO)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.OPNRJT_RTRY_INTVL 0x%08x\n", > - SASConfigPage.OPNRJT_RTRY_INTVL); > + le32_to_cpu(SASConfigPage.OPNRJT_RTRY_INTVL)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO 0x%08x\n", > - SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO); > + le32_to_cpu(SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR 0x%08x\n", > - SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR); > + le32_to_cpu(SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR)); > pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.MAX_AIP 0x%08x\n", > - SASConfigPage.MAX_AIP); > + le32_to_cpu(SASConfigPage.MAX_AIP)); > > memcpy(&payload.cfg_pg, &SASConfigPage, > sizeof(SASProtocolTimerConfig_t)); > -- > 2.34.1 >
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index b303bc347f3d..e6fb89138030 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -1245,43 +1245,41 @@ pm80xx_set_sas_protocol_timer_config(struct pm8001_hba_info *pm8001_ha) circularQ = &pm8001_ha->inbnd_q_tbl[0]; payload.tag = cpu_to_le32(tag); - SASConfigPage.pageCode = SAS_PROTOCOL_TIMER_CONFIG_PAGE; - SASConfigPage.MST_MSI = 3 << 15; - SASConfigPage.STP_SSP_MCT_TMO = (STP_MCT_TMO << 16) | SSP_MCT_TMO; - SASConfigPage.STP_FRM_TMO = (SAS_MAX_OPEN_TIME << 24) | - (SMP_MAX_CONN_TIMER << 16) | STP_FRM_TIMER; - SASConfigPage.STP_IDLE_TMO = STP_IDLE_TIME; - - if (SASConfigPage.STP_IDLE_TMO > 0x3FFFFFF) - SASConfigPage.STP_IDLE_TMO = 0x3FFFFFF; - - - SASConfigPage.OPNRJT_RTRY_INTVL = (SAS_MFD << 16) | - SAS_OPNRJT_RTRY_INTVL; - SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO = (SAS_DOPNRJT_RTRY_TMO << 16) - | SAS_COPNRJT_RTRY_TMO; - SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR = (SAS_DOPNRJT_RTRY_THR << 16) - | SAS_COPNRJT_RTRY_THR; - SASConfigPage.MAX_AIP = SAS_MAX_AIP; + SASConfigPage.pageCode = cpu_to_le32(SAS_PROTOCOL_TIMER_CONFIG_PAGE); + SASConfigPage.MST_MSI = cpu_to_le32(3 << 15); + SASConfigPage.STP_SSP_MCT_TMO = + cpu_to_le32((STP_MCT_TMO << 16) | SSP_MCT_TMO); + SASConfigPage.STP_FRM_TMO = + cpu_to_le32((SAS_MAX_OPEN_TIME << 24) | + (SMP_MAX_CONN_TIMER << 16) | STP_FRM_TIMER); + SASConfigPage.STP_IDLE_TMO = cpu_to_le32(STP_IDLE_TIME); + + SASConfigPage.OPNRJT_RTRY_INTVL = + cpu_to_le32((SAS_MFD << 16) | SAS_OPNRJT_RTRY_INTVL); + SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO = + cpu_to_le32((SAS_DOPNRJT_RTRY_TMO << 16) | SAS_COPNRJT_RTRY_TMO); + SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR = + cpu_to_le32((SAS_DOPNRJT_RTRY_THR << 16) | SAS_COPNRJT_RTRY_THR); + SASConfigPage.MAX_AIP = cpu_to_le32(SAS_MAX_AIP); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.pageCode 0x%08x\n", - SASConfigPage.pageCode); + le32_to_cpu(SASConfigPage.pageCode)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.MST_MSI 0x%08x\n", - SASConfigPage.MST_MSI); + le32_to_cpu(SASConfigPage.MST_MSI)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_SSP_MCT_TMO 0x%08x\n", - SASConfigPage.STP_SSP_MCT_TMO); + le32_to_cpu(SASConfigPage.STP_SSP_MCT_TMO)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_FRM_TMO 0x%08x\n", - SASConfigPage.STP_FRM_TMO); + le32_to_cpu(SASConfigPage.STP_FRM_TMO)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.STP_IDLE_TMO 0x%08x\n", - SASConfigPage.STP_IDLE_TMO); + le32_to_cpu(SASConfigPage.STP_IDLE_TMO)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.OPNRJT_RTRY_INTVL 0x%08x\n", - SASConfigPage.OPNRJT_RTRY_INTVL); + le32_to_cpu(SASConfigPage.OPNRJT_RTRY_INTVL)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO 0x%08x\n", - SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO); + le32_to_cpu(SASConfigPage.Data_Cmd_OPNRJT_RTRY_TMO)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR 0x%08x\n", - SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR); + le32_to_cpu(SASConfigPage.Data_Cmd_OPNRJT_RTRY_THR)); pm8001_dbg(pm8001_ha, INIT, "SASConfigPage.MAX_AIP 0x%08x\n", - SASConfigPage.MAX_AIP); + le32_to_cpu(SASConfigPage.MAX_AIP)); memcpy(&payload.cfg_pg, &SASConfigPage, sizeof(SASProtocolTimerConfig_t));
All fields of the SASProtocolTimerConfig structure have the __le32 type. As such, use cpu_to_le32() to initialize them. This change suppresses many sparse warnings: warning: incorrect type in assignment (different base types) expected restricted __le32 [addressable] [usertype] pageCode got int Note that the check to limit the value of the STP_IDLE_TMO field is removed as this field is initialized using the fixed (and small) value defined by the STP_IDLE_TIME macro. The pm8001_dbg() calls printing the values of the SASProtocolTimerConfig structure fileds are changed to use le32_to_cpu() to present the values in human readable form. Fixes: a6cb3d012b98 ("[SCSI] pm80xx: thermal, sas controller config and error handling update") Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> --- drivers/scsi/pm8001/pm80xx_hwi.c | 52 +++++++++++++++----------------- 1 file changed, 25 insertions(+), 27 deletions(-)