net/mlx5: Fix offset of hca cap reserved field
[sfrench/cifs-2.6.git] / include / linux / mlx5 / mlx5_ifc.h
index 32de0724b40009adc2a802dcc5abafbb5505c0b1..d6b99d5d0f2418557f75de12d4d44ff00fe2bedf 100644 (file)
@@ -32,6 +32,8 @@
 #ifndef MLX5_IFC_H
 #define MLX5_IFC_H
 
+#include "mlx5_ifc_fpga.h"
+
 enum {
        MLX5_EVENT_TYPE_CODING_COMPLETION_EVENTS                   = 0x0,
        MLX5_EVENT_TYPE_CODING_PATH_MIGRATED_SUCCEEDED             = 0x1,
@@ -56,7 +58,8 @@ enum {
        MLX5_EVENT_TYPE_CODING_STALL_VL_EVENT                      = 0x1b,
        MLX5_EVENT_TYPE_CODING_DROPPED_PACKET_LOGGED_EVENT         = 0x1f,
        MLX5_EVENT_TYPE_CODING_COMMAND_INTERFACE_COMPLETION        = 0xa,
-       MLX5_EVENT_TYPE_CODING_PAGE_REQUEST                        = 0xb
+       MLX5_EVENT_TYPE_CODING_PAGE_REQUEST                        = 0xb,
+       MLX5_EVENT_TYPE_CODING_FPGA_ERROR                          = 0x20,
 };
 
 enum {
@@ -240,7 +243,7 @@ struct mlx5_ifc_flow_table_fields_supported_bits {
        u8         outer_first_prio[0x1];
        u8         outer_first_cfi[0x1];
        u8         outer_first_vid[0x1];
-       u8         reserved_at_7[0x1];
+       u8         outer_ipv4_ttl[0x1];
        u8         outer_second_prio[0x1];
        u8         outer_second_cfi[0x1];
        u8         outer_second_vid[0x1];
@@ -377,7 +380,8 @@ struct mlx5_ifc_fte_match_set_lyr_2_4_bits {
        u8         tcp_sport[0x10];
        u8         tcp_dport[0x10];
 
-       u8         reserved_at_c0[0x20];
+       u8         reserved_at_c0[0x18];
+       u8         ttl_hoplimit[0x8];
 
        u8         udp_sport[0x10];
        u8         udp_dport[0x10];
@@ -658,9 +662,9 @@ enum {
 struct mlx5_ifc_atomic_caps_bits {
        u8         reserved_at_0[0x40];
 
-       u8         atomic_req_8B_endianess_mode[0x2];
+       u8         atomic_req_8B_endianness_mode[0x2];
        u8         reserved_at_42[0x4];
-       u8         supported_atomic_req_8B_endianess_mode_1[0x1];
+       u8         supported_atomic_req_8B_endianness_mode_1[0x1];
 
        u8         reserved_at_47[0x19];
 
@@ -766,6 +770,12 @@ enum {
        MLX5_CAP_PORT_TYPE_ETH = 0x1,
 };
 
+enum {
+       MLX5_CAP_UMR_FENCE_STRONG       = 0x0,
+       MLX5_CAP_UMR_FENCE_SMALL        = 0x1,
+       MLX5_CAP_UMR_FENCE_NONE         = 0x2,
+};
+
 struct mlx5_ifc_cmd_hca_cap_bits {
        u8         reserved_at_0[0x80];
 
@@ -792,7 +802,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         max_indirection[0x8];
        u8         fixed_buffer_size[0x1];
        u8         log_max_mrw_sz[0x7];
-       u8         reserved_at_110[0x2];
+       u8         force_teardown[0x1];
+       u8         reserved_at_111[0x1];
        u8         log_max_bsf_list_size[0x6];
        u8         umr_extended_translation_offset[0x1];
        u8         null_mkey[0x1];
@@ -813,7 +824,7 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         cc_modify_allowed[0x1];
        u8         start_pad[0x1];
        u8         cache_line_128byte[0x1];
-       u8         reserved_at_163[0xb];
+       u8         reserved_at_165[0xb];
        u8         gid_table_size[0x10];
 
        u8         out_of_seq_cnt[0x1];
@@ -854,7 +865,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         max_tc[0x4];
        u8         reserved_at_1d0[0x1];
        u8         dcbx[0x1];
-       u8         reserved_at_1d2[0x4];
+       u8         reserved_at_1d2[0x3];
+       u8         fpga[0x1];
        u8         rol_s[0x1];
        u8         rol_g[0x1];
        u8         reserved_at_1d8[0x1];
@@ -875,7 +887,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
        u8         reserved_at_202[0x1];
        u8         ipoib_enhanced_offloads[0x1];
        u8         ipoib_basic_offloads[0x1];
-       u8         reserved_at_205[0xa];
+       u8         reserved_at_205[0x5];
+       u8         umr_fence[0x2];
+       u8         reserved_at_20c[0x3];
        u8         drain_sigerr[0x1];
        u8         cmdif_checksum[0x2];
        u8         sigerr_cqe[0x1];
@@ -2186,6 +2200,7 @@ union mlx5_ifc_hca_cap_union_bits {
        struct mlx5_ifc_e_switch_cap_bits e_switch_cap;
        struct mlx5_ifc_vector_calc_cap_bits vector_calc_cap;
        struct mlx5_ifc_qos_cap_bits qos_cap;
+       struct mlx5_ifc_fpga_cap_bits fpga_cap;
        u8         reserved_at_0[0x8000];
 };
 
@@ -3081,18 +3096,25 @@ struct mlx5_ifc_tsar_element_bits {
        u8         reserved_at_10[0x10];
 };
 
+enum {
+       MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_SUCCESS = 0x0,
+       MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_FAIL = 0x1,
+};
+
 struct mlx5_ifc_teardown_hca_out_bits {
        u8         status[0x8];
        u8         reserved_at_8[0x18];
 
        u8         syndrome[0x20];
 
-       u8         reserved_at_40[0x40];
+       u8         reserved_at_40[0x3f];
+
+       u8         force_state[0x1];
 };
 
 enum {
        MLX5_TEARDOWN_HCA_IN_PROFILE_GRACEFUL_CLOSE  = 0x0,
-       MLX5_TEARDOWN_HCA_IN_PROFILE_PANIC_CLOSE     = 0x1,
+       MLX5_TEARDOWN_HCA_IN_PROFILE_FORCE_CLOSE     = 0x1,
 };
 
 struct mlx5_ifc_teardown_hca_in_bits {
@@ -4598,6 +4620,7 @@ enum {
        MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0    = 0x14,
        MLX5_ACTION_IN_FIELD_OUT_SIPV4         = 0x15,
        MLX5_ACTION_IN_FIELD_OUT_DIPV4         = 0x16,
+       MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT = 0x47,
 };
 
 struct mlx5_ifc_alloc_modify_header_context_out_bits {
@@ -6614,6 +6637,24 @@ struct mlx5_ifc_create_flow_table_out_bits {
        u8         reserved_at_60[0x20];
 };
 
+struct mlx5_ifc_flow_table_context_bits {
+       u8         encap_en[0x1];
+       u8         decap_en[0x1];
+       u8         reserved_at_2[0x2];
+       u8         table_miss_action[0x4];
+       u8         level[0x8];
+       u8         reserved_at_10[0x8];
+       u8         log_size[0x8];
+
+       u8         reserved_at_20[0x8];
+       u8         table_miss_id[0x18];
+
+       u8         reserved_at_40[0x8];
+       u8         lag_master_next_table_id[0x18];
+
+       u8         reserved_at_60[0xe0];
+};
+
 struct mlx5_ifc_create_flow_table_in_bits {
        u8         opcode[0x10];
        u8         reserved_at_10[0x10];
@@ -6632,21 +6673,7 @@ struct mlx5_ifc_create_flow_table_in_bits {
 
        u8         reserved_at_a0[0x20];
 
-       u8         encap_en[0x1];
-       u8         decap_en[0x1];
-       u8         reserved_at_c2[0x2];
-       u8         table_miss_mode[0x4];
-       u8         level[0x8];
-       u8         reserved_at_d0[0x8];
-       u8         log_size[0x8];
-
-       u8         reserved_at_e0[0x8];
-       u8         table_miss_id[0x18];
-
-       u8         reserved_at_100[0x8];
-       u8         lag_master_next_table_id[0x18];
-
-       u8         reserved_at_120[0x80];
+       struct mlx5_ifc_flow_table_context_bits flow_table_context;
 };
 
 struct mlx5_ifc_create_flow_group_out_bits {
@@ -7278,7 +7305,8 @@ struct mlx5_ifc_ptys_reg_bits {
        u8         ib_link_width_oper[0x10];
        u8         ib_proto_oper[0x10];
 
-       u8         reserved_at_160[0x20];
+       u8         reserved_at_160[0x1c];
+       u8         connector_type[0x4];
 
        u8         eth_proto_lp_advertise[0x20];
 
@@ -7681,8 +7709,10 @@ struct mlx5_ifc_peir_reg_bits {
 };
 
 struct mlx5_ifc_pcam_enhanced_features_bits {
-       u8         reserved_at_0[0x7e];
+       u8         reserved_at_0[0x7c];
 
+       u8         ptys_connector_type[0x1];
+       u8         reserved_at_7d[0x1];
        u8         ppcnt_discard_group[0x1];
        u8         ppcnt_statistical_group[0x1];
 };
@@ -7715,6 +7745,18 @@ struct mlx5_ifc_mcam_enhanced_features_bits {
        u8         pcie_performance_group[0x1];
 };
 
+struct mlx5_ifc_mcam_access_reg_bits {
+       u8         reserved_at_0[0x1c];
+       u8         mcda[0x1];
+       u8         mcc[0x1];
+       u8         mcqi[0x1];
+       u8         reserved_at_1f[0x1];
+
+       u8         regs_95_to_64[0x20];
+       u8         regs_63_to_32[0x20];
+       u8         regs_31_to_0[0x20];
+};
+
 struct mlx5_ifc_mcam_reg_bits {
        u8         reserved_at_0[0x8];
        u8         feature_group[0x8];
@@ -7724,6 +7766,7 @@ struct mlx5_ifc_mcam_reg_bits {
        u8         reserved_at_20[0x20];
 
        union {
+               struct mlx5_ifc_mcam_access_reg_bits access_regs;
                u8         reserved_at_0[0x80];
        } mng_access_reg_cap_mask;
 
@@ -8135,6 +8178,85 @@ struct mlx5_ifc_mtppse_reg_bits {
        u8         reserved_at_40[0x40];
 };
 
+struct mlx5_ifc_mcqi_cap_bits {
+       u8         supported_info_bitmask[0x20];
+
+       u8         component_size[0x20];
+
+       u8         max_component_size[0x20];
+
+       u8         log_mcda_word_size[0x4];
+       u8         reserved_at_64[0xc];
+       u8         mcda_max_write_size[0x10];
+
+       u8         rd_en[0x1];
+       u8         reserved_at_81[0x1];
+       u8         match_chip_id[0x1];
+       u8         match_psid[0x1];
+       u8         check_user_timestamp[0x1];
+       u8         match_base_guid_mac[0x1];
+       u8         reserved_at_86[0x1a];
+};
+
+struct mlx5_ifc_mcqi_reg_bits {
+       u8         read_pending_component[0x1];
+       u8         reserved_at_1[0xf];
+       u8         component_index[0x10];
+
+       u8         reserved_at_20[0x20];
+
+       u8         reserved_at_40[0x1b];
+       u8         info_type[0x5];
+
+       u8         info_size[0x20];
+
+       u8         offset[0x20];
+
+       u8         reserved_at_a0[0x10];
+       u8         data_size[0x10];
+
+       u8         data[0][0x20];
+};
+
+struct mlx5_ifc_mcc_reg_bits {
+       u8         reserved_at_0[0x4];
+       u8         time_elapsed_since_last_cmd[0xc];
+       u8         reserved_at_10[0x8];
+       u8         instruction[0x8];
+
+       u8         reserved_at_20[0x10];
+       u8         component_index[0x10];
+
+       u8         reserved_at_40[0x8];
+       u8         update_handle[0x18];
+
+       u8         handle_owner_type[0x4];
+       u8         handle_owner_host_id[0x4];
+       u8         reserved_at_68[0x1];
+       u8         control_progress[0x7];
+       u8         error_code[0x8];
+       u8         reserved_at_78[0x4];
+       u8         control_state[0x4];
+
+       u8         component_size[0x20];
+
+       u8         reserved_at_a0[0x60];
+};
+
+struct mlx5_ifc_mcda_reg_bits {
+       u8         reserved_at_0[0x8];
+       u8         update_handle[0x18];
+
+       u8         offset[0x20];
+
+       u8         reserved_at_40[0x10];
+       u8         size[0x10];
+
+       u8         reserved_at_60[0x20];
+
+       u8         data[0][0x20];
+};
+
 union mlx5_ifc_ports_control_registers_document_bits {
        struct mlx5_ifc_bufferx_reg_bits bufferx_reg;
        struct mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits eth_2819_cntrs_grp_data_layout;
@@ -8182,6 +8304,11 @@ union mlx5_ifc_ports_control_registers_document_bits {
        struct mlx5_ifc_sltp_reg_bits sltp_reg;
        struct mlx5_ifc_mtpps_reg_bits mtpps_reg;
        struct mlx5_ifc_mtppse_reg_bits mtppse_reg;
+       struct mlx5_ifc_fpga_ctrl_bits fpga_ctrl_bits;
+       struct mlx5_ifc_fpga_cap_bits fpga_cap_bits;
+       struct mlx5_ifc_mcqi_reg_bits mcqi_reg;
+       struct mlx5_ifc_mcc_reg_bits mcc_reg;
+       struct mlx5_ifc_mcda_reg_bits mcda_reg;
        u8         reserved_at_0[0x60e0];
 };
 
@@ -8262,17 +8389,7 @@ struct mlx5_ifc_modify_flow_table_in_bits {
        u8         reserved_at_a0[0x8];
        u8         table_id[0x18];
 
-       u8         reserved_at_c0[0x4];
-       u8         table_miss_mode[0x4];
-       u8         reserved_at_c8[0x18];
-
-       u8         reserved_at_e0[0x8];
-       u8         table_miss_id[0x18];
-
-       u8         reserved_at_100[0x8];
-       u8         lag_master_next_table_id[0x18];
-
-       u8         reserved_at_120[0x80];
+       struct mlx5_ifc_flow_table_context_bits flow_table_context;
 };
 
 struct mlx5_ifc_ets_tcn_config_reg_bits {