]> Pileus Git - ~andy/linux/blobdiff - net/ipv4/tcp_output.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm
[~andy/linux] / net / ipv4 / tcp_output.c
index 3a60aea744ae23d74b25f500e97dbc58434f89e8..0faacf9c419d5a888c8578d15e3f3c948edfb0b9 100644 (file)
@@ -409,7 +409,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
        /* If congestion control is doing timestamping, we must
         * take such a timestamp before we potentially clone/copy.
         */
-       if (icsk->icsk_ca_ops->rtt_sample)
+       if (icsk->icsk_ca_ops->flags & TCP_CONG_RTT_STAMP)
                __net_timestamp(skb);
 
        if (likely(clone_it)) {
@@ -1035,8 +1035,10 @@ static inline int tcp_nagle_test(struct tcp_sock *tp, struct sk_buff *skb,
        if (nonagle & TCP_NAGLE_PUSH)
                return 1;
 
-       /* Don't use the nagle rule for urgent data (or for the final FIN).  */
-       if (tp->urg_mode ||
+       /* Don't use the nagle rule for urgent data (or for the final FIN).
+        * Nagle can be ignored during F-RTO too (see RFC4138).
+        */
+       if (tp->urg_mode || (tp->frto_counter == 2) ||
            (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN))
                return 1;
 
@@ -2035,7 +2037,7 @@ void tcp_send_fin(struct sock *sk)
 /* We get here when a process closes a file descriptor (either due to
  * an explicit close() or as a byproduct of exit()'ing) and there
  * was unread data in the receive queue.  This behavior is recommended
- * by draft-ietf-tcpimpl-prob-03.txt section 3.10.  -DaveM
+ * by RFC 2525, section 2.17.  -DaveM
  */
 void tcp_send_active_reset(struct sock *sk, gfp_t priority)
 {