usb: xhci: drop and add the endpoint context in xhci_fixup_endpoint()

Setting both the Drop and Add bits on the input context prevents the
corruption of split transactions seen with the BCM2711 XHCI controller,
which is a dwc3 variant.

This is a downstream feature that allows usbhid to restrict polling
intervals on mice and keyboards, and was only tested on a VL805 which
didn't complain about the fact the endpoint got added twice.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
This commit is contained in:
Jonathan Bell
2023-03-10 14:21:42 +00:00
committed by Phil Elwell
parent ed858468d6
commit 36619da03e

View File

@@ -1726,7 +1726,7 @@ static void xhci_fixup_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
return;
}
ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
ctrl_ctx->drop_flags = 0;
ctrl_ctx->drop_flags = ctrl_ctx->add_flags;
spin_unlock_irqrestore(&xhci->lock, flags);