diff mbox series

[v6,1/5] scsi: Adjust DBD setting in mode sense for caching mode page per LLD

Message ID 0101016ed3d643f9-ffd45d6c-c593-4a13-a18f-a32da3d3bb97-000000@us-west-2.amazonses.com (mailing list archive)
State Accepted
Headers show
Series UFS driver general fixes bundle 1 | expand

Commit Message

Can Guo Dec. 5, 2019, 2:14 a.m. UTC
UFS JEDEC standards require DBD field to be set to 1 in mode sense command.
This patch allows LLD to define the setting of DBD if required.

Signed-off-by: Can Guo <cang@codeaurora.org>
---
 drivers/scsi/scsi_lib.c    | 2 ++
 include/scsi/scsi_device.h | 1 +
 2 files changed, 3 insertions(+)

Comments

Avri Altman Dec. 5, 2019, 7:10 a.m. UTC | #1
> 
> UFS JEDEC standards require DBD field to be set to 1 in mode sense command.
> This patch allows LLD to define the setting of DBD if required.
> 
> Signed-off-by: Can Guo <cang@codeaurora.org>
Reviewed-by: Avri Altman <avri.altman@wdc.com>

> ---
>  drivers/scsi/scsi_lib.c    | 2 ++
>  include/scsi/scsi_device.h | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index
> 5447738..3812e90 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -2108,6 +2108,8 @@ void scsi_exit_queue(void)
> 
>         memset(data, 0, sizeof(*data));
>         memset(&cmd[0], 0, 12);
> +
> +       dbd = sdev->set_dbd_for_ms ? 8 : dbd;
>         cmd[1] = dbd & 0x18;    /* allows DBD and LLBA bits */
>         cmd[2] = modepage;
> 
> diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index
> 3ed836d..f8312a3 100644
> --- a/include/scsi/scsi_device.h
> +++ b/include/scsi/scsi_device.h
> @@ -172,6 +172,7 @@ struct scsi_device {
>                                      * because we did a bus reset. */
>         unsigned use_10_for_rw:1; /* first try 10-byte read / write */
>         unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */
> +       unsigned set_dbd_for_ms:1; /* Set "DBD" field in mode sense */
>         unsigned no_report_opcodes:1;   /* no REPORT SUPPORTED OPERATION
> CODES */
>         unsigned no_write_same:1;       /* no WRITE SAME command */
>         unsigned use_16_for_rw:1; /* Use read/write(16) over read/write(10) */
> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
diff mbox series

Patch

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 5447738..3812e90 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2108,6 +2108,8 @@  void scsi_exit_queue(void)
 
 	memset(data, 0, sizeof(*data));
 	memset(&cmd[0], 0, 12);
+
+	dbd = sdev->set_dbd_for_ms ? 8 : dbd;
 	cmd[1] = dbd & 0x18;	/* allows DBD and LLBA bits */
 	cmd[2] = modepage;
 
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 3ed836d..f8312a3 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -172,6 +172,7 @@  struct scsi_device {
 				     * because we did a bus reset. */
 	unsigned use_10_for_rw:1; /* first try 10-byte read / write */
 	unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */
+	unsigned set_dbd_for_ms:1; /* Set "DBD" field in mode sense */
 	unsigned no_report_opcodes:1;	/* no REPORT SUPPORTED OPERATION CODES */
 	unsigned no_write_same:1;	/* no WRITE SAME command */
 	unsigned use_16_for_rw:1; /* Use read/write(16) over read/write(10) */