01 Aug, 2012

2 commits

  • Introduce sk_gfp_atomic(), this function allows to inject sock specific
    flags to each sock related allocation. It is only used on allocation
    paths that may be required for writing pages back to network storage.

    [davem@davemloft.net: Use sk_gfp_atomic only when necessary]
    Signed-off-by: Peter Zijlstra
    Signed-off-by: Mel Gorman
    Acked-by: David S. Miller
    Cc: Neil Brown
    Cc: Mike Christie
    Cc: Eric B Munson
    Cc: Eric Dumazet
    Cc: Sebastian Andrzej Siewior
    Cc: Mel Gorman
    Cc: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • Sanity:

    CONFIG_CGROUP_MEM_RES_CTLR -> CONFIG_MEMCG
    CONFIG_CGROUP_MEM_RES_CTLR_SWAP -> CONFIG_MEMCG_SWAP
    CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED -> CONFIG_MEMCG_SWAP_ENABLED
    CONFIG_CGROUP_MEM_RES_CTLR_KMEM -> CONFIG_MEMCG_KMEM

    [mhocko@suse.cz: fix missed bits]
    Cc: Glauber Costa
    Acked-by: Michal Hocko
    Cc: Johannes Weiner
    Cc: KAMEZAWA Hiroyuki
    Cc: Hugh Dickins
    Cc: Tejun Heo
    Cc: Aneesh Kumar K.V
    Cc: David Rientjes
    Cc: KOSAKI Motohiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

27 Jul, 2012

1 commit


23 Jul, 2012

1 commit

  • ICMP messages generated in output path if frame length is bigger than
    mtu are actually lost because socket is owned by user (doing the xmit)

    One example is the ipgre_tunnel_xmit() calling
    icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu));

    We had a similar case fixed in commit a34a101e1e6 (ipv6: disable GSO on
    sockets hitting dst_allfrag).

    Problem of such fix is that it relied on retransmit timers, so short tcp
    sessions paid a too big latency increase price.

    This patch uses the tcp_release_cb() infrastructure so that MTU
    reduction messages (ICMP messages) are not lost, and no extra delay
    is added in TCP transmits.

    Reported-by: Maciej Żenczykowski
    Diagnosed-by: Neal Cardwell
    Signed-off-by: Eric Dumazet
    Cc: Nandita Dukkipati
    Cc: Tom Herbert
    Cc: Tore Anderson
    Signed-off-by: David S. Miller

    Eric Dumazet
     

21 Jul, 2012

1 commit


20 Jul, 2012

1 commit

  • This patch impelements the common code for both the client and server.

    1. TCP Fast Open option processing. Since Fast Open does not have an
    option number assigned by IANA yet, it shares the experiment option
    code 254 by implementing draft-ietf-tcpm-experimental-options
    with a 16 bits magic number 0xF989. This enables global experiments
    without clashing the scarce(2) experimental options available for TCP.

    When the draft status becomes standard (maybe), the client should
    switch to the new option number assigned while the server supports
    both numbers for transistion.

    2. The new sysctl tcp_fastopen

    3. A place holder init function

    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
     

18 Jul, 2012

2 commits

  • We should provide to inet6_csk_route_socket a struct flowi6 pointer,
    so that net6_csk_xmit() works correctly instead of sending garbage.

    Also add some consts

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

    Eric Dumazet
     
  • These patches implement the final mechanism necessary to really allow
    us to go without the route cache in ipv4.

    We need a place to have long-term storage of PMTU/redirect information
    which is independent of the routes themselves, yet does not get us
    back into a situation where we have to write to metrics or anything
    like that.

    For this we use an "next-hop exception" table in the FIB nexthops.

    The one thing I desperately want to avoid is having to create clone
    routes in the FIB trie for this purpose, because that is very
    expensive. However, I'm willing to entertain such an idea later
    if this current scheme proves to have downsides that the FIB trie
    variant would not have.

    In order to accomodate this any such scheme, we need to be able to
    produce a full flow key at PMTU/redirect time. That required an
    adjustment of the interface call-sites used to propagate these events.

    For a PMTU/redirect with a fully specified socket, we pass that socket
    and use it to produce the flow key.

    Otherwise we use a passed in SKB to formulate the key. There are two
    cases that need to be distinguished, ICMP message processing (in which
    case the IP header is at skb->data) and output packet processing
    (mostly tunnels, and in all such cases the IP header is at ip_hdr(skb)).

    We also have to make the code able to handle the case where the dst
    itself passed into the dst_ops->{update_pmtu,redirect} method is
    invalidated. This matters for calls from sockets that have cached
    that route. We provide a inet{,6} helper function for this purpose,
    and edit SCTP specially since it caches routes at the transport rather
    than socket level.

    Signed-off-by: David S. Miller

    David S. Miller
     

17 Jul, 2012

3 commits

  • This will be used so that we can compose a full flow key.

    Even though we have a route in this context, we need more. In the
    future the routes will be without destination address, source address,
    etc. keying. One ipv4 route will cover entire subnets, etc.

    In this environment we have to have a way to possess persistent storage
    for redirects and PMTU information. This persistent storage will exist
    in the FIB tables, and that's why we'll need to be able to rebuild a
    full lookup flow key here. Using that flow key will do a fib_lookup()
    and create/update the persistent entry.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • We need to check the passed in multicast address and return
    appropriate errno(EINVAL) if it is not valid. And it's no need
    to walk through the ipv6_mc_list in this situation.

    Signed-off-by: Li Wei
    Signed-off-by: David S. Miller

    Li Wei
     
  • Userspace implementations of network routing protocols sometimes need to
    tell RA-originated IPv6 routes from other kernel routes to make proper
    routing decisions. This makes most sense for RA routes with nexthops,
    namely, default routes and Route Information routes.

    The intended mean of preserving RA route origin in a netlink message is
    through indicating RTPROT_RA as protocol code. Function rt6_fill_node()
    tried to do that for default routes, but its test condition was taken
    wrong. This change is modeled after the original mailing list posting
    by Jeff Haran. It fixes the test condition for default route case and
    sets the same behaviour for Route Information case (both types use
    nexthops). Handling of the 3rd RA route type, Prefix Information, is
    left unchanged, as it stands for interface connected routes (without
    nexthops).

    Signed-off-by: Denis Ovsienko
    Signed-off-by: David S. Miller

    Denis Ovsienko
     

16 Jul, 2012

1 commit


14 Jul, 2012

1 commit


12 Jul, 2012

9 commits


11 Jul, 2012

7 commits


08 Jul, 2012

1 commit


06 Jul, 2012

3 commits


05 Jul, 2012

6 commits