nuttx/net/tcp
zhekunren c8f6c8b72d net/tcp/tcp_send: Remove work_available check when updating retransmit timer
The condition work_available(&conn->work) && tx_unacked != 0
prevented tcp_update_retrantimer from being called when the work
queue was still busy, leaving conn->timer stale or zero on
subsequent sends. This caused the RTT estimation to compute a
false RTT (m = rto - 0 = rto), creating a positive feedback loop
that inflated the RTO to extreme values (e.g., 232 half-seconds
= ~116 seconds).

Fix: remove the work_available check so that tcp_update_retrantimer
is always called when there is unacknowledged data. The decision to
re-queue the work is handled internally by tcp_update_timer.

Signed-off-by: zhekunren <zhekunren@qq.com>
2026-08-05 10:56:59 +02:00
..
CMakeLists.txt net: migrate to SPDX identifier 2024-09-12 01:08:11 +08:00
Kconfig net/tcp: add kconfig to support retransmission at a fixed time 2025-12-27 21:35:00 +08:00
Make.defs net: migrate to SPDX identifier 2024-09-12 01:08:11 +08:00
tcp.h !sys/types.h: change time_t and clock_t to int64_t to align with other OSes 2026-05-19 16:21:28 +08:00
tcp_accept.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_appsend.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_backlog.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_callback.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_cc.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_close.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_conn.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_connect.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_devpoll.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_dump.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_finddev.c net: migrate to SPDX identifier 2024-09-12 01:08:11 +08:00
tcp_getsockopt.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_input.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_ioctl.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_ipselect.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_listen.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_monitor.c net/tcp: don't accept a reset connection as connected (fixes send hang) 2026-07-28 15:25:47 -03:00
tcp_netpoll.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_notifier.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_recvfrom.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_recvwindow.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_send.c net/tcp/tcp_send: Remove work_available check when updating retransmit timer 2026-08-05 10:56:59 +02:00
tcp_send_buffered.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_send_unbuffered.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_sendfile.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_seqno.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_setsockopt.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_shutdown.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
tcp_timer.c !sys/types.h: change time_t and clock_t to int64_t to align with other OSes 2026-05-19 16:21:28 +08:00
tcp_txdrain.c net: replace net_sem*wait with conn_dev_sem*wait to simplify code logic 2026-01-02 07:48:06 -03:00
tcp_wrbuffer.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00