mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 16:53:20 -04:00
net/mlx5: Add support for querying bond speed
Add mlx5_lag_query_bond_speed() to query the aggregated speed of lag configurations with a bond device. Signed-off-by: Or Har-Toov <ohartoov@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
28ea6036da
commit
f0b2fde980
@@ -1464,6 +1464,33 @@ static void mlx5_lag_update_tracker_speed(struct lag_tracker *tracker,
|
|||||||
tracker->bond_speed_mbps = lksettings.base.speed;
|
tracker->bond_speed_mbps = lksettings.base.speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns speed in Mbps. */
|
||||||
|
int mlx5_lag_query_bond_speed(struct mlx5_core_dev *mdev, u32 *speed)
|
||||||
|
{
|
||||||
|
struct mlx5_lag *ldev;
|
||||||
|
unsigned long flags;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&lag_lock, flags);
|
||||||
|
ldev = mlx5_lag_dev(mdev);
|
||||||
|
if (!ldev) {
|
||||||
|
ret = -ENODEV;
|
||||||
|
goto unlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
*speed = ldev->tracker.bond_speed_mbps;
|
||||||
|
|
||||||
|
if (*speed == SPEED_UNKNOWN) {
|
||||||
|
mlx5_core_dbg(mdev, "Bond speed is unknown\n");
|
||||||
|
ret = -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
unlock:
|
||||||
|
spin_unlock_irqrestore(&lag_lock, flags);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mlx5_lag_query_bond_speed);
|
||||||
|
|
||||||
/* this handler is always registered to netdev events */
|
/* this handler is always registered to netdev events */
|
||||||
static int mlx5_lag_netdev_event(struct notifier_block *this,
|
static int mlx5_lag_netdev_event(struct notifier_block *this,
|
||||||
unsigned long event, void *ptr)
|
unsigned long event, void *ptr)
|
||||||
|
|||||||
@@ -1149,7 +1149,7 @@ int mlx5_cmd_destroy_vport_lag(struct mlx5_core_dev *dev);
|
|||||||
bool mlx5_lag_is_roce(struct mlx5_core_dev *dev);
|
bool mlx5_lag_is_roce(struct mlx5_core_dev *dev);
|
||||||
bool mlx5_lag_is_sriov(struct mlx5_core_dev *dev);
|
bool mlx5_lag_is_sriov(struct mlx5_core_dev *dev);
|
||||||
bool mlx5_lag_is_active(struct mlx5_core_dev *dev);
|
bool mlx5_lag_is_active(struct mlx5_core_dev *dev);
|
||||||
int mlx5_lag_query_bond_speed(struct net_device *bond_dev, u32 *speed);
|
int mlx5_lag_query_bond_speed(struct mlx5_core_dev *dev, u32 *speed);
|
||||||
bool mlx5_lag_mode_is_hash(struct mlx5_core_dev *dev);
|
bool mlx5_lag_mode_is_hash(struct mlx5_core_dev *dev);
|
||||||
bool mlx5_lag_is_master(struct mlx5_core_dev *dev);
|
bool mlx5_lag_is_master(struct mlx5_core_dev *dev);
|
||||||
bool mlx5_lag_is_shared_fdb(struct mlx5_core_dev *dev);
|
bool mlx5_lag_is_shared_fdb(struct mlx5_core_dev *dev);
|
||||||
|
|||||||
Reference in New Issue
Block a user