]> git.baikalelectronics.ru Git - kernel.git/commit
mlxsw: spectrum_router: Simplify neighbour reflection
authorIdo Schimmel <idosch@mellanox.com>
Mon, 6 Feb 2017 15:20:13 +0000 (16:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 Feb 2017 16:25:56 +0000 (11:25 -0500)
commit6fbbfeb59ffb20d9ccae402af0e36f8265457754
treebfd69c0d3b5299a4dcd459e4993dadd0f6a4e7b3
parent9f1ba1dccb911dc1c5a3a37cfd2946718fcf2f6b
mlxsw: spectrum_router: Simplify neighbour reflection

Up until now we had two interfaces for neighbour related configuration:
ndo_neigh_{construct,destroy} and NEIGH_UPDATE netevents. The ndos were
used to add and remove neighbours from the driver's cache, whereas the
netevent was used to reflect the neighbours into the device's tables.

However, if the NUD state of a neighbour isn't NUD_VALID or if the
neighbour is dead, then there's really no reason for us to keep it
inside our cache. The only exception to this rule are neighbours that
are also used for nexthops, which we periodically refresh to get them
resolved.

We can therefore eliminate the ndo entry point into the driver and
simplify the code, making it similar to the FIB reflection, which is
based solely on events. This also helps us avoid a locking issue, in
which the RIF cache was traversed without proper locking during
insertion into the neigh entry cache.

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.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c