nuttx/drivers/usbdev
Ricard Rosson 6555e3e283 drivers/usbdev/cdcncm: send TX immediately, not after a tick-quantized delay
cdcncm_send() defers each transmit with MSEC2TICK(CDCNCM_DGRAM_COMBINE_PERIOD)
(1 ms). MSEC2TICK() rounds up to the system tick, so at the default 100 Hz tick
the "1 ms" coalescing window becomes a full 10 ms tick (10-20 ms with phase),
adding that latency to every single-datagram reply (ICMP echo, TCP ACK, one-MSS
HTTP segment) and dominating the CDC-NCM round-trip time.

The window only coalesces datagrams appended within the same synchronous TX
burst (already queued before the worker runs), so an inter-burst delay adds
latency without batching benefit in the common case. Fire the transmit worker
immediately (delay 0); within-burst coalescing is preserved.

On RP2350 (Pico 2 W) USB-NIC at 100 Hz tick: ping RTT 21.7 -> 2.8 ms, a 257 KB
HTTP download 5.79 -> 0.92 s (44.5 -> 279 KB/s).

Signed-off-by: Ricard Rosson <ricard@groundbits.com>
Assisted-by: Claude (Anthropic Claude Code)
Signed-off-by: Ricard Rosson <ricard@groundbits.com>
2026-07-28 12:39:39 +02:00
..
adb.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
cdcacm.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
cdcacm.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
cdcacm_desc.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
cdcecm.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
cdcecm.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
cdcncm.c drivers/usbdev/cdcncm: send TX immediately, not after a tick-quantized delay 2026-07-28 12:39:39 +02:00
CMakeLists.txt drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
composite.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
composite.h driver/usbdev: Use small lock to protect composite device 2025-12-13 16:45:06 +08:00
composite_desc.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
dfu.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
Kconfig drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
Make.defs drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
mtp.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
pl2303.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
rndis.c drivers/usbdev: rndis: Reject truncated responses 2026-07-06 07:40:40 +02:00
rndis_std.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usbdev_desc.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usbdev_fs.c drivers/: Multiple Drivers Are Registered With World Writable Part 3 2026-07-16 09:49:07 -03:00
usbdev_fs.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usbdev_req.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usbdev_strings.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usbdev_trace.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
usbdev_trprintf.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
usbmsc.c usbmsc: fix composite-mode class requests and Hi>Di stall behavior 2026-07-16 15:49:05 +08:00
usbmsc.h drivers/usbdev: Use small lock to protect usbdev msc 2025-12-13 16:45:06 +08:00
usbmsc_desc.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
usbmsc_scsi.c usbmsc: fix composite-mode class requests and Hi>Di stall behavior 2026-07-16 15:49:05 +08:00
uvc.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00