On Mon, Sep 17, 2018 at 07:08:55PM +0300, Avri Altman wrote:
> Do that for the currently supported UPIUs:
> query, nop out, and task management.
> 
> We do not support UPIU of type scsi command yet, while
> we are using the job's request and reply pointers to hold
> the payload.  We will look into it in later patches.
> We might need to elaborate the raw upiu api for that.
> 
> We also still not supporting uic commands:
> For first phase, we plan to use the existing api,
> and send only uic commands that are already supported.
> Anyway, all that will come in the next patch.
> 
> Signed-off-by: Avri Altman <[email protected]>
> ---
>  drivers/scsi/ufs/ufs_bsg.c | 121 
> +++++++++++++++++++++++++++++++++++++++++++--
>  drivers/scsi/ufs/ufs_bsg.h |   1 +
>  2 files changed, 118 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/scsi/ufs/ufs_bsg.c b/drivers/scsi/ufs/ufs_bsg.c
> index bc01d5d..adeb83a 100644
> --- a/drivers/scsi/ufs/ufs_bsg.c
> +++ b/drivers/scsi/ufs/ufs_bsg.c
> @@ -7,18 +7,131 @@
>  #include "ufs_bsg.h"
>  
>  
> +static inline struct ufs_hba *dev_to_ufs_hba(struct device *d)
> +{
> +     struct Scsi_Host *shost = dev_to_shost(d->parent);
> +
> +     return shost_priv(shost);

This just has one caller that culd directly do:

        struct ufs_hba *hba = shost_priv(dev_to_shost(job->dev-parent));

> +             if (qr->opcode == UPIU_QUERY_OPCODE_WRITE_DESC) {
> +                     rw = WRITE;
> +                     desc_buff = ((uint8_t *)bsg_request) +
> +                                 sizeof(struct ufs_bsg_request);

                        desc_buff = bsg_request + 1;

> +                     }
> +             }
> +
> +             req_upiu = (struct utp_upiu_req *)&bsg_request->header;
> +             rsp_upiu = (struct utp_upiu_req *)&bsg_reply->header;

Why do we define the bsg_request/reply separately from struct utp_upiu_req
instead of moving struct utp_upiu_req to the UAPI header and including
it?

Reply via email to