Subject: Re: [PATCH net-next RESEND] net: Do not call ndo_dflt_fdb_dump if ndo_fdb_dump is defined.

From: Jamal Hadi Salim <[email-masked]>
Date: Fri, 12 Dec 2014 06:54:41 -0500

On 12/12/14 06:38, Hubert Sokolowski wrote:
>> On 12/11/14, 9:06 AM, Hubert Sokolowski wrote:

> Please see how the ndo_dflt_fdb_add and del are called:
> 		if (dev->netdev_ops->ndo_fdb_add)
> 			err = dev->netdev_ops->ndo_fdb_add(ndm, tb, dev, addr,
> 							   vid,
> 							   nlh->nlmsg_flags);
> 		else
> 			err = ndo_dflt_fdb_add(ndm, tb, dev, addr, vid,
> 					       nlh->nlmsg_flags);
>

Semantically add and dump are not the same.
Add adds a specific entry.
Dump not only dumps the fdb table but also the unicast and multicast
addresses.
the default dumper does the uni/multicast dumping.

> As it was suggested by Ronen I can modify the patch so the dflt callback
> is always called for bridge devices if this is desirable. Either by calling
> it when following expression is true:
>      (dev->priv_flags & IFF_BRIDGE_PORT)
> or by modifying br_fdb_dump to call ndo_dflt_fdb_dump.
>

Are you saying the above is going to work? You need to TEST please.

It seems to me drivers which do this:
---
.ndo_fdb_dump           = my_fdb_dump,

and then my_fdb_dump is:
return ndo_dflt_fdb_dump(skb, ncb, netdev, filter_dev, idx);

are broken because we always have to dump the uni/multicast
addresses *unconditionally* and these drivers claim to be
overriding the dumper but are in fact calling the default dumper.
They are not filtering anything as you had stated.
I wish Vlad (Cced) would show up and say something ;->

IOW, fix all the broken driver to not do that.

cheers,
jamal