Skip to content

Commit 6861285

Browse files
zanglgmartinkpetersen
authored andcommitted
scsi: ufs: Data Segment only needed for WRITE DESCRIPTOR
Some devices have problems handling a Query UPIU with Data Segment set. Only set it for WRITE DESCRIPTOR commands. [mkp: updated patch description] Signed-off-by: Zang Leigang <zangleigang@hisilicon.com> Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org> Reviewed-by: Kiwoong Kim <kwmad.kim@samsung.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent fe9b34b commit 6861285

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/scsi/ufs/ufshcd.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,9 +1266,12 @@ static void ufshcd_prepare_utp_query_req_upiu(struct ufs_hba *hba,
12661266
ucd_req_ptr->header.dword_1 = UPIU_HEADER_DWORD(
12671267
0, query->request.query_func, 0, 0);
12681268

1269-
/* Data segment length */
1270-
ucd_req_ptr->header.dword_2 = UPIU_HEADER_DWORD(
1271-
0, 0, len >> 8, (u8)len);
1269+
/* Data segment length only need for WRITE_DESC */
1270+
if (query->request.upiu_req.opcode == UPIU_QUERY_OPCODE_WRITE_DESC)
1271+
ucd_req_ptr->header.dword_2 =
1272+
UPIU_HEADER_DWORD(0, 0, (len >> 8), (u8)len);
1273+
else
1274+
ucd_req_ptr->header.dword_2 = 0;
12721275

12731276
/* Copy the Query Request buffer as is */
12741277
memcpy(&ucd_req_ptr->qr, &query->request.upiu_req,

0 commit comments

Comments
 (0)