]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
scsi: hisi_sas: us start_phy in PHY_FUNC_LINK_RESET
authorXiang Chen <chenxiang66@hisilicon.com>
Tue, 24 Oct 2017 15:51:36 +0000 (23:51 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 25 Oct 2017 12:21:04 +0000 (08:21 -0400)
When a PHY_FUNC_LINK_RESET is issued, we need to fill the transport
identify_frame to SAS controller before the PHYs are enabled.

Without this, we may find that if a PHY which belonged to a wideport
before the reset may generate a new port id.

Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas.h
drivers/scsi/hisi_sas/hisi_sas_main.c
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c

index 07538cf24d5c5b45c8b9c1d6bfa04ccf04f1d757..ea4b5d65cbb3d971d4a15ae9b77bb70aca685f0a 100644 (file)
@@ -198,7 +198,7 @@ struct hisi_sas_hw {
        int (*slot_complete)(struct hisi_hba *hisi_hba,
                             struct hisi_sas_slot *slot);
        void (*phys_init)(struct hisi_hba *hisi_hba);
-       void (*phy_enable)(struct hisi_hba *hisi_hba, int phy_no);
+       void (*phy_start)(struct hisi_hba *hisi_hba, int phy_no);
        void (*phy_disable)(struct hisi_hba *hisi_hba, int phy_no);
        void (*phy_hard_reset)(struct hisi_hba *hisi_hba, int phy_no);
        void (*get_events)(struct hisi_hba *hisi_hba, int phy_no);
index f49a131c04e4f2c80bd08d8e2dd709eb9d480020..88d90dc14adfbc212c67bfa390ba67bebbf87a41 100644 (file)
@@ -765,7 +765,7 @@ static int hisi_sas_control_phy(struct asd_sas_phy *sas_phy, enum phy_func func,
        case PHY_FUNC_LINK_RESET:
                hisi_hba->hw->phy_disable(hisi_hba, phy_no);
                msleep(100);
-               hisi_hba->hw->phy_enable(hisi_hba, phy_no);
+               hisi_hba->hw->phy_start(hisi_hba, phy_no);
                break;
 
        case PHY_FUNC_DISABLE:
index 08eca20b0b81812a8ef32ac23d47a5ccbbb4f5ab..00b5ee4e49d3e7fc31c677af46d49c1b28974adc 100644 (file)
@@ -1857,7 +1857,7 @@ static const struct hisi_sas_hw hisi_sas_v1_hw = {
        .start_delivery = start_delivery_v1_hw,
        .slot_complete = slot_complete_v1_hw,
        .phys_init = phys_init_v1_hw,
-       .phy_enable = enable_phy_v1_hw,
+       .phy_start = start_phy_v1_hw,
        .phy_disable = disable_phy_v1_hw,
        .phy_hard_reset = phy_hard_reset_v1_hw,
        .phy_set_linkrate = phy_set_linkrate_v1_hw,
index 3b2e5b5cb47c43918ebcbd6ae511c6b5ed6dd394..50a0fc8305f1c78ee9c029d8d62763926ec357bf 100644 (file)
@@ -3463,7 +3463,7 @@ static const struct hisi_sas_hw hisi_sas_v2_hw = {
        .start_delivery = start_delivery_v2_hw,
        .slot_complete = slot_complete_v2_hw,
        .phys_init = phys_init_v2_hw,
-       .phy_enable = enable_phy_v2_hw,
+       .phy_start = start_phy_v2_hw,
        .phy_disable = disable_phy_v2_hw,
        .phy_hard_reset = phy_hard_reset_v2_hw,
        .get_events = phy_get_events_v2_hw,
index ac499e9645a2c0e1f6366738d4a54e1b82aee959..67ebd8f6f84af018e33f3357a3f737af5cde5763 100644 (file)
@@ -1781,7 +1781,7 @@ static const struct hisi_sas_hw hisi_sas_v3_hw = {
        .start_delivery = start_delivery_v3_hw,
        .slot_complete = slot_complete_v3_hw,
        .phys_init = phys_init_v3_hw,
-       .phy_enable = enable_phy_v3_hw,
+       .phy_start = start_phy_v3_hw,
        .phy_disable = disable_phy_v3_hw,
        .phy_hard_reset = phy_hard_reset_v3_hw,
        .phy_get_max_linkrate = phy_get_max_linkrate_v3_hw,