From b818e2764cd9e1c83aefd1f71ecf65f013329147 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 22 Aug 2026 11:56:02 +0300 Subject: [PATCH] Kernel: Only update USB max packet size for FS devices --- kernel/kernel/USB/XHCI/Device.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/kernel/kernel/USB/XHCI/Device.cpp b/kernel/kernel/USB/XHCI/Device.cpp index d7677e32..37e32b9f 100644 --- a/kernel/kernel/USB/XHCI/Device.cpp +++ b/kernel/kernel/USB/XHCI/Device.cpp @@ -113,7 +113,8 @@ namespace Kernel TRY(m_controller.send_command(address_device)); } - TRY(update_actual_max_packet_size()); + if (m_speed_class == USB::SpeedClass::FullSpeed) + TRY(update_actual_max_packet_size()); return {}; } @@ -134,18 +135,16 @@ namespace Kernel request.wLength = 8; TRY(send_request(request, response_region->paddr())); - uint8_t bMaxPacketSize0; - PageTable::with_fast_page(response_region->paddr(), [&bMaxPacketSize0] { - bMaxPacketSize0 = PageTable::fast_page_as_sized(7); - }); - - dprintln_if(DEBUG_XHCI, "Got device descriptor"); + const uint8_t bMaxPacketSize0 = reinterpret_cast(response_region->vaddr())[7]; const bool is_usb3 = (m_speed_class == USB::SpeedClass::SuperSpeed); const uint32_t new_max_packet_size = is_usb3 ? 1u << bMaxPacketSize0 : bMaxPacketSize0; if (m_endpoints[0].max_packet_size == new_max_packet_size) + { + dprintln_if(DEBUG_XHCI, "No need to update max packet size"); return {}; + } m_endpoints[0].max_packet_size = new_max_packet_size;