1. 07 Aug, 2017 1 commit
  2. 21 Nov, 2016 1 commit
  3. 09 Jul, 2015 1 commit
  4. 02 Sep, 2014 1 commit
  5. 03 May, 2014 1 commit
  6. 13 Feb, 2014 1 commit
  7. 05 Nov, 2013 1 commit
    • Yuchung Cheng's avatar
      tcp: properly handle stretch acks in slow start · 9f9843a7
      Yuchung Cheng authored
      Slow start now increases cwnd by 1 if an ACK acknowledges some packets,
      regardless the number of packets. Consequently slow start performance
      is highly dependent on the degree of the stretch ACKs caused by
      receiver or network ACK compression mechanisms (e.g., delayed-ACK,
      GRO, etc).  But slow start algorithm is to send twice the amount of
      packets of packets left so it should process a stretch ACK of degree
      N as if N ACKs of degree 1, then exits when cwnd exceeds ssthresh. A
      follow up patch will use the remainder of the N (if greater than 1)
      to adjust cwnd in the congestion avoidance phase.
      
      In addition this patch retires the experimental limited slow start
      (LSS) feature. LSS has multiple drawbacks but questionable benefit. The
      fractional cwnd increase in LSS requires a loop in slow start even
      though it's rarely used. Configuring such an increase step via a global
      sysctl on different BDPS seems hard. Finally and most importantly the
      slow start overshoot concern is now better covered by the Hybrid slow
      start (hystart) enabled by default.
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9f9843a7
  8. 10 Mar, 2011 1 commit
  9. 28 Jan, 2008 1 commit
  10. 18 Jul, 2007 1 commit
  11. 03 May, 2007 1 commit
  12. 11 Feb, 2007 1 commit
  13. 22 Sep, 2006 1 commit
  14. 12 Jul, 2006 1 commit
    • Xiaoliang (David) Wei's avatar
      [TCP] tcp_highspeed: Fix AI updates. · 6150c22e
      Xiaoliang (David) Wei authored
      I think there is still a problem with the AIMD parameter update in
      HighSpeed TCP code.
      
      Line 125~138 of the code (net/ipv4/tcp_highspeed.c):
      
      	/* Update AIMD parameters */
      	if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) {
      		while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd &&
      		       ca->ai < HSTCP_AIMD_MAX - 1)
      			ca->ai++;
      	} else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) {
      		while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd &&
      		       ca->ai > 0)
      			ca->ai--;
      
      In fact, the second part (decreasing ca->ai) never decreases since the
      while loop's inequality is in the reverse direction. This leads to
      unfairness with multiple flows (once a flow happens to enjoy a higher
      ca->ai, it keeps enjoying that even its cwnd decreases)
      
      Here is a tentative fix (I also added a comment, trying to keep the
      change clear):
      Acked-by: default avatarStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6150c22e
  15. 30 Jun, 2006 1 commit
  16. 18 Jun, 2006 1 commit
  17. 03 Jun, 2006 1 commit
  18. 06 May, 2006 1 commit
    • John Heffner's avatar
      [TCP]: Fix snd_cwnd adjustments in tcp_highspeed.c · 5528e568
      John Heffner authored
      Xiaoliang (David) Wei wrote:
      > Hi gurus,
      > 
      >    I am reading the code of tcp_highspeed.c in the kernel and have a
      > question on the hstcp_cong_avoid function, specifically the following
      > AI part (line 136~143 in net/ipv4/tcp_highspeed.c ):
      > 
      >                /* Do additive increase */
      >                if (tp->snd_cwnd < tp->snd_cwnd_clamp) {
      >                        tp->snd_cwnd_cnt += ca->ai;
      >                        if (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
      >                                tp->snd_cwnd++;
      >                                tp->snd_cwnd_cnt -= tp->snd_cwnd;
      >                        }
      >                }
      > 
      >    In this part, when (tp->snd_cwnd_cnt == tp->snd_cwnd),
      > snd_cwnd_cnt will be -1... snd_cwnd_cnt is defined as u16, will this
      > small chance of getting -1 becomes a problem?
      > Shall we change it by reversing the order of the cwnd++ and cwnd_cnt -= 
      > cwnd?
      
      Absolutely correct.  Thanks.
      Signed-off-by: default avatarJohn Heffner <jheffner@psc.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5528e568
  19. 13 Mar, 2006 1 commit
  20. 17 Nov, 2005 1 commit
  21. 11 Nov, 2005 2 commits
  22. 29 Aug, 2005 1 commit
    • Arnaldo Carvalho de Melo's avatar
      [ICSK]: Move TCP congestion avoidance members to icsk · 6687e988
      Arnaldo Carvalho de Melo authored
      This changeset basically moves tcp_sk()->{ca_ops,ca_state,etc} to inet_csk(),
      minimal renaming/moving done in this changeset to ease review.
      
      Most of it is just changes of struct tcp_sock * to struct sock * parameters.
      
      With this we move to a state closer to two interesting goals:
      
      1. Generalisation of net/ipv4/tcp_diag.c, becoming inet_diag.c, being used
         for any INET transport protocol that has struct inet_hashinfo and are
         derived from struct inet_connection_sock. Keeps the userspace API, that will
         just not display DCCP sockets, while newer versions of tools can support
         DCCP.
      
      2. INET generic transport pluggable Congestion Avoidance infrastructure, using
         the current TCP CA infrastructure with DCCP.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6687e988
  23. 23 Jun, 2005 1 commit