On 10/9/18 9:48 AM, Sabrina Dubroca wrote: > Since commit 5aad1de5ea2c ("ipv4: use separate genid for next hop > exceptions"), exceptions get deprecated separately from cached > routes. In particular, administrative changes don't clear PMTU anymore. > > As Stefano described in commit e9fa1495d738 ("ipv6: Reflect MTU changes > on PMTU of exceptions for MTU-less routes"), the PMTU discovered before > the local MTU change can become stale: > - if the local MTU is now lower than the PMTU, that PMTU is now > incorrect > - if the local MTU was the lowest value in the path, and is increased, > we might discover a higher PMTU > > Similarly to what commit e9fa1495d738 did for IPv6, update PMTU in those > cases. > > If the exception was locked, the discovered PMTU was smaller than the > minimal accepted PMTU. In that case, if the new local MTU is smaller > than the current PMTU, let PMTU discovery figure out if locking of the > exception is still needed. > > To do this, we need to know the old link MTU in the NETDEV_CHANGEMTU > notifier. By the time the notifier is called, dev->mtu has been > changed. This patch adds the old MTU as additional information in the > notifier structure, and a new call_netdevice_notifiers_u32() function. > > Fixes: 5aad1de5ea2c ("ipv4: use separate genid for next hop exceptions") > Signed-off-by: Sabrina Dubroca <s...@queasysnail.net> > Reviewed-by: Stefano Brivio <sbri...@redhat.com> > --- > v2: > - s/u32/mtu/ in netdev_notifier_info_ext and call_netdevice_notifiers_ > helper, suggested by David Ahern > - don't EXPORT_SYMBOL the helper, it's only used in net/core/dev.c > - fix typo in commit message > - fix kerneldoc comment, spotted by kbuild bot > > include/linux/netdevice.h | 7 ++++++ > include/net/ip_fib.h | 1 + > net/core/dev.c | 28 ++++++++++++++++++++-- > net/ipv4/fib_frontend.c | 12 ++++++---- > net/ipv4/fib_semantics.c | 50 +++++++++++++++++++++++++++++++++++++++ > 5 files changed, 92 insertions(+), 6 deletions(-)
Reviewed-by: David Ahern <dsah...@gmail.com>