tcp: move some parts from tcp_write_xmit

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Ilpo Järvinen 2008-12-05 22:43:56 -08:00 committed by David S. Miller
parent 41834b7332
commit 726e07a8a3
1 changed files with 12 additions and 11 deletions

View File

@ -1530,13 +1530,6 @@ static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle)
int cwnd_quota; int cwnd_quota;
int result; 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; sent_pkts = 0;
/* Do MTU probing. */ /* 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); struct sk_buff *skb = tcp_send_head(sk);
if (skb) { if (!skb)
if (tcp_write_xmit(sk, cur_mss, nonagle)) return;
tcp_check_probe_timer(sk);
} /* 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 /* Send _single_ skb sitting at the send head. This function requires