]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5: Add silent mode set/query and VHCA RX IFC bits
authorShay Drory <shayd@nvidia.com>
Mon, 9 Mar 2026 09:34:28 +0000 (11:34 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 16 Mar 2026 20:23:00 +0000 (16:23 -0400)
Update the mlx5 IFC headers with newly defined capability and
command-layout bits:

- Add silent_mode_query and rename silent_mode to silent_mode_set cap
  fields.
- Add forward_vhca_rx and MLX5_IFC_FLOW_DESTINATION_TYPE_VHCA_RX.
- Expose silent mode fields in the L2 table query command structures.

Update the SD support check to use the new capability name
(silent_mode_set) to match the updated IFC definition.

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/20260309093435.1850724-3-tariqt@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c
include/linux/mlx5/mlx5_ifc.h

index c348ee62cd3af92c2f3bef5563e51def4de075da..16b28028609d8bdbbf5d4bdc9744857811d135d4 100644 (file)
@@ -1183,7 +1183,7 @@ int mlx5_fs_cmd_set_l2table_entry_silent(struct mlx5_core_dev *dev, u8 silent_mo
 {
        u32 in[MLX5_ST_SZ_DW(set_l2_table_entry_in)] = {};
 
-       if (silent_mode && !MLX5_CAP_GEN(dev, silent_mode))
+       if (silent_mode && !MLX5_CAP_GEN(dev, silent_mode_set))
                return -EOPNOTSUPP;
 
        MLX5_SET(set_l2_table_entry_in, in, opcode, MLX5_CMD_OP_SET_L2_TABLE_ENTRY);
index 954942ad93c551202e2adba47cb3c851ef3f89ae..762c783156b411861dea495c2053d6bbcca226ee 100644 (file)
@@ -107,7 +107,7 @@ static bool mlx5_sd_is_supported(struct mlx5_core_dev *dev, u8 host_buses)
        /* Disconnect secondaries from the network */
        if (!MLX5_CAP_GEN(dev, eswitch_manager))
                return false;
-       if (!MLX5_CAP_GEN(dev, silent_mode))
+       if (!MLX5_CAP_GEN(dev, silent_mode_set))
                return false;
 
        /* RX steering from primary to secondaries */
index a76c54bf19271f82f819e70fe21b16e3a5015662..8fa4fb3d36cfbbcc1e6779d4ebdd5b995e2fa9d3 100644 (file)
@@ -469,7 +469,8 @@ struct mlx5_ifc_flow_table_prop_layout_bits {
        u8         table_miss_action_domain[0x1];
        u8         termination_table[0x1];
        u8         reformat_and_fwd_to_table[0x1];
-       u8         reserved_at_1a[0x2];
+       u8         forward_vhca_rx[0x1];
+       u8         reserved_at_1b[0x1];
        u8         ipsec_encrypt[0x1];
        u8         ipsec_decrypt[0x1];
        u8         sw_owner_v2[0x1];
@@ -2012,12 +2013,14 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         disable_local_lb_mc[0x1];
        u8         log_min_hairpin_wq_data_sz[0x5];
        u8         reserved_at_3e8[0x1];
-       u8         silent_mode[0x1];
+       u8         silent_mode_set[0x1];
        u8         vhca_state[0x1];
        u8         log_max_vlan_list[0x5];
        u8         reserved_at_3f0[0x3];
        u8         log_max_current_mc_list[0x5];
-       u8         reserved_at_3f8[0x3];
+       u8         reserved_at_3f8[0x1];
+       u8         silent_mode_query[0x1];
+       u8         reserved_at_3fa[0x1];
        u8         log_max_current_uc_list[0x5];
 
        u8         general_obj_types[0x40];
@@ -2279,6 +2282,7 @@ enum mlx5_ifc_flow_destination_type {
        MLX5_IFC_FLOW_DESTINATION_TYPE_VPORT        = 0x0,
        MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_TABLE   = 0x1,
        MLX5_IFC_FLOW_DESTINATION_TYPE_TIR          = 0x2,
+       MLX5_IFC_FLOW_DESTINATION_TYPE_VHCA_RX      = 0x4,
        MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_SAMPLER = 0x6,
        MLX5_IFC_FLOW_DESTINATION_TYPE_UPLINK       = 0x8,
        MLX5_IFC_FLOW_DESTINATION_TYPE_TABLE_TYPE   = 0xA,
@@ -6265,7 +6269,9 @@ struct mlx5_ifc_query_l2_table_entry_out_bits {
 
        u8         reserved_at_40[0xa0];
 
-       u8         reserved_at_e0[0x13];
+       u8         reserved_at_e0[0x11];
+       u8         silent_mode[0x1];
+       u8         reserved_at_f2[0x1];
        u8         vlan_valid[0x1];
        u8         vlan[0xc];
 
@@ -6281,7 +6287,10 @@ struct mlx5_ifc_query_l2_table_entry_in_bits {
        u8         reserved_at_20[0x10];
        u8         op_mod[0x10];
 
-       u8         reserved_at_40[0x60];
+       u8         reserved_at_40[0x40];
+
+       u8         silent_mode_query[0x1];
+       u8         reserved_at_81[0x1f];
 
        u8         reserved_at_a0[0x8];
        u8         table_index[0x18];