> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_h > wi.c index 9f91030..c0ea473 100644 > --- a/drivers/scsi/pm8001/pm80xx_hwi.c > +++ b/drivers/scsi/pm8001/pm80xx_hwi.c > @@ -3076,8 +3076,43 @@ static int mpi_get_controller_config_resp(struct pm80 > 01_hba_info *pm8001_ha, > static int mpi_get_phy_profile_resp(struct pm8001_hba_info *pm8001_ha, > void *piomb) > { > - PM8001_MSG_DBG(pm8001_ha, > - pm8001_printk(" pm80xx_addition_functionality\n")); > + u8 page_code; > + struct get_phy_profile_resp *pPayload = (struct get_phy_profile_resp > + *)(piomb + 4); > + u32 ppc_phyid = le32_to_cpu(pPayload->ppc_phyid); > + u32 status = le32_to_cpu(pPayload->status); > + u8 phy_id = (u8)(ppc_phyid & 0x00FF); > + page_code = (u8)((ppc_phyid & 0xFF00) >> 8); struct asd_sas_phy > + *sas_phy = &(pm8001_ha->phy[phy_id].sas_phy); > + struct sas_phy *phy = sas_phy->phy; > + > + if (status) { > + /* status is FAILED */ > + PM8001_FAIL_DBG(pm8001_ha, > + pm8001_printk("PhyProfile command failed with status " > + "0x%08X \n", status)); > + return -1; > + } else { > + switch (page_code) { > + case SAS_PHY_ERROR_PAGE: > + phy->invalid_dword_count = > + le32_to_cpu(pPayload->ppc_specific_rsp[0]); > + phy->running_disparity_error_count = > + le32_to_cpu(pPayload->ppc_specific_rsp[1]); > + phy->loss_of_dword_sync_count = > + le32_to_cpu(pPayload->ppc_specific_rsp[3]); > + phy->phy_reset_problem_count = > + le32_to_cpu(pPayload->ppc_specific_rsp[4]); > + complete(pm8001_ha->phy[phy_id].enable_completion); > + break; > + default: > + PM8001_MSG_DBG(pm8001_ha, > + pm8001_printk("other page code 0x%X\n", page_code)); break; } } > > return 0; > } Any failure response also need to call complete() function. You can put the "complete()" at end before return. Thanks. Lindar -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html