mlxsw: spectrum_router: Don't log an error on missing neighbor
[ Upstream commit 1ecdaea02ca6bfacf2ecda500dc1af51e9780c42 ] Driver periodically samples all neighbors configured in device in order to update the kernel regarding their state. When finding an entry configured in HW that doesn't show in neigh_lookup() driver logs an error message. This introduces a race when removing multiple neighbors - it's possible that a given entry would still be configured in HW as its removal is still being processed but is already removed from the kernel's neighbor tables. Simply remove the error message and gracefully accept such events. Fixes: c723c735fa6b ("mlxsw: spectrum_router: Periodically update the kernel's neigh table") Fixes: 60f040ca11b9 ("mlxsw: spectrum_router: Periodically dump active IPv6 neighbours") Signed-off-by: Yuval Mintz <yuvalm@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dd7e1cbd26
commit
8496f7dbb1
@ -1531,11 +1531,8 @@ static void mlxsw_sp_router_neigh_ent_ipv4_process(struct mlxsw_sp *mlxsw_sp,
|
||||
dipn = htonl(dip);
|
||||
dev = mlxsw_sp->router->rifs[rif]->dev;
|
||||
n = neigh_lookup(&arp_tbl, &dipn, dev);
|
||||
if (!n) {
|
||||
netdev_err(dev, "Failed to find matching neighbour for IP=%pI4h\n",
|
||||
&dip);
|
||||
if (!n)
|
||||
return;
|
||||
}
|
||||
|
||||
netdev_dbg(dev, "Updating neighbour with IP=%pI4h\n", &dip);
|
||||
neigh_event_send(n, NULL);
|
||||
@ -1562,11 +1559,8 @@ static void mlxsw_sp_router_neigh_ent_ipv6_process(struct mlxsw_sp *mlxsw_sp,
|
||||
|
||||
dev = mlxsw_sp->router->rifs[rif]->dev;
|
||||
n = neigh_lookup(&nd_tbl, &dip, dev);
|
||||
if (!n) {
|
||||
netdev_err(dev, "Failed to find matching neighbour for IP=%pI6c\n",
|
||||
&dip);
|
||||
if (!n)
|
||||
return;
|
||||
}
|
||||
|
||||
netdev_dbg(dev, "Updating neighbour with IP=%pI6c\n", &dip);
|
||||
neigh_event_send(n, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user