1. 14 Aug, 2017 2 commits
    • Jason Wang's avatar
      tap: use build_skb() for small packet · 66ccbc9c
      Jason Wang authored
      We use tun_alloc_skb() which calls sock_alloc_send_pskb() to allocate
      skb in the past. This socket based method is not suitable for high
      speed userspace like virtualization which usually:
      
      - ignore sk_sndbuf (INT_MAX) and expect to receive the packet as fast as
        possible
      - don't want to be block at sendmsg()
      
      To eliminate the above overheads, this patch tries to use build_skb()
      for small packet. We will do this only when the following conditions
      are all met:
      
      - TAP instead of TUN
      - sk_sndbuf is INT_MAX
      - caller don't want to be blocked
      - zerocopy is not used
      - packet size is smaller enough to use build_skb()
      
      Pktgen from guest to host shows ~11% improvement for rx pps of tap:
      
      Before: ~1.70Mpps
      After : ~1.88Mpps
      
      What's more important, this makes it possible to implement XDP for tap
      before creating skbs.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      66ccbc9c
    • Jakub Sitnicki's avatar
      rtnelink: Move link dump consistency check out of the loop · d0225784
      Jakub Sitnicki authored
      Calls to rtnl_dump_ifinfo() are protected by RTNL lock. So are the
      {list,unlist}_netdevice() calls where we bump the net->dev_base_seq
      number.
      
      For this reason net->dev_base_seq can't change under out feet while
      we're looping over links in rtnl_dump_ifinfo(). So move the check for
      net->dev_base_seq change (since the last time we were called) out of the
      loop.
      
      This way we avoid giving a wrong impression that there are concurrent
      updates to the link list going on while we're iterating over them.
      Signed-off-by: default avatarJakub Sitnicki <jkbs@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d0225784
  2. 11 Aug, 2017 38 commits