 /* If sk_send_head can be sent fully now, just do it.  */ if (skb->len <= limit) return 0; 
static int tcp_tso_should_defer(struct sock *sk, struct tcp_sock *tp, struct sk_buff *skb){	u32 send_win, cong_win, limit, in_flight;	if (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN)		return 0;	if (tp->ca_state != TCP_CA_Open)		return 0;	in_flight = tcp_packets_in_flight(tp);	BUG_ON(tcp_skb_pcount(skb) <= 1 ||	       (tp->snd_cwnd <= in_flight));	send_win = (tp->snd_una + tp->snd_wnd) - TCP_SKB_CB(skb)->seq;	/* From in_flight test above, we know that cwnd > in_flight.  */	cong_win = (tp->snd_cwnd - in_flight) * tp->mss_cache;	limit = min(send_win, cong_win);	/* If sk_send_head can be sent fully now, just do it.  */	if (skb->len <= limit)		return 0;	if (sysctl_tcp_tso_win_divisor) {		u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);		/* If at least some fraction of a window is available,		 * just use it.		 */		chunk /= sysctl_tcp_tso_win_divisor;		if (limit >= chunk)			return 0;	} else {		/* Different approach, try not to defer past a single		 * ACK.  Receiver should ACK every other full sized		 * frame, so if we have space for more than 3 frames		 * then send now.		 */		if (limit > tcp_max_burst(tp) * tp->mss_cache)			return 0;	}	/* Ok, it looks like it is advisable to defer.  */	return 1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/14869c388673e8db3348ab3706fa6485d0f0cf95/tcp_output.c/buggy/net/ipv4/tcp_output.c