1. 02 4月, 2012 1 次提交
  2. 28 3月, 2012 1 次提交
  3. 16 3月, 2012 1 次提交
  4. 27 1月, 2012 2 次提交
  5. 14 1月, 2012 1 次提交
  6. 31 12月, 2011 1 次提交
    • J
      IPv6: Avoid taking write lock for /proc/net/ipv6_route · 32b293a5
      Josh Hunt 提交于
      During some debugging I needed to look into how /proc/net/ipv6_route
      operated and in my digging I found its calling fib6_clean_all() which uses
      "write_lock_bh(&table->tb6_lock)" before doing the walk of the table. I
      found this on 2.6.32, but reading the code I believe the same basic idea
      exists currently. Looking at the rtnetlink code they are only calling
      "read_lock_bh(&table->tb6_lock);" via fib6_dump_table(). While I realize
      reading from proc isn't the recommended way of fetching the ipv6 route
      table; taking a write lock seems unnecessary and would probably cause
      network performance issues.
      
      To verify this I loaded up the ipv6 route table and then ran iperf in 3
      cases:
        * doing nothing
        * reading ipv6 route table via proc
          (while :; do cat /proc/net/ipv6_route > /dev/null; done)
        * reading ipv6 route table via rtnetlink
          (while :; do ip -6 route show table all > /dev/null; done)
      
      * Load the ipv6 route table up with:
        * for ((i = 0;i < 4000;i++)); do ip route add unreachable 2000::$i; done
      
      * iperf commands:
        * client: iperf -i 1 -V -c <ipv6 addr>
        * server: iperf -V -s
      
      * iperf results - 3 runs each (in Mbits/sec)
        * nothing: client: 927,927,927 server: 927,927,927
        * proc: client: 179,97,96,113 server: 142,112,133
        * iproute: client: 928,927,928 server: 927,927,927
      
      lock_stat shows taking the write lock is causing the slowdown. Using this
      info I decided to write a version of fib6_clean_all() which replaces
      write_lock_bh(&table->tb6_lock) with read_lock_bh(&table->tb6_lock). With
      this new function I see the same results as with my rtnetlink iperf test.
      Signed-off-by: NJosh Hunt <joshhunt00@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      32b293a5
  7. 30 12月, 2011 2 次提交
  8. 29 12月, 2011 2 次提交
  9. 27 12月, 2011 1 次提交
  10. 14 12月, 2011 2 次提交
  11. 07 12月, 2011 2 次提交
  12. 06 12月, 2011 1 次提交
  13. 05 12月, 2011 1 次提交
  14. 04 12月, 2011 2 次提交
  15. 27 11月, 2011 3 次提交
  16. 23 11月, 2011 1 次提交
  17. 15 11月, 2011 1 次提交
  18. 01 11月, 2011 1 次提交
  19. 29 10月, 2011 1 次提交
  20. 28 9月, 2011 1 次提交
  21. 17 9月, 2011 1 次提交
  22. 03 8月, 2011 1 次提交
  23. 22 7月, 2011 1 次提交
    • E
      ipv6: unshare inetpeers · 21efcfa0
      Eric Dumazet 提交于
      We currently cow metrics a bit too soon in IPv6 case : All routes are
      tied to a single inetpeer entry.
      
      Change ip6_rt_copy() to get destination address as second argument, so
      that we fill rt6i_dst before the dst_copy_metrics() call.
      
      icmp6_dst_alloc() must set rt6i_dst before calling dst_metric_set(), or
      else the cow is done while rt6i_dst is still NULL.
      
      If orig route points to readonly metrics, we can share the pointer
      instead of performing the memory allocation and copy.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      21efcfa0
  24. 18 7月, 2011 3 次提交
  25. 02 7月, 2011 2 次提交
    • D
      ipv6: Don't put artificial limit on routing table size. · 957c665f
      David S. Miller 提交于
      IPV6, unlike IPV4, doesn't have a routing cache.
      
      Routing table entries, as well as clones made in response
      to route lookup requests, all live in the same table.  And
      all of these things are together collected in the destination
      cache table for ipv6.
      
      This means that routing table entries count against the garbage
      collection limits, even though such entries cannot ever be reclaimed
      and are added explicitly by the administrator (rather than being
      created in response to lookups).
      
      Therefore it makes no sense to count ipv6 routing table entries
      against the GC limits.
      
      Add a DST_NOCOUNT destination cache entry flag, and skip the counting
      if it is set.  Use this flag bit in ipv6 when adding routing table
      entries.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      957c665f
    • D
      ipv6: Don't change dst->flags using assignments. · 11d53b49
      David S. Miller 提交于
      This blows away any flags already set in the entry.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      11d53b49
  26. 10 6月, 2011 1 次提交
    • G
      rtnetlink: Compute and store minimum ifinfo dump size · c7ac8679
      Greg Rose 提交于
      The message size allocated for rtnl ifinfo dumps was limited to
      a single page.  This is not enough for additional interface info
      available with devices that support SR-IOV and caused a bug in
      which VF info would not be displayed if more than approximately
      40 VFs were created per interface.
      
      Implement a new function pointer for the rtnl_register service that will
      calculate the amount of data required for the ifinfo dump and allocate
      enough data to satisfy the request.
      Signed-off-by: NGreg Rose <gregory.v.rose@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c7ac8679
  27. 21 5月, 2011 1 次提交
  28. 29 4月, 2011 2 次提交