Re: [patch net-next v2 10/11] mlxsw: spectrum_router: Request a dump of FIB tables during init
From: Hannes Frederic Sowa <hidden>
Date: 2016-11-23 16:00:46
On Wed, Nov 23, 2016, at 15:48, Jiri Pirko wrote:
quoted hunk ↗ jump to hunk
From: Ido Schimmel <redacted> Make sure the device has a complete view of the FIB tables by invoking their dump during module init. Signed-off-by: Ido Schimmel <redacted> Signed-off-by: Jiri Pirko <redacted> --- drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.cb/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 14bed1d..36a71d2 100644--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c@@ -2027,6 +2027,21 @@ static int mlxsw_sp_router_fib_event(structnotifier_block *nb, return NOTIFY_DONE; } +static void mlxsw_sp_router_fib_dump(struct mlxsw_sp *mlxsw_sp) +{ + while (!fib_notifier_dump(&mlxsw_sp->fib_nb)) { + /* Flush pending FIB notifications and then flush the + * device's table before requesting another dump. Do + * that with RTNL held, as FIB notification block is + * already registered. + */ + mlxsw_core_flush_owq(); + rtnl_lock(); + mlxsw_sp_router_fib_flush(mlxsw_sp); + rtnl_unlock(); + } +}
I think it is fine to use this kind of synchronization. But I think that this part of the logic still belongs into the core kernel. I still think it could happen that we will loop here indefinitely because of a lot of routing updates and as such would need to abort this loop after a number of tries. I would like that the kernel has one function to do this decision instead of later patching all users of this API. Do you think it is worth it? Bye, Hannes