06 May, 2013

1 commit

  • TCP metric cache expires entries after one hour.

    This probably make sense for TCP RTT/RTTVAR/CWND, but not
    for TCP fastopen cookies.

    Its better to try previous cookie. If it appears to be obsolete,
    server will send us new cookie anyway.

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

    Eric Dumazet
     

17 Nov, 2012

1 commit


01 Nov, 2012

1 commit


11 Sep, 2012

1 commit

  • It is a frequent mistake to confuse the netlink port identifier with a
    process identifier. Try to reduce this confusion by renaming fields
    that hold port identifiers portid instead of pid.

    I have carefully avoided changing the structures exported to
    userspace to avoid changing the userspace API.

    I have successfully built an allyesconfig kernel with this change.

    Signed-off-by: "Eric W. Biederman"
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Eric W. Biederman
     

06 Sep, 2012

1 commit

  • Add support for genl "tcp_metrics". No locking
    is changed, only that now we can unlink and delete
    entries after grace period. We implement get/del for
    single entry and dump to support show/flush filtering
    in user space. Del without address attribute causes
    flush for all addresses, sadly under genl_mutex.

    v2:
    - remove rcu_assign_pointer as suggested by Eric Dumazet,
    it is not needed because there are no other writes under lock
    - move the flushing code in tcp_metrics_flush_all

    v3:
    - remove synchronize_rcu on flush as suggested by Eric Dumazet

    Signed-off-by: Julian Anastasov
    Signed-off-by: David S. Miller

    Julian Anastasov
     

09 Aug, 2012

1 commit


23 Jul, 2012

1 commit

  • In tcp_tw_remember_stamp we incorrectly checked tw
    instead of tm, it can lead to oops if the cached entry is
    not found.

    tcpm_stamp was not updated in tcpm_check_stamp when
    tcpm_suck_dst was called, move the update into tcpm_suck_dst,
    so that we do not call it infinitely on every next cache hit
    after TCP_METRICS_TIMEOUT.

    Signed-off-by: Julian Anastasov
    Signed-off-by: David S. Miller

    Julian Anastasov
     

21 Jul, 2012

1 commit

  • Fix a missing roundup_pow_of_two(), since tcpmhash_entries is not
    guaranteed to be a power of two.

    Uses hash_32() instead of custom hash.

    tcpmhash_entries should be an unsigned int.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

20 Jul, 2012

2 commits

  • On paths with firewalls dropping SYN with data or experimental TCP options,
    Fast Open connections will have experience SYN timeout and bad performance.
    The solution is to track such incidents in the cookie cache and disables
    Fast Open temporarily.

    Since only the original SYN includes data and/or Fast Open option, the
    SYN-ACK has some tell-tale sign (tcp_rcv_fastopen_synack()) to detect
    such drops. If a path has recurring Fast Open SYN drops, Fast Open is
    disabled for 2^(recurring_losses) minutes starting from four minutes up to
    roughly one and half day. sendmsg with MSG_FASTOPEN flag will succeed but
    it behaves as connect() then write().

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

    Yuchung Cheng
     
  • With help from Eric Dumazet, add Fast Open metrics in tcp metrics cache.
    The basic ones are MSS and the cookies. Later patch will cache more to
    handle unfriendly middleboxes.

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

    Yuchung Cheng
     

19 Jul, 2012

1 commit

  • Introduce ipv6_addr_hash() helper doing a XOR on all bits
    of an IPv6 address, with an optimized x86_64 version.

    Use it in flow dissector, as suggested by Andrew McGregor,
    to reduce hash collision probabilities in fq_codel (and other
    users of flow dissector)

    Use it in ip6_tunnel.c and use more bit shuffling, as suggested
    by David Laight, as existing hash was ignoring most of them.

    Use it in sunrpc and use more bit shuffling, using hash_32().

    Use it in net/ipv6/addrconf.c, using hash_32() as well.

    As a cleanup, use it in net/ipv4/tcp_metrics.c

    Signed-off-by: Eric Dumazet
    Reported-by: Andrew McGregor
    Cc: Dave Taht
    Cc: Tom Herbert
    Cc: David Laight
    Cc: Joe Perches
    Signed-off-by: David S. Miller

    Eric Dumazet
     

12 Jul, 2012

1 commit

  • The recent patch "tcp: Maintain dynamic metrics in local cache." introduced
    an out of bounds access due to what appears to be a typo. I believe this
    change should resolve the issue by replacing the access to RTAX_CWND with
    TCP_METRIC_CWND.

    Signed-off-by: Alexander Duyck
    Signed-off-by: David S. Miller

    Alexander Duyck
     

11 Jul, 2012

4 commits