Subject: Re: [PATCH net] bridge: notify user space of fdb port change

From: Toshiaki Makita <[email-masked]>
Date: Fri, 23 May 2014 17:39:45 +0900

(2014/05/23 13:59), Jon Maxwell wrote:
...
> Makita-san,
> 
> I recoded this using your idea and ran it through a reproducer.
> It work fine. After some more consideration I agree that 
> setting fdb->dst = source is only required when source != fdb->dst.
> 
> Thanks for your suggestions. This is the revised patch. It should 
> retain the original behaviour except for the notify after the fdb update.  
> 
> Please let me know if you have any further input?

I have no more comments except for style problems (bracket position,
indentation, type mismatch).
thank you for rewriting :)

Thanks,
Toshiaki Makita

> 
> $ diff -Naur br_fdb.c br_fdb.c.patch
> --- br_fdb.c        2014-05-17 12:43:23.346319609 +1000
> +++ br_fdb.c.patch        2014-05-17 16:54:46.280235728 +1000
> @@ -487,6 +487,7 @@
>  {
>          struct hlist_head *head = &br->hash[br_mac_hash(addr, vid)];
>          struct net_bridge_fdb_entry *fdb;
> +        bool fdb_modified = 0;
>  
>          /* some users want to always flood. */
>          if (hold_time(br) == 0)
> @@ -507,10 +508,16 @@
>                                          source->dev->name);
>                  } else {
>                          /* fastpath: update of existing entry */
> -                        fdb->dst = source;
> +                        if (unlikely(source != fdb->dst))
> +                                {
> +                                fdb->dst = source;
> +                                fdb_modified = 1;
> +                                }
>                          fdb->updated = jiffies;
>                          if (unlikely(added_by_user))
>                                  fdb->added_by_user = 1;
> +                        if (unlikely(fdb_modified))
> +                                fdb_notify(br, fdb, RTM_NEWNEIGH);
>                  }
>          } else {
>                  spin_lock(&br->hash_lock);
> 
>