mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
net/mlx5e: Fix multipath lag activation
commit97817fcc68upstream. When handling FIB_EVENT_ENTRY_REPLACE event for a new multipath route, lag activation can be missed if a stale (struct lag_mp)->mfi pointer exists, which was associated with an older multipath route that had been removed. Normally, when a route is removed, it triggers mlx5_lag_fib_event(), which handles FIB_EVENT_ENTRY_DEL and clears mfi pointer. But, if mlx5_lag_check_prereq() condition isn't met, for example when eswitch is in legacy mode, the fib event is skipped and mfi pointer becomes stale. Fix by resetting mfi pointer to NULL every time mlx5_lag_mp_init() is called. Fixes:544fe7c2e6("net/mlx5e: Activate HW multipath and handle port affinity based on FIB events") Signed-off-by: Dima Chumak <dchumak@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
fc41e45aa7
commit
02a8da446b
@@ -307,6 +307,11 @@ int mlx5_lag_mp_init(struct mlx5_lag *ldev)
|
||||
struct lag_mp *mp = &ldev->lag_mp;
|
||||
int err;
|
||||
|
||||
/* always clear mfi, as it might become stale when a route delete event
|
||||
* has been missed
|
||||
*/
|
||||
mp->mfi = NULL;
|
||||
|
||||
if (mp->fib_nb.notifier_call)
|
||||
return 0;
|
||||
|
||||
@@ -335,4 +340,5 @@ void mlx5_lag_mp_cleanup(struct mlx5_lag *ldev)
|
||||
unregister_fib_notifier(&init_net, &mp->fib_nb);
|
||||
destroy_workqueue(mp->wq);
|
||||
mp->fib_nb.notifier_call = NULL;
|
||||
mp->mfi = NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user