Skip to content

Commit

Permalink
mlx5: Create an auxiliary device for fwctl_mlx5
Browse files Browse the repository at this point in the history
If the device supports User Context then it can support fwctl. Create an
auxiliary device to allow fwctl to bind to it.

Create a sysfs like:

$ ls /sys/devices/pci0000:00/0000:00:0a.0/mlx5_core.fwctl.0/driver -l
lrwxrwxrwx 1 root root 0 Apr 25 19:46 /sys/devices/pci0000:00/0000:00:0a.0/mlx5_core.fwctl.0/driver -> ../../../../bus/auxiliary/drivers/mlx5_fwctl.mlx5_fwctl

Link: https://patch.msgid.link/r/8-v5-642aa0c94070+4447f-fwctl_jgg@nvidia.com
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Acked-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
  • Loading branch information
Saeed Mahameed authored and Jason Gunthorpe committed Mar 6, 2025
1 parent 52929c2 commit a1ded2c
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/net/ethernet/mellanox/mlx5/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,15 @@ enum {
MLX5_INTERFACE_PROTOCOL_VNET,

MLX5_INTERFACE_PROTOCOL_DPLL,
MLX5_INTERFACE_PROTOCOL_FWCTL,
};

static bool is_fwctl_supported(struct mlx5_core_dev *dev)
{
/* fwctl is most useful on PFs, prevent fwctl on SFs for now */
return MLX5_CAP_GEN(dev, uctx_cap) && !mlx5_core_is_sf(dev);
}

static const struct mlx5_adev_device {
const char *suffix;
bool (*is_supported)(struct mlx5_core_dev *dev);
Expand All @@ -252,6 +259,8 @@ static const struct mlx5_adev_device {
.is_supported = &is_mp_supported },
[MLX5_INTERFACE_PROTOCOL_DPLL] = { .suffix = "dpll",
.is_supported = &is_dpll_supported },
[MLX5_INTERFACE_PROTOCOL_FWCTL] = { .suffix = "fwctl",
.is_supported = &is_fwctl_supported },
};

int mlx5_adev_idx_alloc(void)
Expand Down

0 comments on commit a1ded2c

Please sign in to comment.