]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: don't use switchdev_notifier_fdb_info in dsa_switchdev_event_work
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 6 Jan 2021 09:51:32 +0000 (11:51 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 7 Jan 2021 23:34:45 +0000 (15:34 -0800)
commit9b854f92971758a25053f02a171f445e343d9f6b
tree7e5f7f3749288574c051f7129ba8113ed5efcaaa
parent1502aebea8f348e3ec2d4cba6bd9400fc259619d
net: dsa: don't use switchdev_notifier_fdb_info in dsa_switchdev_event_work

Currently DSA doesn't add FDB entries on the CPU port, because it only
does so through switchdev, which is associated with a net_device, and
there are none of those for the CPU port.

But actually FDB addresses on the CPU port have some use cases of their
own, if the switchdev operations are initiated from within the DSA
layer. There is just one problem with the existing code: it passes a
structure in dsa_switchdev_event_work which was retrieved directly from
switchdev, so it contains a net_device. We need to generalize the
contents to something that covers the CPU port as well: the "ds, port"
tuple is fine for that.

Note that the new procedure for notifying the successful FDB offload is
inspired from the rocker model.

Also, nothing was being done if added_by_user was false. Let's check for
that a lot earlier, and don't actually bother to schedule the worker
for nothing.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/dsa/dsa_priv.h
net/dsa/slave.c