• K
    tcp: do tcp_mstamp_refresh before retransmits on TSQ handler · 3a91d29f
    Koichiro Den 提交于
    When retransmission on TSQ handler was introduced in the commit
    f9616c35 ("tcp: implement TSQ for retransmits"), the retransmitted
    skbs' timestamps were updated on the actual transmission. In the later
    commit 385e2070 ("tcp: use tp->tcp_mstamp in output path"), it stops
    being done so. In the commit, the comment says "We try to refresh
    tp->tcp_mstamp only when necessary", and at present tcp_tsq_handler and
    tcp_v4_mtu_reduced applies to this. About the latter, it's okay since
    it's rare enough.
    
    About the former, even though possible retransmissions on the tasklet
    comes just after the destructor run in NET_RX softirq handling, the time
    between them could be nonnegligibly large to the extent that
    tcp_rack_advance or rto rearming be affected if other (remaining) RX,
    BLOCK and (preceding) TASKLET sofirq handlings are unexpectedly heavy.
    
    So in the same way as tcp_write_timer_handler does, doing tcp_mstamp_refresh
    ensures the accuracy of algorithms relying on it.
    
    Fixes: 385e2070 ("tcp: use tp->tcp_mstamp in output path")
    Signed-off-by: NKoichiro Den <den@klaipeden.com>
    Reviewed-by: NEric Dumazet <edumazet@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    3a91d29f
tcp_output.c 106.4 KB