net: replace br_fdb_external_learn_* calls with switchdev notifier events
This patch benefits from newly introduced switchdev notifier and uses it to propagate fdb learn events from rocker driver to bridge. That avoids direct function calls and possible use by other listeners (ovs). Suggested-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: Scott Feldman <sfeldma@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
03bf0c2812
commit
3aeb66176f
@@ -3026,11 +3026,17 @@ static void rocker_port_fdb_learn_work(struct work_struct *work)
|
||||
container_of(work, struct rocker_fdb_learn_work, work);
|
||||
bool removing = (lw->flags & ROCKER_OP_FLAG_REMOVE);
|
||||
bool learned = (lw->flags & ROCKER_OP_FLAG_LEARNED);
|
||||
struct netdev_switch_notifier_fdb_info info;
|
||||
|
||||
info.addr = lw->addr;
|
||||
info.vid = lw->vid;
|
||||
|
||||
if (learned && removing)
|
||||
br_fdb_external_learn_del(lw->dev, lw->addr, lw->vid);
|
||||
call_netdev_switch_notifiers(NETDEV_SWITCH_FDB_DEL,
|
||||
lw->dev, &info.info);
|
||||
else if (learned && !removing)
|
||||
br_fdb_external_learn_add(lw->dev, lw->addr, lw->vid);
|
||||
call_netdev_switch_notifiers(NETDEV_SWITCH_FDB_ADD,
|
||||
lw->dev, &info.info);
|
||||
|
||||
kfree(work);
|
||||
}
|
||||
|
Reference in New Issue
Block a user