b852bad9044a055db54d5b173429138943dcc3a8
[openwrt/staging/ansuel.git] /
1 From 0103035be2b28a8dbb5ccc207c61043d5eb1bc18 Mon Sep 17 00:00:00 2001
2 From: Jonathan Bell <jonathan@raspberrypi.com>
3 Date: Fri, 10 Mar 2023 14:21:42 +0000
4 Subject: [PATCH] usb: xhci: drop and add the endpoint context in
5 xhci_fixup_endpoint()
6
7 Setting both the Drop and Add bits on the input context prevents the
8 corruption of split transactions seen with the BCM2711 XHCI controller,
9 which is a dwc3 variant.
10
11 This is a downstream feature that allows usbhid to restrict polling
12 intervals on mice and keyboards, and was only tested on a VL805 which
13 didn't complain about the fact the endpoint got added twice.
14
15 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
16 ---
17 drivers/usb/host/xhci.c | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20 --- a/drivers/usb/host/xhci.c
21 +++ b/drivers/usb/host/xhci.c
22 @@ -1732,7 +1732,7 @@ static void xhci_fixup_endpoint(struct u
23 return;
24 }
25 ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
26 - ctrl_ctx->drop_flags = 0;
27 + ctrl_ctx->drop_flags = ctrl_ctx->add_flags;
28
29 spin_unlock_irqrestore(&xhci->lock, flags);
30