tcp: move some parts from tcp_write_xmit
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Sat, 6 Dec 2008 06:43:56 +0000 (22:43 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 6 Dec 2008 06:43:56 +0000 (22:43 -0800)
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index 76f840917bcb6c86d10f2431cd027ce6ec6590ab..80147ba441416b1779da395cee429bc4d5a4b8c7 100644 (file)
@@ -1530,13 +1530,6 @@ static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle)
        int cwnd_quota;
        int result;
 
-       /* If we are closed, the bytes will have to remain here.
-        * In time closedown will finish, we empty the write queue and all
-        * will be happy.
-        */
-       if (unlikely(sk->sk_state == TCP_CLOSE))
-               return 0;
-
        sent_pkts = 0;
 
        /* Do MTU probing. */
@@ -1608,10 +1601,18 @@ void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
 {
        struct sk_buff *skb = tcp_send_head(sk);
 
-       if (skb) {
-               if (tcp_write_xmit(sk, cur_mss, nonagle))
-                       tcp_check_probe_timer(sk);
-       }
+       if (!skb)
+               return;
+
+       /* If we are closed, the bytes will have to remain here.
+        * In time closedown will finish, we empty the write queue and
+        * all will be happy.
+        */
+       if (unlikely(sk->sk_state == TCP_CLOSE))
+               return;
+
+       if (tcp_write_xmit(sk, cur_mss, nonagle))
+               tcp_check_probe_timer(sk);
 }
 
 /* Send _single_ skb sitting at the send head. This function requires