Thread (148 messages) 148 messages, 14 authors, 2014-12-09

Re: [patch net-next v3 09/17] bridge: add API to notify bridge driver of learned FBD on offloaded device

From: Jiri Pirko <jiri@resnulli.us>
Date: 2014-11-26 10:26:50

Wed, Nov 26, 2014 at 02:48:04AM CET, sfeldma@gmail.com wrote:
On Tue, Nov 25, 2014 at 12:36 PM, Thomas Graf [off-list ref] wrote:
quoted
On 11/25/14 at 11:38am, Andy Gospodarek wrote:
quoted
On Tue, Nov 25, 2014 at 11:28:40AM +0100, Jiri Pirko wrote:
quoted
From: Scott Feldman <redacted>

When the swdev device learns a new mac/vlan on a port, it sends some async
notification to the driver and the driver installs an FDB in the device.
To give a holistic system view, the learned mac/vlan should be reflected
in the bridge's FBD table, so the user, using normal iproute2 cmds, can view
what is currently learned by the device.  This API on the bridge driver gives
a way for the swdev driver to install an FBD entry in the bridge FBD table.
(And remove one).

This is equivalent to the device running these cmds:

  bridge fdb [add|del] <mac> dev <dev> vid <vlan id> master

This patch needs some extra eyeballs for review, in paricular around the
locking and contexts.

Signed-off-by: Scott Feldman <redacted>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
I like the simplicity of this. That said, given we'll have multiple
users of swdev including OVS, shouldn't this be a notifier or a
callback that depends on who is controlling the device?
I like the idea.  When the switch port joins Linux bridge or OVS
datapath, a callback is registered with the driver.  That way the
driver doesn't really care if the port is a bridge member or an OVS
vport in a datapath.  It's just passing up the FDB entry
(port/mac/vlan) details to the container device.  Can we hold this
idea until this patchset sticks?  I think once OVS support comes back
into the swdev model would be the time to address this.
Yep, I agree this is a good idea and I also vote for implemeting this as
a follow-up. Thanks.
quoted
quoted
quoted
+   spin_lock(&br->hash_lock);
(Since you asked to check locking...)

Most of the other fdb_add/delete/insert/update calls take this with
spin_lock_bh.  Did you try this with lockdep enabled just to see if that
is needed here?  I suspect that anytime br->hash_lock is taken it will
need to be with softirqs disabled from this point forward.
At least br_fdb_update() seems to be called from BH context so I would
agree and argue the lock in br_fdb_cleanup() and br_fdb_update() need a
fix too. I'll send a patch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help