On Thu, Oct 04, 2018 at 08:20:32AM +0300, Avri Altman wrote: > in preparation to send UPIU requests via bsg. > > Signed-off-by: Avri Altman <avri.altman@xxxxxxx> > Reviewed-by: Bart Van Assche <Bart.VanAssche@xxxxxxx> > --- > drivers/scsi/ufs/ufs.h | 61 +-------------------------------- > drivers/scsi/ufs/ufshcd.c | 6 ++-- > include/uapi/scsi/scsi_bsg_ufs.h | 74 ++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 78 insertions(+), 63 deletions(-) > create mode 100644 include/uapi/scsi/scsi_bsg_ufs.h > > diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h > index 16230df..f1d77dc 100644 > --- a/drivers/scsi/ufs/ufs.h > +++ b/drivers/scsi/ufs/ufs.h > @@ -38,8 +38,8 @@ > > #include <linux/mutex.h> > #include <linux/types.h> > +#include <uapi/scsi/scsi_bsg_ufs.h> > > -#define MAX_CDB_SIZE 16 > #define GENERAL_UPIU_REQUEST_SIZE 32 > #define QUERY_DESC_MAX_SIZE 255 > #define QUERY_DESC_MIN_SIZE 2 > @@ -433,65 +433,6 @@ enum ufs_dev_pwr_mode { > }; > > /** > - * struct utp_upiu_header - UPIU header structure > - * @dword_0: UPIU header DW-0 > - * @dword_1: UPIU header DW-1 > - * @dword_2: UPIU header DW-2 > - */ > -struct utp_upiu_header { > - __be32 dword_0; > - __be32 dword_1; > - __be32 dword_2; > -}; > - > -/** > - * struct utp_upiu_cmd - Command UPIU structure > - * @data_transfer_len: Data Transfer Length DW-3 > - * @cdb: Command Descriptor Block CDB DW-4 to DW-7 > - */ > -struct utp_upiu_cmd { > - __be32 exp_data_transfer_len; > - u8 cdb[MAX_CDB_SIZE]; > -}; > - > -/** > - * struct utp_upiu_query - upiu request buffer structure for > - * query request. > - * @opcode: command to perform B-0 > - * @idn: a value that indicates the particular type of data B-1 > - * @index: Index to further identify data B-2 > - * @selector: Index to further identify data B-3 > - * @reserved_osf: spec reserved field B-4,5 > - * @length: number of descriptor bytes to read/write B-6,7 > - * @value: Attribute value to be written DW-5 > - * @reserved: spec reserved DW-6,7 > - */ > -struct utp_upiu_query { > - u8 opcode; > - u8 idn; > - u8 index; > - u8 selector; > - __be16 reserved_osf; > - __be16 length; > - __be32 value; > - __be32 reserved[2]; > -}; > - > -/** > - * struct utp_upiu_req - general upiu request structure > - * @header:UPIU header structure DW-0 to DW-2 > - * @sc: fields structure for scsi command DW-3 to DW-7 > - * @qr: fields structure for query request DW-3 to DW-7 > - */ > -struct utp_upiu_req { > - struct utp_upiu_header header; > - union { > - struct utp_upiu_cmd sc; > - struct utp_upiu_query qr; > - }; > -}; > - > -/** > * struct utp_cmd_rsp - Response UPIU structure > * @residual_transfer_count: Residual transfer count DW-3 > * @reserved: Reserved double words DW-4 to DW-7 > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 5005432..fdbf07a 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -2241,8 +2241,8 @@ void ufshcd_prepare_utp_scsi_cmd_upiu(struct ufshcd_lrb *lrbp, u32 upiu_flags) > ucd_req_ptr->sc.exp_data_transfer_len = > cpu_to_be32(lrbp->cmd->sdb.length); > > - cdb_len = min_t(unsigned short, lrbp->cmd->cmd_len, MAX_CDB_SIZE); > - memset(ucd_req_ptr->sc.cdb, 0, MAX_CDB_SIZE); > + cdb_len = min_t(unsigned short, lrbp->cmd->cmd_len, UFS_CDB_SIZE); > + memset(ucd_req_ptr->sc.cdb, 0, UFS_CDB_SIZE); > memcpy(ucd_req_ptr->sc.cdb, lrbp->cmd->cmnd, cdb_len); > > memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp)); > @@ -8007,7 +8007,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) > host->max_lun = UFS_MAX_LUNS; > host->max_channel = UFSHCD_MAX_CHANNEL; > host->unique_id = host->host_no; > - host->max_cmd_len = MAX_CDB_SIZE; > + host->max_cmd_len = UFS_CDB_SIZE; > > hba->max_pwr_info.is_valid = false; > > diff --git a/include/uapi/scsi/scsi_bsg_ufs.h b/include/uapi/scsi/scsi_bsg_ufs.h > new file mode 100644 > index 0000000..4108ce3 > --- /dev/null > +++ b/include/uapi/scsi/scsi_bsg_ufs.h > @@ -0,0 +1,74 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * TBD - UFS Transport SGIO v4 BSG Message Support What does the TBD stand for here? I'd just remove it. > +struct utp_upiu_query { > + u8 opcode; > + u8 idn; > + u8 index; > + u8 selector; Please use __u8 instead of u8 for uapi headers. With those tweaks it looks fine to me: Reviewed-by: Christoph Hellwig <hch@xxxxxx>