net/mlx5: Enhance MCAM reg to allow query on access reg support
[sfrench/cifs-2.6.git] / include / linux / mlx5 / mlx5_ifc.h
index 56e96f6a0a45143afc69f5c71a2a9b852e4a91a5..8f197b070cea4c8f19f04f4e95221a3f736bf10d 100644 (file)
@@ -243,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];
@@ -380,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];
@@ -661,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];
 
@@ -801,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];
@@ -3094,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 {
@@ -4611,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 {
@@ -6627,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];
@@ -6645,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 {
@@ -7291,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];
 
@@ -7694,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];
 };
@@ -7728,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];
@@ -7737,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;
 
@@ -8148,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;
@@ -8197,6 +8306,9 @@ union mlx5_ifc_ports_control_registers_document_bits {
        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];
 };
 
@@ -8277,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 {