1. 10 Oct, 2013 6 commits
    • Eric Dumazet's avatar
      inet: rename ir_loc_port to ir_num · b44084c2
      Eric Dumazet authored
      In commit 634fb979 ("inet: includes a sock_common in request_sock")
      I forgot that the two ports in sock_common do not have same byte order :
      
      skc_dport is __be16 (network order), but skc_num is __u16 (host order)
      
      So sparse complains because ir_loc_port (mapped into skc_num) is
      considered as __u16 while it should be __be16
      
      Let rename ir_loc_port to ireq->ir_num (analogy with inet->inet_num),
      and perform appropriate htons/ntohs conversions.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b44084c2
    • Eric Dumazet's avatar
      tcp: use ACCESS_ONCE() in tcp_update_pacing_rate() · ba537427
      Eric Dumazet authored
      sk_pacing_rate is read by sch_fq packet scheduler at any time,
      with no synchronization, so make sure we update it in a
      sensible way. ACCESS_ONCE() is how we instruct compiler
      to not do stupid things, like using the memory location
      as a temporary variable.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ba537427
    • Eric Dumazet's avatar
      inet: includes a sock_common in request_sock · 634fb979
      Eric Dumazet authored
      TCP listener refactoring, part 5 :
      
      We want to be able to insert request sockets (SYN_RECV) into main
      ehash table instead of the per listener hash table to allow RCU
      lookups and remove listener lock contention.
      
      This patch includes the needed struct sock_common in front
      of struct request_sock
      
      This means there is no more inet6_request_sock IPv6 specific
      structure.
      
      Following inet_request_sock fields were renamed as they became
      macros to reference fields from struct sock_common.
      Prefix ir_ was chosen to avoid name collisions.
      
      loc_port   -> ir_loc_port
      loc_addr   -> ir_loc_addr
      rmt_addr   -> ir_rmt_addr
      rmt_port   -> ir_rmt_port
      iif        -> ir_iif
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      634fb979
    • Eric Dumazet's avatar
      net: gro: allow to build full sized skb · 8a29111c
      Eric Dumazet authored
      skb_gro_receive() is currently limited to 16 or 17 MSS per GRO skb,
      typically 24616 bytes, because it fills up to MAX_SKB_FRAGS frags.
      
      It's relatively easy to extend the skb using frag_list to allow
      more frags to be appended into the last sk_buff.
      
      This still builds very efficient skbs, and allows reaching 45 MSS per
      skb.
      
      (45 MSS GRO packet uses one skb plus a frag_list containing 2 additional
      sk_buff)
      
      High speed TCP flows benefit from this extension by lowering TCP stack
      cpu usage (less packets stored in receive queue, less ACK packets
      processed)
      
      Forwarding setups could be hurt, as such skbs will need to be
      linearized, although its not a new problem, as GRO could already
      provide skbs with a frag_list.
      
      We could make the 65536 bytes threshold a tunable to mitigate this.
      
      (First time we need to linearize skb in skb_needs_linearize(), we could
      lower the tunable to ~16*1460 so that following skb_gro_receive() calls
      build smaller skbs)
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8a29111c
    • baker.zhang's avatar
      fib_trie: only calc for the un-first node · 4c60f1d6
      baker.zhang authored
      This is a enhancement.
      
      for the first node in fib_trie, newpos is 0, bit is 1.
      Only for the leaf or node with unmatched key need calc pos.
      Signed-off-by: default avatarbaker.zhang <baker.kernel@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c60f1d6
    • Gao feng's avatar
      veth: allow to setup multicast address for veth device · 5c70ef85
      Gao feng authored
      We can only setup multicast address for network device when
      net_device_ops->ndo_set_rx_mode is not null.
      
      Some configurations need to add multicast address for net
      device, such as netfilter cluster match module.
      
      Add a fake ndo_set_rx_mode function to allow this operation.
      Signed-off-by: default avatarGao feng <gaofeng@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c70ef85
  2. 09 Oct, 2013 12 commits
  3. 08 Oct, 2013 22 commits