Signed-off-by: Zang Leigang <zangleig...@hisilicon.com>

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 794a460..7e8d583 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -385,6 +385,8 @@ void ufshcd_print_trs(struct ufs_hba *hba, unsigned long 
bitmap, bool pr_prdt)
 
                dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
                                tag, ktime_to_us(lrbp->issue_time_stamp));
+               dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
+                               tag, ktime_to_us(lrbp->compl_time_stamp));
                dev_err(hba->dev,
                        "UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
                        tag, (u64)lrbp->utrd_dma_addr);
@@ -1746,6 +1748,7 @@ static inline
 void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
 {
        hba->lrb[task_tag].issue_time_stamp = ktime_get();
+       hba->lrb[task_tag].compl_time_stamp = ktime_set(0, 0);
        ufshcd_clk_scaling_start_busy(hba);
        __set_bit(task_tag, &hba->outstanding_reqs);
        ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
@@ -4627,6 +4630,8 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba 
*hba,
                }
                if (ufshcd_is_clkscaling_supported(hba))
                        hba->clk_scaling.active_reqs--;
+
+               lrbp->compl_time_stamp = ktime_get();
        }
 
        /* clear corresponding bits of completed commands */
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index cdc8bd0..40ea475 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -166,6 +166,7 @@ struct ufs_pm_lvl_states {
  * @lun: LUN of the command
  * @intr_cmd: Interrupt command (doesn't participate in interrupt aggregation)
  * @issue_time_stamp: time stamp for debug purposes
+ * @compl_time_stamp: time stamp for statistics
  * @req_abort_skip: skip request abort task flag
  */
 struct ufshcd_lrb {
@@ -189,6 +190,7 @@ struct ufshcd_lrb {
        u8 lun; /* UPIU LUN id field is only 8-bit wide */
        bool intr_cmd;
        ktime_t issue_time_stamp;
+       ktime_t compl_time_stamp;
 
        bool req_abort_skip;
 };
-- 
2.7.4

Reply via email to