USB: P1 BROKEN_STREAMS behavioral quirk — skip stream allocation

IMPROVEMENT-PLAN.md §10.1: critical quirk enforcement.

Fresco Logic FL1009 and Etron EJ168 controllers have broken
stream support.  When BROKEN_STREAMS quirk is active, force
usb_log_max_streams to None, which prevents stream context
array allocation in configure_endpoints_once().  Previously
the quirk was declared and logged at init but had no runtime
effect — streams were still allocated, causing crashes on
these controllers.

Cross-referenced with Linux 7.1 xhci-pci.c BROKEN_STREAMS
enforcement in xhci_alloc_streams().
This commit is contained in:
Red Bear OS
2026-07-08 00:44:09 +03:00
parent 2c6c430225
commit 0f53316100
+5 -1
View File
@@ -1419,7 +1419,11 @@ impl<const N: usize> Xhci<N> {
let endp_num_xhc = Self::endp_num_to_dci(endp_num, endp_desc);
let usb_log_max_streams = endp_desc.log_max_streams();
let usb_log_max_streams = if self.quirks.contains(crate::xhci::quirks::XhciQuirks::BROKEN_STREAMS) {
None // BROKEN_STREAMS: skip stream context array allocation entirely
} else {
endp_desc.log_max_streams()
};
// TODO: Secondary streams.
let primary_streams = if let Some(log_max_streams) = usb_log_max_streams {