hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/include/linux/mlx5/mlx5_ifc.h
....@@ -72,17 +72,42 @@
7272
7373 enum {
7474 MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE = 0x0,
75
+ MLX5_SET_HCA_CAP_OP_MOD_ODP = 0x2,
7576 MLX5_SET_HCA_CAP_OP_MOD_ATOMIC = 0x3,
77
+ MLX5_SET_HCA_CAP_OP_MOD_ROCE = 0x4,
7678 };
7779
7880 enum {
79
- MLX5_GENERAL_OBJ_TYPES_CAP_UCTX = (1ULL << 4),
80
- MLX5_GENERAL_OBJ_TYPES_CAP_UMEM = (1ULL << 5),
81
+ MLX5_SHARED_RESOURCE_UID = 0xffff,
8182 };
8283
8384 enum {
84
- MLX5_OBJ_TYPE_UCTX = 0x0004,
85
- MLX5_OBJ_TYPE_UMEM = 0x0005,
85
+ MLX5_OBJ_TYPE_SW_ICM = 0x0008,
86
+};
87
+
88
+enum {
89
+ MLX5_GENERAL_OBJ_TYPES_CAP_SW_ICM = (1ULL << MLX5_OBJ_TYPE_SW_ICM),
90
+ MLX5_GENERAL_OBJ_TYPES_CAP_GENEVE_TLV_OPT = (1ULL << 11),
91
+ MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q = (1ULL << 13),
92
+};
93
+
94
+enum {
95
+ MLX5_OBJ_TYPE_GENEVE_TLV_OPT = 0x000b,
96
+ MLX5_OBJ_TYPE_VIRTIO_NET_Q = 0x000d,
97
+ MLX5_OBJ_TYPE_MKEY = 0xff01,
98
+ MLX5_OBJ_TYPE_QP = 0xff02,
99
+ MLX5_OBJ_TYPE_PSV = 0xff03,
100
+ MLX5_OBJ_TYPE_RMP = 0xff04,
101
+ MLX5_OBJ_TYPE_XRC_SRQ = 0xff05,
102
+ MLX5_OBJ_TYPE_RQ = 0xff06,
103
+ MLX5_OBJ_TYPE_SQ = 0xff07,
104
+ MLX5_OBJ_TYPE_TIR = 0xff08,
105
+ MLX5_OBJ_TYPE_TIS = 0xff09,
106
+ MLX5_OBJ_TYPE_DCT = 0xff0a,
107
+ MLX5_OBJ_TYPE_XRQ = 0xff0b,
108
+ MLX5_OBJ_TYPE_RQT = 0xff0e,
109
+ MLX5_OBJ_TYPE_FLOW_COUNTER = 0xff0f,
110
+ MLX5_OBJ_TYPE_CQ = 0xff10,
86111 };
87112
88113 enum {
....@@ -98,6 +123,9 @@
98123 MLX5_CMD_OP_QUERY_ISSI = 0x10a,
99124 MLX5_CMD_OP_SET_ISSI = 0x10b,
100125 MLX5_CMD_OP_SET_DRIVER_VERSION = 0x10d,
126
+ MLX5_CMD_OP_QUERY_SF_PARTITION = 0x111,
127
+ MLX5_CMD_OP_ALLOC_SF = 0x113,
128
+ MLX5_CMD_OP_DEALLOC_SF = 0x114,
101129 MLX5_CMD_OP_CREATE_MKEY = 0x200,
102130 MLX5_CMD_OP_QUERY_MKEY = 0x201,
103131 MLX5_CMD_OP_DESTROY_MKEY = 0x202,
....@@ -144,6 +172,12 @@
144172 MLX5_CMD_OP_DESTROY_XRQ = 0x718,
145173 MLX5_CMD_OP_QUERY_XRQ = 0x719,
146174 MLX5_CMD_OP_ARM_XRQ = 0x71a,
175
+ MLX5_CMD_OP_QUERY_XRQ_DC_PARAMS_ENTRY = 0x725,
176
+ MLX5_CMD_OP_SET_XRQ_DC_PARAMS_ENTRY = 0x726,
177
+ MLX5_CMD_OP_QUERY_XRQ_ERROR_PARAMS = 0x727,
178
+ MLX5_CMD_OP_RELEASE_XRQ_ERROR = 0x729,
179
+ MLX5_CMD_OP_MODIFY_XRQ = 0x72a,
180
+ MLX5_CMD_OP_QUERY_ESW_FUNCTIONS = 0x740,
147181 MLX5_CMD_OP_QUERY_VPORT_STATE = 0x750,
148182 MLX5_CMD_OP_MODIFY_VPORT_STATE = 0x751,
149183 MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT = 0x752,
....@@ -161,6 +195,8 @@
161195 MLX5_CMD_OP_ALLOC_Q_COUNTER = 0x771,
162196 MLX5_CMD_OP_DEALLOC_Q_COUNTER = 0x772,
163197 MLX5_CMD_OP_QUERY_Q_COUNTER = 0x773,
198
+ MLX5_CMD_OP_SET_MONITOR_COUNTER = 0x774,
199
+ MLX5_CMD_OP_ARM_MONITOR_COUNTER = 0x775,
164200 MLX5_CMD_OP_SET_PP_RATE_LIMIT = 0x780,
165201 MLX5_CMD_OP_QUERY_RATE_LIMIT = 0x781,
166202 MLX5_CMD_OP_CREATE_SCHEDULING_ELEMENT = 0x782,
....@@ -243,8 +279,9 @@
243279 MLX5_CMD_OP_DEALLOC_FLOW_COUNTER = 0x93a,
244280 MLX5_CMD_OP_QUERY_FLOW_COUNTER = 0x93b,
245281 MLX5_CMD_OP_MODIFY_FLOW_TABLE = 0x93c,
246
- MLX5_CMD_OP_ALLOC_ENCAP_HEADER = 0x93d,
247
- MLX5_CMD_OP_DEALLOC_ENCAP_HEADER = 0x93e,
282
+ MLX5_CMD_OP_ALLOC_PACKET_REFORMAT_CONTEXT = 0x93d,
283
+ MLX5_CMD_OP_DEALLOC_PACKET_REFORMAT_CONTEXT = 0x93e,
284
+ MLX5_CMD_OP_QUERY_PACKET_REFORMAT_CONTEXT = 0x93f,
248285 MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT = 0x940,
249286 MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT = 0x941,
250287 MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT = 0x942,
....@@ -257,7 +294,18 @@
257294 MLX5_CMD_OP_MODIFY_GENERAL_OBJECT = 0xa01,
258295 MLX5_CMD_OP_QUERY_GENERAL_OBJECT = 0xa02,
259296 MLX5_CMD_OP_DESTROY_GENERAL_OBJECT = 0xa03,
297
+ MLX5_CMD_OP_CREATE_UCTX = 0xa04,
298
+ MLX5_CMD_OP_DESTROY_UCTX = 0xa06,
299
+ MLX5_CMD_OP_CREATE_UMEM = 0xa08,
300
+ MLX5_CMD_OP_DESTROY_UMEM = 0xa0a,
301
+ MLX5_CMD_OP_SYNC_STEERING = 0xb00,
260302 MLX5_CMD_OP_MAX
303
+};
304
+
305
+/* Valid range for general commands that don't work over an object */
306
+enum {
307
+ MLX5_CMD_OP_GENERAL_START = 0xb00,
308
+ MLX5_CMD_OP_GENERAL_END = 0xd00,
261309 };
262310
263311 struct mlx5_ifc_flow_table_fields_supported_bits {
....@@ -287,7 +335,11 @@
287335 u8 outer_gre_protocol[0x1];
288336 u8 outer_gre_key[0x1];
289337 u8 outer_vxlan_vni[0x1];
290
- u8 reserved_at_1a[0x5];
338
+ u8 outer_geneve_vni[0x1];
339
+ u8 outer_geneve_oam[0x1];
340
+ u8 outer_geneve_protocol_type[0x1];
341
+ u8 outer_geneve_opt_len[0x1];
342
+ u8 reserved_at_1e[0x1];
291343 u8 source_eswitch_port[0x1];
292344
293345 u8 inner_dmac[0x1];
....@@ -315,7 +367,8 @@
315367 u8 inner_tcp_flags[0x1];
316368 u8 reserved_at_37[0x9];
317369
318
- u8 reserved_at_40[0x5];
370
+ u8 geneve_tlv_option_0_data[0x1];
371
+ u8 reserved_at_41[0x4];
319372 u8 outer_first_mpls_over_udp[0x4];
320373 u8 outer_first_mpls_over_gre[0x4];
321374 u8 inner_first_mpls[0x4];
....@@ -324,8 +377,17 @@
324377 u8 outer_esp_spi[0x1];
325378 u8 reserved_at_58[0x2];
326379 u8 bth_dst_qp[0x1];
380
+ u8 reserved_at_5b[0x5];
327381
328
- u8 reserved_at_5b[0x25];
382
+ u8 reserved_at_60[0x18];
383
+ u8 metadata_reg_c_7[0x1];
384
+ u8 metadata_reg_c_6[0x1];
385
+ u8 metadata_reg_c_5[0x1];
386
+ u8 metadata_reg_c_4[0x1];
387
+ u8 metadata_reg_c_3[0x1];
388
+ u8 metadata_reg_c_2[0x1];
389
+ u8 metadata_reg_c_1[0x1];
390
+ u8 metadata_reg_c_0[0x1];
329391 };
330392
331393 struct mlx5_ifc_flow_table_prop_layout_bits {
....@@ -336,7 +398,7 @@
336398 u8 modify_root[0x1];
337399 u8 identified_miss_table_mode[0x1];
338400 u8 flow_table_modify[0x1];
339
- u8 encap[0x1];
401
+ u8 reformat[0x1];
340402 u8 decap[0x1];
341403 u8 reserved_at_9[0x1];
342404 u8 pop_vlan[0x1];
....@@ -344,9 +406,25 @@
344406 u8 reserved_at_c[0x1];
345407 u8 pop_vlan_2[0x1];
346408 u8 push_vlan_2[0x1];
347
- u8 reserved_at_f[0x11];
409
+ u8 reformat_and_vlan_action[0x1];
410
+ u8 reserved_at_10[0x1];
411
+ u8 sw_owner[0x1];
412
+ u8 reformat_l3_tunnel_to_l2[0x1];
413
+ u8 reformat_l2_to_l3_tunnel[0x1];
414
+ u8 reformat_and_modify_action[0x1];
415
+ u8 ignore_flow_level[0x1];
416
+ u8 reserved_at_16[0x1];
417
+ u8 table_miss_action_domain[0x1];
418
+ u8 termination_table[0x1];
419
+ u8 reformat_and_fwd_to_table[0x1];
420
+ u8 reserved_at_1a[0x2];
421
+ u8 ipsec_encrypt[0x1];
422
+ u8 ipsec_decrypt[0x1];
423
+ u8 sw_owner_v2[0x1];
424
+ u8 reserved_at_1f[0x1];
348425
349
- u8 reserved_at_20[0x2];
426
+ u8 termination_table_raw_traffic[0x1];
427
+ u8 reserved_at_21[0x1];
350428 u8 log_max_ft_size[0x6];
351429 u8 log_max_modify_header_context[0x8];
352430 u8 max_modify_header_actions[0x8];
....@@ -417,8 +495,22 @@
417495 union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits dst_ipv4_dst_ipv6;
418496 };
419497
498
+struct mlx5_ifc_nvgre_key_bits {
499
+ u8 hi[0x18];
500
+ u8 lo[0x8];
501
+};
502
+
503
+union mlx5_ifc_gre_key_bits {
504
+ struct mlx5_ifc_nvgre_key_bits nvgre;
505
+ u8 key[0x20];
506
+};
507
+
420508 struct mlx5_ifc_fte_match_set_misc_bits {
421
- u8 reserved_at_0[0x8];
509
+ u8 gre_c_present[0x1];
510
+ u8 reserved_at_1[0x1];
511
+ u8 gre_k_present[0x1];
512
+ u8 gre_s_present[0x1];
513
+ u8 source_vhca_port[0x4];
422514 u8 source_sqn[0x18];
423515
424516 u8 source_eswitch_owner_vhca_id[0x10];
....@@ -438,13 +530,14 @@
438530 u8 reserved_at_64[0xc];
439531 u8 gre_protocol[0x10];
440532
441
- u8 gre_key_h[0x18];
442
- u8 gre_key_l[0x8];
533
+ union mlx5_ifc_gre_key_bits gre_key;
443534
444535 u8 vxlan_vni[0x18];
445536 u8 reserved_at_b8[0x8];
446537
447
- u8 reserved_at_c0[0x20];
538
+ u8 geneve_vni[0x18];
539
+ u8 reserved_at_d8[0x7];
540
+ u8 geneve_oam[0x1];
448541
449542 u8 reserved_at_e0[0xc];
450543 u8 outer_ipv6_flow_label[0x14];
....@@ -452,7 +545,11 @@
452545 u8 reserved_at_100[0xc];
453546 u8 inner_ipv6_flow_label[0x14];
454547
455
- u8 reserved_at_120[0x28];
548
+ u8 reserved_at_120[0xa];
549
+ u8 geneve_opt_len[0x6];
550
+ u8 geneve_protocol_type[0x10];
551
+
552
+ u8 reserved_at_140[0x8];
456553 u8 bth_dst_qp[0x18];
457554 u8 reserved_at_160[0x20];
458555 u8 outer_esp_spi[0x20];
....@@ -475,11 +572,55 @@
475572
476573 struct mlx5_ifc_fte_match_mpls_bits outer_first_mpls_over_udp;
477574
478
- u8 reserved_at_80[0x100];
575
+ u8 metadata_reg_c_7[0x20];
576
+
577
+ u8 metadata_reg_c_6[0x20];
578
+
579
+ u8 metadata_reg_c_5[0x20];
580
+
581
+ u8 metadata_reg_c_4[0x20];
582
+
583
+ u8 metadata_reg_c_3[0x20];
584
+
585
+ u8 metadata_reg_c_2[0x20];
586
+
587
+ u8 metadata_reg_c_1[0x20];
588
+
589
+ u8 metadata_reg_c_0[0x20];
479590
480591 u8 metadata_reg_a[0x20];
481592
482593 u8 reserved_at_1a0[0x60];
594
+};
595
+
596
+struct mlx5_ifc_fte_match_set_misc3_bits {
597
+ u8 inner_tcp_seq_num[0x20];
598
+
599
+ u8 outer_tcp_seq_num[0x20];
600
+
601
+ u8 inner_tcp_ack_num[0x20];
602
+
603
+ u8 outer_tcp_ack_num[0x20];
604
+
605
+ u8 reserved_at_80[0x8];
606
+ u8 outer_vxlan_gpe_vni[0x18];
607
+
608
+ u8 outer_vxlan_gpe_next_protocol[0x8];
609
+ u8 outer_vxlan_gpe_flags[0x8];
610
+ u8 reserved_at_b0[0x10];
611
+
612
+ u8 icmp_header_data[0x20];
613
+
614
+ u8 icmpv6_header_data[0x20];
615
+
616
+ u8 icmp_type[0x8];
617
+ u8 icmp_code[0x8];
618
+ u8 icmpv6_type[0x8];
619
+ u8 icmpv6_code[0x8];
620
+
621
+ u8 geneve_tlv_option_0_data[0x20];
622
+
623
+ u8 reserved_at_140[0xc0];
483624 };
484625
485626 struct mlx5_ifc_cmd_pas_bits {
....@@ -554,27 +695,64 @@
554695 u8 nic_rx_multi_path_tirs[0x1];
555696 u8 nic_rx_multi_path_tirs_fts[0x1];
556697 u8 allow_sniffer_and_nic_rx_shared_tir[0x1];
557
- u8 reserved_at_3[0x1fd];
698
+ u8 reserved_at_3[0x4];
699
+ u8 sw_owner_reformat_supported[0x1];
700
+ u8 reserved_at_8[0x18];
701
+
702
+ u8 encap_general_header[0x1];
703
+ u8 reserved_at_21[0xa];
704
+ u8 log_max_packet_reformat_context[0x5];
705
+ u8 reserved_at_30[0x6];
706
+ u8 max_encap_header_size[0xa];
707
+ u8 reserved_at_40[0x1c0];
558708
559709 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_receive;
560710
561
- u8 reserved_at_400[0x200];
711
+ struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_receive_rdma;
562712
563713 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_receive_sniffer;
564714
565715 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit;
566716
567
- u8 reserved_at_a00[0x200];
717
+ struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit_rdma;
568718
569719 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit_sniffer;
570720
571
- u8 reserved_at_e00[0x7200];
721
+ u8 reserved_at_e00[0x1200];
722
+
723
+ u8 sw_steering_nic_rx_action_drop_icm_address[0x40];
724
+
725
+ u8 sw_steering_nic_tx_action_drop_icm_address[0x40];
726
+
727
+ u8 sw_steering_nic_tx_action_allow_icm_address[0x40];
728
+
729
+ u8 reserved_at_20c0[0x5f40];
730
+};
731
+
732
+enum {
733
+ MLX5_FDB_TO_VPORT_REG_C_0 = 0x01,
734
+ MLX5_FDB_TO_VPORT_REG_C_1 = 0x02,
735
+ MLX5_FDB_TO_VPORT_REG_C_2 = 0x04,
736
+ MLX5_FDB_TO_VPORT_REG_C_3 = 0x08,
737
+ MLX5_FDB_TO_VPORT_REG_C_4 = 0x10,
738
+ MLX5_FDB_TO_VPORT_REG_C_5 = 0x20,
739
+ MLX5_FDB_TO_VPORT_REG_C_6 = 0x40,
740
+ MLX5_FDB_TO_VPORT_REG_C_7 = 0x80,
572741 };
573742
574743 struct mlx5_ifc_flow_table_eswitch_cap_bits {
575
- u8 reserved_at_0[0x1c];
744
+ u8 fdb_to_vport_reg_c_id[0x8];
745
+ u8 reserved_at_8[0xd];
746
+ u8 fdb_modify_header_fwd_to_table[0x1];
747
+ u8 reserved_at_16[0x1];
748
+ u8 flow_source[0x1];
749
+ u8 reserved_at_18[0x2];
750
+ u8 multi_fdb_encap[0x1];
751
+ u8 egress_acl_forward_to_vport[0x1];
576752 u8 fdb_multi_path_to_table[0x1];
577
- u8 reserved_at_1d[0x1e3];
753
+ u8 reserved_at_1d[0x3];
754
+
755
+ u8 reserved_at_20[0x1e0];
578756
579757 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_esw_fdb;
580758
....@@ -582,7 +760,22 @@
582760
583761 struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_esw_acl_egress;
584762
585
- u8 reserved_at_800[0x7800];
763
+ u8 reserved_at_800[0x1000];
764
+
765
+ u8 sw_steering_fdb_action_drop_icm_address_rx[0x40];
766
+
767
+ u8 sw_steering_fdb_action_drop_icm_address_tx[0x40];
768
+
769
+ u8 sw_steering_uplink_icm_address_rx[0x40];
770
+
771
+ u8 sw_steering_uplink_icm_address_tx[0x40];
772
+
773
+ u8 reserved_at_1900[0x6700];
774
+};
775
+
776
+enum {
777
+ MLX5_COUNTER_SOURCE_ESWITCH = 0x0,
778
+ MLX5_COUNTER_FLOW_ESWITCH = 0x1,
586779 };
587780
588781 struct mlx5_ifc_e_switch_cap_bits {
....@@ -591,19 +784,31 @@
591784 u8 vport_svlan_insert[0x1];
592785 u8 vport_cvlan_insert_if_not_exist[0x1];
593786 u8 vport_cvlan_insert_overwrite[0x1];
594
- u8 reserved_at_5[0x18];
787
+ u8 reserved_at_5[0x3];
788
+ u8 esw_uplink_ingress_acl[0x1];
789
+ u8 reserved_at_9[0x10];
790
+ u8 esw_functions_changed[0x1];
791
+ u8 reserved_at_1a[0x1];
792
+ u8 ecpf_vport_exists[0x1];
793
+ u8 counter_eswitch_affinity[0x1];
595794 u8 merged_eswitch[0x1];
596795 u8 nic_vport_node_guid_modify[0x1];
597796 u8 nic_vport_port_guid_modify[0x1];
598797
599798 u8 vxlan_encap_decap[0x1];
600799 u8 nvgre_encap_decap[0x1];
601
- u8 reserved_at_22[0x9];
602
- u8 log_max_encap_headers[0x5];
800
+ u8 reserved_at_22[0x1];
801
+ u8 log_max_fdb_encap_uplink[0x5];
802
+ u8 reserved_at_21[0x3];
803
+ u8 log_max_packet_reformat_context[0x5];
603804 u8 reserved_2b[0x6];
604805 u8 max_encap_header_size[0xa];
605806
606
- u8 reserved_40[0x7c0];
807
+ u8 reserved_at_40[0xb];
808
+ u8 log_max_esw_sf[0x5];
809
+ u8 esw_sf_base_id[0x10];
810
+
811
+ u8 reserved_at_60[0x7a0];
607812
608813 };
609814
....@@ -615,7 +820,9 @@
615820 u8 reserved_at_4[0x1];
616821 u8 packet_pacing_burst_bound[0x1];
617822 u8 packet_pacing_typical_size[0x1];
618
- u8 reserved_at_7[0x19];
823
+ u8 reserved_at_7[0x4];
824
+ u8 packet_pacing_uid[0x1];
825
+ u8 reserved_at_c[0x14];
619826
620827 u8 reserved_at_20[0x20];
621828
....@@ -638,7 +845,11 @@
638845 };
639846
640847 struct mlx5_ifc_debug_cap_bits {
641
- u8 reserved_at_0[0x20];
848
+ u8 core_dump_general[0x1];
849
+ u8 core_dump_qp[0x1];
850
+ u8 reserved_at_2[0x7];
851
+ u8 resource_dump[0x1];
852
+ u8 reserved_at_a[0x16];
642853
643854 u8 reserved_at_20[0x2];
644855 u8 stall_detect[0x1];
....@@ -665,7 +876,8 @@
665876 u8 scatter_fcs[0x1];
666877 u8 enhanced_multi_pkt_send_wqe[0x1];
667878 u8 tunnel_lso_const_out_ip_id[0x1];
668
- u8 reserved_at_1c[0x2];
879
+ u8 tunnel_lro_gre[0x1];
880
+ u8 tunnel_lro_vxlan[0x1];
669881 u8 tunnel_stateless_gre[0x1];
670882 u8 tunnel_stateless_vxlan[0x1];
671883
....@@ -679,7 +891,8 @@
679891 u8 tunnel_stateless_vxlan_gpe[0x1];
680892 u8 tunnel_stateless_ipv4_over_vxlan[0x1];
681893 u8 tunnel_stateless_ip_over_ip[0x1];
682
- u8 reserved_at_2a[0x6];
894
+ u8 insert_trailer[0x1];
895
+ u8 reserved_at_2b[0x5];
683896 u8 max_vxlan_udp_ports[0x8];
684897 u8 reserved_at_38[0x6];
685898 u8 max_geneve_opt_len[0x1];
....@@ -697,7 +910,9 @@
697910
698911 struct mlx5_ifc_roce_cap_bits {
699912 u8 roce_apm[0x1];
700
- u8 reserved_at_1[0x1f];
913
+ u8 reserved_at_1[0x3];
914
+ u8 sw_r_roce_src_udp_port[0x1];
915
+ u8 reserved_at_5[0x1b];
701916
702917 u8 reserved_at_20[0x60];
703918
....@@ -718,6 +933,25 @@
718933 u8 reserved_at_100[0x700];
719934 };
720935
936
+struct mlx5_ifc_sync_steering_in_bits {
937
+ u8 opcode[0x10];
938
+ u8 uid[0x10];
939
+
940
+ u8 reserved_at_20[0x10];
941
+ u8 op_mod[0x10];
942
+
943
+ u8 reserved_at_40[0xc0];
944
+};
945
+
946
+struct mlx5_ifc_sync_steering_out_bits {
947
+ u8 status[0x8];
948
+ u8 reserved_at_8[0x18];
949
+
950
+ u8 syndrome[0x20];
951
+
952
+ u8 reserved_at_40[0x40];
953
+};
954
+
721955 struct mlx5_ifc_device_mem_cap_bits {
722956 u8 memic[0x1];
723957 u8 reserved_at_1[0x1f];
....@@ -733,7 +967,61 @@
733967
734968 u8 max_memic_size[0x20];
735969
736
- u8 reserved_at_c0[0x740];
970
+ u8 steering_sw_icm_start_address[0x40];
971
+
972
+ u8 reserved_at_100[0x8];
973
+ u8 log_header_modify_sw_icm_size[0x8];
974
+ u8 reserved_at_110[0x2];
975
+ u8 log_sw_icm_alloc_granularity[0x6];
976
+ u8 log_steering_sw_icm_size[0x8];
977
+
978
+ u8 reserved_at_120[0x20];
979
+
980
+ u8 header_modify_sw_icm_start_address[0x40];
981
+
982
+ u8 reserved_at_180[0x680];
983
+};
984
+
985
+struct mlx5_ifc_device_event_cap_bits {
986
+ u8 user_affiliated_events[4][0x40];
987
+
988
+ u8 user_unaffiliated_events[4][0x40];
989
+};
990
+
991
+struct mlx5_ifc_virtio_emulation_cap_bits {
992
+ u8 desc_tunnel_offload_type[0x1];
993
+ u8 eth_frame_offload_type[0x1];
994
+ u8 virtio_version_1_0[0x1];
995
+ u8 device_features_bits_mask[0xd];
996
+ u8 event_mode[0x8];
997
+ u8 virtio_queue_type[0x8];
998
+
999
+ u8 max_tunnel_desc[0x10];
1000
+ u8 reserved_at_30[0x3];
1001
+ u8 log_doorbell_stride[0x5];
1002
+ u8 reserved_at_38[0x3];
1003
+ u8 log_doorbell_bar_size[0x5];
1004
+
1005
+ u8 doorbell_bar_offset[0x40];
1006
+
1007
+ u8 max_emulated_devices[0x8];
1008
+ u8 max_num_virtio_queues[0x18];
1009
+
1010
+ u8 reserved_at_a0[0x60];
1011
+
1012
+ u8 umem_1_buffer_param_a[0x20];
1013
+
1014
+ u8 umem_1_buffer_param_b[0x20];
1015
+
1016
+ u8 umem_2_buffer_param_a[0x20];
1017
+
1018
+ u8 umem_2_buffer_param_b[0x20];
1019
+
1020
+ u8 umem_3_buffer_param_a[0x20];
1021
+
1022
+ u8 umem_3_buffer_param_b[0x20];
1023
+
1024
+ u8 reserved_at_1c0[0x640];
7371025 };
7381026
7391027 enum {
....@@ -797,7 +1085,11 @@
7971085
7981086 struct mlx5_ifc_odp_per_transport_service_cap_bits ud_odp_caps;
7991087
800
- u8 reserved_at_e0[0x720];
1088
+ struct mlx5_ifc_odp_per_transport_service_cap_bits xrc_odp_caps;
1089
+
1090
+ struct mlx5_ifc_odp_per_transport_service_cap_bits dc_odp_caps;
1091
+
1092
+ u8 reserved_at_120[0x6E0];
8011093 };
8021094
8031095 struct mlx5_ifc_calc_op {
....@@ -824,7 +1116,34 @@
8241116 struct mlx5_ifc_calc_op calc2;
8251117 struct mlx5_ifc_calc_op calc3;
8261118
827
- u8 reserved_at_e0[0x720];
1119
+ u8 reserved_at_c0[0x720];
1120
+};
1121
+
1122
+struct mlx5_ifc_tls_cap_bits {
1123
+ u8 tls_1_2_aes_gcm_128[0x1];
1124
+ u8 tls_1_3_aes_gcm_128[0x1];
1125
+ u8 tls_1_2_aes_gcm_256[0x1];
1126
+ u8 tls_1_3_aes_gcm_256[0x1];
1127
+ u8 reserved_at_4[0x1c];
1128
+
1129
+ u8 reserved_at_20[0x7e0];
1130
+};
1131
+
1132
+struct mlx5_ifc_ipsec_cap_bits {
1133
+ u8 ipsec_full_offload[0x1];
1134
+ u8 ipsec_crypto_offload[0x1];
1135
+ u8 ipsec_esn[0x1];
1136
+ u8 ipsec_crypto_esp_aes_gcm_256_encrypt[0x1];
1137
+ u8 ipsec_crypto_esp_aes_gcm_128_encrypt[0x1];
1138
+ u8 ipsec_crypto_esp_aes_gcm_256_decrypt[0x1];
1139
+ u8 ipsec_crypto_esp_aes_gcm_128_decrypt[0x1];
1140
+ u8 reserved_at_7[0x4];
1141
+ u8 log_max_ipsec_offload[0x5];
1142
+ u8 reserved_at_10[0x10];
1143
+
1144
+ u8 min_log_ipsec_full_replay_window[0x8];
1145
+ u8 max_log_ipsec_full_replay_window[0x8];
1146
+ u8 reserved_at_30[0x7d0];
8281147 };
8291148
8301149 enum {
....@@ -878,6 +1197,40 @@
8781197 MLX5_CAP_UMR_FENCE_NONE = 0x2,
8791198 };
8801199
1200
+enum {
1201
+ MLX5_FLEX_PARSER_GENEVE_ENABLED = 1 << 3,
1202
+ MLX5_FLEX_PARSER_VXLAN_GPE_ENABLED = 1 << 7,
1203
+ MLX5_FLEX_PARSER_ICMP_V4_ENABLED = 1 << 8,
1204
+ MLX5_FLEX_PARSER_ICMP_V6_ENABLED = 1 << 9,
1205
+};
1206
+
1207
+enum {
1208
+ MLX5_UCTX_CAP_RAW_TX = 1UL << 0,
1209
+ MLX5_UCTX_CAP_INTERNAL_DEV_RES = 1UL << 1,
1210
+};
1211
+
1212
+#define MLX5_FC_BULK_SIZE_FACTOR 128
1213
+
1214
+enum mlx5_fc_bulk_alloc_bitmask {
1215
+ MLX5_FC_BULK_128 = (1 << 0),
1216
+ MLX5_FC_BULK_256 = (1 << 1),
1217
+ MLX5_FC_BULK_512 = (1 << 2),
1218
+ MLX5_FC_BULK_1024 = (1 << 3),
1219
+ MLX5_FC_BULK_2048 = (1 << 4),
1220
+ MLX5_FC_BULK_4096 = (1 << 5),
1221
+ MLX5_FC_BULK_8192 = (1 << 6),
1222
+ MLX5_FC_BULK_16384 = (1 << 7),
1223
+};
1224
+
1225
+#define MLX5_FC_BULK_NUM_FCS(fc_enum) (MLX5_FC_BULK_SIZE_FACTOR * (fc_enum))
1226
+
1227
+#define MLX5_FT_MAX_MULTIPATH_LEVEL 63
1228
+
1229
+enum {
1230
+ MLX5_STEERING_FORMAT_CONNECTX_5 = 0,
1231
+ MLX5_STEERING_FORMAT_CONNECTX_6DX = 1,
1232
+};
1233
+
8811234 struct mlx5_ifc_cmd_hca_cap_bits {
8821235 u8 reserved_at_0[0x30];
8831236 u8 vhca_id[0x10];
....@@ -886,24 +1239,35 @@
8861239
8871240 u8 log_max_srq_sz[0x8];
8881241 u8 log_max_qp_sz[0x8];
889
- u8 reserved_at_90[0xb];
1242
+ u8 event_cap[0x1];
1243
+ u8 reserved_at_91[0x7];
1244
+ u8 prio_tag_required[0x1];
1245
+ u8 reserved_at_99[0x2];
8901246 u8 log_max_qp[0x5];
8911247
892
- u8 reserved_at_a0[0xb];
1248
+ u8 reserved_at_a0[0x3];
1249
+ u8 ece_support[0x1];
1250
+ u8 reserved_at_a4[0x7];
8931251 u8 log_max_srq[0x5];
8941252 u8 reserved_at_b0[0x10];
8951253
896
- u8 reserved_at_c0[0x8];
1254
+ u8 max_sgl_for_optimized_performance[0x8];
8971255 u8 log_max_cq_sz[0x8];
898
- u8 reserved_at_d0[0xb];
1256
+ u8 relaxed_ordering_write_umr[0x1];
1257
+ u8 relaxed_ordering_read_umr[0x1];
1258
+ u8 reserved_at_d2[0x7];
1259
+ u8 virtio_net_device_emualtion_manager[0x1];
1260
+ u8 virtio_blk_device_emualtion_manager[0x1];
8991261 u8 log_max_cq[0x5];
9001262
9011263 u8 log_max_eq_sz[0x8];
902
- u8 reserved_at_e8[0x2];
1264
+ u8 relaxed_ordering_write[0x1];
1265
+ u8 relaxed_ordering_read[0x1];
9031266 u8 log_max_mkey[0x6];
9041267 u8 reserved_at_f0[0x8];
9051268 u8 dump_fill_mkey[0x1];
906
- u8 reserved_at_f9[0x3];
1269
+ u8 reserved_at_f9[0x2];
1270
+ u8 fast_teardown[0x1];
9071271 u8 log_max_eq[0x4];
9081272
9091273 u8 max_indirection[0x8];
....@@ -921,7 +1285,10 @@
9211285 u8 reserved_at_130[0xa];
9221286 u8 log_max_ra_res_dc[0x6];
9231287
924
- u8 reserved_at_140[0xa];
1288
+ u8 reserved_at_140[0x6];
1289
+ u8 release_all_pages[0x1];
1290
+ u8 reserved_at_147[0x2];
1291
+ u8 roce_accl[0x1];
9251292 u8 log_max_ra_req_qp[0x6];
9261293 u8 reserved_at_150[0xa];
9271294 u8 log_max_ra_res_qp[0x6];
....@@ -931,7 +1298,12 @@
9311298 u8 cc_modify_allowed[0x1];
9321299 u8 start_pad[0x1];
9331300 u8 cache_line_128byte[0x1];
934
- u8 reserved_at_165[0xa];
1301
+ u8 reserved_at_165[0x4];
1302
+ u8 rts2rts_qp_counters_set_id[0x1];
1303
+ u8 reserved_at_16a[0x2];
1304
+ u8 vnic_env_int_rq_oob[0x1];
1305
+ u8 sbcam_reg[0x1];
1306
+ u8 reserved_at_16e[0x1];
9351307 u8 qcam_reg[0x1];
9361308 u8 gid_table_size[0x10];
9371309
....@@ -988,7 +1360,11 @@
9881360 u8 wol_p[0x1];
9891361
9901362 u8 stat_rate_support[0x10];
991
- u8 reserved_at_1f0[0xc];
1363
+ u8 reserved_at_1f0[0x1];
1364
+ u8 pci_sync_for_fw_update_event[0x1];
1365
+ u8 reserved_at_1f2[0x6];
1366
+ u8 init2_lag_tx_port_affinity[0x1];
1367
+ u8 reserved_at_1fa[0x3];
9921368 u8 cqe_version[0x4];
9931369
9941370 u8 compact_address_vector[0x1];
....@@ -1002,7 +1378,8 @@
10021378 u8 umr_modify_atomic_disabled[0x1];
10031379 u8 umr_indirect_mkey_disabled[0x1];
10041380 u8 umr_fence[0x2];
1005
- u8 reserved_at_20c[0x3];
1381
+ u8 dc_req_scat_data_cqe[0x1];
1382
+ u8 reserved_at_20d[0x2];
10061383 u8 drain_sigerr[0x1];
10071384 u8 cmdif_checksum[0x2];
10081385 u8 sigerr_cqe[0x1];
....@@ -1036,7 +1413,8 @@
10361413 u8 vector_calc[0x1];
10371414 u8 umr_ptr_rlky[0x1];
10381415 u8 imaicl[0x1];
1039
- u8 reserved_at_232[0x4];
1416
+ u8 qp_packet_based[0x1];
1417
+ u8 reserved_at_233[0x3];
10401418 u8 qkv[0x1];
10411419 u8 pkv[0x1];
10421420 u8 set_deth_sqpn[0x1];
....@@ -1055,10 +1433,16 @@
10551433 u8 bf[0x1];
10561434 u8 driver_version[0x1];
10571435 u8 pad_tx_eth_packet[0x1];
1058
- u8 reserved_at_263[0x8];
1436
+ u8 reserved_at_263[0x3];
1437
+ u8 mkey_by_name[0x1];
1438
+ u8 reserved_at_267[0x4];
1439
+
10591440 u8 log_bf_reg_size[0x5];
10601441
1061
- u8 reserved_at_270[0xb];
1442
+ u8 reserved_at_270[0x6];
1443
+ u8 lag_dct[0x2];
1444
+ u8 lag_tx_port_affinity[0x1];
1445
+ u8 reserved_at_279[0x2];
10621446 u8 lag_master[0x1];
10631447 u8 num_lag_ports[0x4];
10641448
....@@ -1074,7 +1458,8 @@
10741458 u8 reserved_at_2e0[0x7];
10751459 u8 max_qp_mcg[0x19];
10761460
1077
- u8 reserved_at_300[0x18];
1461
+ u8 reserved_at_300[0x10];
1462
+ u8 flow_counter_bulk_alloc[0x8];
10781463 u8 log_max_mcg[0x8];
10791464
10801465 u8 reserved_at_320[0x3];
....@@ -1144,12 +1529,20 @@
11441529
11451530 u8 general_obj_types[0x40];
11461531
1147
- u8 reserved_at_440[0x20];
1532
+ u8 reserved_at_440[0x4];
1533
+ u8 steering_format_version[0x4];
1534
+ u8 create_qp_start_hint[0x18];
11481535
1149
- u8 reserved_at_460[0x10];
1536
+ u8 reserved_at_460[0x3];
1537
+ u8 log_max_uctx[0x5];
1538
+ u8 reserved_at_468[0x2];
1539
+ u8 ipsec_offload[0x1];
1540
+ u8 log_max_umem[0x5];
11501541 u8 max_num_eqs[0x10];
11511542
1152
- u8 reserved_at_480[0x3];
1543
+ u8 reserved_at_480[0x1];
1544
+ u8 tls_tx[0x1];
1545
+ u8 tls_rx[0x1];
11531546 u8 log_max_l2_table[0x5];
11541547 u8 reserved_at_488[0x8];
11551548 u8 log_uar_page_sz[0x10];
....@@ -1162,9 +1555,15 @@
11621555 u8 num_of_uars_per_page[0x20];
11631556
11641557 u8 flex_parser_protocols[0x20];
1165
- u8 reserved_at_560[0x20];
11661558
1167
- u8 reserved_at_580[0x3c];
1559
+ u8 max_geneve_tlv_options[0x8];
1560
+ u8 reserved_at_568[0x3];
1561
+ u8 max_geneve_tlv_option_data_len[0x5];
1562
+ u8 reserved_at_570[0x10];
1563
+
1564
+ u8 reserved_at_580[0x33];
1565
+ u8 log_max_dek[0x5];
1566
+ u8 reserved_at_5b8[0x4];
11681567 u8 mini_cqe_resp_stride_index[0x1];
11691568 u8 cqe_128_always[0x1];
11701569 u8 cqe_compression_128[0x1];
....@@ -1186,7 +1585,41 @@
11861585 u8 num_vhca_ports[0x8];
11871586 u8 reserved_at_618[0x6];
11881587 u8 sw_owner_id[0x1];
1189
- u8 reserved_at_61f[0x1e1];
1588
+ u8 reserved_at_61f[0x1];
1589
+
1590
+ u8 max_num_of_monitor_counters[0x10];
1591
+ u8 num_ppcnt_monitor_counters[0x10];
1592
+
1593
+ u8 reserved_at_640[0x10];
1594
+ u8 num_q_monitor_counters[0x10];
1595
+
1596
+ u8 reserved_at_660[0x20];
1597
+
1598
+ u8 sf[0x1];
1599
+ u8 sf_set_partition[0x1];
1600
+ u8 reserved_at_682[0x1];
1601
+ u8 log_max_sf[0x5];
1602
+ u8 reserved_at_688[0x8];
1603
+ u8 log_min_sf_size[0x8];
1604
+ u8 max_num_sf_partitions[0x8];
1605
+
1606
+ u8 uctx_cap[0x20];
1607
+
1608
+ u8 reserved_at_6c0[0x4];
1609
+ u8 flex_parser_id_geneve_tlv_option_0[0x4];
1610
+ u8 flex_parser_id_icmp_dw1[0x4];
1611
+ u8 flex_parser_id_icmp_dw0[0x4];
1612
+ u8 flex_parser_id_icmpv6_dw1[0x4];
1613
+ u8 flex_parser_id_icmpv6_dw0[0x4];
1614
+ u8 flex_parser_id_outer_first_mpls_over_gre[0x4];
1615
+ u8 flex_parser_id_outer_first_mpls_over_udp_label[0x4];
1616
+
1617
+ u8 reserved_at_6e0[0x10];
1618
+ u8 sf_base_id[0x10];
1619
+
1620
+ u8 reserved_at_700[0x80];
1621
+ u8 vhca_tunnel_commands[0x40];
1622
+ u8 reserved_at_7c0[0x40];
11901623 };
11911624
11921625 enum mlx5_flow_destination_type {
....@@ -1199,11 +1632,19 @@
11991632 MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE_NUM = 0x101,
12001633 };
12011634
1635
+enum mlx5_flow_table_miss_action {
1636
+ MLX5_FLOW_TABLE_MISS_ACTION_DEF,
1637
+ MLX5_FLOW_TABLE_MISS_ACTION_FWD,
1638
+ MLX5_FLOW_TABLE_MISS_ACTION_SWITCH_DOMAIN,
1639
+};
1640
+
12021641 struct mlx5_ifc_dest_format_struct_bits {
12031642 u8 destination_type[0x8];
12041643 u8 destination_id[0x18];
1644
+
12051645 u8 destination_eswitch_owner_vhca_id_valid[0x1];
1206
- u8 reserved_at_21[0xf];
1646
+ u8 packet_reformat[0x1];
1647
+ u8 reserved_at_22[0xe];
12071648 u8 destination_eswitch_owner_vhca_id[0x10];
12081649 };
12091650
....@@ -1213,10 +1654,17 @@
12131654 u8 reserved_at_20[0x20];
12141655 };
12151656
1657
+struct mlx5_ifc_extended_dest_format_bits {
1658
+ struct mlx5_ifc_dest_format_struct_bits destination_entry;
1659
+
1660
+ u8 packet_reformat_id[0x20];
1661
+
1662
+ u8 reserved_at_60[0x20];
1663
+};
1664
+
12161665 union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits {
1217
- struct mlx5_ifc_dest_format_struct_bits dest_format_struct;
1666
+ struct mlx5_ifc_extended_dest_format_bits extended_dest_format;
12181667 struct mlx5_ifc_flow_counter_list_bits flow_counter_list;
1219
- u8 reserved_at_0[0x40];
12201668 };
12211669
12221670 struct mlx5_ifc_fte_match_param_bits {
....@@ -1228,7 +1676,9 @@
12281676
12291677 struct mlx5_ifc_fte_match_set_misc2_bits misc_parameters_2;
12301678
1231
- u8 reserved_at_800[0x800];
1679
+ struct mlx5_ifc_fte_match_set_misc3_bits misc_parameters_3;
1680
+
1681
+ u8 reserved_at_a00[0x600];
12321682 };
12331683
12341684 enum {
....@@ -1287,7 +1737,9 @@
12871737 u8 reserved_at_118[0x3];
12881738 u8 log_wq_sz[0x5];
12891739
1290
- u8 reserved_at_120[0x3];
1740
+ u8 dbr_umem_valid[0x1];
1741
+ u8 wq_umem_valid[0x1];
1742
+ u8 reserved_at_122[0x1];
12911743 u8 log_hairpin_num_packets[0x5];
12921744 u8 reserved_at_128[0x3];
12931745 u8 log_hairpin_data_sz[0x5];
....@@ -1300,7 +1752,7 @@
13001752
13011753 u8 reserved_at_140[0x4c0];
13021754
1303
- struct mlx5_ifc_cmd_pas_bits pas[0];
1755
+ struct mlx5_ifc_cmd_pas_bits pas[];
13041756 };
13051757
13061758 struct mlx5_ifc_rq_num_bits {
....@@ -1416,6 +1868,132 @@
14161868
14171869 struct mlx5_ifc_resize_field_select_bits {
14181870 u8 resize_field_select[0x20];
1871
+};
1872
+
1873
+struct mlx5_ifc_resource_dump_bits {
1874
+ u8 more_dump[0x1];
1875
+ u8 inline_dump[0x1];
1876
+ u8 reserved_at_2[0xa];
1877
+ u8 seq_num[0x4];
1878
+ u8 segment_type[0x10];
1879
+
1880
+ u8 reserved_at_20[0x10];
1881
+ u8 vhca_id[0x10];
1882
+
1883
+ u8 index1[0x20];
1884
+
1885
+ u8 index2[0x20];
1886
+
1887
+ u8 num_of_obj1[0x10];
1888
+ u8 num_of_obj2[0x10];
1889
+
1890
+ u8 reserved_at_a0[0x20];
1891
+
1892
+ u8 device_opaque[0x40];
1893
+
1894
+ u8 mkey[0x20];
1895
+
1896
+ u8 size[0x20];
1897
+
1898
+ u8 address[0x40];
1899
+
1900
+ u8 inline_data[52][0x20];
1901
+};
1902
+
1903
+struct mlx5_ifc_resource_dump_menu_record_bits {
1904
+ u8 reserved_at_0[0x4];
1905
+ u8 num_of_obj2_supports_active[0x1];
1906
+ u8 num_of_obj2_supports_all[0x1];
1907
+ u8 must_have_num_of_obj2[0x1];
1908
+ u8 support_num_of_obj2[0x1];
1909
+ u8 num_of_obj1_supports_active[0x1];
1910
+ u8 num_of_obj1_supports_all[0x1];
1911
+ u8 must_have_num_of_obj1[0x1];
1912
+ u8 support_num_of_obj1[0x1];
1913
+ u8 must_have_index2[0x1];
1914
+ u8 support_index2[0x1];
1915
+ u8 must_have_index1[0x1];
1916
+ u8 support_index1[0x1];
1917
+ u8 segment_type[0x10];
1918
+
1919
+ u8 segment_name[4][0x20];
1920
+
1921
+ u8 index1_name[4][0x20];
1922
+
1923
+ u8 index2_name[4][0x20];
1924
+};
1925
+
1926
+struct mlx5_ifc_resource_dump_segment_header_bits {
1927
+ u8 length_dw[0x10];
1928
+ u8 segment_type[0x10];
1929
+};
1930
+
1931
+struct mlx5_ifc_resource_dump_command_segment_bits {
1932
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1933
+
1934
+ u8 segment_called[0x10];
1935
+ u8 vhca_id[0x10];
1936
+
1937
+ u8 index1[0x20];
1938
+
1939
+ u8 index2[0x20];
1940
+
1941
+ u8 num_of_obj1[0x10];
1942
+ u8 num_of_obj2[0x10];
1943
+};
1944
+
1945
+struct mlx5_ifc_resource_dump_error_segment_bits {
1946
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1947
+
1948
+ u8 reserved_at_20[0x10];
1949
+ u8 syndrome_id[0x10];
1950
+
1951
+ u8 reserved_at_40[0x40];
1952
+
1953
+ u8 error[8][0x20];
1954
+};
1955
+
1956
+struct mlx5_ifc_resource_dump_info_segment_bits {
1957
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1958
+
1959
+ u8 reserved_at_20[0x18];
1960
+ u8 dump_version[0x8];
1961
+
1962
+ u8 hw_version[0x20];
1963
+
1964
+ u8 fw_version[0x20];
1965
+};
1966
+
1967
+struct mlx5_ifc_resource_dump_menu_segment_bits {
1968
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1969
+
1970
+ u8 reserved_at_20[0x10];
1971
+ u8 num_of_records[0x10];
1972
+
1973
+ struct mlx5_ifc_resource_dump_menu_record_bits record[];
1974
+};
1975
+
1976
+struct mlx5_ifc_resource_dump_resource_segment_bits {
1977
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1978
+
1979
+ u8 reserved_at_20[0x20];
1980
+
1981
+ u8 index1[0x20];
1982
+
1983
+ u8 index2[0x20];
1984
+
1985
+ u8 payload[][0x20];
1986
+};
1987
+
1988
+struct mlx5_ifc_resource_dump_terminate_segment_bits {
1989
+ struct mlx5_ifc_resource_dump_segment_header_bits segment_header;
1990
+};
1991
+
1992
+struct mlx5_ifc_menu_resource_dump_response_bits {
1993
+ struct mlx5_ifc_resource_dump_info_segment_bits info;
1994
+ struct mlx5_ifc_resource_dump_command_segment_bits cmd;
1995
+ struct mlx5_ifc_resource_dump_menu_segment_bits menu;
1996
+ struct mlx5_ifc_resource_dump_terminate_segment_bits terminate;
14191997 };
14201998
14211999 enum {
....@@ -1626,12 +2204,28 @@
16262204 u8 port_xmit_wait[0x20];
16272205 };
16282206
1629
-struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits {
2207
+struct mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits {
16302208 u8 transmit_queue_high[0x20];
16312209
16322210 u8 transmit_queue_low[0x20];
16332211
1634
- u8 reserved_at_40[0x780];
2212
+ u8 no_buffer_discard_uc_high[0x20];
2213
+
2214
+ u8 no_buffer_discard_uc_low[0x20];
2215
+
2216
+ u8 reserved_at_80[0x740];
2217
+};
2218
+
2219
+struct mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits {
2220
+ u8 wred_discard_high[0x20];
2221
+
2222
+ u8 wred_discard_low[0x20];
2223
+
2224
+ u8 ecn_marked_tc_high[0x20];
2225
+
2226
+ u8 ecn_marked_tc_low[0x20];
2227
+
2228
+ u8 reserved_at_80[0x740];
16352229 };
16362230
16372231 struct mlx5_ifc_eth_per_prio_grp_data_layout_bits {
....@@ -1675,7 +2269,9 @@
16752269
16762270 u8 rx_pause_transition_low[0x20];
16772271
1678
- u8 reserved_at_3c0[0x40];
2272
+ u8 rx_discards_high[0x20];
2273
+
2274
+ u8 rx_discards_low[0x20];
16792275
16802276 u8 device_stall_minor_watermark_cnt_high[0x20];
16812277
....@@ -2240,7 +2836,8 @@
22402836 u8 st[0x8];
22412837 u8 reserved_at_10[0x3];
22422838 u8 pm_state[0x2];
2243
- u8 reserved_at_15[0x3];
2839
+ u8 reserved_at_15[0x1];
2840
+ u8 req_e2e_credit_mode[0x2];
22442841 u8 offload_type[0x4];
22452842 u8 end_padding_mode[0x2];
22462843 u8 reserved_at_1e[0x2];
....@@ -2361,7 +2958,10 @@
23612958
23622959 u8 dc_access_key[0x40];
23632960
2364
- u8 reserved_at_680[0xc0];
2961
+ u8 reserved_at_680[0x3];
2962
+ u8 dbr_umem_valid[0x1];
2963
+
2964
+ u8 reserved_at_684[0xbc];
23652965 };
23662966
23672967 struct mlx5_ifc_roce_addr_layout_bits {
....@@ -2392,7 +2992,11 @@
23922992 struct mlx5_ifc_e_switch_cap_bits e_switch_cap;
23932993 struct mlx5_ifc_vector_calc_cap_bits vector_calc_cap;
23942994 struct mlx5_ifc_qos_cap_bits qos_cap;
2995
+ struct mlx5_ifc_debug_cap_bits debug_cap;
23952996 struct mlx5_ifc_fpga_cap_bits fpga_cap;
2997
+ struct mlx5_ifc_tls_cap_bits tls_cap;
2998
+ struct mlx5_ifc_device_mem_cap_bits device_mem_cap;
2999
+ struct mlx5_ifc_virtio_emulation_cap_bits virtio_emulation_cap;
23963000 u8 reserved_at_0[0x8000];
23973001 };
23983002
....@@ -2401,13 +3005,21 @@
24013005 MLX5_FLOW_CONTEXT_ACTION_DROP = 0x2,
24023006 MLX5_FLOW_CONTEXT_ACTION_FWD_DEST = 0x4,
24033007 MLX5_FLOW_CONTEXT_ACTION_COUNT = 0x8,
2404
- MLX5_FLOW_CONTEXT_ACTION_ENCAP = 0x10,
3008
+ MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT = 0x10,
24053009 MLX5_FLOW_CONTEXT_ACTION_DECAP = 0x20,
24063010 MLX5_FLOW_CONTEXT_ACTION_MOD_HDR = 0x40,
24073011 MLX5_FLOW_CONTEXT_ACTION_VLAN_POP = 0x80,
24083012 MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH = 0x100,
24093013 MLX5_FLOW_CONTEXT_ACTION_VLAN_POP_2 = 0x400,
24103014 MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2 = 0x800,
3015
+ MLX5_FLOW_CONTEXT_ACTION_IPSEC_DECRYPT = 0x1000,
3016
+ MLX5_FLOW_CONTEXT_ACTION_IPSEC_ENCRYPT = 0x2000,
3017
+};
3018
+
3019
+enum {
3020
+ MLX5_FLOW_CONTEXT_FLOW_SOURCE_ANY_VPORT = 0x0,
3021
+ MLX5_FLOW_CONTEXT_FLOW_SOURCE_UPLINK = 0x1,
3022
+ MLX5_FLOW_CONTEXT_FLOW_SOURCE_LOCAL_VPORT = 0x2,
24113023 };
24123024
24133025 struct mlx5_ifc_vlan_bits {
....@@ -2428,25 +3040,29 @@
24283040 u8 reserved_at_60[0x10];
24293041 u8 action[0x10];
24303042
2431
- u8 reserved_at_80[0x8];
3043
+ u8 extended_destination[0x1];
3044
+ u8 reserved_at_81[0x1];
3045
+ u8 flow_source[0x2];
3046
+ u8 reserved_at_84[0x4];
24323047 u8 destination_list_size[0x18];
24333048
24343049 u8 reserved_at_a0[0x8];
24353050 u8 flow_counter_list_size[0x18];
24363051
2437
- u8 encap_id[0x20];
3052
+ u8 packet_reformat_id[0x20];
24383053
24393054 u8 modify_header_id[0x20];
24403055
24413056 struct mlx5_ifc_vlan_bits push_vlan_2;
24423057
2443
- u8 reserved_at_120[0xe0];
3058
+ u8 ipsec_obj_id[0x20];
3059
+ u8 reserved_at_140[0xc0];
24443060
24453061 struct mlx5_ifc_fte_match_param_bits match_value;
24463062
24473063 u8 reserved_at_1200[0x600];
24483064
2449
- union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits destination[0];
3065
+ union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits destination[];
24503066 };
24513067
24523068 enum {
....@@ -2468,7 +3084,8 @@
24683084 u8 xrcd[0x18];
24693085
24703086 u8 page_offset[0x6];
2471
- u8 reserved_at_46[0x2];
3087
+ u8 reserved_at_46[0x1];
3088
+ u8 dbr_umem_valid[0x1];
24723089 u8 cqn[0x18];
24733090
24743091 u8 reserved_at_60[0x20];
....@@ -2511,7 +3128,11 @@
25113128
25123129 u8 transmit_discard_vport_down[0x40];
25133130
2514
- u8 reserved_at_140[0xec0];
3131
+ u8 reserved_at_140[0xa0];
3132
+
3133
+ u8 internal_rq_out_of_buffer[0x20];
3134
+
3135
+ u8 reserved_at_200[0xe00];
25153136 };
25163137
25173138 struct mlx5_ifc_traffic_counter_bits {
....@@ -2522,7 +3143,8 @@
25223143
25233144 struct mlx5_ifc_tisc_bits {
25243145 u8 strict_lag_tx_port_affinity[0x1];
2525
- u8 reserved_at_1[0x3];
3146
+ u8 tls_en[0x1];
3147
+ u8 reserved_at_2[0x2];
25263148 u8 lag_tx_port_affinity[0x04];
25273149
25283150 u8 reserved_at_8[0x4];
....@@ -2536,7 +3158,11 @@
25363158
25373159 u8 reserved_at_140[0x8];
25383160 u8 underlay_qpn[0x18];
2539
- u8 reserved_at_160[0x3a0];
3161
+
3162
+ u8 reserved_at_160[0x8];
3163
+ u8 pd[0x18];
3164
+
3165
+ u8 reserved_at_180[0x380];
25403166 };
25413167
25423168 enum {
....@@ -2556,15 +3182,16 @@
25563182 };
25573183
25583184 enum {
2559
- MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST_ = 0x1,
2560
- MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST_ = 0x2,
3185
+ MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST = 0x1,
3186
+ MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST = 0x2,
25613187 };
25623188
25633189 struct mlx5_ifc_tirc_bits {
25643190 u8 reserved_at_0[0x20];
25653191
25663192 u8 disp_type[0x4];
2567
- u8 reserved_at_24[0x1c];
3193
+ u8 tls_en[0x1];
3194
+ u8 reserved_at_25[0x1b];
25683195
25693196 u8 reserved_at_40[0x40];
25703197
....@@ -2693,6 +3320,13 @@
26933320 SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC = 0x3,
26943321 };
26953322
3323
+enum {
3324
+ ELEMENT_TYPE_CAP_MASK_TASR = 1 << 0,
3325
+ ELEMENT_TYPE_CAP_MASK_VPORT = 1 << 1,
3326
+ ELEMENT_TYPE_CAP_MASK_VPORT_TC = 1 << 2,
3327
+ ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC = 1 << 3,
3328
+};
3329
+
26963330 struct mlx5_ifc_scheduling_context_bits {
26973331 u8 element_type[0x8];
26983332 u8 reserved_at_8[0x18];
....@@ -2711,17 +3345,20 @@
27113345 };
27123346
27133347 struct mlx5_ifc_rqtc_bits {
2714
- u8 reserved_at_0[0xa0];
3348
+ u8 reserved_at_0[0xa0];
27153349
2716
- u8 reserved_at_a0[0x10];
2717
- u8 rqt_max_size[0x10];
3350
+ u8 reserved_at_a0[0x5];
3351
+ u8 list_q_type[0x3];
3352
+ u8 reserved_at_a8[0x8];
3353
+ u8 rqt_max_size[0x10];
27183354
2719
- u8 reserved_at_c0[0x10];
2720
- u8 rqt_actual_size[0x10];
3355
+ u8 rq_vhca_id_format[0x1];
3356
+ u8 reserved_at_c1[0xf];
3357
+ u8 rqt_actual_size[0x10];
27213358
2722
- u8 reserved_at_e0[0x6a0];
3359
+ u8 reserved_at_e0[0x6a0];
27233360
2724
- struct mlx5_ifc_rq_num_bits rq_num[0];
3361
+ struct mlx5_ifc_rq_num_bits rq_num[];
27253362 };
27263363
27273364 enum {
....@@ -2833,7 +3470,7 @@
28333470
28343471 u8 reserved_at_7e0[0x20];
28353472
2836
- u8 current_uc_mac_address[0][0x40];
3473
+ u8 current_uc_mac_address[][0x40];
28373474 };
28383475
28393476 enum {
....@@ -2841,6 +3478,7 @@
28413478 MLX5_MKC_ACCESS_MODE_MTT = 0x1,
28423479 MLX5_MKC_ACCESS_MODE_KLMS = 0x2,
28433480 MLX5_MKC_ACCESS_MODE_KSM = 0x3,
3481
+ MLX5_MKC_ACCESS_MODE_SW_ICM = 0x4,
28443482 MLX5_MKC_ACCESS_MODE_MEMIC = 0x5,
28453483 };
28463484
....@@ -2886,7 +3524,9 @@
28863524
28873525 u8 translations_octword_size[0x20];
28883526
2889
- u8 reserved_at_1c0[0x1b];
3527
+ u8 reserved_at_1c0[0x19];
3528
+ u8 relaxed_ordering_read[0x1];
3529
+ u8 reserved_at_1d9[0x1];
28903530 u8 log_page_size[0x5];
28913531
28923532 u8 reserved_at_1e0[0x20];
....@@ -2951,12 +3591,14 @@
29513591 };
29523592
29533593 struct mlx5_ifc_esw_vport_context_bits {
2954
- u8 reserved_at_0[0x3];
3594
+ u8 fdb_to_vport_reg_c[0x1];
3595
+ u8 reserved_at_1[0x2];
29553596 u8 vport_svlan_strip[0x1];
29563597 u8 vport_cvlan_strip[0x1];
29573598 u8 vport_svlan_insert[0x1];
29583599 u8 vport_cvlan_insert[0x2];
2959
- u8 reserved_at_8[0x18];
3600
+ u8 fdb_to_vport_reg_c_id[0x8];
3601
+ u8 reserved_at_10[0x10];
29603602
29613603 u8 reserved_at_20[0x20];
29623604
....@@ -2967,7 +3609,11 @@
29673609 u8 cvlan_pcp[0x3];
29683610 u8 cvlan_id[0xc];
29693611
2970
- u8 reserved_at_60[0x7a0];
3612
+ u8 reserved_at_60[0x720];
3613
+
3614
+ u8 sw_steering_vport_icm_address_rx[0x40];
3615
+
3616
+ u8 sw_steering_vport_icm_address_tx[0x40];
29713617 };
29723618
29733619 enum {
....@@ -3097,7 +3743,8 @@
30973743 u8 ecn[0x2];
30983744 u8 dscp[0x6];
30993745
3100
- u8 reserved_at_1c0[0x40];
3746
+ u8 reserved_at_1c0[0x20];
3747
+ u8 ece[0x20];
31013748 };
31023749
31033750 enum {
....@@ -3125,7 +3772,9 @@
31253772
31263773 struct mlx5_ifc_cqc_bits {
31273774 u8 status[0x4];
3128
- u8 reserved_at_4[0x4];
3775
+ u8 reserved_at_4[0x2];
3776
+ u8 dbr_umem_valid[0x1];
3777
+ u8 reserved_at_7[0x1];
31293778 u8 cqe_sz[0x3];
31303779 u8 cc[0x1];
31313780 u8 reserved_at_c[0x1];
....@@ -3266,7 +3915,8 @@
32663915 struct mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits eth_3635_cntrs_grp_data_layout;
32673916 struct mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits eth_extended_cntrs_grp_data_layout;
32683917 struct mlx5_ifc_eth_per_prio_grp_data_layout_bits eth_per_prio_grp_data_layout;
3269
- struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits eth_per_traffic_grp_data_layout;
3918
+ struct mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits eth_per_tc_prio_grp_data_layout;
3919
+ struct mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits eth_per_tc_congest_prio_grp_data_layout;
32703920 struct mlx5_ifc_ib_port_cntrs_grp_data_layout_bits ib_port_cntrs_grp_data_layout;
32713921 struct mlx5_ifc_phys_layer_cntrs_bits phys_layer_cntrs;
32723922 struct mlx5_ifc_phys_layer_statistical_cntrs_bits phys_layer_statistical_cntrs;
....@@ -3359,12 +4009,13 @@
33594009
33604010 u8 reserved_at_40[0x3f];
33614011
3362
- u8 force_state[0x1];
4012
+ u8 state[0x1];
33634013 };
33644014
33654015 enum {
33664016 MLX5_TEARDOWN_HCA_IN_PROFILE_GRACEFUL_CLOSE = 0x0,
33674017 MLX5_TEARDOWN_HCA_IN_PROFILE_FORCE_CLOSE = 0x1,
4018
+ MLX5_TEARDOWN_HCA_IN_PROFILE_PREPARE_FAST_TEARDOWN = 0x2,
33684019 };
33694020
33704021 struct mlx5_ifc_teardown_hca_in_bits {
....@@ -3391,7 +4042,7 @@
33914042
33924043 struct mlx5_ifc_sqerr2rts_qp_in_bits {
33934044 u8 opcode[0x10];
3394
- u8 reserved_at_10[0x10];
4045
+ u8 uid[0x10];
33954046
33964047 u8 reserved_at_20[0x10];
33974048 u8 op_mod[0x10];
....@@ -3421,7 +4072,7 @@
34214072
34224073 struct mlx5_ifc_sqd2rts_qp_in_bits {
34234074 u8 opcode[0x10];
3424
- u8 reserved_at_10[0x10];
4075
+ u8 uid[0x10];
34254076
34264077 u8 reserved_at_20[0x10];
34274078 u8 op_mod[0x10];
....@@ -3572,7 +4223,8 @@
35724223 MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION = 0x0,
35734224 MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_TAG = 0x1,
35744225 MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST = 0x2,
3575
- MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS = 0x3
4226
+ MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS = 0x3,
4227
+ MLX5_SET_FTE_MODIFY_ENABLE_MASK_IPSEC_OBJ_ID = 0x4
35764228 };
35774229
35784230 struct mlx5_ifc_set_fte_out_bits {
....@@ -3603,7 +4255,8 @@
36034255 u8 reserved_at_a0[0x8];
36044256 u8 table_id[0x18];
36054257
3606
- u8 reserved_at_c0[0x18];
4258
+ u8 ignore_flow_level[0x1];
4259
+ u8 reserved_at_c1[0x17];
36074260 u8 modify_enable_mask[0x8];
36084261
36094262 u8 reserved_at_e0[0x20];
....@@ -3621,12 +4274,13 @@
36214274
36224275 u8 syndrome[0x20];
36234276
3624
- u8 reserved_at_40[0x40];
4277
+ u8 reserved_at_40[0x20];
4278
+ u8 ece[0x20];
36254279 };
36264280
36274281 struct mlx5_ifc_rts2rts_qp_in_bits {
36284282 u8 opcode[0x10];
3629
- u8 reserved_at_10[0x10];
4283
+ u8 uid[0x10];
36304284
36314285 u8 reserved_at_20[0x10];
36324286 u8 op_mod[0x10];
....@@ -3638,7 +4292,7 @@
36384292
36394293 u8 opt_param_mask[0x20];
36404294
3641
- u8 reserved_at_a0[0x20];
4295
+ u8 ece[0x20];
36424296
36434297 struct mlx5_ifc_qpc_bits qpc;
36444298
....@@ -3651,12 +4305,13 @@
36514305
36524306 u8 syndrome[0x20];
36534307
3654
- u8 reserved_at_40[0x40];
4308
+ u8 reserved_at_40[0x20];
4309
+ u8 ece[0x20];
36554310 };
36564311
36574312 struct mlx5_ifc_rtr2rts_qp_in_bits {
36584313 u8 opcode[0x10];
3659
- u8 reserved_at_10[0x10];
4314
+ u8 uid[0x10];
36604315
36614316 u8 reserved_at_20[0x10];
36624317 u8 op_mod[0x10];
....@@ -3668,7 +4323,7 @@
36684323
36694324 u8 opt_param_mask[0x20];
36704325
3671
- u8 reserved_at_a0[0x20];
4326
+ u8 ece[0x20];
36724327
36734328 struct mlx5_ifc_qpc_bits qpc;
36744329
....@@ -3681,12 +4336,13 @@
36814336
36824337 u8 syndrome[0x20];
36834338
3684
- u8 reserved_at_40[0x40];
4339
+ u8 reserved_at_40[0x20];
4340
+ u8 ece[0x20];
36854341 };
36864342
36874343 struct mlx5_ifc_rst2init_qp_in_bits {
36884344 u8 opcode[0x10];
3689
- u8 reserved_at_10[0x10];
4345
+ u8 uid[0x10];
36904346
36914347 u8 reserved_at_20[0x10];
36924348 u8 op_mod[0x10];
....@@ -3698,7 +4354,7 @@
36984354
36994355 u8 opt_param_mask[0x20];
37004356
3701
- u8 reserved_at_a0[0x20];
4357
+ u8 ece[0x20];
37024358
37034359 struct mlx5_ifc_qpc_bits qpc;
37044360
....@@ -3741,7 +4397,7 @@
37414397
37424398 u8 reserved_at_280[0x600];
37434399
3744
- u8 pas[0][0x40];
4400
+ u8 pas[][0x40];
37454401 };
37464402
37474403 struct mlx5_ifc_query_xrc_srq_in_bits {
....@@ -3778,6 +4434,84 @@
37784434 enum {
37794435 MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT = 0x0,
37804436 MLX5_VPORT_STATE_OP_MOD_ESW_VPORT = 0x1,
4437
+ MLX5_VPORT_STATE_OP_MOD_UPLINK = 0x2,
4438
+};
4439
+
4440
+struct mlx5_ifc_arm_monitor_counter_in_bits {
4441
+ u8 opcode[0x10];
4442
+ u8 uid[0x10];
4443
+
4444
+ u8 reserved_at_20[0x10];
4445
+ u8 op_mod[0x10];
4446
+
4447
+ u8 reserved_at_40[0x20];
4448
+
4449
+ u8 reserved_at_60[0x20];
4450
+};
4451
+
4452
+struct mlx5_ifc_arm_monitor_counter_out_bits {
4453
+ u8 status[0x8];
4454
+ u8 reserved_at_8[0x18];
4455
+
4456
+ u8 syndrome[0x20];
4457
+
4458
+ u8 reserved_at_40[0x40];
4459
+};
4460
+
4461
+enum {
4462
+ MLX5_QUERY_MONITOR_CNT_TYPE_PPCNT = 0x0,
4463
+ MLX5_QUERY_MONITOR_CNT_TYPE_Q_COUNTER = 0x1,
4464
+};
4465
+
4466
+enum mlx5_monitor_counter_ppcnt {
4467
+ MLX5_QUERY_MONITOR_PPCNT_IN_RANGE_LENGTH_ERRORS = 0x0,
4468
+ MLX5_QUERY_MONITOR_PPCNT_OUT_OF_RANGE_LENGTH_FIELD = 0x1,
4469
+ MLX5_QUERY_MONITOR_PPCNT_FRAME_TOO_LONG_ERRORS = 0x2,
4470
+ MLX5_QUERY_MONITOR_PPCNT_FRAME_CHECK_SEQUENCE_ERRORS = 0x3,
4471
+ MLX5_QUERY_MONITOR_PPCNT_ALIGNMENT_ERRORS = 0x4,
4472
+ MLX5_QUERY_MONITOR_PPCNT_IF_OUT_DISCARDS = 0x5,
4473
+};
4474
+
4475
+enum {
4476
+ MLX5_QUERY_MONITOR_Q_COUNTER_RX_OUT_OF_BUFFER = 0x4,
4477
+};
4478
+
4479
+struct mlx5_ifc_monitor_counter_output_bits {
4480
+ u8 reserved_at_0[0x4];
4481
+ u8 type[0x4];
4482
+ u8 reserved_at_8[0x8];
4483
+ u8 counter[0x10];
4484
+
4485
+ u8 counter_group_id[0x20];
4486
+};
4487
+
4488
+#define MLX5_CMD_SET_MONITOR_NUM_PPCNT_COUNTER_SET1 (6)
4489
+#define MLX5_CMD_SET_MONITOR_NUM_Q_COUNTERS_SET1 (1)
4490
+#define MLX5_CMD_SET_MONITOR_NUM_COUNTER (MLX5_CMD_SET_MONITOR_NUM_PPCNT_COUNTER_SET1 +\
4491
+ MLX5_CMD_SET_MONITOR_NUM_Q_COUNTERS_SET1)
4492
+
4493
+struct mlx5_ifc_set_monitor_counter_in_bits {
4494
+ u8 opcode[0x10];
4495
+ u8 uid[0x10];
4496
+
4497
+ u8 reserved_at_20[0x10];
4498
+ u8 op_mod[0x10];
4499
+
4500
+ u8 reserved_at_40[0x10];
4501
+ u8 num_of_counters[0x10];
4502
+
4503
+ u8 reserved_at_60[0x20];
4504
+
4505
+ struct mlx5_ifc_monitor_counter_output_bits monitor_counter[MLX5_CMD_SET_MONITOR_NUM_COUNTER];
4506
+};
4507
+
4508
+struct mlx5_ifc_set_monitor_counter_out_bits {
4509
+ u8 status[0x8];
4510
+ u8 reserved_at_8[0x18];
4511
+
4512
+ u8 syndrome[0x20];
4513
+
4514
+ u8 reserved_at_40[0x40];
37814515 };
37824516
37834517 struct mlx5_ifc_query_vport_state_in_bits {
....@@ -3942,7 +4676,7 @@
39424676
39434677 u8 reserved_at_280[0x600];
39444678
3945
- u8 pas[0][0x40];
4679
+ u8 pas[][0x40];
39464680 };
39474681
39484682 struct mlx5_ifc_query_srq_in_bits {
....@@ -4147,13 +4881,13 @@
41474881
41484882 u8 opt_param_mask[0x20];
41494883
4150
- u8 reserved_at_a0[0x20];
4884
+ u8 ece[0x20];
41514885
41524886 struct mlx5_ifc_qpc_bits qpc;
41534887
41544888 u8 reserved_at_800[0x80];
41554889
4156
- u8 pas[0][0x40];
4890
+ u8 pas[][0x40];
41574891 };
41584892
41594893 struct mlx5_ifc_query_qp_in_bits {
....@@ -4259,7 +4993,19 @@
42594993
42604994 u8 req_cqe_flush_error[0x20];
42614995
4262
- u8 reserved_at_620[0x1e0];
4996
+ u8 reserved_at_620[0x20];
4997
+
4998
+ u8 roce_adp_retrans[0x20];
4999
+
5000
+ u8 roce_adp_retrans_to[0x20];
5001
+
5002
+ u8 roce_slow_restart[0x20];
5003
+
5004
+ u8 roce_slow_restart_cnps[0x20];
5005
+
5006
+ u8 roce_slow_restart_trans[0x20];
5007
+
5008
+ u8 reserved_at_6e0[0x120];
42635009 };
42645010
42655011 struct mlx5_ifc_query_q_counter_in_bits {
....@@ -4284,7 +5030,8 @@
42845030
42855031 u8 syndrome[0x20];
42865032
4287
- u8 reserved_at_40[0x10];
5033
+ u8 embedded_cpu_function[0x1];
5034
+ u8 reserved_at_41[0xf];
42885035 u8 function_id[0x10];
42895036
42905037 u8 num_pages[0x20];
....@@ -4303,7 +5050,8 @@
43035050 u8 reserved_at_20[0x10];
43045051 u8 op_mod[0x10];
43055052
4306
- u8 reserved_at_40[0x10];
5053
+ u8 embedded_cpu_function[0x1];
5054
+ u8 reserved_at_41[0xf];
43075055 u8 function_id[0x10];
43085056
43095057 u8 reserved_at_60[0x20];
....@@ -4472,7 +5220,7 @@
44725220
44735221 u8 reserved_at_40[0x40];
44745222
4475
- struct mlx5_ifc_pkey_bits pkey[0];
5223
+ struct mlx5_ifc_pkey_bits pkey[];
44765224 };
44775225
44785226 struct mlx5_ifc_query_hca_vport_pkey_in_bits {
....@@ -4508,7 +5256,7 @@
45085256 u8 gids_num[0x10];
45095257 u8 reserved_at_70[0x10];
45105258
4511
- struct mlx5_ifc_array128_auto_bits gid[0];
5259
+ struct mlx5_ifc_array128_auto_bits gid[];
45125260 };
45135261
45145262 struct mlx5_ifc_query_hca_vport_gid_in_bits {
....@@ -4571,7 +5319,87 @@
45715319 u8 reserved_at_20[0x10];
45725320 u8 op_mod[0x10];
45735321
5322
+ u8 other_function[0x1];
5323
+ u8 reserved_at_41[0xf];
5324
+ u8 function_id[0x10];
5325
+
5326
+ u8 reserved_at_60[0x20];
5327
+};
5328
+
5329
+struct mlx5_ifc_other_hca_cap_bits {
5330
+ u8 roce[0x1];
5331
+ u8 reserved_at_1[0x27f];
5332
+};
5333
+
5334
+struct mlx5_ifc_query_other_hca_cap_out_bits {
5335
+ u8 status[0x8];
5336
+ u8 reserved_at_8[0x18];
5337
+
5338
+ u8 syndrome[0x20];
5339
+
45745340 u8 reserved_at_40[0x40];
5341
+
5342
+ struct mlx5_ifc_other_hca_cap_bits other_capability;
5343
+};
5344
+
5345
+struct mlx5_ifc_query_other_hca_cap_in_bits {
5346
+ u8 opcode[0x10];
5347
+ u8 reserved_at_10[0x10];
5348
+
5349
+ u8 reserved_at_20[0x10];
5350
+ u8 op_mod[0x10];
5351
+
5352
+ u8 reserved_at_40[0x10];
5353
+ u8 function_id[0x10];
5354
+
5355
+ u8 reserved_at_60[0x20];
5356
+};
5357
+
5358
+struct mlx5_ifc_modify_other_hca_cap_out_bits {
5359
+ u8 status[0x8];
5360
+ u8 reserved_at_8[0x18];
5361
+
5362
+ u8 syndrome[0x20];
5363
+
5364
+ u8 reserved_at_40[0x40];
5365
+};
5366
+
5367
+struct mlx5_ifc_modify_other_hca_cap_in_bits {
5368
+ u8 opcode[0x10];
5369
+ u8 reserved_at_10[0x10];
5370
+
5371
+ u8 reserved_at_20[0x10];
5372
+ u8 op_mod[0x10];
5373
+
5374
+ u8 reserved_at_40[0x10];
5375
+ u8 function_id[0x10];
5376
+ u8 field_select[0x20];
5377
+
5378
+ struct mlx5_ifc_other_hca_cap_bits other_capability;
5379
+};
5380
+
5381
+struct mlx5_ifc_flow_table_context_bits {
5382
+ u8 reformat_en[0x1];
5383
+ u8 decap_en[0x1];
5384
+ u8 sw_owner[0x1];
5385
+ u8 termination_table[0x1];
5386
+ u8 table_miss_action[0x4];
5387
+ u8 level[0x8];
5388
+ u8 reserved_at_10[0x8];
5389
+ u8 log_size[0x8];
5390
+
5391
+ u8 reserved_at_20[0x8];
5392
+ u8 table_miss_id[0x18];
5393
+
5394
+ u8 reserved_at_40[0x8];
5395
+ u8 lag_master_next_table_id[0x18];
5396
+
5397
+ u8 reserved_at_60[0x60];
5398
+
5399
+ u8 sw_owner_icm_root_1[0x40];
5400
+
5401
+ u8 sw_owner_icm_root_0[0x40];
5402
+
45755403 };
45765404
45775405 struct mlx5_ifc_query_flow_table_out_bits {
....@@ -4582,12 +5410,7 @@
45825410
45835411 u8 reserved_at_40[0x80];
45845412
4585
- u8 reserved_at_c0[0x8];
4586
- u8 level[0x8];
4587
- u8 reserved_at_d0[0x8];
4588
- u8 log_size[0x8];
4589
-
4590
- u8 reserved_at_e0[0x120];
5413
+ struct mlx5_ifc_flow_table_context_bits flow_table_context;
45915414 };
45925415
45935416 struct mlx5_ifc_query_flow_table_in_bits {
....@@ -4645,7 +5468,8 @@
46455468 MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_OUTER_HEADERS = 0x0,
46465469 MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS = 0x1,
46475470 MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_INNER_HEADERS = 0x2,
4648
- MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2 = 0X3,
5471
+ MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2 = 0x3,
5472
+ MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_3 = 0x4,
46495473 };
46505474
46515475 struct mlx5_ifc_query_flow_group_out_bits {
....@@ -4700,7 +5524,7 @@
47005524
47015525 u8 reserved_at_40[0x40];
47025526
4703
- struct mlx5_ifc_traffic_counter_bits flow_statistics[0];
5527
+ struct mlx5_ifc_traffic_counter_bits flow_statistics[];
47045528 };
47055529
47065530 struct mlx5_ifc_query_flow_counter_in_bits {
....@@ -4754,7 +5578,8 @@
47545578 };
47555579
47565580 struct mlx5_ifc_esw_vport_context_fields_select_bits {
4757
- u8 reserved_at_0[0x1c];
5581
+ u8 reserved_at_0[0x1b];
5582
+ u8 fdb_to_vport_reg_c_id[0x1];
47585583 u8 vport_cvlan_insert[0x1];
47595584 u8 vport_svlan_insert[0x1];
47605585 u8 vport_cvlan_strip[0x1];
....@@ -4793,7 +5618,7 @@
47935618
47945619 u8 reserved_at_300[0x580];
47955620
4796
- u8 pas[0][0x40];
5621
+ u8 pas[][0x40];
47975622 };
47985623
47995624 struct mlx5_ifc_query_eq_in_bits {
....@@ -4809,19 +5634,19 @@
48095634 u8 reserved_at_60[0x20];
48105635 };
48115636
4812
-struct mlx5_ifc_encap_header_in_bits {
5637
+struct mlx5_ifc_packet_reformat_context_in_bits {
48135638 u8 reserved_at_0[0x5];
4814
- u8 header_type[0x3];
5639
+ u8 reformat_type[0x3];
48155640 u8 reserved_at_8[0xe];
4816
- u8 encap_header_size[0xa];
5641
+ u8 reformat_data_size[0xa];
48175642
48185643 u8 reserved_at_20[0x10];
4819
- u8 encap_header[2][0x8];
5644
+ u8 reformat_data[2][0x8];
48205645
4821
- u8 more_encap_header[0][0x8];
5646
+ u8 more_reformat_data[][0x8];
48225647 };
48235648
4824
-struct mlx5_ifc_query_encap_header_out_bits {
5649
+struct mlx5_ifc_query_packet_reformat_context_out_bits {
48255650 u8 status[0x8];
48265651 u8 reserved_at_8[0x18];
48275652
....@@ -4829,33 +5654,41 @@
48295654
48305655 u8 reserved_at_40[0xa0];
48315656
4832
- struct mlx5_ifc_encap_header_in_bits encap_header[0];
5657
+ struct mlx5_ifc_packet_reformat_context_in_bits packet_reformat_context[];
48335658 };
48345659
4835
-struct mlx5_ifc_query_encap_header_in_bits {
5660
+struct mlx5_ifc_query_packet_reformat_context_in_bits {
48365661 u8 opcode[0x10];
48375662 u8 reserved_at_10[0x10];
48385663
48395664 u8 reserved_at_20[0x10];
48405665 u8 op_mod[0x10];
48415666
4842
- u8 encap_id[0x20];
5667
+ u8 packet_reformat_id[0x20];
48435668
48445669 u8 reserved_at_60[0xa0];
48455670 };
48465671
4847
-struct mlx5_ifc_alloc_encap_header_out_bits {
5672
+struct mlx5_ifc_alloc_packet_reformat_context_out_bits {
48485673 u8 status[0x8];
48495674 u8 reserved_at_8[0x18];
48505675
48515676 u8 syndrome[0x20];
48525677
4853
- u8 encap_id[0x20];
5678
+ u8 packet_reformat_id[0x20];
48545679
48555680 u8 reserved_at_60[0x20];
48565681 };
48575682
4858
-struct mlx5_ifc_alloc_encap_header_in_bits {
5683
+enum mlx5_reformat_ctx_type {
5684
+ MLX5_REFORMAT_TYPE_L2_TO_VXLAN = 0x0,
5685
+ MLX5_REFORMAT_TYPE_L2_TO_NVGRE = 0x1,
5686
+ MLX5_REFORMAT_TYPE_L2_TO_L2_TUNNEL = 0x2,
5687
+ MLX5_REFORMAT_TYPE_L3_TUNNEL_TO_L2 = 0x3,
5688
+ MLX5_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x4,
5689
+};
5690
+
5691
+struct mlx5_ifc_alloc_packet_reformat_context_in_bits {
48595692 u8 opcode[0x10];
48605693 u8 reserved_at_10[0x10];
48615694
....@@ -4864,10 +5697,10 @@
48645697
48655698 u8 reserved_at_40[0xa0];
48665699
4867
- struct mlx5_ifc_encap_header_in_bits encap_header;
5700
+ struct mlx5_ifc_packet_reformat_context_in_bits packet_reformat_context;
48685701 };
48695702
4870
-struct mlx5_ifc_dealloc_encap_header_out_bits {
5703
+struct mlx5_ifc_dealloc_packet_reformat_context_out_bits {
48715704 u8 status[0x8];
48725705 u8 reserved_at_8[0x18];
48735706
....@@ -4876,14 +5709,14 @@
48765709 u8 reserved_at_40[0x40];
48775710 };
48785711
4879
-struct mlx5_ifc_dealloc_encap_header_in_bits {
5712
+struct mlx5_ifc_dealloc_packet_reformat_context_in_bits {
48805713 u8 opcode[0x10];
48815714 u8 reserved_at_10[0x10];
48825715
48835716 u8 reserved_20[0x10];
48845717 u8 op_mod[0x10];
48855718
4886
- u8 encap_id[0x20];
5719
+ u8 packet_reformat_id[0x20];
48875720
48885721 u8 reserved_60[0x20];
48895722 };
....@@ -4907,15 +5740,32 @@
49075740 u8 data[0x20];
49085741 };
49095742
4910
-union mlx5_ifc_set_action_in_add_action_in_auto_bits {
4911
- struct mlx5_ifc_set_action_in_bits set_action_in;
4912
- struct mlx5_ifc_add_action_in_bits add_action_in;
5743
+struct mlx5_ifc_copy_action_in_bits {
5744
+ u8 action_type[0x4];
5745
+ u8 src_field[0xc];
5746
+ u8 reserved_at_10[0x3];
5747
+ u8 src_offset[0x5];
5748
+ u8 reserved_at_18[0x3];
5749
+ u8 length[0x5];
5750
+
5751
+ u8 reserved_at_20[0x4];
5752
+ u8 dst_field[0xc];
5753
+ u8 reserved_at_30[0x3];
5754
+ u8 dst_offset[0x5];
5755
+ u8 reserved_at_38[0x8];
5756
+};
5757
+
5758
+union mlx5_ifc_set_add_copy_action_in_auto_bits {
5759
+ struct mlx5_ifc_set_action_in_bits set_action_in;
5760
+ struct mlx5_ifc_add_action_in_bits add_action_in;
5761
+ struct mlx5_ifc_copy_action_in_bits copy_action_in;
49135762 u8 reserved_at_0[0x40];
49145763 };
49155764
49165765 enum {
49175766 MLX5_ACTION_TYPE_SET = 0x1,
49185767 MLX5_ACTION_TYPE_ADD = 0x2,
5768
+ MLX5_ACTION_TYPE_COPY = 0x3,
49195769 };
49205770
49215771 enum {
....@@ -4941,7 +5791,21 @@
49415791 MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0 = 0x14,
49425792 MLX5_ACTION_IN_FIELD_OUT_SIPV4 = 0x15,
49435793 MLX5_ACTION_IN_FIELD_OUT_DIPV4 = 0x16,
5794
+ MLX5_ACTION_IN_FIELD_OUT_FIRST_VID = 0x17,
49445795 MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT = 0x47,
5796
+ MLX5_ACTION_IN_FIELD_METADATA_REG_A = 0x49,
5797
+ MLX5_ACTION_IN_FIELD_METADATA_REG_B = 0x50,
5798
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_0 = 0x51,
5799
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_1 = 0x52,
5800
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_2 = 0x53,
5801
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_3 = 0x54,
5802
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_4 = 0x55,
5803
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_5 = 0x56,
5804
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_6 = 0x57,
5805
+ MLX5_ACTION_IN_FIELD_METADATA_REG_C_7 = 0x58,
5806
+ MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM = 0x59,
5807
+ MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM = 0x5B,
5808
+ MLX5_ACTION_IN_FIELD_IPSEC_SYNDROME = 0x5D,
49455809 };
49465810
49475811 struct mlx5_ifc_alloc_modify_header_context_out_bits {
....@@ -4968,7 +5832,7 @@
49685832 u8 reserved_at_68[0x10];
49695833 u8 num_of_actions[0x8];
49705834
4971
- union mlx5_ifc_set_action_in_add_action_in_auto_bits actions[0];
5835
+ union mlx5_ifc_set_add_copy_action_in_auto_bits actions[];
49725836 };
49735837
49745838 struct mlx5_ifc_dealloc_modify_header_context_out_bits {
....@@ -5030,7 +5894,7 @@
50305894
50315895 u8 reserved_at_280[0x600];
50325896
5033
- u8 pas[0][0x40];
5897
+ u8 pas[][0x40];
50345898 };
50355899
50365900 struct mlx5_ifc_query_cq_in_bits {
....@@ -5181,7 +6045,7 @@
51816045
51826046 struct mlx5_ifc_qp_2rst_in_bits {
51836047 u8 opcode[0x10];
5184
- u8 reserved_at_10[0x10];
6048
+ u8 uid[0x10];
51856049
51866050 u8 reserved_at_20[0x10];
51876051 u8 op_mod[0x10];
....@@ -5203,7 +6067,7 @@
52036067
52046068 struct mlx5_ifc_qp_2err_in_bits {
52056069 u8 opcode[0x10];
5206
- u8 reserved_at_10[0x10];
6070
+ u8 uid[0x10];
52076071
52086072 u8 reserved_at_20[0x10];
52096073 u8 op_mod[0x10];
....@@ -5303,7 +6167,7 @@
53036167
53046168 struct mlx5_ifc_modify_tis_in_bits {
53056169 u8 opcode[0x10];
5306
- u8 reserved_at_10[0x10];
6170
+ u8 uid[0x10];
53076171
53086172 u8 reserved_at_20[0x10];
53096173 u8 op_mod[0x10];
....@@ -5342,7 +6206,7 @@
53426206
53436207 struct mlx5_ifc_modify_tir_in_bits {
53446208 u8 opcode[0x10];
5345
- u8 reserved_at_10[0x10];
6209
+ u8 uid[0x10];
53466210
53476211 u8 reserved_at_20[0x10];
53486212 u8 op_mod[0x10];
....@@ -5370,7 +6234,7 @@
53706234
53716235 struct mlx5_ifc_modify_sq_in_bits {
53726236 u8 opcode[0x10];
5373
- u8 reserved_at_10[0x10];
6237
+ u8 uid[0x10];
53746238
53756239 u8 reserved_at_20[0x10];
53766240 u8 op_mod[0x10];
....@@ -5443,7 +6307,7 @@
54436307
54446308 struct mlx5_ifc_modify_rqt_in_bits {
54456309 u8 opcode[0x10];
5446
- u8 reserved_at_10[0x10];
6310
+ u8 uid[0x10];
54476311
54486312 u8 reserved_at_20[0x10];
54496313 u8 op_mod[0x10];
....@@ -5477,7 +6341,7 @@
54776341
54786342 struct mlx5_ifc_modify_rq_in_bits {
54796343 u8 opcode[0x10];
5480
- u8 reserved_at_10[0x10];
6344
+ u8 uid[0x10];
54816345
54826346 u8 reserved_at_20[0x10];
54836347 u8 op_mod[0x10];
....@@ -5513,7 +6377,7 @@
55136377
55146378 struct mlx5_ifc_modify_rmp_in_bits {
55156379 u8 opcode[0x10];
5516
- u8 reserved_at_10[0x10];
6380
+ u8 uid[0x10];
55176381
55186382 u8 reserved_at_20[0x10];
55196383 u8 op_mod[0x10];
....@@ -5543,7 +6407,7 @@
55436407 struct mlx5_ifc_modify_nic_vport_field_select_bits {
55446408 u8 reserved_at_0[0x12];
55456409 u8 affiliation[0x1];
5546
- u8 reserved_at_e[0x1];
6410
+ u8 reserved_at_13[0x1];
55476411 u8 disable_uc_local_lb[0x1];
55486412 u8 disable_mc_local_lb[0x1];
55496413 u8 node_guid[0x1];
....@@ -5618,7 +6482,7 @@
56186482
56196483 struct mlx5_ifc_modify_cq_in_bits {
56206484 u8 opcode[0x10];
5621
- u8 reserved_at_10[0x10];
6485
+ u8 uid[0x10];
56226486
56236487 u8 reserved_at_20[0x10];
56246488 u8 op_mod[0x10];
....@@ -5632,12 +6496,12 @@
56326496
56336497 u8 reserved_at_280[0x60];
56346498
5635
- u8 cq_umem_valid[0x1];
6499
+ u8 cq_umem_valid[0x1];
56366500 u8 reserved_at_2e1[0x1f];
56376501
56386502 u8 reserved_at_300[0x580];
56396503
5640
- u8 pas[0][0x40];
6504
+ u8 pas[][0x40];
56416505 };
56426506
56436507 struct mlx5_ifc_modify_cong_status_out_bits {
....@@ -5701,7 +6565,7 @@
57016565
57026566 u8 reserved_at_60[0x20];
57036567
5704
- u8 pas[0][0x40];
6568
+ u8 pas[][0x40];
57056569 };
57066570
57076571 enum {
....@@ -5717,12 +6581,13 @@
57176581 u8 reserved_at_20[0x10];
57186582 u8 op_mod[0x10];
57196583
5720
- u8 reserved_at_40[0x10];
6584
+ u8 embedded_cpu_function[0x1];
6585
+ u8 reserved_at_41[0xf];
57216586 u8 function_id[0x10];
57226587
57236588 u8 input_num_entries[0x20];
57246589
5725
- u8 pas[0][0x40];
6590
+ u8 pas[][0x40];
57266591 };
57276592
57286593 struct mlx5_ifc_mad_ifc_out_bits {
....@@ -5778,12 +6643,13 @@
57786643
57796644 u8 syndrome[0x20];
57806645
5781
- u8 reserved_at_40[0x40];
6646
+ u8 reserved_at_40[0x20];
6647
+ u8 ece[0x20];
57826648 };
57836649
57846650 struct mlx5_ifc_init2rtr_qp_in_bits {
57856651 u8 opcode[0x10];
5786
- u8 reserved_at_10[0x10];
6652
+ u8 uid[0x10];
57876653
57886654 u8 reserved_at_20[0x10];
57896655 u8 op_mod[0x10];
....@@ -5795,7 +6661,7 @@
57956661
57966662 u8 opt_param_mask[0x20];
57976663
5798
- u8 reserved_at_a0[0x20];
6664
+ u8 ece[0x20];
57996665
58006666 struct mlx5_ifc_qpc_bits qpc;
58016667
....@@ -5808,12 +6674,13 @@
58086674
58096675 u8 syndrome[0x20];
58106676
5811
- u8 reserved_at_40[0x40];
6677
+ u8 reserved_at_40[0x20];
6678
+ u8 ece[0x20];
58126679 };
58136680
58146681 struct mlx5_ifc_init2init_qp_in_bits {
58156682 u8 opcode[0x10];
5816
- u8 reserved_at_10[0x10];
6683
+ u8 uid[0x10];
58176684
58186685 u8 reserved_at_20[0x10];
58196686 u8 op_mod[0x10];
....@@ -5825,7 +6692,7 @@
58256692
58266693 u8 opt_param_mask[0x20];
58276694
5828
- u8 reserved_at_a0[0x20];
6695
+ u8 ece[0x20];
58296696
58306697 struct mlx5_ifc_qpc_bits qpc;
58316698
....@@ -5895,7 +6762,8 @@
58956762 u8 reserved_at_20[0x10];
58966763 u8 op_mod[0x10];
58976764
5898
- u8 reserved_at_40[0x10];
6765
+ u8 embedded_cpu_function[0x1];
6766
+ u8 reserved_at_41[0xf];
58996767 u8 function_id[0x10];
59006768
59016769 u8 reserved_at_60[0x20];
....@@ -5912,7 +6780,7 @@
59126780
59136781 struct mlx5_ifc_drain_dct_in_bits {
59146782 u8 opcode[0x10];
5915
- u8 reserved_at_10[0x10];
6783
+ u8 uid[0x10];
59166784
59176785 u8 reserved_at_20[0x10];
59186786 u8 op_mod[0x10];
....@@ -5939,7 +6807,8 @@
59396807 u8 reserved_at_20[0x10];
59406808 u8 op_mod[0x10];
59416809
5942
- u8 reserved_at_40[0x10];
6810
+ u8 embedded_cpu_function[0x1];
6811
+ u8 reserved_at_41[0xf];
59436812 u8 function_id[0x10];
59446813
59456814 u8 reserved_at_60[0x20];
....@@ -5956,7 +6825,7 @@
59566825
59576826 struct mlx5_ifc_detach_from_mcg_in_bits {
59586827 u8 opcode[0x10];
5959
- u8 reserved_at_10[0x10];
6828
+ u8 uid[0x10];
59606829
59616830 u8 reserved_at_20[0x10];
59626831 u8 op_mod[0x10];
....@@ -5980,7 +6849,7 @@
59806849
59816850 struct mlx5_ifc_destroy_xrq_in_bits {
59826851 u8 opcode[0x10];
5983
- u8 reserved_at_10[0x10];
6852
+ u8 uid[0x10];
59846853
59856854 u8 reserved_at_20[0x10];
59866855 u8 op_mod[0x10];
....@@ -6002,7 +6871,7 @@
60026871
60036872 struct mlx5_ifc_destroy_xrc_srq_in_bits {
60046873 u8 opcode[0x10];
6005
- u8 reserved_at_10[0x10];
6874
+ u8 uid[0x10];
60066875
60076876 u8 reserved_at_20[0x10];
60086877 u8 op_mod[0x10];
....@@ -6024,7 +6893,7 @@
60246893
60256894 struct mlx5_ifc_destroy_tis_in_bits {
60266895 u8 opcode[0x10];
6027
- u8 reserved_at_10[0x10];
6896
+ u8 uid[0x10];
60286897
60296898 u8 reserved_at_20[0x10];
60306899 u8 op_mod[0x10];
....@@ -6046,7 +6915,7 @@
60466915
60476916 struct mlx5_ifc_destroy_tir_in_bits {
60486917 u8 opcode[0x10];
6049
- u8 reserved_at_10[0x10];
6918
+ u8 uid[0x10];
60506919
60516920 u8 reserved_at_20[0x10];
60526921 u8 op_mod[0x10];
....@@ -6068,7 +6937,7 @@
60686937
60696938 struct mlx5_ifc_destroy_srq_in_bits {
60706939 u8 opcode[0x10];
6071
- u8 reserved_at_10[0x10];
6940
+ u8 uid[0x10];
60726941
60736942 u8 reserved_at_20[0x10];
60746943 u8 op_mod[0x10];
....@@ -6090,7 +6959,7 @@
60906959
60916960 struct mlx5_ifc_destroy_sq_in_bits {
60926961 u8 opcode[0x10];
6093
- u8 reserved_at_10[0x10];
6962
+ u8 uid[0x10];
60946963
60956964 u8 reserved_at_20[0x10];
60966965 u8 op_mod[0x10];
....@@ -6136,7 +7005,7 @@
61367005
61377006 struct mlx5_ifc_destroy_rqt_in_bits {
61387007 u8 opcode[0x10];
6139
- u8 reserved_at_10[0x10];
7008
+ u8 uid[0x10];
61407009
61417010 u8 reserved_at_20[0x10];
61427011 u8 op_mod[0x10];
....@@ -6158,7 +7027,7 @@
61587027
61597028 struct mlx5_ifc_destroy_rq_in_bits {
61607029 u8 opcode[0x10];
6161
- u8 reserved_at_10[0x10];
7030
+ u8 uid[0x10];
61627031
61637032 u8 reserved_at_20[0x10];
61647033 u8 op_mod[0x10];
....@@ -6202,7 +7071,7 @@
62027071
62037072 struct mlx5_ifc_destroy_rmp_in_bits {
62047073 u8 opcode[0x10];
6205
- u8 reserved_at_10[0x10];
7074
+ u8 uid[0x10];
62067075
62077076 u8 reserved_at_20[0x10];
62087077 u8 op_mod[0x10];
....@@ -6224,7 +7093,7 @@
62247093
62257094 struct mlx5_ifc_destroy_qp_in_bits {
62267095 u8 opcode[0x10];
6227
- u8 reserved_at_10[0x10];
7096
+ u8 uid[0x10];
62287097
62297098 u8 reserved_at_20[0x10];
62307099 u8 op_mod[0x10];
....@@ -6268,7 +7137,7 @@
62687137
62697138 struct mlx5_ifc_destroy_mkey_in_bits {
62707139 u8 opcode[0x10];
6271
- u8 reserved_at_10[0x10];
7140
+ u8 uid[0x10];
62727141
62737142 u8 reserved_at_20[0x10];
62747143 u8 op_mod[0x10];
....@@ -6376,7 +7245,7 @@
63767245
63777246 struct mlx5_ifc_destroy_dct_in_bits {
63787247 u8 opcode[0x10];
6379
- u8 reserved_at_10[0x10];
7248
+ u8 uid[0x10];
63807249
63817250 u8 reserved_at_20[0x10];
63827251 u8 op_mod[0x10];
....@@ -6398,7 +7267,7 @@
63987267
63997268 struct mlx5_ifc_destroy_cq_in_bits {
64007269 u8 opcode[0x10];
6401
- u8 reserved_at_10[0x10];
7270
+ u8 uid[0x10];
64027271
64037272 u8 reserved_at_20[0x10];
64047273 u8 op_mod[0x10];
....@@ -6501,7 +7370,7 @@
65017370
65027371 struct mlx5_ifc_dealloc_xrcd_in_bits {
65037372 u8 opcode[0x10];
6504
- u8 reserved_at_10[0x10];
7373
+ u8 uid[0x10];
65057374
65067375 u8 reserved_at_20[0x10];
65077376 u8 op_mod[0x10];
....@@ -6545,7 +7414,7 @@
65457414
65467415 struct mlx5_ifc_dealloc_transport_domain_in_bits {
65477416 u8 opcode[0x10];
6548
- u8 reserved_at_10[0x10];
7417
+ u8 uid[0x10];
65497418
65507419 u8 reserved_at_20[0x10];
65517420 u8 op_mod[0x10];
....@@ -6589,7 +7458,7 @@
65897458
65907459 struct mlx5_ifc_dealloc_pd_in_bits {
65917460 u8 opcode[0x10];
6592
- u8 reserved_at_10[0x10];
7461
+ u8 uid[0x10];
65937462
65947463 u8 reserved_at_20[0x10];
65957464 u8 op_mod[0x10];
....@@ -6635,7 +7504,7 @@
66357504
66367505 struct mlx5_ifc_create_xrq_in_bits {
66377506 u8 opcode[0x10];
6638
- u8 reserved_at_10[0x10];
7507
+ u8 uid[0x10];
66397508
66407509 u8 reserved_at_20[0x10];
66417510 u8 op_mod[0x10];
....@@ -6659,7 +7528,7 @@
66597528
66607529 struct mlx5_ifc_create_xrc_srq_in_bits {
66617530 u8 opcode[0x10];
6662
- u8 reserved_at_10[0x10];
7531
+ u8 uid[0x10];
66637532
66647533 u8 reserved_at_20[0x10];
66657534 u8 op_mod[0x10];
....@@ -6668,9 +7537,14 @@
66687537
66697538 struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry;
66707539
6671
- u8 reserved_at_280[0x600];
7540
+ u8 reserved_at_280[0x60];
66727541
6673
- u8 pas[0][0x40];
7542
+ u8 xrc_srq_umem_valid[0x1];
7543
+ u8 reserved_at_2e1[0x1f];
7544
+
7545
+ u8 reserved_at_300[0x580];
7546
+
7547
+ u8 pas[][0x40];
66747548 };
66757549
66767550 struct mlx5_ifc_create_tis_out_bits {
....@@ -6687,7 +7561,7 @@
66877561
66887562 struct mlx5_ifc_create_tis_in_bits {
66897563 u8 opcode[0x10];
6690
- u8 reserved_at_10[0x10];
7564
+ u8 uid[0x10];
66917565
66927566 u8 reserved_at_20[0x10];
66937567 u8 op_mod[0x10];
....@@ -6699,19 +7573,19 @@
66997573
67007574 struct mlx5_ifc_create_tir_out_bits {
67017575 u8 status[0x8];
6702
- u8 reserved_at_8[0x18];
7576
+ u8 icm_address_63_40[0x18];
67037577
67047578 u8 syndrome[0x20];
67057579
6706
- u8 reserved_at_40[0x8];
7580
+ u8 icm_address_39_32[0x8];
67077581 u8 tirn[0x18];
67087582
6709
- u8 reserved_at_60[0x20];
7583
+ u8 icm_address_31_0[0x20];
67107584 };
67117585
67127586 struct mlx5_ifc_create_tir_in_bits {
67137587 u8 opcode[0x10];
6714
- u8 reserved_at_10[0x10];
7588
+ u8 uid[0x10];
67157589
67167590 u8 reserved_at_20[0x10];
67177591 u8 op_mod[0x10];
....@@ -6735,7 +7609,7 @@
67357609
67367610 struct mlx5_ifc_create_srq_in_bits {
67377611 u8 opcode[0x10];
6738
- u8 reserved_at_10[0x10];
7612
+ u8 uid[0x10];
67397613
67407614 u8 reserved_at_20[0x10];
67417615 u8 op_mod[0x10];
....@@ -6746,7 +7620,7 @@
67467620
67477621 u8 reserved_at_280[0x600];
67487622
6749
- u8 pas[0][0x40];
7623
+ u8 pas[][0x40];
67507624 };
67517625
67527626 struct mlx5_ifc_create_sq_out_bits {
....@@ -6763,7 +7637,7 @@
67637637
67647638 struct mlx5_ifc_create_sq_in_bits {
67657639 u8 opcode[0x10];
6766
- u8 reserved_at_10[0x10];
7640
+ u8 uid[0x10];
67677641
67687642 u8 reserved_at_20[0x10];
67697643 u8 op_mod[0x10];
....@@ -6817,7 +7691,7 @@
68177691
68187692 struct mlx5_ifc_create_rqt_in_bits {
68197693 u8 opcode[0x10];
6820
- u8 reserved_at_10[0x10];
7694
+ u8 uid[0x10];
68217695
68227696 u8 reserved_at_20[0x10];
68237697 u8 op_mod[0x10];
....@@ -6841,7 +7715,7 @@
68417715
68427716 struct mlx5_ifc_create_rq_in_bits {
68437717 u8 opcode[0x10];
6844
- u8 reserved_at_10[0x10];
7718
+ u8 uid[0x10];
68457719
68467720 u8 reserved_at_20[0x10];
68477721 u8 op_mod[0x10];
....@@ -6865,7 +7739,7 @@
68657739
68667740 struct mlx5_ifc_create_rmp_in_bits {
68677741 u8 opcode[0x10];
6868
- u8 reserved_at_10[0x10];
7742
+ u8 uid[0x10];
68697743
68707744 u8 reserved_at_20[0x10];
68717745 u8 op_mod[0x10];
....@@ -6884,27 +7758,32 @@
68847758 u8 reserved_at_40[0x8];
68857759 u8 qpn[0x18];
68867760
6887
- u8 reserved_at_60[0x20];
7761
+ u8 ece[0x20];
68887762 };
68897763
68907764 struct mlx5_ifc_create_qp_in_bits {
68917765 u8 opcode[0x10];
6892
- u8 reserved_at_10[0x10];
7766
+ u8 uid[0x10];
68937767
68947768 u8 reserved_at_20[0x10];
68957769 u8 op_mod[0x10];
68967770
6897
- u8 reserved_at_40[0x40];
7771
+ u8 reserved_at_40[0x8];
7772
+ u8 input_qpn[0x18];
68987773
7774
+ u8 reserved_at_60[0x20];
68997775 u8 opt_param_mask[0x20];
69007776
6901
- u8 reserved_at_a0[0x20];
7777
+ u8 ece[0x20];
69027778
69037779 struct mlx5_ifc_qpc_bits qpc;
69047780
6905
- u8 reserved_at_800[0x80];
7781
+ u8 reserved_at_800[0x60];
69067782
6907
- u8 pas[0][0x40];
7783
+ u8 wq_umem_valid[0x1];
7784
+ u8 reserved_at_861[0x1f];
7785
+
7786
+ u8 pas[][0x40];
69087787 };
69097788
69107789 struct mlx5_ifc_create_psv_out_bits {
....@@ -6956,7 +7835,7 @@
69567835
69577836 struct mlx5_ifc_create_mkey_in_bits {
69587837 u8 opcode[0x10];
6959
- u8 reserved_at_10[0x10];
7838
+ u8 uid[0x10];
69607839
69617840 u8 reserved_at_20[0x10];
69627841 u8 op_mod[0x10];
....@@ -6964,7 +7843,8 @@
69647843 u8 reserved_at_40[0x20];
69657844
69667845 u8 pg_access[0x1];
6967
- u8 reserved_at_61[0x1f];
7846
+ u8 mkey_umem_valid[0x1];
7847
+ u8 reserved_at_62[0x1e];
69687848
69697849 struct mlx5_ifc_mkc_bits memory_key_mkey_entry;
69707850
....@@ -6974,37 +7854,29 @@
69747854
69757855 u8 reserved_at_320[0x560];
69767856
6977
- u8 klm_pas_mtt[0][0x20];
7857
+ u8 klm_pas_mtt[][0x20];
7858
+};
7859
+
7860
+enum {
7861
+ MLX5_FLOW_TABLE_TYPE_NIC_RX = 0x0,
7862
+ MLX5_FLOW_TABLE_TYPE_NIC_TX = 0x1,
7863
+ MLX5_FLOW_TABLE_TYPE_ESW_EGRESS_ACL = 0x2,
7864
+ MLX5_FLOW_TABLE_TYPE_ESW_INGRESS_ACL = 0x3,
7865
+ MLX5_FLOW_TABLE_TYPE_FDB = 0X4,
7866
+ MLX5_FLOW_TABLE_TYPE_SNIFFER_RX = 0X5,
7867
+ MLX5_FLOW_TABLE_TYPE_SNIFFER_TX = 0X6,
69787868 };
69797869
69807870 struct mlx5_ifc_create_flow_table_out_bits {
69817871 u8 status[0x8];
6982
- u8 reserved_at_8[0x18];
7872
+ u8 icm_address_63_40[0x18];
69837873
69847874 u8 syndrome[0x20];
69857875
6986
- u8 reserved_at_40[0x8];
7876
+ u8 icm_address_39_32[0x8];
69877877 u8 table_id[0x18];
69887878
6989
- u8 reserved_at_60[0x20];
6990
-};
6991
-
6992
-struct mlx5_ifc_flow_table_context_bits {
6993
- u8 encap_en[0x1];
6994
- u8 decap_en[0x1];
6995
- u8 reserved_at_2[0x2];
6996
- u8 table_miss_action[0x4];
6997
- u8 level[0x8];
6998
- u8 reserved_at_10[0x8];
6999
- u8 log_size[0x8];
7000
-
7001
- u8 reserved_at_20[0x8];
7002
- u8 table_miss_id[0x18];
7003
-
7004
- u8 reserved_at_40[0x8];
7005
- u8 lag_master_next_table_id[0x18];
7006
-
7007
- u8 reserved_at_60[0xe0];
7879
+ u8 icm_address_31_0[0x20];
70087880 };
70097881
70107882 struct mlx5_ifc_create_flow_table_in_bits {
....@@ -7100,7 +7972,7 @@
71007972
71017973 struct mlx5_ifc_create_eq_in_bits {
71027974 u8 opcode[0x10];
7103
- u8 reserved_at_10[0x10];
7975
+ u8 uid[0x10];
71047976
71057977 u8 reserved_at_20[0x10];
71067978 u8 op_mod[0x10];
....@@ -7111,11 +7983,11 @@
71117983
71127984 u8 reserved_at_280[0x40];
71137985
7114
- u8 event_bitmask[0x40];
7986
+ u8 event_bitmask[4][0x40];
71157987
7116
- u8 reserved_at_300[0x580];
7988
+ u8 reserved_at_3c0[0x4c0];
71177989
7118
- u8 pas[0][0x40];
7990
+ u8 pas[][0x40];
71197991 };
71207992
71217993 struct mlx5_ifc_create_dct_out_bits {
....@@ -7127,12 +7999,12 @@
71277999 u8 reserved_at_40[0x8];
71288000 u8 dctn[0x18];
71298001
7130
- u8 reserved_at_60[0x20];
8002
+ u8 ece[0x20];
71318003 };
71328004
71338005 struct mlx5_ifc_create_dct_in_bits {
71348006 u8 opcode[0x10];
7135
- u8 reserved_at_10[0x10];
8007
+ u8 uid[0x10];
71368008
71378009 u8 reserved_at_20[0x10];
71388010 u8 op_mod[0x10];
....@@ -7158,7 +8030,7 @@
71588030
71598031 struct mlx5_ifc_create_cq_in_bits {
71608032 u8 opcode[0x10];
7161
- u8 reserved_at_10[0x10];
8033
+ u8 uid[0x10];
71628034
71638035 u8 reserved_at_20[0x10];
71648036 u8 op_mod[0x10];
....@@ -7167,9 +8039,12 @@
71678039
71688040 struct mlx5_ifc_cqc_bits cq_context;
71698041
7170
- u8 reserved_at_280[0x600];
8042
+ u8 reserved_at_280[0x60];
71718043
7172
- u8 pas[0][0x40];
8044
+ u8 cq_umem_valid[0x1];
8045
+ u8 reserved_at_2e1[0x59f];
8046
+
8047
+ u8 pas[][0x40];
71738048 };
71748049
71758050 struct mlx5_ifc_config_int_moderation_out_bits {
....@@ -7215,7 +8090,7 @@
72158090
72168091 struct mlx5_ifc_attach_to_mcg_in_bits {
72178092 u8 opcode[0x10];
7218
- u8 reserved_at_10[0x10];
8093
+ u8 uid[0x10];
72198094
72208095 u8 reserved_at_20[0x10];
72218096 u8 op_mod[0x10];
....@@ -7266,7 +8141,7 @@
72668141
72678142 struct mlx5_ifc_arm_xrc_srq_in_bits {
72688143 u8 opcode[0x10];
7269
- u8 reserved_at_10[0x10];
8144
+ u8 uid[0x10];
72708145
72718146 u8 reserved_at_20[0x10];
72728147 u8 op_mod[0x10];
....@@ -7294,7 +8169,7 @@
72948169
72958170 struct mlx5_ifc_arm_rq_in_bits {
72968171 u8 opcode[0x10];
7297
- u8 reserved_at_10[0x10];
8172
+ u8 uid[0x10];
72988173
72998174 u8 reserved_at_20[0x10];
73008175 u8 op_mod[0x10];
....@@ -7342,7 +8217,7 @@
73428217
73438218 struct mlx5_ifc_alloc_xrcd_in_bits {
73448219 u8 opcode[0x10];
7345
- u8 reserved_at_10[0x10];
8220
+ u8 uid[0x10];
73468221
73478222 u8 reserved_at_20[0x10];
73488223 u8 op_mod[0x10];
....@@ -7386,7 +8261,7 @@
73868261
73878262 struct mlx5_ifc_alloc_transport_domain_in_bits {
73888263 u8 opcode[0x10];
7389
- u8 reserved_at_10[0x10];
8264
+ u8 uid[0x10];
73908265
73918266 u8 reserved_at_20[0x10];
73928267 u8 op_mod[0x10];
....@@ -7408,7 +8283,7 @@
74088283
74098284 struct mlx5_ifc_alloc_q_counter_in_bits {
74108285 u8 opcode[0x10];
7411
- u8 reserved_at_10[0x10];
8286
+ u8 uid[0x10];
74128287
74138288 u8 reserved_at_20[0x10];
74148289 u8 op_mod[0x10];
....@@ -7430,7 +8305,7 @@
74308305
74318306 struct mlx5_ifc_alloc_pd_in_bits {
74328307 u8 opcode[0x10];
7433
- u8 reserved_at_10[0x10];
8308
+ u8 uid[0x10];
74348309
74358310 u8 reserved_at_20[0x10];
74368311 u8 op_mod[0x10];
....@@ -7456,7 +8331,9 @@
74568331 u8 reserved_at_20[0x10];
74578332 u8 op_mod[0x10];
74588333
7459
- u8 reserved_at_40[0x40];
8334
+ u8 reserved_at_40[0x33];
8335
+ u8 flow_counter_bulk_log_size[0x5];
8336
+ u8 flow_counter_bulk[0x8];
74608337 };
74618338
74628339 struct mlx5_ifc_add_vxlan_udp_dport_out_bits {
....@@ -7490,9 +8367,20 @@
74908367 u8 reserved_at_40[0x40];
74918368 };
74928369
8370
+struct mlx5_ifc_set_pp_rate_limit_context_bits {
8371
+ u8 rate_limit[0x20];
8372
+
8373
+ u8 burst_upper_bound[0x20];
8374
+
8375
+ u8 reserved_at_40[0x10];
8376
+ u8 typical_packet_size[0x10];
8377
+
8378
+ u8 reserved_at_60[0x120];
8379
+};
8380
+
74938381 struct mlx5_ifc_set_pp_rate_limit_in_bits {
74948382 u8 opcode[0x10];
7495
- u8 reserved_at_10[0x10];
8383
+ u8 uid[0x10];
74968384
74978385 u8 reserved_at_20[0x10];
74988386 u8 op_mod[0x10];
....@@ -7502,14 +8390,7 @@
75028390
75038391 u8 reserved_at_60[0x20];
75048392
7505
- u8 rate_limit[0x20];
7506
-
7507
- u8 burst_upper_bound[0x20];
7508
-
7509
- u8 reserved_at_c0[0x10];
7510
- u8 typical_packet_size[0x10];
7511
-
7512
- u8 reserved_at_e0[0x120];
8393
+ struct mlx5_ifc_set_pp_rate_limit_context_bits ctx;
75138394 };
75148395
75158396 struct mlx5_ifc_access_register_out_bits {
....@@ -7520,7 +8401,7 @@
75208401
75218402 u8 reserved_at_40[0x40];
75228403
7523
- u8 register_data[0][0x20];
8404
+ u8 register_data[][0x20];
75248405 };
75258406
75268407 enum {
....@@ -7540,7 +8421,7 @@
75408421
75418422 u8 argument[0x20];
75428423
7543
- u8 register_data[0][0x20];
8424
+ u8 register_data[][0x20];
75448425 };
75458426
75468427 struct mlx5_ifc_sltp_reg_bits {
....@@ -7645,21 +8526,24 @@
76458526 u8 proto_mask[0x3];
76468527
76478528 u8 an_status[0x4];
7648
- u8 reserved_at_24[0x3c];
8529
+ u8 reserved_at_24[0xc];
8530
+ u8 data_rate_oper[0x10];
8531
+
8532
+ u8 ext_eth_proto_capability[0x20];
76498533
76508534 u8 eth_proto_capability[0x20];
76518535
76528536 u8 ib_link_width_capability[0x10];
76538537 u8 ib_proto_capability[0x10];
76548538
7655
- u8 reserved_at_a0[0x20];
8539
+ u8 ext_eth_proto_admin[0x20];
76568540
76578541 u8 eth_proto_admin[0x20];
76588542
76598543 u8 ib_link_width_admin[0x10];
76608544 u8 ib_proto_admin[0x10];
76618545
7662
- u8 reserved_at_100[0x20];
8546
+ u8 ext_eth_proto_oper[0x20];
76638547
76648548 u8 eth_proto_oper[0x20];
76658549
....@@ -7798,20 +8682,48 @@
77988682
77998683 struct mlx5_ifc_pplm_reg_bits {
78008684 u8 reserved_at_0[0x8];
7801
- u8 local_port[0x8];
7802
- u8 reserved_at_10[0x10];
8685
+ u8 local_port[0x8];
8686
+ u8 reserved_at_10[0x10];
78038687
7804
- u8 reserved_at_20[0x20];
8688
+ u8 reserved_at_20[0x20];
78058689
7806
- u8 port_profile_mode[0x8];
7807
- u8 static_port_profile[0x8];
7808
- u8 active_port_profile[0x8];
7809
- u8 reserved_at_58[0x8];
8690
+ u8 port_profile_mode[0x8];
8691
+ u8 static_port_profile[0x8];
8692
+ u8 active_port_profile[0x8];
8693
+ u8 reserved_at_58[0x8];
78108694
7811
- u8 retransmission_active[0x8];
7812
- u8 fec_mode_active[0x18];
8695
+ u8 retransmission_active[0x8];
8696
+ u8 fec_mode_active[0x18];
78138697
7814
- u8 reserved_at_80[0x20];
8698
+ u8 rs_fec_correction_bypass_cap[0x4];
8699
+ u8 reserved_at_84[0x8];
8700
+ u8 fec_override_cap_56g[0x4];
8701
+ u8 fec_override_cap_100g[0x4];
8702
+ u8 fec_override_cap_50g[0x4];
8703
+ u8 fec_override_cap_25g[0x4];
8704
+ u8 fec_override_cap_10g_40g[0x4];
8705
+
8706
+ u8 rs_fec_correction_bypass_admin[0x4];
8707
+ u8 reserved_at_a4[0x8];
8708
+ u8 fec_override_admin_56g[0x4];
8709
+ u8 fec_override_admin_100g[0x4];
8710
+ u8 fec_override_admin_50g[0x4];
8711
+ u8 fec_override_admin_25g[0x4];
8712
+ u8 fec_override_admin_10g_40g[0x4];
8713
+
8714
+ u8 fec_override_cap_400g_8x[0x10];
8715
+ u8 fec_override_cap_200g_4x[0x10];
8716
+
8717
+ u8 fec_override_cap_100g_2x[0x10];
8718
+ u8 fec_override_cap_50g_1x[0x10];
8719
+
8720
+ u8 fec_override_admin_400g_8x[0x10];
8721
+ u8 fec_override_admin_200g_4x[0x10];
8722
+
8723
+ u8 fec_override_admin_100g_2x[0x10];
8724
+ u8 fec_override_admin_50g_1x[0x10];
8725
+
8726
+ u8 reserved_at_140[0x140];
78158727 };
78168728
78178729 struct mlx5_ifc_ppcnt_reg_bits {
....@@ -7826,6 +8738,52 @@
78268738 u8 prio_tc[0x3];
78278739
78288740 union mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits counter_set;
8741
+};
8742
+
8743
+struct mlx5_ifc_mpein_reg_bits {
8744
+ u8 reserved_at_0[0x2];
8745
+ u8 depth[0x6];
8746
+ u8 pcie_index[0x8];
8747
+ u8 node[0x8];
8748
+ u8 reserved_at_18[0x8];
8749
+
8750
+ u8 capability_mask[0x20];
8751
+
8752
+ u8 reserved_at_40[0x8];
8753
+ u8 link_width_enabled[0x8];
8754
+ u8 link_speed_enabled[0x10];
8755
+
8756
+ u8 lane0_physical_position[0x8];
8757
+ u8 link_width_active[0x8];
8758
+ u8 link_speed_active[0x10];
8759
+
8760
+ u8 num_of_pfs[0x10];
8761
+ u8 num_of_vfs[0x10];
8762
+
8763
+ u8 bdf0[0x10];
8764
+ u8 reserved_at_b0[0x10];
8765
+
8766
+ u8 max_read_request_size[0x4];
8767
+ u8 max_payload_size[0x4];
8768
+ u8 reserved_at_c8[0x5];
8769
+ u8 pwr_status[0x3];
8770
+ u8 port_type[0x4];
8771
+ u8 reserved_at_d4[0xb];
8772
+ u8 lane_reversal[0x1];
8773
+
8774
+ u8 reserved_at_e0[0x14];
8775
+ u8 pci_power[0xc];
8776
+
8777
+ u8 reserved_at_100[0x20];
8778
+
8779
+ u8 device_status[0x10];
8780
+ u8 port_state[0x8];
8781
+ u8 reserved_at_138[0x8];
8782
+
8783
+ u8 reserved_at_140[0x10];
8784
+ u8 receiver_detect_result[0x10];
8785
+
8786
+ u8 reserved_at_160[0x20];
78298787 };
78308788
78318789 struct mlx5_ifc_mpcnt_reg_bits {
....@@ -8092,11 +9050,16 @@
80929050 };
80939051
80949052 struct mlx5_ifc_pcam_enhanced_features_bits {
8095
- u8 reserved_at_0[0x6d];
9053
+ u8 reserved_at_0[0x68];
9054
+ u8 fec_50G_per_lane_in_pplm[0x1];
9055
+ u8 reserved_at_69[0x4];
80969056 u8 rx_icrc_encapsulated_counter[0x1];
8097
- u8 reserved_at_6e[0x8];
9057
+ u8 reserved_at_6e[0x4];
9058
+ u8 ptys_extended_ethernet[0x1];
9059
+ u8 reserved_at_73[0x3];
80989060 u8 pfcc_mask[0x1];
8099
- u8 reserved_at_77[0x4];
9061
+ u8 reserved_at_77[0x3];
9062
+ u8 per_lane_error_counters[0x1];
81009063 u8 rx_buffer_fullness_counters[0x1];
81019064 u8 ptys_connector_type[0x1];
81029065 u8 reserved_at_7d[0x1];
....@@ -8107,12 +9070,17 @@
81079070 struct mlx5_ifc_pcam_regs_5000_to_507f_bits {
81089071 u8 port_access_reg_cap_mask_127_to_96[0x20];
81099072 u8 port_access_reg_cap_mask_95_to_64[0x20];
8110
- u8 port_access_reg_cap_mask_63_to_32[0x20];
9073
+
9074
+ u8 port_access_reg_cap_mask_63_to_36[0x1c];
9075
+ u8 pplm[0x1];
9076
+ u8 port_access_reg_cap_mask_34_to_32[0x3];
81119077
81129078 u8 port_access_reg_cap_mask_31_to_13[0x13];
81139079 u8 pbmc[0x1];
81149080 u8 pptb[0x1];
8115
- u8 port_access_reg_cap_mask_10_to_0[0xb];
9081
+ u8 port_access_reg_cap_mask_10_to_09[0x2];
9082
+ u8 ppcnt[0x1];
9083
+ u8 port_access_reg_cap_mask_07_to_00[0x8];
81169084 };
81179085
81189086 struct mlx5_ifc_pcam_reg_bits {
....@@ -8139,7 +9107,9 @@
81399107 };
81409108
81419109 struct mlx5_ifc_mcam_enhanced_features_bits {
8142
- u8 reserved_at_0[0x74];
9110
+ u8 reserved_at_0[0x6e];
9111
+ u8 pci_status_and_power[0x1];
9112
+ u8 reserved_at_6f[0x5];
81439113 u8 mark_tx_action_cnp[0x1];
81449114 u8 mark_tx_action_cqe[0x1];
81459115 u8 dynamic_tx_overflow[0x1];
....@@ -8156,7 +9126,7 @@
81569126 u8 mcda[0x1];
81579127 u8 mcc[0x1];
81589128 u8 mcqi[0x1];
8159
- u8 reserved_at_1f[0x1];
9129
+ u8 mcqs[0x1];
81609130
81619131 u8 regs_95_to_87[0x9];
81629132 u8 mpegc[0x1];
....@@ -8164,6 +9134,28 @@
81649134 u8 tracer_registers[0x4];
81659135
81669136 u8 regs_63_to_32[0x20];
9137
+ u8 regs_31_to_0[0x20];
9138
+};
9139
+
9140
+struct mlx5_ifc_mcam_access_reg_bits1 {
9141
+ u8 regs_127_to_96[0x20];
9142
+
9143
+ u8 regs_95_to_64[0x20];
9144
+
9145
+ u8 regs_63_to_32[0x20];
9146
+
9147
+ u8 regs_31_to_0[0x20];
9148
+};
9149
+
9150
+struct mlx5_ifc_mcam_access_reg_bits2 {
9151
+ u8 regs_127_to_99[0x1d];
9152
+ u8 mirc[0x1];
9153
+ u8 regs_97_to_96[0x2];
9154
+
9155
+ u8 regs_95_to_64[0x20];
9156
+
9157
+ u8 regs_63_to_32[0x20];
9158
+
81679159 u8 regs_31_to_0[0x20];
81689160 };
81699161
....@@ -8177,6 +9169,8 @@
81779169
81789170 union {
81799171 struct mlx5_ifc_mcam_access_reg_bits access_regs;
9172
+ struct mlx5_ifc_mcam_access_reg_bits1 access_regs1;
9173
+ struct mlx5_ifc_mcam_access_reg_bits2 access_regs2;
81809174 u8 reserved_at_0[0x80];
81819175 } mng_access_reg_cap_mask;
81829176
....@@ -8227,6 +9221,18 @@
82279221 u8 reserved_at_1c0[0x80];
82289222 };
82299223
9224
+struct mlx5_ifc_core_dump_reg_bits {
9225
+ u8 reserved_at_0[0x18];
9226
+ u8 core_dump_type[0x8];
9227
+
9228
+ u8 reserved_at_20[0x30];
9229
+ u8 vhca_id[0x10];
9230
+
9231
+ u8 reserved_at_60[0x8];
9232
+ u8 qpn[0x18];
9233
+ u8 reserved_at_80[0x180];
9234
+};
9235
+
82309236 struct mlx5_ifc_pcap_reg_bits {
82319237 u8 reserved_at_0[0x8];
82329238 u8 local_port[0x8];
....@@ -8267,9 +9273,23 @@
82679273 struct mlx5_ifc_pcmr_reg_bits {
82689274 u8 reserved_at_0[0x8];
82699275 u8 local_port[0x8];
8270
- u8 reserved_at_10[0x2e];
9276
+ u8 reserved_at_10[0x10];
9277
+
9278
+ u8 entropy_force_cap[0x1];
9279
+ u8 entropy_calc_cap[0x1];
9280
+ u8 entropy_gre_calc_cap[0x1];
9281
+ u8 reserved_at_23[0xf];
9282
+ u8 rx_ts_over_crc_cap[0x1];
9283
+ u8 reserved_at_33[0xb];
82719284 u8 fcs_cap[0x1];
8272
- u8 reserved_at_3f[0x1f];
9285
+ u8 reserved_at_3f[0x1];
9286
+
9287
+ u8 entropy_force[0x1];
9288
+ u8 entropy_calc[0x1];
9289
+ u8 entropy_gre_calc[0x1];
9290
+ u8 reserved_at_43[0xf];
9291
+ u8 rx_ts_over_crc[0x1];
9292
+ u8 reserved_at_53[0xb];
82739293 u8 fcs_chk[0x1];
82749294 u8 reserved_at_5f[0x1];
82759295 };
....@@ -8287,8 +9307,8 @@
82879307 u8 reserved_at_0[0x6];
82889308 u8 lossy[0x1];
82899309 u8 epsb[0x1];
8290
- u8 reserved_at_8[0xc];
8291
- u8 size[0xc];
9310
+ u8 reserved_at_8[0x8];
9311
+ u8 size[0x10];
82929312
82939313 u8 xoff_threshold[0x10];
82949314 u8 xon_threshold[0x10];
....@@ -8426,7 +9446,7 @@
84269446 u8 reserved_at_20[0x10];
84279447 u8 op_mod[0x10];
84289448
8429
- u8 command[0][0x20];
9449
+ u8 command[][0x20];
84309450 };
84319451
84329452 struct mlx5_ifc_cmd_if_box_bits {
....@@ -8554,7 +9574,8 @@
85549574 u8 initializing[0x1];
85559575 u8 reserved_at_fe1[0x4];
85569576 u8 nic_interface_supported[0x3];
8557
- u8 reserved_at_fe8[0x18];
9577
+ u8 embedded_cpu[0x1];
9578
+ u8 reserved_at_fe9[0x17];
85589579
85599580 struct mlx5_ifc_health_buffer_bits health_buffer;
85609581
....@@ -8627,6 +9648,24 @@
86279648 u8 reserved_at_40[0x40];
86289649 };
86299650
9651
+struct mlx5_ifc_mcqs_reg_bits {
9652
+ u8 last_index_flag[0x1];
9653
+ u8 reserved_at_1[0x7];
9654
+ u8 fw_device[0x8];
9655
+ u8 component_index[0x10];
9656
+
9657
+ u8 reserved_at_20[0x10];
9658
+ u8 identifier[0x10];
9659
+
9660
+ u8 reserved_at_40[0x17];
9661
+ u8 component_status[0x5];
9662
+ u8 component_update_state[0x4];
9663
+
9664
+ u8 last_update_state_changer_type[0x4];
9665
+ u8 last_update_state_changer_host_id[0x4];
9666
+ u8 reserved_at_68[0x18];
9667
+};
9668
+
86309669 struct mlx5_ifc_mcqi_cap_bits {
86319670 u8 supported_info_bitmask[0x20];
86329671
....@@ -8647,6 +9686,43 @@
86479686 u8 reserved_at_86[0x1a];
86489687 };
86499688
9689
+struct mlx5_ifc_mcqi_version_bits {
9690
+ u8 reserved_at_0[0x2];
9691
+ u8 build_time_valid[0x1];
9692
+ u8 user_defined_time_valid[0x1];
9693
+ u8 reserved_at_4[0x14];
9694
+ u8 version_string_length[0x8];
9695
+
9696
+ u8 version[0x20];
9697
+
9698
+ u8 build_time[0x40];
9699
+
9700
+ u8 user_defined_time[0x40];
9701
+
9702
+ u8 build_tool_version[0x20];
9703
+
9704
+ u8 reserved_at_e0[0x20];
9705
+
9706
+ u8 version_string[92][0x8];
9707
+};
9708
+
9709
+struct mlx5_ifc_mcqi_activation_method_bits {
9710
+ u8 pending_server_ac_power_cycle[0x1];
9711
+ u8 pending_server_dc_power_cycle[0x1];
9712
+ u8 pending_server_reboot[0x1];
9713
+ u8 pending_fw_reset[0x1];
9714
+ u8 auto_activate[0x1];
9715
+ u8 all_hosts_sync[0x1];
9716
+ u8 device_hw_reset[0x1];
9717
+ u8 reserved_at_7[0x19];
9718
+};
9719
+
9720
+union mlx5_ifc_mcqi_reg_data_bits {
9721
+ struct mlx5_ifc_mcqi_cap_bits mcqi_caps;
9722
+ struct mlx5_ifc_mcqi_version_bits mcqi_version;
9723
+ struct mlx5_ifc_mcqi_activation_method_bits mcqi_activation_mathod;
9724
+};
9725
+
86509726 struct mlx5_ifc_mcqi_reg_bits {
86519727 u8 read_pending_component[0x1];
86529728 u8 reserved_at_1[0xf];
....@@ -8664,7 +9740,7 @@
86649740 u8 reserved_at_a0[0x10];
86659741 u8 data_size[0x10];
86669742
8667
- u8 data[0][0x20];
9743
+ union mlx5_ifc_mcqi_reg_data_bits data[];
86689744 };
86699745
86709746 struct mlx5_ifc_mcc_reg_bits {
....@@ -8703,7 +9779,37 @@
87039779
87049780 u8 reserved_at_60[0x20];
87059781
8706
- u8 data[0][0x20];
9782
+ u8 data[][0x20];
9783
+};
9784
+
9785
+enum {
9786
+ MLX5_MFRL_REG_RESET_TYPE_FULL_CHIP = BIT(0),
9787
+ MLX5_MFRL_REG_RESET_TYPE_NET_PORT_ALIVE = BIT(1),
9788
+};
9789
+
9790
+enum {
9791
+ MLX5_MFRL_REG_RESET_LEVEL0 = BIT(0),
9792
+ MLX5_MFRL_REG_RESET_LEVEL3 = BIT(3),
9793
+ MLX5_MFRL_REG_RESET_LEVEL6 = BIT(6),
9794
+};
9795
+
9796
+struct mlx5_ifc_mfrl_reg_bits {
9797
+ u8 reserved_at_0[0x20];
9798
+
9799
+ u8 reserved_at_20[0x2];
9800
+ u8 pci_sync_for_fw_update_start[0x1];
9801
+ u8 pci_sync_for_fw_update_resp[0x2];
9802
+ u8 rst_type_sel[0x3];
9803
+ u8 reserved_at_28[0x8];
9804
+ u8 reset_type[0x8];
9805
+ u8 reset_level[0x8];
9806
+};
9807
+
9808
+struct mlx5_ifc_mirc_reg_bits {
9809
+ u8 reserved_at_0[0x18];
9810
+ u8 status_code[0x8];
9811
+
9812
+ u8 reserved_at_20[0x20];
87079813 };
87089814
87099815 union mlx5_ifc_ports_control_registers_document_bits {
....@@ -8714,7 +9820,8 @@
87149820 struct mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits eth_802_3_cntrs_grp_data_layout;
87159821 struct mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits eth_extended_cntrs_grp_data_layout;
87169822 struct mlx5_ifc_eth_per_prio_grp_data_layout_bits eth_per_prio_grp_data_layout;
8717
- struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits eth_per_traffic_grp_data_layout;
9823
+ struct mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits eth_per_tc_prio_grp_data_layout;
9824
+ struct mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits eth_per_tc_congest_prio_grp_data_layout;
87189825 struct mlx5_ifc_lane_2_module_mapping_bits lane_2_module_mapping;
87199826 struct mlx5_ifc_pamp_reg_bits pamp_reg;
87209827 struct mlx5_ifc_paos_reg_bits paos_reg;
....@@ -8738,6 +9845,7 @@
87389845 struct mlx5_ifc_pmtu_reg_bits pmtu_reg;
87399846 struct mlx5_ifc_ppad_reg_bits ppad_reg;
87409847 struct mlx5_ifc_ppcnt_reg_bits ppcnt_reg;
9848
+ struct mlx5_ifc_mpein_reg_bits mpein_reg;
87419849 struct mlx5_ifc_mpcnt_reg_bits mpcnt_reg;
87429850 struct mlx5_ifc_pplm_reg_bits pplm_reg;
87439851 struct mlx5_ifc_pplr_reg_bits pplr_reg;
....@@ -8759,6 +9867,8 @@
87599867 struct mlx5_ifc_mcqi_reg_bits mcqi_reg;
87609868 struct mlx5_ifc_mcc_reg_bits mcc_reg;
87619869 struct mlx5_ifc_mcda_reg_bits mcda_reg;
9870
+ struct mlx5_ifc_mirc_reg_bits mirc_reg;
9871
+ struct mlx5_ifc_mfrl_reg_bits mfrl_reg;
87629872 u8 reserved_at_0[0x60e0];
87639873 };
87649874
....@@ -8915,6 +10025,34 @@
891510025 u8 untagged_buff[0x4];
891610026 };
891710027
10028
+struct mlx5_ifc_sbcam_reg_bits {
10029
+ u8 reserved_at_0[0x8];
10030
+ u8 feature_group[0x8];
10031
+ u8 reserved_at_10[0x8];
10032
+ u8 access_reg_group[0x8];
10033
+
10034
+ u8 reserved_at_20[0x20];
10035
+
10036
+ u8 sb_access_reg_cap_mask[4][0x20];
10037
+
10038
+ u8 reserved_at_c0[0x80];
10039
+
10040
+ u8 sb_feature_cap_mask[4][0x20];
10041
+
10042
+ u8 reserved_at_1c0[0x40];
10043
+
10044
+ u8 cap_total_buffer_size[0x20];
10045
+
10046
+ u8 cap_cell_size[0x10];
10047
+ u8 cap_max_pg_buffers[0x8];
10048
+ u8 cap_num_pool_supported[0x8];
10049
+
10050
+ u8 reserved_at_240[0x8];
10051
+ u8 cap_sbsr_stat_size[0x8];
10052
+ u8 cap_max_tclass_data[0x8];
10053
+ u8 cap_max_cpu_ingress_tclass_sb[0x8];
10054
+};
10055
+
891810056 struct mlx5_ifc_pbmc_reg_bits {
891910057 u8 reserved_at_0[0x8];
892010058 u8 local_port[0x8];
....@@ -8976,7 +10114,7 @@
897610114 u8 dcbx_cee_cap[0x1];
897710115 u8 dcbx_ieee_cap[0x1];
897810116 u8 dcbx_standby_cap[0x1];
8979
- u8 reserved_at_0[0x5];
10117
+ u8 reserved_at_3[0x5];
898010118 u8 port_number[0x8];
898110119 u8 reserved_at_10[0xa];
898210120 u8 max_application_table_size[6];
....@@ -9187,7 +10325,7 @@
918710325 u8 opcode[0x10];
918810326 u8 uid[0x10];
918910327
9190
- u8 reserved_at_20[0x10];
10328
+ u8 vhca_tunnel_id[0x10];
919110329 u8 obj_type[0x10];
919210330
919310331 u8 obj_id[0x20];
....@@ -9207,32 +10345,151 @@
920710345 };
920810346
920910347 struct mlx5_ifc_umem_bits {
9210
- u8 modify_field_select[0x40];
10348
+ u8 reserved_at_0[0x80];
921110349
9212
- u8 reserved_at_40[0x5b];
10350
+ u8 reserved_at_80[0x1b];
921310351 u8 log_page_size[0x5];
921410352
921510353 u8 page_offset[0x20];
921610354
921710355 u8 num_of_mtt[0x40];
921810356
9219
- struct mlx5_ifc_mtt_bits mtt[0];
10357
+ struct mlx5_ifc_mtt_bits mtt[];
922010358 };
922110359
922210360 struct mlx5_ifc_uctx_bits {
10361
+ u8 cap[0x20];
10362
+
10363
+ u8 reserved_at_20[0x160];
10364
+};
10365
+
10366
+struct mlx5_ifc_sw_icm_bits {
922310367 u8 modify_field_select[0x40];
922410368
9225
- u8 reserved_at_40[0x1c0];
10369
+ u8 reserved_at_40[0x18];
10370
+ u8 log_sw_icm_size[0x8];
10371
+
10372
+ u8 reserved_at_60[0x20];
10373
+
10374
+ u8 sw_icm_start_addr[0x40];
10375
+
10376
+ u8 reserved_at_c0[0x140];
10377
+};
10378
+
10379
+struct mlx5_ifc_geneve_tlv_option_bits {
10380
+ u8 modify_field_select[0x40];
10381
+
10382
+ u8 reserved_at_40[0x18];
10383
+ u8 geneve_option_fte_index[0x8];
10384
+
10385
+ u8 option_class[0x10];
10386
+ u8 option_type[0x8];
10387
+ u8 reserved_at_78[0x3];
10388
+ u8 option_data_length[0x5];
10389
+
10390
+ u8 reserved_at_80[0x180];
922610391 };
922710392
922810393 struct mlx5_ifc_create_umem_in_bits {
9229
- struct mlx5_ifc_general_obj_in_cmd_hdr_bits hdr;
9230
- struct mlx5_ifc_umem_bits umem;
10394
+ u8 opcode[0x10];
10395
+ u8 uid[0x10];
10396
+
10397
+ u8 reserved_at_20[0x10];
10398
+ u8 op_mod[0x10];
10399
+
10400
+ u8 reserved_at_40[0x40];
10401
+
10402
+ struct mlx5_ifc_umem_bits umem;
10403
+};
10404
+
10405
+struct mlx5_ifc_create_umem_out_bits {
10406
+ u8 status[0x8];
10407
+ u8 reserved_at_8[0x18];
10408
+
10409
+ u8 syndrome[0x20];
10410
+
10411
+ u8 reserved_at_40[0x8];
10412
+ u8 umem_id[0x18];
10413
+
10414
+ u8 reserved_at_60[0x20];
10415
+};
10416
+
10417
+struct mlx5_ifc_destroy_umem_in_bits {
10418
+ u8 opcode[0x10];
10419
+ u8 uid[0x10];
10420
+
10421
+ u8 reserved_at_20[0x10];
10422
+ u8 op_mod[0x10];
10423
+
10424
+ u8 reserved_at_40[0x8];
10425
+ u8 umem_id[0x18];
10426
+
10427
+ u8 reserved_at_60[0x20];
10428
+};
10429
+
10430
+struct mlx5_ifc_destroy_umem_out_bits {
10431
+ u8 status[0x8];
10432
+ u8 reserved_at_8[0x18];
10433
+
10434
+ u8 syndrome[0x20];
10435
+
10436
+ u8 reserved_at_40[0x40];
923110437 };
923210438
923310439 struct mlx5_ifc_create_uctx_in_bits {
10440
+ u8 opcode[0x10];
10441
+ u8 reserved_at_10[0x10];
10442
+
10443
+ u8 reserved_at_20[0x10];
10444
+ u8 op_mod[0x10];
10445
+
10446
+ u8 reserved_at_40[0x40];
10447
+
10448
+ struct mlx5_ifc_uctx_bits uctx;
10449
+};
10450
+
10451
+struct mlx5_ifc_create_uctx_out_bits {
10452
+ u8 status[0x8];
10453
+ u8 reserved_at_8[0x18];
10454
+
10455
+ u8 syndrome[0x20];
10456
+
10457
+ u8 reserved_at_40[0x10];
10458
+ u8 uid[0x10];
10459
+
10460
+ u8 reserved_at_60[0x20];
10461
+};
10462
+
10463
+struct mlx5_ifc_destroy_uctx_in_bits {
10464
+ u8 opcode[0x10];
10465
+ u8 reserved_at_10[0x10];
10466
+
10467
+ u8 reserved_at_20[0x10];
10468
+ u8 op_mod[0x10];
10469
+
10470
+ u8 reserved_at_40[0x10];
10471
+ u8 uid[0x10];
10472
+
10473
+ u8 reserved_at_60[0x20];
10474
+};
10475
+
10476
+struct mlx5_ifc_destroy_uctx_out_bits {
10477
+ u8 status[0x8];
10478
+ u8 reserved_at_8[0x18];
10479
+
10480
+ u8 syndrome[0x20];
10481
+
10482
+ u8 reserved_at_40[0x40];
10483
+};
10484
+
10485
+struct mlx5_ifc_create_sw_icm_in_bits {
923410486 struct mlx5_ifc_general_obj_in_cmd_hdr_bits hdr;
9235
- struct mlx5_ifc_uctx_bits uctx;
10487
+ struct mlx5_ifc_sw_icm_bits sw_icm;
10488
+};
10489
+
10490
+struct mlx5_ifc_create_geneve_tlv_option_in_bits {
10491
+ struct mlx5_ifc_general_obj_in_cmd_hdr_bits hdr;
10492
+ struct mlx5_ifc_geneve_tlv_option_bits geneve_tlv_opt;
923610493 };
923710494
923810495 struct mlx5_ifc_mtrc_string_db_param_bits {
....@@ -9277,7 +10534,7 @@
927710534 u8 reserved_at_4[0x4];
927810535 u8 read_size[0x18];
927910536 u8 start_offset[0x20];
9280
- u8 string_db_data[0];
10537
+ u8 string_db_data[];
928110538 };
928210539
928310540 struct mlx5_ifc_mtrc_ctrl_bits {
....@@ -9292,4 +10549,259 @@
929210549 u8 reserved_at_80[0x180];
929310550 };
929410551
10552
+struct mlx5_ifc_host_params_context_bits {
10553
+ u8 host_number[0x8];
10554
+ u8 reserved_at_8[0x7];
10555
+ u8 host_pf_disabled[0x1];
10556
+ u8 host_num_of_vfs[0x10];
10557
+
10558
+ u8 host_total_vfs[0x10];
10559
+ u8 host_pci_bus[0x10];
10560
+
10561
+ u8 reserved_at_40[0x10];
10562
+ u8 host_pci_device[0x10];
10563
+
10564
+ u8 reserved_at_60[0x10];
10565
+ u8 host_pci_function[0x10];
10566
+
10567
+ u8 reserved_at_80[0x180];
10568
+};
10569
+
10570
+struct mlx5_ifc_query_esw_functions_in_bits {
10571
+ u8 opcode[0x10];
10572
+ u8 reserved_at_10[0x10];
10573
+
10574
+ u8 reserved_at_20[0x10];
10575
+ u8 op_mod[0x10];
10576
+
10577
+ u8 reserved_at_40[0x40];
10578
+};
10579
+
10580
+struct mlx5_ifc_query_esw_functions_out_bits {
10581
+ u8 status[0x8];
10582
+ u8 reserved_at_8[0x18];
10583
+
10584
+ u8 syndrome[0x20];
10585
+
10586
+ u8 reserved_at_40[0x40];
10587
+
10588
+ struct mlx5_ifc_host_params_context_bits host_params_context;
10589
+
10590
+ u8 reserved_at_280[0x180];
10591
+ u8 host_sf_enable[][0x40];
10592
+};
10593
+
10594
+struct mlx5_ifc_sf_partition_bits {
10595
+ u8 reserved_at_0[0x10];
10596
+ u8 log_num_sf[0x8];
10597
+ u8 log_sf_bar_size[0x8];
10598
+};
10599
+
10600
+struct mlx5_ifc_query_sf_partitions_out_bits {
10601
+ u8 status[0x8];
10602
+ u8 reserved_at_8[0x18];
10603
+
10604
+ u8 syndrome[0x20];
10605
+
10606
+ u8 reserved_at_40[0x18];
10607
+ u8 num_sf_partitions[0x8];
10608
+
10609
+ u8 reserved_at_60[0x20];
10610
+
10611
+ struct mlx5_ifc_sf_partition_bits sf_partition[];
10612
+};
10613
+
10614
+struct mlx5_ifc_query_sf_partitions_in_bits {
10615
+ u8 opcode[0x10];
10616
+ u8 reserved_at_10[0x10];
10617
+
10618
+ u8 reserved_at_20[0x10];
10619
+ u8 op_mod[0x10];
10620
+
10621
+ u8 reserved_at_40[0x40];
10622
+};
10623
+
10624
+struct mlx5_ifc_dealloc_sf_out_bits {
10625
+ u8 status[0x8];
10626
+ u8 reserved_at_8[0x18];
10627
+
10628
+ u8 syndrome[0x20];
10629
+
10630
+ u8 reserved_at_40[0x40];
10631
+};
10632
+
10633
+struct mlx5_ifc_dealloc_sf_in_bits {
10634
+ u8 opcode[0x10];
10635
+ u8 reserved_at_10[0x10];
10636
+
10637
+ u8 reserved_at_20[0x10];
10638
+ u8 op_mod[0x10];
10639
+
10640
+ u8 reserved_at_40[0x10];
10641
+ u8 function_id[0x10];
10642
+
10643
+ u8 reserved_at_60[0x20];
10644
+};
10645
+
10646
+struct mlx5_ifc_alloc_sf_out_bits {
10647
+ u8 status[0x8];
10648
+ u8 reserved_at_8[0x18];
10649
+
10650
+ u8 syndrome[0x20];
10651
+
10652
+ u8 reserved_at_40[0x40];
10653
+};
10654
+
10655
+struct mlx5_ifc_alloc_sf_in_bits {
10656
+ u8 opcode[0x10];
10657
+ u8 reserved_at_10[0x10];
10658
+
10659
+ u8 reserved_at_20[0x10];
10660
+ u8 op_mod[0x10];
10661
+
10662
+ u8 reserved_at_40[0x10];
10663
+ u8 function_id[0x10];
10664
+
10665
+ u8 reserved_at_60[0x20];
10666
+};
10667
+
10668
+struct mlx5_ifc_affiliated_event_header_bits {
10669
+ u8 reserved_at_0[0x10];
10670
+ u8 obj_type[0x10];
10671
+
10672
+ u8 obj_id[0x20];
10673
+};
10674
+
10675
+enum {
10676
+ MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = BIT(0xc),
10677
+ MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC = BIT(0x13),
10678
+};
10679
+
10680
+enum {
10681
+ MLX5_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = 0xc,
10682
+ MLX5_GENERAL_OBJECT_TYPES_IPSEC = 0x13,
10683
+};
10684
+
10685
+enum {
10686
+ MLX5_IPSEC_OBJECT_ICV_LEN_16B,
10687
+ MLX5_IPSEC_OBJECT_ICV_LEN_12B,
10688
+ MLX5_IPSEC_OBJECT_ICV_LEN_8B,
10689
+};
10690
+
10691
+struct mlx5_ifc_ipsec_obj_bits {
10692
+ u8 modify_field_select[0x40];
10693
+ u8 full_offload[0x1];
10694
+ u8 reserved_at_41[0x1];
10695
+ u8 esn_en[0x1];
10696
+ u8 esn_overlap[0x1];
10697
+ u8 reserved_at_44[0x2];
10698
+ u8 icv_length[0x2];
10699
+ u8 reserved_at_48[0x4];
10700
+ u8 aso_return_reg[0x4];
10701
+ u8 reserved_at_50[0x10];
10702
+
10703
+ u8 esn_msb[0x20];
10704
+
10705
+ u8 reserved_at_80[0x8];
10706
+ u8 dekn[0x18];
10707
+
10708
+ u8 salt[0x20];
10709
+
10710
+ u8 implicit_iv[0x40];
10711
+
10712
+ u8 reserved_at_100[0x700];
10713
+};
10714
+
10715
+struct mlx5_ifc_create_ipsec_obj_in_bits {
10716
+ struct mlx5_ifc_general_obj_in_cmd_hdr_bits general_obj_in_cmd_hdr;
10717
+ struct mlx5_ifc_ipsec_obj_bits ipsec_object;
10718
+};
10719
+
10720
+enum {
10721
+ MLX5_MODIFY_IPSEC_BITMASK_ESN_OVERLAP = BIT(0),
10722
+ MLX5_MODIFY_IPSEC_BITMASK_ESN_MSB = BIT(1),
10723
+};
10724
+
10725
+struct mlx5_ifc_query_ipsec_obj_out_bits {
10726
+ struct mlx5_ifc_general_obj_out_cmd_hdr_bits general_obj_out_cmd_hdr;
10727
+ struct mlx5_ifc_ipsec_obj_bits ipsec_object;
10728
+};
10729
+
10730
+struct mlx5_ifc_modify_ipsec_obj_in_bits {
10731
+ struct mlx5_ifc_general_obj_in_cmd_hdr_bits general_obj_in_cmd_hdr;
10732
+ struct mlx5_ifc_ipsec_obj_bits ipsec_object;
10733
+};
10734
+
10735
+struct mlx5_ifc_encryption_key_obj_bits {
10736
+ u8 modify_field_select[0x40];
10737
+
10738
+ u8 reserved_at_40[0x14];
10739
+ u8 key_size[0x4];
10740
+ u8 reserved_at_58[0x4];
10741
+ u8 key_type[0x4];
10742
+
10743
+ u8 reserved_at_60[0x8];
10744
+ u8 pd[0x18];
10745
+
10746
+ u8 reserved_at_80[0x180];
10747
+ u8 key[8][0x20];
10748
+
10749
+ u8 reserved_at_300[0x500];
10750
+};
10751
+
10752
+struct mlx5_ifc_create_encryption_key_in_bits {
10753
+ struct mlx5_ifc_general_obj_in_cmd_hdr_bits general_obj_in_cmd_hdr;
10754
+ struct mlx5_ifc_encryption_key_obj_bits encryption_key_object;
10755
+};
10756
+
10757
+enum {
10758
+ MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_128 = 0x0,
10759
+ MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_256 = 0x1,
10760
+};
10761
+
10762
+enum {
10763
+ MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_TYPE_TLS = 0x1,
10764
+ MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_TYPE_IPSEC = 0x2,
10765
+};
10766
+
10767
+struct mlx5_ifc_tls_static_params_bits {
10768
+ u8 const_2[0x2];
10769
+ u8 tls_version[0x4];
10770
+ u8 const_1[0x2];
10771
+ u8 reserved_at_8[0x14];
10772
+ u8 encryption_standard[0x4];
10773
+
10774
+ u8 reserved_at_20[0x20];
10775
+
10776
+ u8 initial_record_number[0x40];
10777
+
10778
+ u8 resync_tcp_sn[0x20];
10779
+
10780
+ u8 gcm_iv[0x20];
10781
+
10782
+ u8 implicit_iv[0x40];
10783
+
10784
+ u8 reserved_at_100[0x8];
10785
+ u8 dek_index[0x18];
10786
+
10787
+ u8 reserved_at_120[0xe0];
10788
+};
10789
+
10790
+struct mlx5_ifc_tls_progress_params_bits {
10791
+ u8 next_record_tcp_sn[0x20];
10792
+
10793
+ u8 hw_resync_tcp_sn[0x20];
10794
+
10795
+ u8 record_tracker_state[0x2];
10796
+ u8 auth_state[0x2];
10797
+ u8 reserved_at_44[0x4];
10798
+ u8 hw_offset_record_number[0x18];
10799
+};
10800
+
10801
+enum {
10802
+ MLX5_MTT_PERM_READ = 1 << 0,
10803
+ MLX5_MTT_PERM_WRITE = 1 << 1,
10804
+ MLX5_MTT_PERM_RW = MLX5_MTT_PERM_READ | MLX5_MTT_PERM_WRITE,
10805
+};
10806
+
929510807 #endif /* MLX5_IFC_H */