pm80xx: Remove unnecessary phy disconnect while link error
authorViswas G <Viswas.G@pmcs.com>
Tue, 11 Aug 2015 09:36:29 +0000 (15:06 +0530)
committerJames Bottomley <JBottomley@Odin.com>
Thu, 27 Aug 2015 00:17:05 +0000 (17:17 -0700)
If the link error happens, we don't need to disconnect the phy,
which will remove the drive. Instead acknowledging the controller
and logging the error will be enough.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Reviewed-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/pm8001/pm80xx_hwi.c

index dced9f7755e72ca78f49465eba5423a8f97b7f77..3d8b4ae06ae635065e8d4ca09735f89fd7b2bfe4 100644 (file)
@@ -3176,9 +3176,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
                        pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
                pm80xx_hw_event_ack_req(pm8001_ha, 0,
                        HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
-               sas_phy_disconnected(sas_phy);
-               phy->phy_attached = 0;
-               sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
                break;
        case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
                PM8001_MSG_DBG(pm8001_ha,
@@ -3186,9 +3183,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
                pm80xx_hw_event_ack_req(pm8001_ha, 0,
                        HW_EVENT_LINK_ERR_DISPARITY_ERROR,
                        port_id, phy_id, 0, 0);
-               sas_phy_disconnected(sas_phy);
-               phy->phy_attached = 0;
-               sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
                break;
        case HW_EVENT_LINK_ERR_CODE_VIOLATION:
                PM8001_MSG_DBG(pm8001_ha,
@@ -3196,9 +3190,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
                pm80xx_hw_event_ack_req(pm8001_ha, 0,
                        HW_EVENT_LINK_ERR_CODE_VIOLATION,
                        port_id, phy_id, 0, 0);
-               sas_phy_disconnected(sas_phy);
-               phy->phy_attached = 0;
-               sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
                break;
        case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
                PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
@@ -3206,9 +3197,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
                pm80xx_hw_event_ack_req(pm8001_ha, 0,
                        HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
                        port_id, phy_id, 0, 0);
-               sas_phy_disconnected(sas_phy);
-               phy->phy_attached = 0;
-               sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
                break;
        case HW_EVENT_MALFUNCTION:
                PM8001_MSG_DBG(pm8001_ha,