Message ID | 1321469885-10885-2-git-send-email-ncardwell@google.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, 16 Nov 2011, Neal Cardwell wrote: > The bug: Senders ignored DSACKs after recovery when there were no > outstanding packets (a common scenario for HTTP servers). > > The change: when there are no outstanding packets (the "no_queue" goto > label), call tcp_fastretrans_alert() in order to use DSACKs to undo > congestion window reductions. > > Other patches in this series will provide other changes that are > necessary to fully fix this problem. > > Signed-off-by: Neal Cardwell <ncardwell@google.com> > --- > net/ipv4/tcp_input.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index f772aaa..b49e418 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -3788,6 +3788,10 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) > return 1; > > no_queue: > + /* If data was DSACKed, see if we can undo a cwnd reduction. */ > + if (flag & FLAG_DSACKING_ACK) > + tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, > + is_dupack, flag); Acked-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> ...however, there could be other undo related gotchas now added by this patch due to complexity of tcp_fastretrans_alert. It would probably be safer to just add the dsack undo related code here?
From: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi> Date: Thu, 17 Nov 2011 03:34:17 +0200 (EET) > On Wed, 16 Nov 2011, Neal Cardwell wrote: > >> The bug: Senders ignored DSACKs after recovery when there were no >> outstanding packets (a common scenario for HTTP servers). >> >> The change: when there are no outstanding packets (the "no_queue" goto >> label), call tcp_fastretrans_alert() in order to use DSACKs to undo >> congestion window reductions. >> >> Other patches in this series will provide other changes that are >> necessary to fully fix this problem. >> >> Signed-off-by: Neal Cardwell <ncardwell@google.com> ... > > Acked-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Applied to net-next. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index f772aaa..b49e418 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3788,6 +3788,10 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) return 1; no_queue: + /* If data was DSACKed, see if we can undo a cwnd reduction. */ + if (flag & FLAG_DSACKING_ACK) + tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, + is_dupack, flag); /* If this ack opens up a zero window, clear backoff. It was * being used to time the probes, and is probably far higher than * it needs to be for normal retransmission.
The bug: Senders ignored DSACKs after recovery when there were no outstanding packets (a common scenario for HTTP servers). The change: when there are no outstanding packets (the "no_queue" goto label), call tcp_fastretrans_alert() in order to use DSACKs to undo congestion window reductions. Other patches in this series will provide other changes that are necessary to fully fix this problem. Signed-off-by: Neal Cardwell <ncardwell@google.com> --- net/ipv4/tcp_input.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)