|
@@ -3568,10 +3568,6 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
|
|
&sack_state);
|
|
&sack_state);
|
|
acked -= tp->packets_out;
|
|
acked -= tp->packets_out;
|
|
|
|
|
|
- /* Advance cwnd if state allows */
|
|
|
|
- if (tcp_may_raise_cwnd(sk, flag))
|
|
|
|
- tcp_cong_avoid(sk, ack, acked);
|
|
|
|
-
|
|
|
|
if (tcp_ack_is_dubious(sk, flag)) {
|
|
if (tcp_ack_is_dubious(sk, flag)) {
|
|
is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP));
|
|
is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP));
|
|
tcp_fastretrans_alert(sk, acked, prior_unsacked,
|
|
tcp_fastretrans_alert(sk, acked, prior_unsacked,
|
|
@@ -3580,6 +3576,10 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
|
|
if (tp->tlp_high_seq)
|
|
if (tp->tlp_high_seq)
|
|
tcp_process_tlp_ack(sk, ack, flag);
|
|
tcp_process_tlp_ack(sk, ack, flag);
|
|
|
|
|
|
|
|
+ /* Advance cwnd if state allows */
|
|
|
|
+ if (tcp_may_raise_cwnd(sk, flag))
|
|
|
|
+ tcp_cong_avoid(sk, ack, acked);
|
|
|
|
+
|
|
if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) {
|
|
if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) {
|
|
struct dst_entry *dst = __sk_dst_get(sk);
|
|
struct dst_entry *dst = __sk_dst_get(sk);
|
|
if (dst)
|
|
if (dst)
|