ipv4: Restore fib_trie_flush_external function and fix call ordering
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 15 Nov 2016 10:46:06 +0000 (05:46 -0500)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Nov 2016 18:24:50 +0000 (13:24 -0500)
commit3b7093346b326e5d3590c7d49f6aefe6fa5b2c9a
tree0e2000c39bd5f66490cdc83edf46fbaa57c0fb1b
parentf23cc643f9baec7f71f2b74692da3cf03abbbfda
ipv4: Restore fib_trie_flush_external function and fix call ordering

The patch that removed the FIB offload infrastructure was a bit too
aggressive and also removed code needed to clean up us splitting the table
if additional rules were added.  Specifically the function
fib_trie_flush_external was called at the end of a new rule being added to
flush the foreign trie entries from the main trie.

I updated the code so that we only call fib_trie_flush_external on the main
table so that we flush the entries for local from main.  This way we don't
call it for every rule change which is what was happening previously.

Fixes: 347e3b28c1ba2 ("switchdev: remove FIB offload infrastructure")
Reported-by: Eric Dumazet <edumazet@google.com>
Cc: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip_fib.h
net/ipv4/fib_frontend.c
net/ipv4/fib_trie.c