diff options
author | David S. Miller <davem@davemloft.net> | 2015-03-20 23:51:09 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-20 23:51:09 +0100 |
commit | 0fa74a4be48e0f810d3dc6ddbc9d6ac7e86cbee8 (patch) | |
tree | ccfee93ede4e36d6d355e00e485d3d1c0fec0bdd /net/ipv4/tcp_cong.c | |
parent | rhashtable: Fix undeclared EEXIST build error on ia64 (diff) | |
parent | net: validate the range we feed to iov_iter_init() in sys_sendto/sys_recvfrom (diff) | |
download | linux-0fa74a4be48e0f810d3dc6ddbc9d6ac7e86cbee8.tar.xz linux-0fa74a4be48e0f810d3dc6ddbc9d6ac7e86cbee8.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/emulex/benet/be_main.c
net/core/sysctl_net_core.c
net/ipv4/inet_diag.c
The be_main.c conflict resolution was really tricky. The conflict
hunks generated by GIT were very unhelpful, to say the least. It
split functions in half and moved them around, when the real actual
conflict only existed solely inside of one function, that being
be_map_pci_bars().
So instead, to resolve this, I checked out be_main.c from the top
of net-next, then I applied the be_main.c changes from 'net' since
the last time I merged. And this worked beautifully.
The inet_diag.c and sysctl_net_core.c conflicts were simple
overlapping changes, and were easily to resolve.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_cong.c')
-rw-r--r-- | net/ipv4/tcp_cong.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c index d4c3a5e66380..7a5ae50c80c8 100644 --- a/net/ipv4/tcp_cong.c +++ b/net/ipv4/tcp_cong.c @@ -378,6 +378,12 @@ EXPORT_SYMBOL_GPL(tcp_slow_start); */ void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked) { + /* If credits accumulated at a higher w, apply them gently now. */ + if (tp->snd_cwnd_cnt >= w) { + tp->snd_cwnd_cnt = 0; + tp->snd_cwnd++; + } + tp->snd_cwnd_cnt += acked; if (tp->snd_cwnd_cnt >= w) { u32 delta = tp->snd_cwnd_cnt / w; |