usb: gadget: f_tcm: Inform last stream request
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Wed, 6 May 2020 02:46:19 +0000 (19:46 -0700)
committerFelipe Balbi <balbi@kernel.org>
Mon, 25 May 2020 08:09:41 +0000 (11:09 +0300)
Set the request->is_last to each stream request to indicate that the
request is the last stream request of a transfer. The DWC3 controller
needs to know this info to properly switch streams. The current
implementation of f_tcm uses a single request per transfer, so every
stream request is the last of its stream.

Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/gadget/function/f_tcm.c

index 36504931b2d1be401ea9101aa0c04b53d86a5818..2979cbe4d95ff5ed8fd1063e7a1599879160e38e 100644 (file)
@@ -531,6 +531,7 @@ static int uasp_prepare_r_request(struct usbg_cmd *cmd)
                stream->req_in->sg = se_cmd->t_data_sg;
        }
 
+       stream->req_in->is_last = 1;
        stream->req_in->complete = uasp_status_data_cmpl;
        stream->req_in->length = se_cmd->data_length;
        stream->req_in->context = cmd;
@@ -554,6 +555,7 @@ static void uasp_prepare_status(struct usbg_cmd *cmd)
         */
        iu->len = cpu_to_be16(se_cmd->scsi_sense_length);
        iu->status = se_cmd->scsi_status;
+       stream->req_status->is_last = 1;
        stream->req_status->context = cmd;
        stream->req_status->length = se_cmd->scsi_sense_length + 16;
        stream->req_status->buf = iu;
@@ -991,6 +993,7 @@ static int usbg_prepare_w_request(struct usbg_cmd *cmd, struct usb_request *req)
                req->sg = se_cmd->t_data_sg;
        }
 
+       req->is_last = 1;
        req->complete = usbg_data_write_cmpl;
        req->length = se_cmd->data_length;
        req->context = cmd;