Commit 6b646a7e authored by Leon Romanovsky's avatar Leon Romanovsky

net/mlx5: Add ability to read and write ECE options

The end result of RDMA-CM ECE handshake is ECE options, which is
needed to be used while configuring data QPs. Such options can
come in any QP state, so add in/out fields to set and query
ECE options.

OUT fields:
* create_qp() - default ECE options for that type of QP.
* modify_qp() - enabled ECE options after QP state transition.

IN fields:
* create_qp() - create QP with this ECE option.
* modify_qp() - requested options. For unconnected QPs, the FW
will return an error if ECE is already configured with any options
that not equal to previously set.
Reviewed-by: default avatarMark Zhang <markz@mellanox.com>
Reviewed-by: default avatarMaor Gottlieb <maorg@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
parent ecf814e0
...@@ -1208,7 +1208,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -1208,7 +1208,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 reserved_at_99[0x2]; u8 reserved_at_99[0x2];
u8 log_max_qp[0x5]; u8 log_max_qp[0x5];
u8 reserved_at_a0[0xb]; u8 reserved_at_a0[0x3];
u8 ece_support[0x1];
u8 reserved_at_a4[0x7];
u8 log_max_srq[0x5]; u8 log_max_srq[0x5];
u8 reserved_at_b0[0x10]; u8 reserved_at_b0[0x10];
...@@ -4216,7 +4218,8 @@ struct mlx5_ifc_rts2rts_qp_out_bits { ...@@ -4216,7 +4218,8 @@ struct mlx5_ifc_rts2rts_qp_out_bits {
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_at_40[0x40]; u8 reserved_at_40[0x20];
u8 ece[0x20];
}; };
struct mlx5_ifc_rts2rts_qp_in_bits { struct mlx5_ifc_rts2rts_qp_in_bits {
...@@ -4233,7 +4236,7 @@ struct mlx5_ifc_rts2rts_qp_in_bits { ...@@ -4233,7 +4236,7 @@ struct mlx5_ifc_rts2rts_qp_in_bits {
u8 opt_param_mask[0x20]; u8 opt_param_mask[0x20];
u8 reserved_at_a0[0x20]; u8 ece[0x20];
struct mlx5_ifc_qpc_bits qpc; struct mlx5_ifc_qpc_bits qpc;
...@@ -4246,7 +4249,8 @@ struct mlx5_ifc_rtr2rts_qp_out_bits { ...@@ -4246,7 +4249,8 @@ struct mlx5_ifc_rtr2rts_qp_out_bits {
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_at_40[0x40]; u8 reserved_at_40[0x20];
u8 ece[0x20];
}; };
struct mlx5_ifc_rtr2rts_qp_in_bits { struct mlx5_ifc_rtr2rts_qp_in_bits {
...@@ -4263,7 +4267,7 @@ struct mlx5_ifc_rtr2rts_qp_in_bits { ...@@ -4263,7 +4267,7 @@ struct mlx5_ifc_rtr2rts_qp_in_bits {
u8 opt_param_mask[0x20]; u8 opt_param_mask[0x20];
u8 reserved_at_a0[0x20]; u8 ece[0x20];
struct mlx5_ifc_qpc_bits qpc; struct mlx5_ifc_qpc_bits qpc;
...@@ -4815,7 +4819,8 @@ struct mlx5_ifc_query_qp_out_bits { ...@@ -4815,7 +4819,8 @@ struct mlx5_ifc_query_qp_out_bits {
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_at_40[0x40]; u8 reserved_at_40[0x20];
u8 ece[0x20];
u8 opt_param_mask[0x20]; u8 opt_param_mask[0x20];
...@@ -6580,7 +6585,8 @@ struct mlx5_ifc_init2rtr_qp_out_bits { ...@@ -6580,7 +6585,8 @@ struct mlx5_ifc_init2rtr_qp_out_bits {
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_at_40[0x40]; u8 reserved_at_40[0x20];
u8 ece[0x20];
}; };
struct mlx5_ifc_init2rtr_qp_in_bits { struct mlx5_ifc_init2rtr_qp_in_bits {
...@@ -6597,7 +6603,7 @@ struct mlx5_ifc_init2rtr_qp_in_bits { ...@@ -6597,7 +6603,7 @@ struct mlx5_ifc_init2rtr_qp_in_bits {
u8 opt_param_mask[0x20]; u8 opt_param_mask[0x20];
u8 reserved_at_a0[0x20]; u8 ece[0x20];
struct mlx5_ifc_qpc_bits qpc; struct mlx5_ifc_qpc_bits qpc;
...@@ -7693,7 +7699,7 @@ struct mlx5_ifc_create_qp_out_bits { ...@@ -7693,7 +7699,7 @@ struct mlx5_ifc_create_qp_out_bits {
u8 reserved_at_40[0x8]; u8 reserved_at_40[0x8];
u8 qpn[0x18]; u8 qpn[0x18];
u8 reserved_at_60[0x20]; u8 ece[0x20];
}; };
struct mlx5_ifc_create_qp_in_bits { struct mlx5_ifc_create_qp_in_bits {
...@@ -7707,7 +7713,7 @@ struct mlx5_ifc_create_qp_in_bits { ...@@ -7707,7 +7713,7 @@ struct mlx5_ifc_create_qp_in_bits {
u8 opt_param_mask[0x20]; u8 opt_param_mask[0x20];
u8 reserved_at_a0[0x20]; u8 ece[0x20];
struct mlx5_ifc_qpc_bits qpc; struct mlx5_ifc_qpc_bits qpc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment