Commit 569eddcf authored by Xiang Chen's avatar Xiang Chen Committed by Martin K. Petersen

scsi: hisi_sas: send primitive NOTIFY to SSP situation only

Send primitive NOTIFY to SSP situation only, or it causes underflow issue
when sending IO. Also rename hisi_sas_hw.sl_notify() to hisi_sas_hw.
sl_notify_ssp().
Signed-off-by: default avatarXiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 5979f33b
...@@ -246,7 +246,7 @@ struct hisi_sas_hw { ...@@ -246,7 +246,7 @@ struct hisi_sas_hw {
int (*slot_index_alloc)(struct hisi_hba *hisi_hba, int (*slot_index_alloc)(struct hisi_hba *hisi_hba,
struct domain_device *device); struct domain_device *device);
struct hisi_sas_device *(*alloc_dev)(struct domain_device *device); struct hisi_sas_device *(*alloc_dev)(struct domain_device *device);
void (*sl_notify)(struct hisi_hba *hisi_hba, int phy_no); void (*sl_notify_ssp)(struct hisi_hba *hisi_hba, int phy_no);
int (*get_free_slot)(struct hisi_hba *hisi_hba, struct hisi_sas_dq *dq); int (*get_free_slot)(struct hisi_hba *hisi_hba, struct hisi_sas_dq *dq);
void (*start_delivery)(struct hisi_sas_dq *dq); void (*start_delivery)(struct hisi_sas_dq *dq);
void (*prep_ssp)(struct hisi_hba *hisi_hba, void (*prep_ssp)(struct hisi_hba *hisi_hba,
......
...@@ -778,7 +778,8 @@ static void hisi_sas_phyup_work(struct work_struct *work) ...@@ -778,7 +778,8 @@ static void hisi_sas_phyup_work(struct work_struct *work)
struct asd_sas_phy *sas_phy = &phy->sas_phy; struct asd_sas_phy *sas_phy = &phy->sas_phy;
int phy_no = sas_phy->id; int phy_no = sas_phy->id;
hisi_hba->hw->sl_notify(hisi_hba, phy_no); /* This requires a sleep */ if (phy->identify.target_port_protocols == SAS_PROTOCOL_SSP)
hisi_hba->hw->sl_notify_ssp(hisi_hba, phy_no);
hisi_sas_bytes_dmaed(hisi_hba, phy_no); hisi_sas_bytes_dmaed(hisi_hba, phy_no);
} }
......
...@@ -835,7 +835,7 @@ static void phys_init_v1_hw(struct hisi_hba *hisi_hba) ...@@ -835,7 +835,7 @@ static void phys_init_v1_hw(struct hisi_hba *hisi_hba)
mod_timer(timer, jiffies + HZ); mod_timer(timer, jiffies + HZ);
} }
static void sl_notify_v1_hw(struct hisi_hba *hisi_hba, int phy_no) static void sl_notify_ssp_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
{ {
u32 sl_control; u32 sl_control;
...@@ -1826,7 +1826,7 @@ static struct scsi_host_template sht_v1_hw = { ...@@ -1826,7 +1826,7 @@ static struct scsi_host_template sht_v1_hw = {
static const struct hisi_sas_hw hisi_sas_v1_hw = { static const struct hisi_sas_hw hisi_sas_v1_hw = {
.hw_init = hisi_sas_v1_init, .hw_init = hisi_sas_v1_init,
.setup_itct = setup_itct_v1_hw, .setup_itct = setup_itct_v1_hw,
.sl_notify = sl_notify_v1_hw, .sl_notify_ssp = sl_notify_ssp_v1_hw,
.clear_itct = clear_itct_v1_hw, .clear_itct = clear_itct_v1_hw,
.prep_smp = prep_smp_v1_hw, .prep_smp = prep_smp_v1_hw,
.prep_ssp = prep_ssp_v1_hw, .prep_ssp = prep_ssp_v1_hw,
......
...@@ -1589,7 +1589,7 @@ static void phys_init_v2_hw(struct hisi_hba *hisi_hba) ...@@ -1589,7 +1589,7 @@ static void phys_init_v2_hw(struct hisi_hba *hisi_hba)
} }
} }
static void sl_notify_v2_hw(struct hisi_hba *hisi_hba, int phy_no) static void sl_notify_ssp_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
{ {
u32 sl_control; u32 sl_control;
...@@ -3595,7 +3595,7 @@ static const struct hisi_sas_hw hisi_sas_v2_hw = { ...@@ -3595,7 +3595,7 @@ static const struct hisi_sas_hw hisi_sas_v2_hw = {
.setup_itct = setup_itct_v2_hw, .setup_itct = setup_itct_v2_hw,
.slot_index_alloc = slot_index_alloc_quirk_v2_hw, .slot_index_alloc = slot_index_alloc_quirk_v2_hw,
.alloc_dev = alloc_dev_quirk_v2_hw, .alloc_dev = alloc_dev_quirk_v2_hw,
.sl_notify = sl_notify_v2_hw, .sl_notify_ssp = sl_notify_ssp_v2_hw,
.get_wideport_bitmap = get_wideport_bitmap_v2_hw, .get_wideport_bitmap = get_wideport_bitmap_v2_hw,
.clear_itct = clear_itct_v2_hw, .clear_itct = clear_itct_v2_hw,
.free_device = free_device_v2_hw, .free_device = free_device_v2_hw,
......
...@@ -870,7 +870,7 @@ static void phys_init_v3_hw(struct hisi_hba *hisi_hba) ...@@ -870,7 +870,7 @@ static void phys_init_v3_hw(struct hisi_hba *hisi_hba)
} }
} }
static void sl_notify_v3_hw(struct hisi_hba *hisi_hba, int phy_no) static void sl_notify_ssp_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
{ {
u32 sl_control; u32 sl_control;
...@@ -2520,7 +2520,7 @@ static const struct hisi_sas_hw hisi_sas_v3_hw = { ...@@ -2520,7 +2520,7 @@ static const struct hisi_sas_hw hisi_sas_v3_hw = {
.get_wideport_bitmap = get_wideport_bitmap_v3_hw, .get_wideport_bitmap = get_wideport_bitmap_v3_hw,
.complete_hdr_size = sizeof(struct hisi_sas_complete_v3_hdr), .complete_hdr_size = sizeof(struct hisi_sas_complete_v3_hdr),
.clear_itct = clear_itct_v3_hw, .clear_itct = clear_itct_v3_hw,
.sl_notify = sl_notify_v3_hw, .sl_notify_ssp = sl_notify_ssp_v3_hw,
.prep_ssp = prep_ssp_v3_hw, .prep_ssp = prep_ssp_v3_hw,
.prep_smp = prep_smp_v3_hw, .prep_smp = prep_smp_v3_hw,
.prep_stp = prep_ata_v3_hw, .prep_stp = prep_ata_v3_hw,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment