Thu, Sep 22, 2016 at 07:13:50AM CEST, ido...@idosch.org wrote:
>On Wed, Sep 21, 2016 at 01:53:09PM +0200, Jiri Pirko wrote:
>> From: Jiri Pirko <j...@mellanox.com>
>> This allows to pass information about added/deleted FIB entries/rules to
>> whoever is interested. This is done in a very similar way as devinet
>> notifies address additions/removals.
>> Signed-off-by: Jiri Pirko <j...@mellanox.com>
>> #include <linux/slab.h>
>> #include <linux/export.h>
>> #include <linux/vmalloc.h>
>> +#include <linux/notifier.h>
>> #include <net/net_namespace.h>
>> #include <net/ip.h>
>> #include <net/protocol.h>
>> @@ -84,6 +85,44 @@
>> #include <trace/events/fib.h>
>> #include "fib_lookup.h"
>> +static BLOCKING_NOTIFIER_HEAD(fib_chain);
>> +int register_fib_notifier(struct notifier_block *nb)
>> + return blocking_notifier_chain_register(&fib_chain, nb);
>If we remove and insert the switch driver, then the existing FIB entries
>should be replayed when we register our notification block. Otherwise,
>all of these entries will be missing from the switch's tables. I believe
>it should be handled like register_netdevice_notifier(), where
>"registration and up events are replayed".
Agreed. This patchset does not change this behaviour as the original
switchdev solution has the same "ordering" issue. We should take care of
it as a part of yours ordering patchsets.