diff options
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp_hybla.c | 6 | ||||
-rw-r--r-- | net/ipv4/tcp_input.c | 3 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/net/ipv4/tcp_hybla.c b/net/ipv4/tcp_hybla.c index bfcbd148a89d..c209e054a634 100644 --- a/net/ipv4/tcp_hybla.c +++ b/net/ipv4/tcp_hybla.c | |||
@@ -150,7 +150,11 @@ static void hybla_cong_avoid(struct sock *sk, u32 ack, u32 in_flight) | |||
150 | ca->snd_cwnd_cents -= 128; | 150 | ca->snd_cwnd_cents -= 128; |
151 | tp->snd_cwnd_cnt = 0; | 151 | tp->snd_cwnd_cnt = 0; |
152 | } | 152 | } |
153 | 153 | /* check when cwnd has not been incremented for a while */ | |
154 | if (increment == 0 && odd == 0 && tp->snd_cwnd_cnt >= tp->snd_cwnd) { | ||
155 | tp->snd_cwnd++; | ||
156 | tp->snd_cwnd_cnt = 0; | ||
157 | } | ||
154 | /* clamp down slowstart cwnd to ssthresh value. */ | 158 | /* clamp down slowstart cwnd to ssthresh value. */ |
155 | if (is_slowstart) | 159 | if (is_slowstart) |
156 | tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh); | 160 | tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh); |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 67ccce2a96bd..7abc6b80d47d 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -4879,7 +4879,8 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb, | |||
4879 | goto no_ack; | 4879 | goto no_ack; |
4880 | } | 4880 | } |
4881 | 4881 | ||
4882 | __tcp_ack_snd_check(sk, 0); | 4882 | if (!copied_early || tp->rcv_nxt != tp->rcv_wup) |
4883 | __tcp_ack_snd_check(sk, 0); | ||
4883 | no_ack: | 4884 | no_ack: |
4884 | #ifdef CONFIG_NET_DMA | 4885 | #ifdef CONFIG_NET_DMA |
4885 | if (copied_early) | 4886 | if (copied_early) |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 1b4fee20fc93..011478e46c40 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -618,7 +618,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, | |||
618 | ]; | 618 | ]; |
619 | } rep; | 619 | } rep; |
620 | struct ip_reply_arg arg; | 620 | struct ip_reply_arg arg; |
621 | struct net *net = dev_net(skb->dev); | 621 | struct net *net = dev_net(skb->dst->dev); |
622 | 622 | ||
623 | memset(&rep.th, 0, sizeof(struct tcphdr)); | 623 | memset(&rep.th, 0, sizeof(struct tcphdr)); |
624 | memset(&arg, 0, sizeof(arg)); | 624 | memset(&arg, 0, sizeof(arg)); |