On Tue, Sep 08, 2020 at 08:58:07AM -0600, David Ahern wrote: > On 9/8/20 3:10 AM, Ido Schimmel wrote: > > From: Ido Schimmel <ido...@nvidia.com> > > > > Convert the sole listener of the nexthop notification chain (the VXLAN > > driver) to the new notification info. > > > > Signed-off-by: Ido Schimmel <ido...@nvidia.com> > > --- > > drivers/net/vxlan.c | 9 +++++++-- > > net/ipv4/nexthop.c | 2 +- > > 2 files changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c > > index b9fefe27e3e8..29deedee6ef4 100644 > > --- a/drivers/net/vxlan.c > > +++ b/drivers/net/vxlan.c > > @@ -4687,9 +4687,14 @@ static void vxlan_fdb_nh_flush(struct nexthop *nh) > > static int vxlan_nexthop_event(struct notifier_block *nb, > > unsigned long event, void *ptr) > > { > > - struct nexthop *nh = ptr; > > + struct nh_notifier_info *info = ptr; > > + struct nexthop *nh; > > + > > + if (event != NEXTHOP_EVENT_DEL) > > + return NOTIFY_DONE; > > > > - if (!nh || event != NEXTHOP_EVENT_DEL) > > + nh = nexthop_find_by_id(info->net, info->id); > > hmmm.... why add the id to the info versus a nh pointer if a lookup is > needed?
This goes back to my reasoning in patch #5. I preferred not to pass the raw nexthop data structures to listeners as they usually have no business poking into them. I believe the VXLAN driver is the exception here as it does need access to 'fdb_list'. > > > + if (!nh) > > return NOTIFY_DONE; > > > > vxlan_fdb_nh_flush(nh); >