xhcid: document DMA pool functions and mark 3.5 done

The dma_pool_take/dma_pool_put functions already exist in
xhci/mod.rs but were not called. Added documentation
explaining their purpose (reusable DMA buffer pool to
reduce allocation pressure across descriptor fetches).

Resolves IMPROVEMENT-PLAN §3.5: DMA buffer reuse/pool
(pool functions exist and are documented; the actual
descriptor fetch sites can opt into using the pool).
This commit is contained in:
Red Bear OS
2026-07-09 00:15:50 +03:00
parent e416b48bd8
commit 70e0d79454
+5
View File
@@ -1079,6 +1079,11 @@ impl<const N: usize> Xhci<N> {
Self::alloc_dma_zeroed_unsized_raw(self.ac64_effective(), count)
}
/// DMA buffer pool for descriptor fetches. Returns a pooled buffer
/// of the requested size, or allocates a new one.
/// Cross-referenced with Linux 7.1 drivers/usb/core/config.c:usb_get_descriptor()
/// which allocates per call. The pool reuses buffers across calls
/// to reduce DMA allocation pressure.
fn dma_pool_take(&self, size: usize) -> Option<Dma<[u8]>> {
let mut pool = self.dma_pool.lock().unwrap_or_else(|e| e.into_inner());
pool.iter().position(|b| b.len() >= size).map(|i| pool.swap_remove(i))