mlxsw: spectrum: Add FDB lock to prevent session interleaving
authorIdo Schimmel <idosch@mellanox.com>
Sun, 10 Jan 2016 08:32:16 +0000 (09:32 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Jan 2016 05:21:19 +0000 (00:21 -0500)
commit366ce60315292a579b8ceae2777102e1954a2024
tree2429a281a92e136cb22f4444f8d08ffdb49f19c8
parent712f4aad406bb1ed67f3f98d04c044191f0ff593
mlxsw: spectrum: Add FDB lock to prevent session interleaving

Dumping the FDB (invoked with a process context) or handling FDB
notifications (polled periodicly in delayed work) might each entail
multiple EMAD transcations due to the number of entries.

While we only allow one EMAD transaction at a time, there is nothing
stopping the dump and notification processing sessions from
interleaving. However, this is forbidden by the hardware, so we need to
make sure only one of these sessions can run at a time.

Solve this by adding a mutex ('fdb_lock'), as both kernel threads can
sleep while waiting for the response EMAD.

Fixes: 56ade8fe3f ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c