Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.31 Remove upstreamed patches: backport-6.12/780-27-v6.15-r8169-don-t-scan-PHY-addresses-0.patch [1] backport-6.12/780-33-v6.15-r8169-disable-RTL8126-ZRX-DC-timeout.patch [2] bcm27xx/patches-6.12/950-0315-media-i2c-imx219-Correct-the-minimum-vblanking-value.patch [3] bcm27xx/patches-6.12/950-0857-drm-v3d-Add-clock-handling.patch [4] bcm27xx/patches-6.12/950-0874-PCI-brcmstb-Expand-inbound-window-size-up-to-64GB.patch [5] bcm27xx/patches-6.12/950-0877-PCI-brcmstb-Adding-a-softdep-to-MIP-MSI-X-driver.patch [6] bcm27xx/patches-6.12/950-0960-media-imx335-Set-vblank-immediately.patch [7] Manually rebased patches: d1/patches-6.12/0009-ASoC-sunxi-sun4i-codec-add-basic-support-for-D1-audi.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=ba59747562c49974cbace989d76b94a8331da442 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=2780aa8394415df0a69e3b908d6dd8c79e1d1bcc [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=9a981079097bee6a0583877798de0b240717bdde [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=bbd6dc1fb6c56267ad1d58810d92287fcd5b0058 [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=3ffaa2e999380477774e76680ff4cef247451168 [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=12153e3948c596737853c3ec4ff7e4e3f4a9f9a6 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=8d7e13c31c52690655883dff604238b0760a3644 Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18953 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
56 lines
2.3 KiB
Diff
56 lines
2.3 KiB
Diff
From 9d3afd87557637a37135aa6e370dea846b839c2d Mon Sep 17 00:00:00 2001
|
|
From: Jonathan Bell <jonathan@raspberrypi.com>
|
|
Date: Mon, 11 Nov 2024 10:30:38 +0000
|
|
Subject: [PATCH] drivers: usb: xhci: set HID bit in streaming endpoint
|
|
contexts
|
|
|
|
The xHC may commence Host Initiated Data Moves for streaming endpoints -
|
|
see USB3.2 spec s8.12.1.4.2.4. However, this behaviour is typically
|
|
counterproductive as the submission of UAS URBs in {Status, Data,
|
|
Command} order and 1 outstanding IO per stream ID means the device never
|
|
enters Move Data after a HIMD for Status or Data stages with the same
|
|
stream ID. For OUT transfers this is especially inefficient as the host
|
|
will start transmitting multiple bulk packets as a burst, all of which
|
|
get NAKed by the device - wasting bandwidth.
|
|
|
|
Also, some buggy UAS adapters don't properly handle the EP flow control
|
|
state this creates - e.g. RTL9210.
|
|
|
|
Set Host Initiated Data Move Disable to always defer stream selection to
|
|
the device. xHC implementations may treat this field as "don't care,
|
|
forced to 1" anyway - xHCI 1.2 s4.12.1.
|
|
|
|
Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|
---
|
|
drivers/usb/host/xhci-mem.c | 8 ++++++++
|
|
drivers/usb/host/xhci.h | 2 ++
|
|
2 files changed, 10 insertions(+)
|
|
|
|
--- a/drivers/usb/host/xhci-mem.c
|
|
+++ b/drivers/usb/host/xhci-mem.c
|
|
@@ -715,6 +715,14 @@ void xhci_setup_streams_ep_input_ctx(str
|
|
ep_ctx->ep_info &= cpu_to_le32(~EP_MAXPSTREAMS_MASK);
|
|
ep_ctx->ep_info |= cpu_to_le32(EP_MAXPSTREAMS(max_primary_streams)
|
|
| EP_HAS_LSA);
|
|
+
|
|
+ /*
|
|
+ * Set Host Initiated Data Move Disable to always defer stream
|
|
+ * selection to the device. xHC implementations may treat this
|
|
+ * field as "don't care, forced to 1" anyway - xHCI 1.2 s4.12.1.
|
|
+ */
|
|
+ ep_ctx->ep_info2 |= EP_HID;
|
|
+
|
|
ep_ctx->deq = cpu_to_le64(stream_info->ctx_array_dma);
|
|
}
|
|
|
|
--- a/drivers/usb/host/xhci.h
|
|
+++ b/drivers/usb/host/xhci.h
|
|
@@ -468,6 +468,8 @@ struct xhci_ep_ctx {
|
|
#define CTX_TO_EP_MAXPSTREAMS(p) (((p) & EP_MAXPSTREAMS_MASK) >> 10)
|
|
/* Endpoint is set up with a Linear Stream Array (vs. Secondary Stream Array) */
|
|
#define EP_HAS_LSA (1 << 15)
|
|
+/* Host initiated data move disable in info2 */
|
|
+#define EP_HID (1 << 7)
|
|
/* hosts with LEC=1 use bits 31:24 as ESIT high bits. */
|
|
#define CTX_TO_MAX_ESIT_PAYLOAD_HI(p) (((p) >> 24) & 0xff)
|
|
|