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
Kconfig
Make.defs
tcp.h
tcp_accept.c
tcp_appsend.c
tcp_backlog.c
tcp_callback.c
tcp_cc.c
tcp_close.c
tcp_conn.c
tcp_connect.c
tcp_devpoll.c
tcp_dump.c
tcp_finddev.c
tcp_getsockopt.c
tcp_input.c
tcp_ioctl.c
tcp_ipselect.c
tcp_listen.c
tcp_monitor.c
tcp_netpoll.c
tcp_notifier.c
tcp_recvfrom.c
tcp_recvwindow.c
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
tcp_send_unbuffered.c
tcp_sendfile.c
tcp_seqno.c
tcp_setsockopt.c
tcp_shutdown.c
tcp_timer.c
tcp_txdrain.c
tcp_wrbuffer.c