From: Guenter Roeck <linux@roeck-us.net>
To: Minas Harutyunyan <hminas@synopsys.com>
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Antti Seppälä" <a.seppala@gmail.com>,
"Boris ARZUR" <boris@konbu.org>,
"Douglas Anderson" <dianders@chromium.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
"Guenter Roeck" <linux@roeck-us.net>
Subject: [RFT PATCH 2/4] usb: dwc2: Do not update data length if it is 0 on inbound transfers
Date: Wed, 26 Feb 2020 13:04:12 -0800 [thread overview]
Message-ID: <20200226210414.28133-3-linux@roeck-us.net> (raw)
In-Reply-To: <20200226210414.28133-1-linux@roeck-us.net>
The DWC2 documentation states that transfers with zero data length should
set the number of packets to 1 and the transfer length to 0. This is not
currently the case for inbound transfers: the transfer length is set to
the maximum packet length. This can have adverse effects if the chip
actually does transfer data as it is programmed to do. Follow chip
documentation and keep the transfer length set to 0 in that situation.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
drivers/usb/dwc2/hcd.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index f6d8cc9cee34..506fdffd82ab 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -1313,19 +1313,20 @@ static void dwc2_hc_start_transfer(struct dwc2_hsotg *hsotg,
if (num_packets > max_hc_pkt_count) {
num_packets = max_hc_pkt_count;
chan->xfer_len = num_packets * chan->max_packet;
+ } else if (chan->ep_is_in) {
+ /*
+ * Always program an integral # of max packets
+ * for IN transfers.
+ * Note: This assumes that the input buffer is
+ * aligned and sized accordingly.
+ */
+ chan->xfer_len = num_packets * chan->max_packet;
}
} else {
/* Need 1 packet for transfer length of 0 */
num_packets = 1;
}
- if (chan->ep_is_in)
- /*
- * Always program an integral # of max packets for IN
- * transfers
- */
- chan->xfer_len = num_packets * chan->max_packet;
-
if (chan->ep_type == USB_ENDPOINT_XFER_INT ||
chan->ep_type == USB_ENDPOINT_XFER_ISOC)
/*
--
2.17.1
next prev parent reply other threads:[~2020-02-26 21:04 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-26 21:04 [RFT PATCH 0/4] usb: dwc2: Fixes and improvements Guenter Roeck
2020-02-26 21:04 ` [RFT PATCH 1/4] usb: dwc2: Simplify and fix DMA alignment code Guenter Roeck
2020-02-27 22:06 ` Doug Anderson
2020-02-27 22:27 ` Guenter Roeck
2020-02-28 4:28 ` Guenter Roeck
2020-02-28 16:14 ` Doug Anderson
2020-02-28 17:59 ` Guenter Roeck
2020-02-29 7:46 ` Antti Seppälä
2020-02-29 15:25 ` Guenter Roeck
2020-02-29 16:33 ` Antti Seppälä
2020-03-01 15:51 ` Antti Seppälä
2020-03-01 16:24 ` Guenter Roeck
2020-03-01 16:51 ` Antti Seppälä
2020-03-01 17:13 ` Guenter Roeck
2020-02-28 16:26 ` Stefan Wahren
2020-02-26 21:04 ` Guenter Roeck [this message]
2020-02-27 22:06 ` [RFT PATCH 2/4] usb: dwc2: Do not update data length if it is 0 on inbound transfers Doug Anderson
2020-02-28 0:32 ` Guenter Roeck
2020-02-26 21:04 ` [RFT PATCH 3/4] usb: dwc2: Abort transaction after errors with unknown reason Guenter Roeck
2020-02-27 22:06 ` Doug Anderson
2020-02-28 0:36 ` Guenter Roeck
2020-02-26 21:04 ` [RFT PATCH 4/4] usb: dwc2: Make "trimming xfer length" a debug message Guenter Roeck
2020-02-27 22:07 ` Doug Anderson
2020-02-28 0:38 ` Guenter Roeck
2020-02-29 1:50 ` [RFT PATCH 0/4] usb: dwc2: Fixes and improvements Boris ARZUR
2021-01-12 19:40 ` Nicolas Saenz Julienne
2021-01-12 19:44 ` Nicolas Saenz Julienne
2021-01-13 4:48 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200226210414.28133-3-linux@roeck-us.net \
--to=linux@roeck-us.net \
--cc=a.seppala@gmail.com \
--cc=boris@konbu.org \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=hminas@synopsys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).