aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r--net/ipv4/tcp_output.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index d212e4cbc689..c07990a35ff3 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2321,18 +2321,19 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
2321 while ((skb = tcp_send_head(sk))) { 2321 while ((skb = tcp_send_head(sk))) {
2322 unsigned int limit; 2322 unsigned int limit;
2323 2323
2324 if (unlikely(tp->repair) && tp->repair_queue == TCP_SEND_QUEUE) {
2325 /* "skb_mstamp_ns" is used as a start point for the retransmit timer */
2326 skb->skb_mstamp_ns = tp->tcp_wstamp_ns = tp->tcp_clock_cache;
2327 list_move_tail(&skb->tcp_tsorted_anchor, &tp->tsorted_sent_queue);
2328 goto repair; /* Skip network transmission */
2329 }
2330
2324 if (tcp_pacing_check(sk)) 2331 if (tcp_pacing_check(sk))
2325 break; 2332 break;
2326 2333
2327 tso_segs = tcp_init_tso_segs(skb, mss_now); 2334 tso_segs = tcp_init_tso_segs(skb, mss_now);
2328 BUG_ON(!tso_segs); 2335 BUG_ON(!tso_segs);
2329 2336
2330 if (unlikely(tp->repair) && tp->repair_queue == TCP_SEND_QUEUE) {
2331 /* "skb_mstamp" is used as a start point for the retransmit timer */
2332 tcp_update_skb_after_send(sk, skb, tp->tcp_wstamp_ns);
2333 goto repair; /* Skip network transmission */
2334 }
2335
2336 cwnd_quota = tcp_cwnd_test(tp, skb); 2337 cwnd_quota = tcp_cwnd_test(tp, skb);
2337 if (!cwnd_quota) { 2338 if (!cwnd_quota) {
2338 if (push_one == 2) 2339 if (push_one == 2)