From: Uri Dar Commit eea31f21dce1 ("{rdma,net}/mlx5: Query vports mac address from device") added a call to mlx5_query_nic_vport_mac_address() in mlx5_devlink_port_fn_hw_addr_get() without checking whether the vport is enabled. A port function can be dumped while its vport is not enabled, for example when SFs are created or destroyed in bulk, and firmware then rejects the query for a vport it has not allocated: mlx5_core 0000:03:00.0: mlx5_cmd_out_err:840:(pid 25225): QUERY_NIC_VPORT_CONTEXT(0x754) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x29d722), err(-22) Query the device only when the vport is enabled; vport->info.mac is updated under the state_lock already taken here. Fixes: eea31f21dce1 ("{rdma,net}/mlx5: Query vports mac address from device") Signed-off-by: Uri Dar Reviewed-by: Moshe Shemesh Signed-off-by: Tariq Toukan --- drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index c712848b202d..b83c6c02670f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -5121,8 +5121,9 @@ int mlx5_devlink_port_fn_hw_addr_get(struct devlink_port *port, mutex_lock(&esw->state_lock); - mlx5_query_nic_vport_mac_address(esw->dev, vport->vport, true, - vport->info.mac); + if (vport->enabled) + mlx5_query_nic_vport_mac_address(esw->dev, vport->vport, true, + vport->info.mac); ether_addr_copy(hw_addr, vport->info.mac); *hw_addr_len = ETH_ALEN; mutex_unlock(&esw->state_lock); base-commit: 1d5e2c57e9ffc134e14b3f837c8d7c53b508bd22 -- 2.44.0