Commit 7d5e1423 authored by Saeed Mahameed's avatar Saeed Mahameed Committed by David S. Miller

net/mlx5: Update mlx5_ifc hardware features

Adding the needed mlx5_ifc hardware bits and structs
for the following feature:

* Add vport to steering commands for SRIOV ACL support
* Add mlcr, pcmr and mcia registers for dump module EEPROM
* Add support for FCS, baeacon led and disable_link bits to
  hca caps
* Add CQE period mode bit in  CQ context for CQE based CQ
  moderation support
* Add umr SQ bit for fragmented memory registration
* Add needed bits and caps for Striding RQ support
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e1c9c62b
...@@ -513,7 +513,9 @@ struct mlx5_ifc_per_protocol_networking_offload_caps_bits { ...@@ -513,7 +513,9 @@ struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
u8 max_lso_cap[0x5]; u8 max_lso_cap[0x5];
u8 reserved_at_10[0x4]; u8 reserved_at_10[0x4];
u8 rss_ind_tbl_cap[0x4]; u8 rss_ind_tbl_cap[0x4];
u8 reserved_at_18[0x3]; u8 reg_umr_sq[0x1];
u8 scatter_fcs[0x1];
u8 reserved_at_1a[0x1];
u8 tunnel_lso_const_out_ip_id[0x1]; u8 tunnel_lso_const_out_ip_id[0x1];
u8 reserved_at_1c[0x2]; u8 reserved_at_1c[0x2];
u8 tunnel_statless_gre[0x1]; u8 tunnel_statless_gre[0x1];
...@@ -648,7 +650,7 @@ struct mlx5_ifc_vector_calc_cap_bits { ...@@ -648,7 +650,7 @@ struct mlx5_ifc_vector_calc_cap_bits {
enum { enum {
MLX5_WQ_TYPE_LINKED_LIST = 0x0, MLX5_WQ_TYPE_LINKED_LIST = 0x0,
MLX5_WQ_TYPE_CYCLIC = 0x1, MLX5_WQ_TYPE_CYCLIC = 0x1,
MLX5_WQ_TYPE_STRQ = 0x2, MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ = 0x2,
}; };
enum { enum {
...@@ -753,7 +755,11 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -753,7 +755,11 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 early_vf_enable[0x1]; u8 early_vf_enable[0x1];
u8 reserved_at_1a9[0x2]; u8 reserved_at_1a9[0x2];
u8 local_ca_ack_delay[0x5]; u8 local_ca_ack_delay[0x5];
u8 reserved_at_1af[0x6]; u8 reserved_at_1af[0x2];
u8 ports_check[0x1];
u8 reserved_at_1b2[0x1];
u8 disable_link_up[0x1];
u8 beacon_led[0x1];
u8 port_type[0x2]; u8 port_type[0x2];
u8 num_ports[0x8]; u8 num_ports[0x8];
...@@ -778,7 +784,8 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -778,7 +784,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 cqe_version[0x4]; u8 cqe_version[0x4];
u8 compact_address_vector[0x1]; u8 compact_address_vector[0x1];
u8 reserved_at_200[0x3]; u8 striding_rq[0x1];
u8 reserved_at_201[0x2];
u8 ipoib_basic_offloads[0x1]; u8 ipoib_basic_offloads[0x1];
u8 reserved_at_205[0xa]; u8 reserved_at_205[0xa];
u8 drain_sigerr[0x1]; u8 drain_sigerr[0x1];
...@@ -807,12 +814,12 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -807,12 +814,12 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 block_lb_mc[0x1]; u8 block_lb_mc[0x1];
u8 reserved_at_229[0x1]; u8 reserved_at_229[0x1];
u8 scqe_break_moderation[0x1]; u8 scqe_break_moderation[0x1];
u8 reserved_at_22a[0x1]; u8 cq_period_start_from_cqe[0x1];
u8 cd[0x1]; u8 cd[0x1];
u8 reserved_at_22d[0x1]; u8 reserved_at_22d[0x1];
u8 apm[0x1]; u8 apm[0x1];
u8 vector_calc[0x1]; u8 vector_calc[0x1];
u8 reserved_at_22f[0x1]; u8 umr_ptr_rlky[0x1];
u8 imaicl[0x1]; u8 imaicl[0x1];
u8 reserved_at_232[0x4]; u8 reserved_at_232[0x4];
u8 qkv[0x1]; u8 qkv[0x1];
...@@ -913,10 +920,10 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -913,10 +920,10 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 reserved_at_500[0x80]; u8 reserved_at_500[0x80];
u8 reserved_at_580[0x3f]; u8 reserved_at_580[0x3f];
u8 cqe_zip[0x1]; u8 cqe_compression[0x1];
u8 cqe_zip_timeout[0x10]; u8 cqe_compression_timeout[0x10];
u8 cqe_zip_max_num[0x10]; u8 cqe_compression_max_num[0x10];
u8 reserved_at_5e0[0x220]; u8 reserved_at_5e0[0x220];
}; };
...@@ -1000,7 +1007,13 @@ struct mlx5_ifc_wq_bits { ...@@ -1000,7 +1007,13 @@ struct mlx5_ifc_wq_bits {
u8 reserved_at_118[0x3]; u8 reserved_at_118[0x3];
u8 log_wq_sz[0x5]; u8 log_wq_sz[0x5];
u8 reserved_at_120[0x4e0]; u8 reserved_at_120[0x15];
u8 log_wqe_num_of_strides[0x3];
u8 two_byte_shift_en[0x1];
u8 reserved_at_139[0x4];
u8 log_wqe_stride_size[0x3];
u8 reserved_at_140[0x4c0];
struct mlx5_ifc_cmd_pas_bits pas[0]; struct mlx5_ifc_cmd_pas_bits pas[0];
}; };
...@@ -2199,7 +2212,8 @@ struct mlx5_ifc_sqc_bits { ...@@ -2199,7 +2212,8 @@ struct mlx5_ifc_sqc_bits {
u8 flush_in_error_en[0x1]; u8 flush_in_error_en[0x1];
u8 reserved_at_4[0x4]; u8 reserved_at_4[0x4];
u8 state[0x4]; u8 state[0x4];
u8 reserved_at_c[0x14]; u8 reg_umr[0x1];
u8 reserved_at_d[0x13];
u8 reserved_at_20[0x8]; u8 reserved_at_20[0x8];
u8 user_index[0x18]; u8 user_index[0x18];
...@@ -2247,7 +2261,8 @@ enum { ...@@ -2247,7 +2261,8 @@ enum {
struct mlx5_ifc_rqc_bits { struct mlx5_ifc_rqc_bits {
u8 rlky[0x1]; u8 rlky[0x1];
u8 reserved_at_1[0x2]; u8 reserved_at_1[0x1];
u8 scatter_fcs[0x1];
u8 vsd[0x1]; u8 vsd[0x1];
u8 mem_rq_type[0x4]; u8 mem_rq_type[0x4];
u8 state[0x4]; u8 state[0x4];
...@@ -2604,6 +2619,11 @@ enum { ...@@ -2604,6 +2619,11 @@ enum {
MLX5_CQC_ST_FIRED = 0xa, MLX5_CQC_ST_FIRED = 0xa,
}; };
enum {
MLX5_CQ_PERIOD_MODE_START_FROM_EQE = 0x0,
MLX5_CQ_PERIOD_MODE_START_FROM_CQE = 0x1,
};
struct mlx5_ifc_cqc_bits { struct mlx5_ifc_cqc_bits {
u8 status[0x4]; u8 status[0x4];
u8 reserved_at_4[0x4]; u8 reserved_at_4[0x4];
...@@ -2612,8 +2632,8 @@ struct mlx5_ifc_cqc_bits { ...@@ -2612,8 +2632,8 @@ struct mlx5_ifc_cqc_bits {
u8 reserved_at_c[0x1]; u8 reserved_at_c[0x1];
u8 scqe_break_moderation_en[0x1]; u8 scqe_break_moderation_en[0x1];
u8 oi[0x1]; u8 oi[0x1];
u8 reserved_at_f[0x2]; u8 cq_period_mode[0x2];
u8 cqe_zip_en[0x1]; u8 cqe_comp_en[0x1];
u8 mini_cqe_res_format[0x2]; u8 mini_cqe_res_format[0x2];
u8 st[0x4]; u8 st[0x4];
u8 reserved_at_18[0x8]; u8 reserved_at_18[0x8];
...@@ -2987,7 +3007,11 @@ struct mlx5_ifc_set_fte_in_bits { ...@@ -2987,7 +3007,11 @@ struct mlx5_ifc_set_fte_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -5181,7 +5205,11 @@ struct mlx5_ifc_destroy_flow_table_in_bits { ...@@ -5181,7 +5205,11 @@ struct mlx5_ifc_destroy_flow_table_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -5208,7 +5236,11 @@ struct mlx5_ifc_destroy_flow_group_in_bits { ...@@ -5208,7 +5236,11 @@ struct mlx5_ifc_destroy_flow_group_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -5349,7 +5381,11 @@ struct mlx5_ifc_delete_fte_in_bits { ...@@ -5349,7 +5381,11 @@ struct mlx5_ifc_delete_fte_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -5795,7 +5831,11 @@ struct mlx5_ifc_create_flow_table_in_bits { ...@@ -5795,7 +5831,11 @@ struct mlx5_ifc_create_flow_table_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -5839,7 +5879,11 @@ struct mlx5_ifc_create_flow_group_in_bits { ...@@ -5839,7 +5879,11 @@ struct mlx5_ifc_create_flow_group_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -6372,6 +6416,17 @@ struct mlx5_ifc_ptys_reg_bits { ...@@ -6372,6 +6416,17 @@ struct mlx5_ifc_ptys_reg_bits {
u8 reserved_at_1a0[0x60]; u8 reserved_at_1a0[0x60];
}; };
struct mlx5_ifc_mlcr_reg_bits {
u8 reserved_at_0[0x8];
u8 local_port[0x8];
u8 reserved_at_10[0x20];
u8 beacon_duration[0x10];
u8 reserved_at_40[0x10];
u8 beacon_remain[0x10];
};
struct mlx5_ifc_ptas_reg_bits { struct mlx5_ifc_ptas_reg_bits {
u8 reserved_at_0[0x20]; u8 reserved_at_0[0x20];
...@@ -6781,6 +6836,16 @@ struct mlx5_ifc_pamp_reg_bits { ...@@ -6781,6 +6836,16 @@ struct mlx5_ifc_pamp_reg_bits {
u8 index_data[18][0x10]; u8 index_data[18][0x10];
}; };
struct mlx5_ifc_pcmr_reg_bits {
u8 reserved_at_0[0x8];
u8 local_port[0x8];
u8 reserved_at_10[0x2e];
u8 fcs_cap[0x1];
u8 reserved_at_3f[0x1f];
u8 fcs_chk[0x1];
u8 reserved_at_5f[0x1];
};
struct mlx5_ifc_lane_2_module_mapping_bits { struct mlx5_ifc_lane_2_module_mapping_bits {
u8 reserved_at_0[0x6]; u8 reserved_at_0[0x6];
u8 rx_lane[0x2]; u8 rx_lane[0x2];
...@@ -7117,6 +7182,7 @@ union mlx5_ifc_ports_control_registers_document_bits { ...@@ -7117,6 +7182,7 @@ union mlx5_ifc_ports_control_registers_document_bits {
struct mlx5_ifc_pspa_reg_bits pspa_reg; struct mlx5_ifc_pspa_reg_bits pspa_reg;
struct mlx5_ifc_ptas_reg_bits ptas_reg; struct mlx5_ifc_ptas_reg_bits ptas_reg;
struct mlx5_ifc_ptys_reg_bits ptys_reg; struct mlx5_ifc_ptys_reg_bits ptys_reg;
struct mlx5_ifc_mlcr_reg_bits mlcr_reg;
struct mlx5_ifc_pude_reg_bits pude_reg; struct mlx5_ifc_pude_reg_bits pude_reg;
struct mlx5_ifc_pvlc_reg_bits pvlc_reg; struct mlx5_ifc_pvlc_reg_bits pvlc_reg;
struct mlx5_ifc_slrg_reg_bits slrg_reg; struct mlx5_ifc_slrg_reg_bits slrg_reg;
...@@ -7150,7 +7216,11 @@ struct mlx5_ifc_set_flow_table_root_in_bits { ...@@ -7150,7 +7216,11 @@ struct mlx5_ifc_set_flow_table_root_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x40]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x20];
u8 table_type[0x8]; u8 table_type[0x8];
u8 reserved_at_88[0x18]; u8 reserved_at_88[0x18];
...@@ -7181,7 +7251,9 @@ struct mlx5_ifc_modify_flow_table_in_bits { ...@@ -7181,7 +7251,9 @@ struct mlx5_ifc_modify_flow_table_in_bits {
u8 reserved_at_20[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_at_40[0x20]; u8 other_vport[0x1];
u8 reserved_at_41[0xf];
u8 vport_number[0x10];
u8 reserved_at_60[0x10]; u8 reserved_at_60[0x10];
u8 modify_field_select[0x10]; u8 modify_field_select[0x10];
...@@ -7247,4 +7319,34 @@ struct mlx5_ifc_qtct_reg_bits { ...@@ -7247,4 +7319,34 @@ struct mlx5_ifc_qtct_reg_bits {
u8 tclass[0x3]; u8 tclass[0x3];
}; };
struct mlx5_ifc_mcia_reg_bits {
u8 l[0x1];
u8 reserved_at_1[0x7];
u8 module[0x8];
u8 reserved_at_10[0x8];
u8 status[0x8];
u8 i2c_device_address[0x8];
u8 page_number[0x8];
u8 device_address[0x10];
u8 reserved_at_40[0x10];
u8 size[0x10];
u8 reserved_at_60[0x20];
u8 dword_0[0x20];
u8 dword_1[0x20];
u8 dword_2[0x20];
u8 dword_3[0x20];
u8 dword_4[0x20];
u8 dword_5[0x20];
u8 dword_6[0x20];
u8 dword_7[0x20];
u8 dword_8[0x20];
u8 dword_9[0x20];
u8 dword_10[0x20];
u8 dword_11[0x20];
};
#endif /* MLX5_IFC_H */ #endif /* MLX5_IFC_H */
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