From: David Ahern <dsah...@gmail.com> Patches 1 and 4 move pcpu and exception caches from fib6_info to fib6_nh. With respect to the current FIB entries this is only a movement from one struct to another contained within the first.
Patch 2 refactors the core logic of fib6_drop_pcpu_from into a helper that is invoked per fib6_nh. Patch 3 refactors exception handling in a similar way - creating a bunch of helpers that can be invoked per fib6_nh with the goal of making patch 4 easier to review as well as creating the code needed for nexthop objects. Patch 5 makes a fib6_nh at the end of a fib6_info an array similar to IPv4 and its fib_info. For the current fib entry model, all fib6_info will have a fib6_nh allocated for it. Patch 6 refactors ip6_route_del moving the code for deleting an exception entry into a new function. Patch 7 adds tests for redirect route exceptions. The new test was written against 5.1 (before any of the nexthop refactoring). It and the pmtu.sh selftest exercise the exception code paths - from creating exceptions to cleaning them up on device delete. All tests pass without any rcu locking or memleak warnings. David Ahern (7): ipv6: Move pcpu cached routes to fib6_nh ipv6: Refactor fib6_drop_pcpu_from ipv6: Refactor exception functions ipv6: Move exception bucket to fib6_nh ipv6: Make fib6_nh optional at the end of fib6_info ipv6: Refactor ip6_route_del for cached routes selftests: Add redirect tests .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 31 +- include/net/ip6_fib.h | 17 +- include/net/ip6_route.h | 4 +- net/ipv6/addrconf.c | 10 +- net/ipv6/ip6_fib.c | 87 ++-- net/ipv6/ndisc.c | 8 +- net/ipv6/route.c | 452 ++++++++++++-------- tools/testing/selftests/net/icmp_redirect.sh | 455 +++++++++++++++++++++ 8 files changed, 820 insertions(+), 244 deletions(-) create mode 100755 tools/testing/selftests/net/icmp_redirect.sh -- 2.11.0