aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Ledford <dledford@redhat.com>2016-06-17 20:15:31 -0400
committerDoug Ledford <dledford@redhat.com>2016-06-17 20:15:31 -0400
commit245ee5f13dafa156797be60c6cb41deb5f8aeeeb (patch)
tree7ee0852c2b127f5096e4dbed30f0050106c58ad7
parent5edb56491d4812c42175980759da53388e5d86f5 (diff)
parent7486216b3a0bd26375b17b2cc168a311106cea70 (diff)
Merge tag 'shared' of http://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma into mlx5-4.8
Mellanox shared code between RDMA and net-next trees This is Mellanox mlx5_core shared code for both net-next and RDMA trees for 4.8 kernel cycle.
-rw-r--r--include/linux/mlx5/mlx5_ifc.h275
1 files changed, 263 insertions, 12 deletions
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index e955a2859009..152421cc6f44 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -123,6 +123,10 @@ enum {
123 MLX5_CMD_OP_DRAIN_DCT = 0x712, 123 MLX5_CMD_OP_DRAIN_DCT = 0x712,
124 MLX5_CMD_OP_QUERY_DCT = 0x713, 124 MLX5_CMD_OP_QUERY_DCT = 0x713,
125 MLX5_CMD_OP_ARM_DCT_FOR_KEY_VIOLATION = 0x714, 125 MLX5_CMD_OP_ARM_DCT_FOR_KEY_VIOLATION = 0x714,
126 MLX5_CMD_OP_CREATE_XRQ = 0x717,
127 MLX5_CMD_OP_DESTROY_XRQ = 0x718,
128 MLX5_CMD_OP_QUERY_XRQ = 0x719,
129 MLX5_CMD_OP_ARM_XRQ = 0x71a,
126 MLX5_CMD_OP_QUERY_VPORT_STATE = 0x750, 130 MLX5_CMD_OP_QUERY_VPORT_STATE = 0x750,
127 MLX5_CMD_OP_MODIFY_VPORT_STATE = 0x751, 131 MLX5_CMD_OP_MODIFY_VPORT_STATE = 0x751,
128 MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT = 0x752, 132 MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT = 0x752,
@@ -139,6 +143,8 @@ enum {
139 MLX5_CMD_OP_ALLOC_Q_COUNTER = 0x771, 143 MLX5_CMD_OP_ALLOC_Q_COUNTER = 0x771,
140 MLX5_CMD_OP_DEALLOC_Q_COUNTER = 0x772, 144 MLX5_CMD_OP_DEALLOC_Q_COUNTER = 0x772,
141 MLX5_CMD_OP_QUERY_Q_COUNTER = 0x773, 145 MLX5_CMD_OP_QUERY_Q_COUNTER = 0x773,
146 MLX5_CMD_OP_SET_RATE_LIMIT = 0x780,
147 MLX5_CMD_OP_QUERY_RATE_LIMIT = 0x781,
142 MLX5_CMD_OP_ALLOC_PD = 0x800, 148 MLX5_CMD_OP_ALLOC_PD = 0x800,
143 MLX5_CMD_OP_DEALLOC_PD = 0x801, 149 MLX5_CMD_OP_DEALLOC_PD = 0x801,
144 MLX5_CMD_OP_ALLOC_UAR = 0x802, 150 MLX5_CMD_OP_ALLOC_UAR = 0x802,
@@ -362,7 +368,8 @@ struct mlx5_ifc_fte_match_set_lyr_2_4_bits {
362}; 368};
363 369
364struct mlx5_ifc_fte_match_set_misc_bits { 370struct mlx5_ifc_fte_match_set_misc_bits {
365 u8 reserved_at_0[0x20]; 371 u8 reserved_at_0[0x8];
372 u8 source_sqn[0x18];
366 373
367 u8 reserved_at_20[0x10]; 374 u8 reserved_at_20[0x10];
368 u8 source_port[0x10]; 375 u8 source_port[0x10];
@@ -508,6 +515,17 @@ struct mlx5_ifc_e_switch_cap_bits {
508 u8 reserved_at_20[0x7e0]; 515 u8 reserved_at_20[0x7e0];
509}; 516};
510 517
518struct mlx5_ifc_qos_cap_bits {
519 u8 packet_pacing[0x1];
520 u8 reserved_0[0x1f];
521 u8 reserved_1[0x20];
522 u8 packet_pacing_max_rate[0x20];
523 u8 packet_pacing_min_rate[0x20];
524 u8 reserved_2[0x10];
525 u8 packet_pacing_rate_table_size[0x10];
526 u8 reserved_3[0x760];
527};
528
511struct mlx5_ifc_per_protocol_networking_offload_caps_bits { 529struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
512 u8 csum_cap[0x1]; 530 u8 csum_cap[0x1];
513 u8 vlan_cap[0x1]; 531 u8 vlan_cap[0x1];
@@ -747,7 +765,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
747 765
748 u8 out_of_seq_cnt[0x1]; 766 u8 out_of_seq_cnt[0x1];
749 u8 vport_counters[0x1]; 767 u8 vport_counters[0x1];
750 u8 reserved_at_182[0x4]; 768 u8 retransmission_q_counters[0x1];
769 u8 reserved_at_183[0x3];
751 u8 max_qp_cnt[0xa]; 770 u8 max_qp_cnt[0xa];
752 u8 pkey_table_size[0x10]; 771 u8 pkey_table_size[0x10];
753 772
@@ -774,7 +793,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
774 u8 log_max_msg[0x5]; 793 u8 log_max_msg[0x5];
775 u8 reserved_at_1c8[0x4]; 794 u8 reserved_at_1c8[0x4];
776 u8 max_tc[0x4]; 795 u8 max_tc[0x4];
777 u8 reserved_at_1d0[0x6]; 796 u8 reserved_at_1d0[0x1];
797 u8 dcbx[0x1];
798 u8 reserved_at_1d2[0x4];
778 u8 rol_s[0x1]; 799 u8 rol_s[0x1];
779 u8 rol_g[0x1]; 800 u8 rol_g[0x1];
780 u8 reserved_at_1d8[0x1]; 801 u8 reserved_at_1d8[0x1];
@@ -806,7 +827,7 @@ struct mlx5_ifc_cmd_hca_cap_bits {
806 u8 tph[0x1]; 827 u8 tph[0x1];
807 u8 rf[0x1]; 828 u8 rf[0x1];
808 u8 dct[0x1]; 829 u8 dct[0x1];
809 u8 reserved_at_21b[0x1]; 830 u8 qos[0x1];
810 u8 eth_net_offloads[0x1]; 831 u8 eth_net_offloads[0x1];
811 u8 roce[0x1]; 832 u8 roce[0x1];
812 u8 atomic[0x1]; 833 u8 atomic[0x1];
@@ -932,7 +953,15 @@ struct mlx5_ifc_cmd_hca_cap_bits {
932 u8 cqe_compression_timeout[0x10]; 953 u8 cqe_compression_timeout[0x10];
933 u8 cqe_compression_max_num[0x10]; 954 u8 cqe_compression_max_num[0x10];
934 955
935 u8 reserved_at_5e0[0x220]; 956 u8 reserved_at_5e0[0x10];
957 u8 tag_matching[0x1];
958 u8 rndv_offload_rc[0x1];
959 u8 rndv_offload_dc[0x1];
960 u8 log_tag_matching_list_sz[0x5];
961 u8 reserved_at_5e8[0x3];
962 u8 log_max_xrq[0x5];
963
964 u8 reserved_at_5f0[0x200];
936}; 965};
937 966
938enum mlx5_flow_destination_type { 967enum mlx5_flow_destination_type {
@@ -1970,7 +1999,7 @@ struct mlx5_ifc_qpc_bits {
1970 1999
1971 u8 reserved_at_560[0x5]; 2000 u8 reserved_at_560[0x5];
1972 u8 rq_type[0x3]; 2001 u8 rq_type[0x3];
1973 u8 srqn_rmpn[0x18]; 2002 u8 srqn_rmpn_xrqn[0x18];
1974 2003
1975 u8 reserved_at_580[0x8]; 2004 u8 reserved_at_580[0x8];
1976 u8 rmsn[0x18]; 2005 u8 rmsn[0x18];
@@ -2021,6 +2050,7 @@ union mlx5_ifc_hca_cap_union_bits {
2021 struct mlx5_ifc_flow_table_eswitch_cap_bits flow_table_eswitch_cap; 2050 struct mlx5_ifc_flow_table_eswitch_cap_bits flow_table_eswitch_cap;
2022 struct mlx5_ifc_e_switch_cap_bits e_switch_cap; 2051 struct mlx5_ifc_e_switch_cap_bits e_switch_cap;
2023 struct mlx5_ifc_vector_calc_cap_bits vector_calc_cap; 2052 struct mlx5_ifc_vector_calc_cap_bits vector_calc_cap;
2053 struct mlx5_ifc_qos_cap_bits qos_cap;
2024 u8 reserved_at_0[0x8000]; 2054 u8 reserved_at_0[0x8000];
2025}; 2055};
2026 2056
@@ -2247,8 +2277,9 @@ struct mlx5_ifc_sqc_bits {
2247 u8 reserved_at_40[0x8]; 2277 u8 reserved_at_40[0x8];
2248 u8 cqn[0x18]; 2278 u8 cqn[0x18];
2249 2279
2250 u8 reserved_at_60[0xa0]; 2280 u8 reserved_at_60[0x90];
2251 2281
2282 u8 packet_pacing_rate_limit_index[0x10];
2252 u8 tis_lst_sz[0x10]; 2283 u8 tis_lst_sz[0x10];
2253 u8 reserved_at_110[0x10]; 2284 u8 reserved_at_110[0x10];
2254 2285
@@ -2596,7 +2627,7 @@ struct mlx5_ifc_dctc_bits {
2596 u8 reserved_at_98[0x8]; 2627 u8 reserved_at_98[0x8];
2597 2628
2598 u8 reserved_at_a0[0x8]; 2629 u8 reserved_at_a0[0x8];
2599 u8 srqn[0x18]; 2630 u8 srqn_xrqn[0x18];
2600 2631
2601 u8 reserved_at_c0[0x8]; 2632 u8 reserved_at_c0[0x8];
2602 u8 pd[0x18]; 2633 u8 pd[0x18];
@@ -2648,6 +2679,7 @@ enum {
2648enum { 2679enum {
2649 MLX5_CQ_PERIOD_MODE_START_FROM_EQE = 0x0, 2680 MLX5_CQ_PERIOD_MODE_START_FROM_EQE = 0x0,
2650 MLX5_CQ_PERIOD_MODE_START_FROM_CQE = 0x1, 2681 MLX5_CQ_PERIOD_MODE_START_FROM_CQE = 0x1,
2682 MLX5_CQ_PERIOD_NUM_MODES
2651}; 2683};
2652 2684
2653struct mlx5_ifc_cqc_bits { 2685struct mlx5_ifc_cqc_bits {
@@ -2725,6 +2757,54 @@ struct mlx5_ifc_query_adapter_param_block_bits {
2725 u8 vsd_contd_psid[16][0x8]; 2757 u8 vsd_contd_psid[16][0x8];
2726}; 2758};
2727 2759
2760enum {
2761 MLX5_XRQC_STATE_GOOD = 0x0,
2762 MLX5_XRQC_STATE_ERROR = 0x1,
2763};
2764
2765enum {
2766 MLX5_XRQC_TOPOLOGY_NO_SPECIAL_TOPOLOGY = 0x0,
2767 MLX5_XRQC_TOPOLOGY_TAG_MATCHING = 0x1,
2768};
2769
2770enum {
2771 MLX5_XRQC_OFFLOAD_RNDV = 0x1,
2772};
2773
2774struct mlx5_ifc_tag_matching_topology_context_bits {
2775 u8 log_matching_list_sz[0x4];
2776 u8 reserved_at_4[0xc];
2777 u8 append_next_index[0x10];
2778
2779 u8 sw_phase_cnt[0x10];
2780 u8 hw_phase_cnt[0x10];
2781
2782 u8 reserved_at_40[0x40];
2783};
2784
2785struct mlx5_ifc_xrqc_bits {
2786 u8 state[0x4];
2787 u8 rlkey[0x1];
2788 u8 reserved_at_5[0xf];
2789 u8 topology[0x4];
2790 u8 reserved_at_18[0x4];
2791 u8 offload[0x4];
2792
2793 u8 reserved_at_20[0x8];
2794 u8 user_index[0x18];
2795
2796 u8 reserved_at_40[0x8];
2797 u8 cqn[0x18];
2798
2799 u8 reserved_at_60[0xa0];
2800
2801 struct mlx5_ifc_tag_matching_topology_context_bits tag_matching_topology_context;
2802
2803 u8 reserved_at_180[0x180];
2804
2805 struct mlx5_ifc_wq_bits wq;
2806};
2807
2728union mlx5_ifc_modify_field_select_resize_field_select_auto_bits { 2808union mlx5_ifc_modify_field_select_resize_field_select_auto_bits {
2729 struct mlx5_ifc_modify_field_select_bits modify_field_select; 2809 struct mlx5_ifc_modify_field_select_bits modify_field_select;
2730 struct mlx5_ifc_resize_field_select_bits resize_field_select; 2810 struct mlx5_ifc_resize_field_select_bits resize_field_select;
@@ -3147,6 +3227,30 @@ struct mlx5_ifc_rst2init_qp_in_bits {
3147 u8 reserved_at_800[0x80]; 3227 u8 reserved_at_800[0x80];
3148}; 3228};
3149 3229
3230struct mlx5_ifc_query_xrq_out_bits {
3231 u8 status[0x8];
3232 u8 reserved_at_8[0x18];
3233
3234 u8 syndrome[0x20];
3235
3236 u8 reserved_at_40[0x40];
3237
3238 struct mlx5_ifc_xrqc_bits xrq_context;
3239};
3240
3241struct mlx5_ifc_query_xrq_in_bits {
3242 u8 opcode[0x10];
3243 u8 reserved_at_10[0x10];
3244
3245 u8 reserved_at_20[0x10];
3246 u8 op_mod[0x10];
3247
3248 u8 reserved_at_40[0x8];
3249 u8 xrqn[0x18];
3250
3251 u8 reserved_at_60[0x20];
3252};
3253
3150struct mlx5_ifc_query_xrc_srq_out_bits { 3254struct mlx5_ifc_query_xrc_srq_out_bits {
3151 u8 status[0x8]; 3255 u8 status[0x8];
3152 u8 reserved_at_8[0x18]; 3256 u8 reserved_at_8[0x18];
@@ -3550,7 +3654,27 @@ struct mlx5_ifc_query_q_counter_out_bits {
3550 3654
3551 u8 out_of_sequence[0x20]; 3655 u8 out_of_sequence[0x20];
3552 3656
3553 u8 reserved_at_1e0[0x620]; 3657 u8 reserved_at_1e0[0x20];
3658
3659 u8 duplicate_request[0x20];
3660
3661 u8 reserved_at_220[0x20];
3662
3663 u8 rnr_nak_retry_err[0x20];
3664
3665 u8 reserved_at_260[0x20];
3666
3667 u8 packet_seq_err[0x20];
3668
3669 u8 reserved_at_2a0[0x20];
3670
3671 u8 implied_nak_seq_err[0x20];
3672
3673 u8 reserved_at_2e0[0x20];
3674
3675 u8 local_ack_timeout_err[0x20];
3676
3677 u8 reserved_at_320[0x4e0];
3554}; 3678};
3555 3679
3556struct mlx5_ifc_query_q_counter_in_bits { 3680struct mlx5_ifc_query_q_counter_in_bits {
@@ -5004,6 +5128,28 @@ struct mlx5_ifc_detach_from_mcg_in_bits {
5004 u8 multicast_gid[16][0x8]; 5128 u8 multicast_gid[16][0x8];
5005}; 5129};
5006 5130
5131struct mlx5_ifc_destroy_xrq_out_bits {
5132 u8 status[0x8];
5133 u8 reserved_at_8[0x18];
5134
5135 u8 syndrome[0x20];
5136
5137 u8 reserved_at_40[0x40];
5138};
5139
5140struct mlx5_ifc_destroy_xrq_in_bits {
5141 u8 opcode[0x10];
5142 u8 reserved_at_10[0x10];
5143
5144 u8 reserved_at_20[0x10];
5145 u8 op_mod[0x10];
5146
5147 u8 reserved_at_40[0x8];
5148 u8 xrqn[0x18];
5149
5150 u8 reserved_at_60[0x20];
5151};
5152
5007struct mlx5_ifc_destroy_xrc_srq_out_bits { 5153struct mlx5_ifc_destroy_xrc_srq_out_bits {
5008 u8 status[0x8]; 5154 u8 status[0x8];
5009 u8 reserved_at_8[0x18]; 5155 u8 reserved_at_8[0x18];
@@ -5589,6 +5735,30 @@ struct mlx5_ifc_dealloc_flow_counter_in_bits {
5589 u8 reserved_at_60[0x20]; 5735 u8 reserved_at_60[0x20];
5590}; 5736};
5591 5737
5738struct mlx5_ifc_create_xrq_out_bits {
5739 u8 status[0x8];
5740 u8 reserved_at_8[0x18];
5741
5742 u8 syndrome[0x20];
5743
5744 u8 reserved_at_40[0x8];
5745 u8 xrqn[0x18];
5746
5747 u8 reserved_at_60[0x20];
5748};
5749
5750struct mlx5_ifc_create_xrq_in_bits {
5751 u8 opcode[0x10];
5752 u8 reserved_at_10[0x10];
5753
5754 u8 reserved_at_20[0x10];
5755 u8 op_mod[0x10];
5756
5757 u8 reserved_at_40[0x40];
5758
5759 struct mlx5_ifc_xrqc_bits xrq_context;
5760};
5761
5592struct mlx5_ifc_create_xrc_srq_out_bits { 5762struct mlx5_ifc_create_xrc_srq_out_bits {
5593 u8 status[0x8]; 5763 u8 status[0x8];
5594 u8 reserved_at_8[0x18]; 5764 u8 reserved_at_8[0x18];
@@ -6130,6 +6300,29 @@ struct mlx5_ifc_attach_to_mcg_in_bits {
6130 u8 multicast_gid[16][0x8]; 6300 u8 multicast_gid[16][0x8];
6131}; 6301};
6132 6302
6303struct mlx5_ifc_arm_xrq_out_bits {
6304 u8 status[0x8];
6305 u8 reserved_at_8[0x18];
6306
6307 u8 syndrome[0x20];
6308
6309 u8 reserved_at_40[0x40];
6310};
6311
6312struct mlx5_ifc_arm_xrq_in_bits {
6313 u8 opcode[0x10];
6314 u8 reserved_at_10[0x10];
6315
6316 u8 reserved_at_20[0x10];
6317 u8 op_mod[0x10];
6318
6319 u8 reserved_at_40[0x8];
6320 u8 xrqn[0x18];
6321
6322 u8 reserved_at_60[0x10];
6323 u8 lwm[0x10];
6324};
6325
6133struct mlx5_ifc_arm_xrc_srq_out_bits { 6326struct mlx5_ifc_arm_xrc_srq_out_bits {
6134 u8 status[0x8]; 6327 u8 status[0x8];
6135 u8 reserved_at_8[0x18]; 6328 u8 reserved_at_8[0x18];
@@ -6167,7 +6360,8 @@ struct mlx5_ifc_arm_rq_out_bits {
6167}; 6360};
6168 6361
6169enum { 6362enum {
6170 MLX5_ARM_RQ_IN_OP_MOD_SRQ_ = 0x1, 6363 MLX5_ARM_RQ_IN_OP_MOD_SRQ = 0x1,
6364 MLX5_ARM_RQ_IN_OP_MOD_XRQ = 0x2,
6171}; 6365};
6172 6366
6173struct mlx5_ifc_arm_rq_in_bits { 6367struct mlx5_ifc_arm_rq_in_bits {
@@ -6360,6 +6554,30 @@ struct mlx5_ifc_add_vxlan_udp_dport_in_bits {
6360 u8 vxlan_udp_port[0x10]; 6554 u8 vxlan_udp_port[0x10];
6361}; 6555};
6362 6556
6557struct mlx5_ifc_set_rate_limit_out_bits {
6558 u8 status[0x8];
6559 u8 reserved_at_8[0x18];
6560
6561 u8 syndrome[0x20];
6562
6563 u8 reserved_at_40[0x40];
6564};
6565
6566struct mlx5_ifc_set_rate_limit_in_bits {
6567 u8 opcode[0x10];
6568 u8 reserved_at_10[0x10];
6569
6570 u8 reserved_at_20[0x10];
6571 u8 op_mod[0x10];
6572
6573 u8 reserved_at_40[0x10];
6574 u8 rate_limit_index[0x10];
6575
6576 u8 reserved_at_60[0x20];
6577
6578 u8 rate_limit[0x20];
6579};
6580
6363struct mlx5_ifc_access_register_out_bits { 6581struct mlx5_ifc_access_register_out_bits {
6364 u8 status[0x8]; 6582 u8 status[0x8];
6365 u8 reserved_at_8[0x18]; 6583 u8 reserved_at_8[0x18];
@@ -6484,12 +6702,15 @@ struct mlx5_ifc_pude_reg_bits {
6484}; 6702};
6485 6703
6486struct mlx5_ifc_ptys_reg_bits { 6704struct mlx5_ifc_ptys_reg_bits {
6487 u8 reserved_at_0[0x8]; 6705 u8 an_disable_cap[0x1];
6706 u8 an_disable_admin[0x1];
6707 u8 reserved_at_2[0x6];
6488 u8 local_port[0x8]; 6708 u8 local_port[0x8];
6489 u8 reserved_at_10[0xd]; 6709 u8 reserved_at_10[0xd];
6490 u8 proto_mask[0x3]; 6710 u8 proto_mask[0x3];
6491 6711
6492 u8 reserved_at_20[0x40]; 6712 u8 an_status[0x4];
6713 u8 reserved_at_24[0x3c];
6493 6714
6494 u8 eth_proto_capability[0x20]; 6715 u8 eth_proto_capability[0x20];
6495 6716
@@ -7450,4 +7671,34 @@ struct mlx5_ifc_mcia_reg_bits {
7450 u8 dword_11[0x20]; 7671 u8 dword_11[0x20];
7451}; 7672};
7452 7673
7674struct mlx5_ifc_dcbx_param_bits {
7675 u8 dcbx_cee_cap[0x1];
7676 u8 dcbx_ieee_cap[0x1];
7677 u8 dcbx_standby_cap[0x1];
7678 u8 reserved_at_0[0x5];
7679 u8 port_number[0x8];
7680 u8 reserved_at_10[0xa];
7681 u8 max_application_table_size[6];
7682 u8 reserved_at_20[0x15];
7683 u8 version_oper[0x3];
7684 u8 reserved_at_38[5];
7685 u8 version_admin[0x3];
7686 u8 willing_admin[0x1];
7687 u8 reserved_at_41[0x3];
7688 u8 pfc_cap_oper[0x4];
7689 u8 reserved_at_48[0x4];
7690 u8 pfc_cap_admin[0x4];
7691 u8 reserved_at_50[0x4];
7692 u8 num_of_tc_oper[0x4];
7693 u8 reserved_at_58[0x4];
7694 u8 num_of_tc_admin[0x4];
7695 u8 remote_willing[0x1];
7696 u8 reserved_at_61[3];
7697 u8 remote_pfc_cap[4];
7698 u8 reserved_at_68[0x14];
7699 u8 remote_num_of_tc[0x4];
7700 u8 reserved_at_80[0x18];
7701 u8 error[0x8];
7702 u8 reserved_at_a0[0x160];
7703};
7453#endif /* MLX5_IFC_H */ 7704#endif /* MLX5_IFC_H */