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);
> 

Reply via email to