--- sys/dev/usb/xhci.c.orig	2025-08-24 09:59:43.231022329 +0000
+++ sys/dev/usb/xhci.c	2025-09-10 08:27:57.172289557 +0000
@@ -2576,6 +2576,20 @@ xhci_event_transfer(struct xhci_softc * 
 			return;
 	}
 
+	/*
+	 * If next event will be from zero-length packet,
+	 * suppress notification of first event.
+	 */
+	if (xfertype == UE_BULK &&
+	    err == USBD_NORMAL_COMPLETION &&
+	    (xfer->ux_flags & USBD_FORCE_SHORT_XFER) &&
+	    XHCI_TRB_2_REM_GET(le32toh(xr->xr_trb[idx].trb_2)) != 0) {
+		DPRINTFN(100, "short xfer %#jx: suppress notification status "
+		    "%ju pipe %#jx", (uintptr_t)xfer, xfer->ux_status,
+		    (uintptr_t)xfer->ux_pipe, 0);
+		return;
+	}
+
 	if ((trb_3 & XHCI_TRB_3_ED_BIT) == 0 ||
 	    (trb_0 & 0x3) == 0x0) {
 		/*
