[PATCH] usb: dwc2: Set max xfer length to speed up R/W

Set transfer length to the maximum (65535 * 512) Bytes of SCSI READ(10) and WRITE(10) commands, while default transfer length is (20 * 512) Bytes
Signed-off-by: Cheng Lu Cheng.Lu@synaptics.com Cc: marex@denx.de ---
drivers/usb/host/dwc2.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c index f1d13b1c1d..936d7ceb5f 100644 --- a/drivers/usb/host/dwc2.c +++ b/drivers/usb/host/dwc2.c @@ -1456,10 +1456,17 @@ static int dwc2_usb_remove(struct udevice *dev) return 0; }
+static int dwc2_get_max_xfer_size(struct udevice *dev, size_t *size) +{ + *size = SIZE_MAX; + return 0; +} + struct dm_usb_ops dwc2_usb_ops = { .control = dwc2_submit_control_msg, .bulk = dwc2_submit_bulk_msg, .interrupt = dwc2_submit_int_msg, + .get_max_xfer_size = dwc2_get_max_xfer_size, };
static const struct udevice_id dwc2_usb_ids[] = {

On 3/24/21 7:11 AM, Cheng Lu wrote:
Set transfer length to the maximum (65535 * 512) Bytes of SCSI READ(10) and WRITE(10) commands, while default transfer length is (20 * 512) Bytes
Please have a look at these four patches, increasing the transfer length would make some odd USB pen drives fail:
7d6fd7f0ba7 ("usb: storage: Limit transfer size to 120 kiB") da3d1c499fb ("usb: storage: Only clear READY flag on error") 02b0e1a36c5 ("usb: ehci-hcd: Keep async schedule running") 31232de07ef ("usb: Keep async schedule running only across mass storage xfers")
Use the async schedule to avoid stopping the controller after every transfer and thus keep the throughput high, while avoiding very long transfers which might break odd USB pen drives.

Ok, I will check.
On Wed, Mar 24, 2021 at 7:39 PM Marek Vasut marex@denx.de wrote:
On 3/24/21 7:11 AM, Cheng Lu wrote:
Set transfer length to the maximum (65535 * 512) Bytes of SCSI READ(10) and WRITE(10) commands, while default transfer length is (20 * 512) Bytes
Please have a look at these four patches, increasing the transfer length would make some odd USB pen drives fail:
7d6fd7f0ba7 ("usb: storage: Limit transfer size to 120 kiB") da3d1c499fb ("usb: storage: Only clear READY flag on error") 02b0e1a36c5 ("usb: ehci-hcd: Keep async schedule running") 31232de07ef ("usb: Keep async schedule running only across mass storage xfers")
Use the async schedule to avoid stopping the controller after every transfer and thus keep the throughput high, while avoiding very long transfers which might break odd USB pen drives.
participants (3)
-
Cheng Lu
-
cheng lu
-
Marek Vasut