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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user