Message ID | 1490827759-12142-1-git-send-email-gfree.wind@foxmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: gfree.wind@foxmail.com Date: Thu, 30 Mar 2017 06:49:19 +0800 > From: Gao Feng <fgao@ikuai8.com> > > 1. Move the "window = tp->rcv_wnd;" into the condition block without > tp->rx_opt.rcv_wscale. > Because it is unnecessary when enable wscale; > > 2. Use the macro ALIGN instead of two statements. > The two statements are used to make window align to 1<<wscale. > Use the ALIGN is more clearer. > > 3. Use the rounddown to make codes clearer. > > Signed-off-by: Gao Feng <fgao@ikuai8.com> Applied, but please do not target non-netfilter patches using "nf-next" in your Subject lines.
> -----Original Message----- > From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] > On Behalf Of David Miller > Sent: Friday, March 31, 2017 6:42 AM > To: gfree.wind@foxmail.com > Cc: kuznet@ms2.inr.ac.ru; jmorris@namei.org; netdev@vger.kernel.org; > fgao@ikuai8.com > Subject: Re: [PATCH nf-next 1/1] net: tcp: Refine the __tcp_select_window > > From: gfree.wind@foxmail.com > Date: Thu, 30 Mar 2017 06:49:19 +0800 > > > From: Gao Feng <fgao@ikuai8.com> > > > > 1. Move the "window = tp->rcv_wnd;" into the condition block without > > tp->rx_opt.rcv_wscale. > > Because it is unnecessary when enable wscale; > > > > 2. Use the macro ALIGN instead of two statements. > > The two statements are used to make window align to 1<<wscale. > > Use the ALIGN is more clearer. > > > > 3. Use the rounddown to make codes clearer. > > > > Signed-off-by: Gao Feng <fgao@ikuai8.com> > > Applied, but please do not target non-netfilter patches using "nf-next" in your > Subject lines. Sorry, I misspelled the subject. I would pay more attention on it. Regards Feng
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 22548b5..1397194 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2561,7 +2561,6 @@ u32 __tcp_select_window(struct sock *sk) /* Don't do rounding if we are using window scaling, since the * scaled window will not line up with the MSS boundary anyway. */ - window = tp->rcv_wnd; if (tp->rx_opt.rcv_wscale) { window = free_space; @@ -2569,10 +2568,9 @@ u32 __tcp_select_window(struct sock *sk) * Import case: prevent zero window announcement if * 1<<rcv_wscale > mss. */ - if (((window >> tp->rx_opt.rcv_wscale) << tp->rx_opt.rcv_wscale) != window) - window = (((window >> tp->rx_opt.rcv_wscale) + 1) - << tp->rx_opt.rcv_wscale); + window = ALIGN(window, (1 << tp->rx_opt.rcv_wscale)); } else { + window = tp->rcv_wnd; /* Get the largest window that is a nice multiple of mss. * Window clamp already applied above. * If our current window offering is within 1 mss of the @@ -2582,7 +2580,7 @@ u32 __tcp_select_window(struct sock *sk) * is too small. */ if (window <= free_space - mss || window > free_space) - window = (free_space / mss) * mss; + window = rounddown(free_space, mss); else if (mss == full_space && free_space > window + (full_space >> 1)) window = free_space;