diff options
Diffstat (limited to 'net/ipv4/tcp.c')
| -rw-r--r-- | net/ipv4/tcp.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 197c0008503..e457c7ab2e2 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -830,8 +830,8 @@ static int tcp_send_mss(struct sock *sk, int *size_goal, int flags)  	return mss_now;  } -static ssize_t do_tcp_sendpages(struct sock *sk, struct page **pages, int poffset, -			 size_t psize, int flags) +static ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset, +				size_t size, int flags)  {  	struct tcp_sock *tp = tcp_sk(sk);  	int mss_now, size_goal; @@ -858,12 +858,9 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page **pages, int poffse  	if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN))  		goto out_err; -	while (psize > 0) { +	while (size > 0) {  		struct sk_buff *skb = tcp_write_queue_tail(sk); -		struct page *page = pages[poffset / PAGE_SIZE];  		int copy, i; -		int offset = poffset % PAGE_SIZE; -		int size = min_t(size_t, psize, PAGE_SIZE - offset);  		bool can_coalesce;  		if (!tcp_send_head(sk) || (copy = size_goal - skb->len) <= 0) { @@ -912,8 +909,8 @@ new_segment:  			TCP_SKB_CB(skb)->tcp_flags &= ~TCPHDR_PSH;  		copied += copy; -		poffset += copy; -		if (!(psize -= copy)) +		offset += copy; +		if (!(size -= copy))  			goto out;  		if (skb->len < size_goal || (flags & MSG_OOB)) @@ -960,7 +957,7 @@ int tcp_sendpage(struct sock *sk, struct page *page, int offset,  					flags);  	lock_sock(sk); -	res = do_tcp_sendpages(sk, &page, offset, size, flags); +	res = do_tcp_sendpages(sk, page, offset, size, flags);  	release_sock(sk);  	return res;  } @@ -1212,7 +1209,7 @@ new_segment:  wait_for_sndbuf:  			set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);  wait_for_memory: -			if (copied && likely(!tp->repair)) +			if (copied)  				tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH);  			if ((err = sk_stream_wait_memory(sk, &timeo)) != 0) @@ -1223,7 +1220,7 @@ wait_for_memory:  	}  out: -	if (copied && likely(!tp->repair)) +	if (copied)  		tcp_push(sk, flags, mss_now, tp->nonagle);  	release_sock(sk);  	return copied + copied_syn;  |