mirror_ubuntu-kernels/drivers/net/dsa/mv88e6xxx
Vladimir Oltean a2614140dc net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN
mv88e6xxx is special among DSA drivers in that it requires the VTU to
contain the VID of the FDB entry it modifies in
mv88e6xxx_port_db_load_purge(), otherwise it will return -EOPNOTSUPP.

Sometimes due to races this is not always satisfied even if external
code does everything right (first deletes the FDB entries, then the
VLAN), because DSA commits to hardware FDB entries asynchronously since
commit c9eb3e0f87 ("net: dsa: Add support for learning FDB through
notification").

Therefore, the mv88e6xxx driver must close this race condition by
itself, by asking DSA to flush the switchdev workqueue of any FDB
deletions in progress, prior to exiting a VLAN.

Fixes: c9eb3e0f87 ("net: dsa: Add support for learning FDB through notification")
Reported-by: Rafael Richter <rafael.richter@gin.de>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2022-02-14 13:31:12 +00:00
..
chip.c net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN 2022-02-14 13:31:12 +00:00
chip.h net: dsa: mv88e6xxx: isolate the ATU databases of standalone and bridged ports 2021-10-08 15:47:46 -07:00
devlink.c net: dsa: tear down devlink port regions when tearing down the devlink port on error 2021-09-19 13:05:44 +01:00
devlink.h net: dsa: tear down devlink port regions when tearing down the devlink port on error 2021-09-19 13:05:44 +01:00
global1_atu.c net: mv88e6xxx: convert comma to semicolon 2020-12-09 16:23:08 -08:00
global1_vtu.c net: dsa: mv88e6xxx: use mv88e6185_g1_vtu_loadpurge() for the 6250 2021-01-26 17:58:28 -08:00
global1.c dsa: mv88e6xxx: Fix MTU definition 2021-09-27 13:31:10 +01:00
global1.h net: dsa: mv88e6xxx: add support for mv88e6393x family 2021-03-17 14:44:18 -07:00
global2_avb.c net: dsa: mv88e6xxx: wait for AVB Busy bit 2019-08-11 21:27:15 -07:00
global2_scratch.c net: dsa: mv88e6xxx: fix up kerneldoc some more 2021-03-22 13:09:02 -07:00
global2.c net: dsa: mv88e6xxx: Export cross-chip PVT as devlink region 2021-04-21 10:25:09 -07:00
global2.h net: dsa: mv88e6xxx: Export cross-chip PVT as devlink region 2021-04-21 10:25:09 -07:00
hwtstamp.c net_tstamp: add new flag HWTSTAMP_FLAG_BONDED_PHC_INDEX 2021-12-14 12:28:24 +00:00
hwtstamp.h net: dsa: no longer clone skb in core driver 2021-04-27 14:10:15 -07:00
Kconfig ethernet: fix PTP_1588_CLOCK dependencies 2021-08-13 17:49:05 -07:00
Makefile net: dsa: mv88e6xxx: Make global2 support mandatory 2021-01-27 19:28:16 -08:00
phy.c net: dsa: mv88e6xxx: introduce helpers for handling chip->reg_lock 2019-06-23 11:11:11 -07:00
phy.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
port_hidden.c net: dsa: mv88e6xxx: update code operating on hidden registers 2019-08-27 21:42:16 -07:00
port.c dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED 2021-12-16 10:57:21 +00:00
port.h net: dsa: mv88e6xxx: keep the pvid at 0 when VLAN-unaware 2021-10-08 15:47:46 -07:00
ptp.c mv88e6xxx: Reject requests to enable time stamping on both edges. 2019-11-15 12:48:32 -08:00
ptp.h net: dsa: mv88e6xxx: add PTP support for MV88E6250 family 2019-08-02 17:58:53 -07:00
serdes.c net: dsa: mv88e6xxx: error handling for serdes_power functions 2021-12-09 07:46:27 -08:00
serdes.h net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family 2021-12-01 14:39:10 +00:00
smi.c net: dsa: mv88e6xxx: add delay in direct SMI wait 2019-08-11 21:27:15 -07:00
smi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00