Since issue affects mostly rt2800usb devices, maybe we can add quirk to xhci to restore pre 4.20 behaviour for endpoints that are used by rt2800usb.
Please check if patch like this make the problem gone:
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index dfa61de7c83f..b75a16e5cc9d 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -2568,6 +2568,8 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, remaining = 0; break; case COMP_USB_TRANSACTION_ERROR: + if (1) /* this will be quirk for disable Soft Retry */ + break; if ((ep_ring->err_count++ > MAX_SOFT_RETRY) || le32_to_cpu(slot_ctx->tt_info) & TT_SLOT) break;
If it does, I could then prepare patch that will change this part only for rt2800usb.
Since issue affects mostly rt2800usb devices, maybe we can add quirk to xhci to restore pre 4.20 behaviour for endpoints that are used by rt2800usb.
Please check if patch like this make the problem gone:
diff --git a/drivers/ usb/host/ xhci-ring. c b/drivers/ usb/host/ xhci-ring. c .b75a16e5cc9d 100644 usb/host/ xhci-ring. c usb/host/ xhci-ring. c bulk_intr_ td(struct xhci_hcd *xhci, struct xhci_td *td,
remaining = 0;
break; TRANSACTION_ ERROR: >err_count+ + > MAX_SOFT_RETRY) ||
le32_ to_cpu( slot_ctx- >tt_info) & TT_SLOT)
break;
index dfa61de7c83f.
--- a/drivers/
+++ b/drivers/
@@ -2568,6 +2568,8 @@ static int process_
case COMP_USB_
+ if (1) /* this will be quirk for disable Soft Retry */
+ break;
if ((ep_ring-
If it does, I could then prepare patch that will change this part only for rt2800usb.