[PATCH 1/2] common/mlx5: read SWS capability bits
Maayan Kashani
mkashani at nvidia.com
Thu Nov 6 09:38:16 CET 2025
SWS will be disabled in future HW generation.
Checking SWS capability bits and returning relevant error.
if user configuration is not supported,
will be added in the follow up commit.
Signed-off-by: Maayan Kashani <mkashani at nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
---
drivers/common/mlx5/mlx5_devx_cmds.c | 18 ++++++++++++++++++
drivers/common/mlx5/mlx5_devx_cmds.h | 6 ++++++
drivers/common/mlx5/mlx5_prm.h | 14 ++++++++++----
3 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c
index 385759230a2..22f6b29089e 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.c
+++ b/drivers/common/mlx5/mlx5_devx_cmds.c
@@ -1300,6 +1300,18 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,
rx_reg |= ((0xff & reg_c_8_15) << 8);
attr->set_reg_c &= (rx_reg & tx_reg);
+ attr->rx_sw_owner_v2 = MLX5_GET(flow_table_nic_cap, hcattr,
+ flow_table_properties_nic_receive.sw_owner_v2);
+ if (!attr->rx_sw_owner_v2)
+ attr->rx_sw_owner = MLX5_GET(flow_table_nic_cap, hcattr,
+ flow_table_properties_nic_receive.sw_owner);
+
+ attr->tx_sw_owner_v2 = MLX5_GET(flow_table_nic_cap, hcattr,
+ flow_table_properties_nic_transmit.sw_owner_v2);
+ if (!attr->tx_sw_owner_v2)
+ attr->tx_sw_owner = MLX5_GET(flow_table_nic_cap, hcattr,
+ flow_table_properties_nic_transmit.sw_owner);
+
#undef GET_RX_REG_X_BITS
#undef GET_TX_REG_X_BITS
}
@@ -1452,6 +1464,12 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,
reg_c_8_15 = MLX5_GET(flow_table_esw_cap, hcattr,
ft_field_support_2_esw_fdb.metadata_reg_c_8_15);
attr->set_reg_c &= ((0xff & reg_c_8_15) << 8) | esw_reg;
+
+ attr->esw_sw_owner_v2 = MLX5_GET(flow_table_esw_cap, hcattr,
+ flow_table_properties_nic_esw_fdb.sw_owner_v2);
+ if (!attr->esw_sw_owner_v2)
+ attr->esw_sw_owner = MLX5_GET(flow_table_esw_cap, hcattr,
+ flow_table_properties_nic_esw_fdb.sw_owner);
}
return 0;
error:
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h
index efae6826dcf..4c7747cbeca 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.h
+++ b/drivers/common/mlx5/mlx5_devx_cmds.h
@@ -336,6 +336,12 @@ struct mlx5_hca_attr {
uint8_t max_header_modify_pattern_length;
uint64_t system_image_guid;
uint32_t log_max_conn_track_offload:5;
+ uint8_t rx_sw_owner:1;
+ uint8_t rx_sw_owner_v2:1;
+ uint8_t tx_sw_owner:1;
+ uint8_t tx_sw_owner_v2:1;
+ uint8_t esw_sw_owner:1;
+ uint8_t esw_sw_owner_v2:1;
};
/* LAG Context. */
diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index 5db8d67cfc1..6cde3f8f1a1 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -1593,9 +1593,13 @@ enum {
#define MLX5_HCA_FLEX_GTPU_DW_0_ENABLED (1UL << 18)
#define MLX5_HCA_FLEX_GTPU_TEID_ENABLED (1UL << 19)
-/* The device steering logic format. */
-#define MLX5_STEERING_LOGIC_FORMAT_CONNECTX_5 0x0
-#define MLX5_STEERING_LOGIC_FORMAT_CONNECTX_6DX 0x1
+/* The device steering logic format version. */
+enum {
+ MLX5_STEERING_LOGIC_FORMAT_CONNECTX_5 = 0,
+ MLX5_STEERING_LOGIC_FORMAT_CONNECTX_6DX = 1,
+ MLX5_STEERING_LOGIC_FORMAT_CONNECTX_7 = 2,
+ MLX5_STEERING_LOGIC_FORMAT_CONNECTX_8 = 3,
+};
struct mlx5_ifc_cmd_hca_cap_bits {
u8 access_other_hca_roce[0x1];
@@ -2342,7 +2346,9 @@ struct mlx5_ifc_flow_table_nic_cap_bits {
};
struct mlx5_ifc_flow_table_esw_cap_bits {
- u8 reserved_at_0[0x800];
+ u8 reserved_at_0[0x200];
+ struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_esw_fdb;
+ u8 reserved_at_400[0x400];
struct mlx5_ifc_ft_fields_support_bits ft_header_modify_esw_fdb;
u8 reserved_at_C00[0x800];
struct mlx5_ifc_ft_fields_support_2_bits
--
2.21.0
More information about the dev
mailing list