scsi: ufs: core: Set the residual byte count
authorBart Van Assche <bvanassche@acm.org>
Tue, 14 Mar 2023 20:58:35 +0000 (13:58 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 17 Mar 2023 03:10:41 +0000 (23:10 -0400)
It is important for the SCSI core to know the residual byte count.  Hence,
extract the residual byte count from the UFS response and pass it to the
SCSI core. A few examples of the output of a debugging patch that has been
applied on top of this patch:

[    1.937750] cmd 0x12: len = 255; resid = 241
[ ... ]
[    1.993400] cmd 0xa0: len = 4096; resid = 4048
[ ... ]

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230314205844.313519-1-bvanassche@acm.org
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index ce7b765aa2afa065ac8ea7c03dcf31560c7a926b..7bbbae9c7c6112db9524f82fc9b6e31e223da84d 100644 (file)
@@ -5238,6 +5238,9 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
        int scsi_status;
        enum utp_ocs ocs;
 
+       scsi_set_resid(lrbp->cmd,
+               be32_to_cpu(lrbp->ucd_rsp_ptr->sr.residual_transfer_count));
+
        /* overall command status of utrd */
        ocs = ufshcd_get_tr_ocs(lrbp, cqe);