summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShay Drory <shayd@nvidia.com>2026-05-31 14:39:50 +0300
committerJakub Kicinski <kuba@kernel.org>2026-06-03 17:42:21 -0700
commit8698ddb07f874b01211885814c712b40563c9e95 (patch)
treee55c19b0d7063a5f7ec96dbb68755a1f76955f13
parentc3933a7a7f64e4f7b5ce2eea79d0e6950e833db7 (diff)
downloadlinux-8698ddb07f874b01211885814c712b40563c9e95.tar.gz
linux-8698ddb07f874b01211885814c712b40563c9e95.zip
net/mlx5: SD, keep netdev resources on same PF in switchdev mode
In SD switchdev mode, network device resources such as channels and completion vectors must remain on the same PF rather than being distributed across SD group members. Modify mlx5_sd_ch_ix_get_dev_ix() to return 0 and mlx5_sd_ch_ix_get_vec_ix() to return the channel index directly when in switchdev mode, keeping resources local to the requesting PF. Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260531113954.395443-11-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c
index 8991db3a19cf..ec606851feb8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c
@@ -6,6 +6,7 @@
#include "mlx5_core.h"
#include "lib/mlx5.h"
#include "fs_cmd.h"
+#include <linux/mlx5/eswitch.h>
#include <linux/mlx5/vport.h>
#include <linux/debugfs.h>
@@ -85,11 +86,17 @@ mlx5_sd_primary_get_peer(struct mlx5_core_dev *primary, int idx)
int mlx5_sd_ch_ix_get_dev_ix(struct mlx5_core_dev *dev, int ch_ix)
{
+ if (is_mdev_switchdev_mode(dev))
+ return 0;
+
return ch_ix % mlx5_sd_get_host_buses(dev);
}
int mlx5_sd_ch_ix_get_vec_ix(struct mlx5_core_dev *dev, int ch_ix)
{
+ if (is_mdev_switchdev_mode(dev))
+ return ch_ix;
+
return ch_ix / mlx5_sd_get_host_buses(dev);
}