net/mlx5e: Lag, Only handle events from highest priority multipath entry
[ Upstream commit ad11c4f1d8fd1f03639460e425a36f7fd0ea83f5 ]
There could be multiple multipath entries but changing the port affinity
for each one doesn't make much sense and there should be a default one.
So only track the entry with lowest priority value.
The commit doesn't affect existing users with a single entry.
Fixes: 544fe7c2e6
("net/mlx5e: Activate HW multipath and handle port affinity based on FIB events")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
f3331bc174
commit
1fdabf2cf4
@@ -123,6 +123,10 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle multipath entry with lower priority value */
|
||||||
|
if (mp->mfi && mp->mfi != fi && fi->fib_priority >= mp->mfi->fib_priority)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Handle add/replace event */
|
/* Handle add/replace event */
|
||||||
nhs = fib_info_num_path(fi);
|
nhs = fib_info_num_path(fi);
|
||||||
if (nhs == 1) {
|
if (nhs == 1) {
|
||||||
@@ -132,12 +136,13 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev,
|
|||||||
int i = mlx5_lag_dev_get_netdev_idx(ldev, nh_dev);
|
int i = mlx5_lag_dev_get_netdev_idx(ldev, nh_dev);
|
||||||
|
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
i = MLX5_LAG_NORMAL_AFFINITY;
|
return;
|
||||||
else
|
|
||||||
++i;
|
|
||||||
|
|
||||||
|
i++;
|
||||||
mlx5_lag_set_port_affinity(ldev, i);
|
mlx5_lag_set_port_affinity(ldev, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mp->mfi = fi;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user