u32 limit = tcp_window_allows(tp, skb, mss_now, cwnd_quota); 
limit = tcp_window_allows(tp, skb, mss_now, cwnd_quota); 
void tcp_push_one(struct sock *sk, unsigned int mss_now){	struct tcp_sock *tp = tcp_sk(sk);	struct sk_buff *skb = sk->sk_send_head;	unsigned int tso_segs, cwnd_quota;	BUG_ON(!skb || skb->len < mss_now);	tso_segs = tcp_init_tso_segs(sk, skb, mss_now);	cwnd_quota = tcp_snd_test(sk, skb, mss_now, TCP_NAGLE_PUSH);	if (likely(cwnd_quota)) {		BUG_ON(!tso_segs);		if (tso_segs > 1) {			u32 limit = tcp_window_allows(tp, skb,						      mss_now, cwnd_quota);			if (skb->len < limit) {				unsigned int trim = skb->len % mss_now;				if (trim)					limit = skb->len - trim;			}			if (skb->len > limit) {				if (unlikely(tso_fragment(sk, skb, limit, mss_now)))					return;			}		} else if (unlikely(skb->len > mss_now)) {			if (unlikely(tcp_fragment(sk, skb, mss_now, mss_now)))				return;		}		/* Send it out now. */		TCP_SKB_CB(skb)->when = tcp_time_stamp;		if (likely(!tcp_transmit_skb(sk, skb_clone(skb, sk->sk_allocation)))) {			update_send_head(sk, tp, skb);			tcp_cwnd_validate(sk, tp);			return;		}	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c8ac37746489f05a32a958b048f29ae45487e81e/tcp_output.c/clean/net/ipv4/tcp_output.c