From 7500ab74145f466b10ebf4513625d64e9e31e366 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Apr 18 2023 10:53:09 +0000 Subject: usb: dwc3: gadget: Don't set IMI for no_interrupt (git-fixes). --- diff --git a/patches.suse/usb-dwc3-gadget-Don-t-set-IMI-for-no_interrupt.patch b/patches.suse/usb-dwc3-gadget-Don-t-set-IMI-for-no_interrupt.patch new file mode 100644 index 0000000..355c0e9 --- /dev/null +++ b/patches.suse/usb-dwc3-gadget-Don-t-set-IMI-for-no_interrupt.patch @@ -0,0 +1,44 @@ +From 308c316d16cbad99bb834767382baa693ac42169 Mon Sep 17 00:00:00 2001 +From: Thinh Nguyen +Date: Tue, 25 Oct 2022 15:10:20 -0700 +Subject: [PATCH] usb: dwc3: gadget: Don't set IMI for no_interrupt +Git-commit: 308c316d16cbad99bb834767382baa693ac42169 +References: git-fixes +Patch-mainline: v6.1-rc3 + +The gadget driver may have a certain expectation of how the request +completion flow should be from to its configuration. Make sure the +controller driver respect that. That is, don't set IMI (Interrupt on +Missed Isoc) when usb_request->no_interrupt is set. Also, the driver +should only set IMI to the last TRB of a chain. + +Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver") +Cc: stable@vger.kernel.org +Signed-off-by: Thinh Nguyen +Reviewed-by: Jeff Vanhoof +Tested-by: Jeff Vanhoof +Link: https://lore.kernel.org/r/ced336c84434571340c07994e3667a0ee284fefe.1666735451.git.Thinh.Nguyen@synopsys.com +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Oliver Neukum +--- + drivers/usb/dwc3/gadget.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c +index 230b3c660054..5fe2d136dff5 100644 +--- a/drivers/usb/dwc3/gadget.c ++++ b/drivers/usb/dwc3/gadget.c +@@ -1292,8 +1292,8 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep, + trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS; + } + +- /* always enable Interrupt on Missed ISOC */ +- trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; ++ if (!no_interrupt && !chain) ++ trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; + break; + + case USB_ENDPOINT_XFER_BULK: +-- +2.40.0 + diff --git a/series.conf b/series.conf index 66765dd..4c12f1e 100644 --- a/series.conf +++ b/series.conf @@ -63000,6 +63000,7 @@ patches.suse/scsi-qla2xxx-Fix-serialization-of-DCBX-TLV-data-requ.patch patches.suse/scsi-qla2xxx-Use-transport-defined-speed-mask-for-su.patch patches.suse/usb-dwc3-gadget-Stop-processing-more-requests-on-IMI.patch + patches.suse/usb-dwc3-gadget-Don-t-set-IMI-for-no_interrupt.patch patches.suse/NFSv4.1-Handle-RECLAIM_COMPLETE-trunking-errors.patch patches.suse/NFSv4.1-We-must-always-send-RECLAIM_COMPLETE-after-a.patch patches.suse/NFSv4.2-Fixup-CLONE-dest-file-size-for-zero-length-c.patch