On 1/26/21 6:23 AM, Ido Schimmel wrote: > From: Amit Cohen <amco...@nvidia.com> > > After installing a route to the kernel, user space receives an > acknowledgment, which means the route was installed in the kernel, > but not necessarily in hardware. > > The asynchronous nature of route installation in hardware can lead > to a routing daemon advertising a route before it was actually installed in > hardware. This can result in packet loss or mis-routed packets until the > route is installed in hardware. > > It is also possible for a route already installed in hardware to change > its action and therefore its flags. For example, a host route that is > trapping packets can be "promoted" to perform decapsulation following > the installation of an IPinIP/VXLAN tunnel. > > Emit RTM_NEWROUTE notifications whenever RTM_F_OFFLOAD/RTM_F_TRAP flags > are changed. The aim is to provide an indication to user-space > (e.g., routing daemons) about the state of the route in hardware. > > Introduce a sysctl that controls this behavior. > > Keep the default value at 0 (i.e., do not emit notifications) for several > reasons: > - Multiple RTM_NEWROUTE notification per-route might confuse existing > routing daemons. > - Convergence reasons in routing daemons. > - The extra notifications will negatively impact the insertion rate. > - Not all users are interested in these notifications. > > Move fib6_info_hw_flags_set() to C file because it is no longer a short > function. > > Signed-off-by: Amit Cohen <amco...@nvidia.com> > Signed-off-by: Ido Schimmel <ido...@nvidia.com> > --- > Documentation/networking/ip-sysctl.rst | 20 ++++++++++++ > include/net/ip6_fib.h | 10 ++---- > include/net/netns/ipv6.h | 1 + > net/ipv6/af_inet6.c | 1 + > net/ipv6/route.c | 44 ++++++++++++++++++++++++++ > net/ipv6/sysctl_net_ipv6.c | 9 ++++++ > 6 files changed, 77 insertions(+), 8 deletions(-) >
Reviewed-by: David Ahern <dsah...@kernel.org>