Commit b809ec86 authored by John Hurley's avatar John Hurley Committed by David S. Miller

nfp: flower: ensure dead neighbour entries are not offloaded

Previously only the neighbour state was checked to decide if an offloaded
entry should be removed. However, there can be situations when the entry
is dead but still marked as valid. This can lead to dead entries not
being removed from fw tables or even incorrect data being added.

Check the entry dead bit before deciding if it should be added to or
removed from fw neighbour tables.

Fixes: 8e6a9046 ("nfp: flower vxlan neighbour offload")
Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0fb8d5a0
...@@ -317,7 +317,7 @@ nfp_tun_write_neigh(struct net_device *netdev, struct nfp_app *app, ...@@ -317,7 +317,7 @@ nfp_tun_write_neigh(struct net_device *netdev, struct nfp_app *app,
payload.dst_ipv4 = flow->daddr; payload.dst_ipv4 = flow->daddr;
/* If entry has expired send dst IP with all other fields 0. */ /* If entry has expired send dst IP with all other fields 0. */
if (!(neigh->nud_state & NUD_VALID)) { if (!(neigh->nud_state & NUD_VALID) || neigh->dead) {
nfp_tun_del_route_from_cache(app, payload.dst_ipv4); nfp_tun_del_route_from_cache(app, payload.dst_ipv4);
/* Trigger ARP to verify invalid neighbour state. */ /* Trigger ARP to verify invalid neighbour state. */
neigh_event_send(neigh, NULL); neigh_event_send(neigh, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment