diff --git a/src/add-ons/kernel/drivers/ports/usb_serial/ACM.cpp b/src/add-ons/kernel/drivers/ports/usb_serial/ACM.cpp index 7530e5a437..352510fb28 100644 --- a/src/add-ons/kernel/drivers/ports/usb_serial/ACM.cpp +++ b/src/add-ons/kernel/drivers/ports/usb_serial/ACM.cpp @@ -87,6 +87,7 @@ ACMDevice::AddDevice(const usb_configuration_info *config) || descriptor->interface_class == USB_CDC_DATA_INTERFACE_CLASS) && interface->endpoint_count >= 1) { SetControlPipe(interface->endpoint[0].handle); + SetInterruptBufferSize(interface->endpoint[0].descr->max_packet_size); } else { TRACE("Indicated command interface doesn't fit our needs!\n"); status = ENODEV; @@ -99,15 +100,21 @@ ACMDevice::AddDevice(const usb_configuration_info *config) usb_interface_descriptor *descriptor = interface->descr; if (descriptor->interface_class == USB_CDC_DATA_INTERFACE_CLASS && interface->endpoint_count >= 2) { - if (!(interface->endpoint[0].descr->endpoint_address & USB_ENDPOINT_ADDR_DIR_IN)) + if (!(interface->endpoint[0].descr->endpoint_address & USB_ENDPOINT_ADDR_DIR_IN)) { + SetWriteBufferSize(ROUNDUP(interface->endpoint[0].descr->max_packet_size, 16)); SetWritePipe(interface->endpoint[0].handle); - else + } else { + SetReadBufferSize(ROUNDUP(interface->endpoint[0].descr->max_packet_size, 16)); SetReadPipe(interface->endpoint[0].handle); + } - if (interface->endpoint[1].descr->endpoint_address & USB_ENDPOINT_ADDR_DIR_IN) + if (interface->endpoint[1].descr->endpoint_address & USB_ENDPOINT_ADDR_DIR_IN) { + SetReadBufferSize(ROUNDUP(interface->endpoint[1].descr->max_packet_size, 16)); SetReadPipe(interface->endpoint[1].handle); - else + } else { + SetWriteBufferSize(ROUNDUP(interface->endpoint[1].descr->max_packet_size, 16)); SetWritePipe(interface->endpoint[1].handle); + } } else { TRACE("Indicated data interface doesn't fit our needs!\n"); status = ENODEV;