hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
....@@ -2026,6 +2026,11 @@
20262026 u16 dma_tx_err_type = le16_to_cpu(err_record->dma_tx_err_type);
20272027 u16 sipc_rx_err_type = le16_to_cpu(err_record->sipc_rx_err_type);
20282028 u32 dma_rx_err_type = le32_to_cpu(err_record->dma_rx_err_type);
2029
+ struct hisi_sas_complete_v2_hdr *complete_queue =
2030
+ hisi_hba->complete_hdr[slot->cmplt_queue];
2031
+ struct hisi_sas_complete_v2_hdr *complete_hdr =
2032
+ &complete_queue[slot->cmplt_queue_slot];
2033
+ u32 dw0 = le32_to_cpu(complete_hdr->dw0);
20292034 int error = -1;
20302035
20312036 if (err_phase == 1) {
....@@ -2168,7 +2173,7 @@
21682173 }
21692174 break;
21702175 case SAS_PROTOCOL_SMP:
2171
- ts->stat = SAM_STAT_CHECK_CONDITION;
2176
+ ts->stat = SAS_SAM_STAT_CHECK_CONDITION;
21722177 break;
21732178
21742179 case SAS_PROTOCOL_SATA:
....@@ -2310,7 +2315,8 @@
23102315 break;
23112316 }
23122317 }
2313
- hisi_sas_sata_done(task, slot);
2318
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
2319
+ hisi_sas_sata_done(task, slot);
23142320 }
23152321 break;
23162322 default:
....@@ -2427,7 +2433,7 @@
24272433 struct scatterlist *sg_resp = &task->smp_task.smp_resp;
24282434 void *to = page_address(sg_page(sg_resp));
24292435
2430
- ts->stat = SAM_STAT_GOOD;
2436
+ ts->stat = SAS_SAM_STAT_GOOD;
24312437
24322438 dma_unmap_sg(dev, &task->smp_task.smp_req, 1,
24332439 DMA_TO_DEVICE);
....@@ -2441,12 +2447,13 @@
24412447 case SAS_PROTOCOL_STP:
24422448 case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
24432449 {
2444
- ts->stat = SAM_STAT_GOOD;
2445
- hisi_sas_sata_done(task, slot);
2450
+ ts->stat = SAS_SAM_STAT_GOOD;
2451
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
2452
+ hisi_sas_sata_done(task, slot);
24462453 break;
24472454 }
24482455 default:
2449
- ts->stat = SAM_STAT_CHECK_CONDITION;
2456
+ ts->stat = SAS_SAM_STAT_CHECK_CONDITION;
24502457 break;
24512458 }
24522459