17 Mar, 2017

1 commit


22 Nov, 2016

1 commit

  • The undo_cwnd fallback in the stack doubles cwnd based on ssthresh,
    which un-does reno halving behaviour.

    It seems more appropriate to let congctl algorithms pair .ssthresh
    and .undo_cwnd properly. Add a 'tcp_reno_undo_cwnd' function and wire it
    up for all congestion algorithms that used to rely on the fallback.

    Cc: Eric Dumazet
    Cc: Yuchung Cheng
    Cc: Neal Cardwell
    Signed-off-by: Florian Westphal
    Signed-off-by: David S. Miller

    Florian Westphal
     

12 May, 2016

1 commit

  • Replace 2 arguments (cnt and rtt) in the congestion control modules'
    pkts_acked() function with a struct. This will allow adding more
    information without having to modify existing congestion control
    modules (tcp_nv in particular needs bytes in flight when packet
    was sent).

    As proposed by Neal Cardwell in his comments to the tcp_nv patch.

    Signed-off-by: Lawrence Brakmo
    Acked-by: Yuchung Cheng
    Signed-off-by: David S. Miller

    Lawrence Brakmo
     

06 May, 2015

1 commit

  • I forgot to update tcp_westwood when changing get_info() behavior,
    this patch should fix this.

    Fixes: 64f40ff5bbdb ("tcp: prepare CC get_info() access from getsockopt()")
    Reported-by: kbuild test robot
    Signed-off-by: Eric Dumazet
    Acked-by: Neal Cardwell
    Signed-off-by: David S. Miller

    Eric Dumazet
     

18 Apr, 2015

1 commit

  • Two different problems are fixed here :

    1) inet_sk_diag_fill() might be called without socket lock held.
    icsk->icsk_ca_ops can change under us and module be unloaded.
    -> Access to freed memory.
    Fix this using rcu_read_lock() to prevent module unload.

    2) Some TCP Congestion Control modules provide information
    but again this is not safe against icsk->icsk_ca_ops
    change and nla_put() errors were ignored. Some sockets
    could not get the additional info if skb was almost full.

    Fix this by returning a status from get_info() handlers and
    using rcu protection as well.

    Signed-off-by: Eric Dumazet
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Eric Dumazet
     

29 Sep, 2014

1 commit

  • The congestion control ops "cwnd_event" currently supports
    CA_EVENT_FAST_ACK and CA_EVENT_SLOW_ACK events (among others).
    Both FAST and SLOW_ACK are only used by Westwood congestion
    control algorithm.

    This removes both flags from cwnd_event and adds a new
    in_ack_event callback for this. The goal is to be able to
    provide more detailed information about ACKs, such as whether
    ECE flag was set, or whether the ACK resulted in a window
    update.

    It is required for DataCenter TCP (DCTCP) congestion control
    algorithm as it makes a different choice depending on ECE being
    set or not.

    Joint work with Daniel Borkmann and Glenn Judd.

    Signed-off-by: Florian Westphal
    Signed-off-by: Daniel Borkmann
    Signed-off-by: Glenn Judd
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Florian Westphal
     

02 Sep, 2014

1 commit

  • Fix places where there is space before tab, long lines, and
    awkward if(){, double spacing etc. Add blank line after declaration/initialization.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger
     

14 Feb, 2014

1 commit


21 Mar, 2013

1 commit

  • The patch series refactor the F-RTO feature (RFC4138/5682).

    This is to simplify the loss recovery processing. Existing F-RTO
    was developed during the experimental stage (RFC4138) and has
    many experimental features. It takes a separate code path from
    the traditional timeout processing by overloading CA_Disorder
    instead of using CA_Loss state. This complicates CA_Disorder state
    handling because it's also used for handling dubious ACKs and undos.
    While the algorithm in the RFC does not change the congestion control,
    the implementation intercepts congestion control in various places
    (e.g., frto_cwnd in tcp_ack()).

    The new code implements newer F-RTO RFC5682 using CA_Loss processing
    path. F-RTO becomes a small extension in the timeout processing
    and interfaces with congestion control and Eifel undo modules.
    It lets congestion control (module) determines how many to send
    independently. F-RTO only chooses what to send in order to detect
    spurious retranmission. If timeout is found spurious it invokes
    existing Eifel undo algorithms like DSACK or TCP timestamp based
    detection.

    The first patch removes all F-RTO code except the sysctl_tcp_frto is
    left for the new implementation. Since CA_EVENT_FRTO is removed, TCP
    westwood now computes ssthresh on regular timeout CA_EVENT_LOSS event.

    Signed-off-by: Yuchung Cheng
    Acked-by: Neal Cardwell
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Yuchung Cheng
     

10 Mar, 2011

1 commit


24 Sep, 2010

1 commit


31 Jul, 2007

1 commit

  • This patch changes the API for the callback that is done after an ACK is
    received. It solves a couple of issues:

    * Some congestion controls want higher resolution value of RTT
    (controlled by TCP_CONG_RTT_SAMPLE flag). These don't really want a ktime, but
    all compute a RTT in microseconds.

    * Other congestion control could use RTT at jiffies resolution.

    To keep API consistent the units should be the same for both cases, just the
    resolution should change.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger