diff options
author | 2021-01-06 11:51:34 +0200 | |
---|---|---|
committer | 2021-01-07 15:34:46 -0800 | |
commit | 5fb4a451a87d8ed3363d28b63a3295399373d6c4 (patch) | |
tree | ffa5214a57eb23bc3625e3196504d2edd9743cce /include/linux/dsa | |
parent | net: dsa: move switchdev event implementation under the same switch/case statement (diff) | |
download | wireguard-linux-5fb4a451a87d8ed3363d28b63a3295399373d6c4.tar.xz wireguard-linux-5fb4a451a87d8ed3363d28b63a3295399373d6c4.zip |
net: dsa: exit early in dsa_slave_switchdev_event if we can't program the FDB
Right now, the following would happen for a switch driver that does not
implement .port_fdb_add or .port_fdb_del.
dsa_slave_switchdev_event returns NOTIFY_OK and schedules:
-> dsa_slave_switchdev_event_work
-> dsa_port_fdb_add
-> dsa_port_notify(DSA_NOTIFIER_FDB_ADD)
-> dsa_switch_fdb_add
-> if (!ds->ops->port_fdb_add) return -EOPNOTSUPP;
-> an error is printed with dev_dbg, and
dsa_fdb_offload_notify(switchdev_work) is not called.
We can avoid scheduling the worker for nothing and say NOTIFY_DONE.
Because we don't call dsa_fdb_offload_notify, the static FDB entry will
remain just in the software bridge.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux/dsa')
0 files changed, 0 insertions, 0 deletions