@@ -5522,6 +5522,13 @@ static void ufshcd_check_errors(struct ufs_hba *hba)
*/
}
+static void ufshcd_tm_cmd_compl(struct ufs_hba *hba, int tag)
+{
+ __clear_bit(tag, &hba->outstanding_tasks);
+ __clear_bit(tag, &hba->tm_condition);
+ ufshcd_put_tm_slot(hba, tag);
+}
+
/**
* ufshcd_tmc_handler - handle task management function completion
* @hba: per adapter instance
@@ -5687,11 +5694,9 @@ static int __ufshcd_issue_tm_cmd(struct ufs_hba *hba,
if (likely(cleanup)) {
spin_lock_irqsave(hba->host->host_lock, flags);
- __clear_bit(free_slot, &hba->outstanding_tasks);
+ ufshcd_tm_cmd_compl(hba, free_slot);
spin_unlock_irqrestore(hba->host->host_lock, flags);
- clear_bit(free_slot, &hba->tm_condition);
- ufshcd_put_tm_slot(hba, free_slot);
wake_up(&hba->tm_tag_wq);
}
Introduce ufshcd_tm_cmd_compl() to re-factor taks cleanup jobs to make code more readable and for future wider usage by task error handling. Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> --- drivers/scsi/ufs/ufshcd.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)