]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: ufs: core: Pass a SCSI pointer instead of an LRB pointer
authorBart Van Assche <bvanassche@acm.org>
Fri, 31 Oct 2025 20:39:32 +0000 (13:39 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 12 Nov 2025 22:02:34 +0000 (17:02 -0500)
Pass a pointer to a SCSI command between functions instead of an LRB
pointer. This change prepares for removing the ufshcd_lrb task_tag
member.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20251031204029.2883185-25-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index ce657b2506fb0de89a72ef311136099a265fb2de..cf2c08baa9aee607b56af3d4aa7a95f41985f51b 100644 (file)
@@ -2822,12 +2822,13 @@ static void ufshcd_prepare_utp_scsi_cmd_upiu(struct scsi_cmnd *cmd,
 /**
  * ufshcd_prepare_utp_query_req_upiu() - fill the utp_transfer_req_desc for query request
  * @hba: UFS hba
- * @lrbp: local reference block pointer
+ * @cmd: SCSI command pointer
  * @upiu_flags: flags
  */
 static void ufshcd_prepare_utp_query_req_upiu(struct ufs_hba *hba,
-                               struct ufshcd_lrb *lrbp, u8 upiu_flags)
+                               struct scsi_cmnd *cmd, u8 upiu_flags)
 {
+       struct ufshcd_lrb *lrbp = scsi_cmd_priv(cmd);
        struct utp_upiu_req *ucd_req_ptr = lrbp->ucd_req_ptr;
        struct ufs_query *query = &hba->dev_cmd.query;
        u16 len = be16_to_cpu(query->request.upiu_req.length);
@@ -2856,8 +2857,9 @@ static void ufshcd_prepare_utp_query_req_upiu(struct ufs_hba *hba,
                memcpy(ucd_req_ptr + 1, query->descriptor, len);
 }
 
-static inline void ufshcd_prepare_utp_nop_upiu(struct ufshcd_lrb *lrbp)
+static inline void ufshcd_prepare_utp_nop_upiu(struct scsi_cmnd *cmd)
 {
+       struct ufshcd_lrb *lrbp = scsi_cmd_priv(cmd);
        struct utp_upiu_req *ucd_req_ptr = lrbp->ucd_req_ptr;
 
        memset(ucd_req_ptr, 0, sizeof(struct utp_upiu_req));
@@ -2872,22 +2874,23 @@ static inline void ufshcd_prepare_utp_nop_upiu(struct ufshcd_lrb *lrbp)
  * ufshcd_compose_devman_upiu - UFS Protocol Information Unit(UPIU)
  *                          for Device Management Purposes
  * @hba: per adapter instance
- * @lrbp: pointer to local reference block
+ * @cmd: SCSI command pointer
  *
  * Return: 0 upon success; < 0 upon failure.
  */
 static int ufshcd_compose_devman_upiu(struct ufs_hba *hba,
-                                     struct ufshcd_lrb *lrbp)
+                                     struct scsi_cmnd *cmd)
 {
+       struct ufshcd_lrb *lrbp = scsi_cmd_priv(cmd);
        u8 upiu_flags;
        int ret = 0;
 
        ufshcd_prepare_req_desc_hdr(hba, lrbp, &upiu_flags, DMA_NONE, 0);
 
        if (hba->dev_cmd.type == DEV_CMD_TYPE_QUERY)
-               ufshcd_prepare_utp_query_req_upiu(hba, lrbp, upiu_flags);
+               ufshcd_prepare_utp_query_req_upiu(hba, cmd, upiu_flags);
        else if (hba->dev_cmd.type == DEV_CMD_TYPE_NOP)
-               ufshcd_prepare_utp_nop_upiu(lrbp);
+               ufshcd_prepare_utp_nop_upiu(cmd);
        else
                ret = -EINVAL;
 
@@ -3126,11 +3129,9 @@ static void ufshcd_setup_dev_cmd(struct ufs_hba *hba, struct scsi_cmnd *cmd,
 static int ufshcd_compose_dev_cmd(struct ufs_hba *hba, struct scsi_cmnd *cmd,
                                  enum dev_cmd_type cmd_type, int tag)
 {
-       struct ufshcd_lrb *lrbp = scsi_cmd_priv(cmd);
-
        ufshcd_setup_dev_cmd(hba, cmd, cmd_type, 0, tag);
 
-       return ufshcd_compose_devman_upiu(hba, lrbp);
+       return ufshcd_compose_devman_upiu(hba, cmd);
 }
 
 /*