Subject: Re: [patch net-next v2 06/10] bridge: introduce fdb offloading via switchdev

From: Jamal Hadi Salim <[email-masked]>
Date: Mon, 10 Nov 2014 07:47:33 -0500

On 11/10/14 03:15, Jiri Pirko wrote:
> Mon, Nov 10, 2014 at 04:47:48AM CET, [email-masked] wrote:
>> On 11/09/14 05:51, Jiri Pirko wrote:
>>> From: Scott Feldman <[email-masked]>
>>>

> Jamal, I believe we discussed this already.

I cant remember how that ended.

> The thing is that current
> fdb_add/del does not need vlanid and master/self flags, because it
> already has that (struct nlattr *tb[]). Here is the whole list of
> parameters to these functions:
>          NDA_DST,
>          NDA_LLADDR,
>          NDA_CACHEINFO,
>          NDA_PROBES,
>          NDA_VLAN,
>          NDA_PORT,
>          NDA_VNI,
>          NDA_IFINDEX,
>          NDA_MASTER,
>
> There are few problems in re-using this. It is netlink based so for calling
> it from bridge code, we would have to construct netlink message. But
> that could be probably changed.

Trying to understand.

A netlink message for a bridge to add an fdb is targeted at the
*bridge port*.
That message has semantic which says "please add this entry
to the software bridge and/or offloaded hardware".
If something is targetted at the bridge port, ->ndo_fdb_add()
is invoked with an internally chewed structure.
Why would you have to construct a new netlink message to the driver?

> As you can see from the list of parameters, this is no longer about fdb (addr,
> vlanid) but this has been extended to something else.

I am still missing understanding that part.
Or maybe are you saying that you dont want to pass netlink
constructs to the driver?

> See vxlan code for
> what this is used for. I believe that fdb_add/del should be renamed to
> something else, perhaps l2neigh_add/del or something like that.
> The other problem is that fdb_add/del is currently used by various
> drivers for different purpose (adding macs to unicast list).
>

Ok, now a small spark ignited in my brain. You did talk about renaming
things to neighXXX in one of the exchanges. I think this is a separate
issue from the question of why you cant refactor ndo_fdb_add/del

The abuse of using this interface for unicast addresses is probably
driven by the fact some of the hardware probably offloads vlanid 0 or
something speacial like 4095 to point to the underlying hardware that
"this belongs to host cpu".
I am not a fan of it (and have posted in exchanges with Vlad in the
past).

cheers,
jamal