mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
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>
This commit is contained in:
parent
d960bc39ee
commit
c127429cb9
1 changed files with 1 additions and 1 deletions
|
|
@ -149,7 +149,7 @@ static void tcp_sendcommon(FAR struct net_driver_s *dev,
|
|||
}
|
||||
else
|
||||
{
|
||||
if (work_available(&conn->work) && conn->tx_unacked != 0)
|
||||
if (conn->tx_unacked != 0)
|
||||
{
|
||||
conn->timeout = false;
|
||||
tcp_update_retrantimer(conn, conn->rto);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue