LCOV - code coverage report
Current view: top level - drivers/net/mlx5/hws - mlx5dr_definer.h (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 1 0.0 %
Date: 2025-04-03 19:37:06 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 10 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright (c) 2022 NVIDIA Corporation & Affiliates
       3                 :            :  */
       4                 :            : 
       5                 :            : #ifndef MLX5DR_DEFINER_H_
       6                 :            : #define MLX5DR_DEFINER_H_
       7                 :            : 
       8                 :            : /* Max available selecotrs */
       9                 :            : #define DW_SELECTORS 9
      10                 :            : #define BYTE_SELECTORS 8
      11                 :            : 
      12                 :            : /* Selectors based on match TAG */
      13                 :            : #define DW_SELECTORS_MATCH 6
      14                 :            : #define DW_SELECTORS_LIMITED 3
      15                 :            : 
      16                 :            : /* Selectors based on range TAG */
      17                 :            : #define DW_SELECTORS_RANGE 2
      18                 :            : #define BYTE_SELECTORS_RANGE 8
      19                 :            : 
      20                 :            : enum mlx5dr_definer_compare_ste_dw_offset {
      21                 :            :         /* In compare STE the matching DW's starts after the 3 actions */
      22                 :            :         MLX5DR_DEFINER_COMPARE_STE_ARGUMENT_1 = 3,
      23                 :            :         MLX5DR_DEFINER_COMPARE_STE_ARGUMENT_0,
      24                 :            :         MLX5DR_DEFINER_COMPARE_STE_BASE_1,
      25                 :            :         MLX5DR_DEFINER_COMPARE_STE_BASE_0,
      26                 :            :         MLX5DR_DEFINER_COMPARE_STE_TAG_DW_3,
      27                 :            :         MLX5DR_DEFINER_COMPARE_STE_TAG_DW_2,
      28                 :            :         MLX5DR_DEFINER_COMPARE_STE_TAG_DW_1,
      29                 :            :         MLX5DR_DEFINER_COMPARE_STE_TAG_DW_0,
      30                 :            : };
      31                 :            : 
      32                 :            : enum mlx5dr_definer_dw_selectors {
      33                 :            :         MLX5DR_DEFINER_SELECTOR_DW0,
      34                 :            :         MLX5DR_DEFINER_SELECTOR_DW1,
      35                 :            :         MLX5DR_DEFINER_SELECTOR_DW2,
      36                 :            :         MLX5DR_DEFINER_SELECTOR_DW3,
      37                 :            :         MLX5DR_DEFINER_SELECTOR_DW4,
      38                 :            :         MLX5DR_DEFINER_SELECTOR_DW5,
      39                 :            :         MLX5DR_DEFINER_SELECTOR_DW6,
      40                 :            :         MLX5DR_DEFINER_SELECTOR_DW7,
      41                 :            :         MLX5DR_DEFINER_SELECTOR_DW8,
      42                 :            : };
      43                 :            : 
      44                 :            : enum mlx5dr_definer_compare_dw_selectors {
      45                 :            :         MLX5DR_DEFINER_COMPARE_ARGUMENT_0 = MLX5DR_DEFINER_SELECTOR_DW4,
      46                 :            :         MLX5DR_DEFINER_COMPARE_ARGUMENT_1 = MLX5DR_DEFINER_SELECTOR_DW5,
      47                 :            :         MLX5DR_DEFINER_COMPARE_BASE_0 = MLX5DR_DEFINER_SELECTOR_DW2,
      48                 :            :         MLX5DR_DEFINER_COMPARE_BASE_1 = MLX5DR_DEFINER_SELECTOR_DW3,
      49                 :            : };
      50                 :            : 
      51                 :            : enum mlx5dr_definer_fname {
      52                 :            :         MLX5DR_DEFINER_FNAME_ETH_SMAC_48_16_O,
      53                 :            :         MLX5DR_DEFINER_FNAME_ETH_SMAC_48_16_I,
      54                 :            :         MLX5DR_DEFINER_FNAME_ETH_SMAC_15_0_O,
      55                 :            :         MLX5DR_DEFINER_FNAME_ETH_SMAC_15_0_I,
      56                 :            :         MLX5DR_DEFINER_FNAME_ETH_DMAC_48_16_O,
      57                 :            :         MLX5DR_DEFINER_FNAME_ETH_DMAC_48_16_I,
      58                 :            :         MLX5DR_DEFINER_FNAME_ETH_DMAC_15_0_O,
      59                 :            :         MLX5DR_DEFINER_FNAME_ETH_DMAC_15_0_I,
      60                 :            :         MLX5DR_DEFINER_FNAME_ETH_TYPE_O,
      61                 :            :         MLX5DR_DEFINER_FNAME_ETH_TYPE_I,
      62                 :            :         MLX5DR_DEFINER_FNAME_VLAN_TYPE_O,
      63                 :            :         MLX5DR_DEFINER_FNAME_VLAN_TYPE_I,
      64                 :            :         MLX5DR_DEFINER_FNAME_VLAN_TCI_O,
      65                 :            :         MLX5DR_DEFINER_FNAME_VLAN_TCI_I,
      66                 :            :         MLX5DR_DEFINER_FNAME_IPV4_IHL_O,
      67                 :            :         MLX5DR_DEFINER_FNAME_IPV4_IHL_I,
      68                 :            :         MLX5DR_DEFINER_FNAME_IP_TTL_O,
      69                 :            :         MLX5DR_DEFINER_FNAME_IP_TTL_I,
      70                 :            :         MLX5DR_DEFINER_FNAME_IPV4_DST_O,
      71                 :            :         MLX5DR_DEFINER_FNAME_IPV4_DST_I,
      72                 :            :         MLX5DR_DEFINER_FNAME_IPV4_SRC_O,
      73                 :            :         MLX5DR_DEFINER_FNAME_IPV4_SRC_I,
      74                 :            :         MLX5DR_DEFINER_FNAME_IP_VERSION_O,
      75                 :            :         MLX5DR_DEFINER_FNAME_IP_VERSION_I,
      76                 :            :         MLX5DR_DEFINER_FNAME_IP_FRAG_O,
      77                 :            :         MLX5DR_DEFINER_FNAME_IP_FRAG_I,
      78                 :            :         MLX5DR_DEFINER_FNAME_IP_ID_O,
      79                 :            :         MLX5DR_DEFINER_FNAME_IP_ID_I,
      80                 :            :         MLX5DR_DEFINER_FNAME_IP_LEN_O,
      81                 :            :         MLX5DR_DEFINER_FNAME_IP_LEN_I,
      82                 :            :         MLX5DR_DEFINER_FNAME_IP_TOS_O,
      83                 :            :         MLX5DR_DEFINER_FNAME_IP_TOS_I,
      84                 :            :         MLX5DR_DEFINER_FNAME_IPV6_FLOW_LABEL_O,
      85                 :            :         MLX5DR_DEFINER_FNAME_IPV6_FLOW_LABEL_I,
      86                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_127_96_O,
      87                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_95_64_O,
      88                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_63_32_O,
      89                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_31_0_O,
      90                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_127_96_I,
      91                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_95_64_I,
      92                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_63_32_I,
      93                 :            :         MLX5DR_DEFINER_FNAME_IPV6_DST_31_0_I,
      94                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_127_96_O,
      95                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_95_64_O,
      96                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_63_32_O,
      97                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_31_0_O,
      98                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_127_96_I,
      99                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_95_64_I,
     100                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_63_32_I,
     101                 :            :         MLX5DR_DEFINER_FNAME_IPV6_SRC_31_0_I,
     102                 :            :         MLX5DR_DEFINER_FNAME_IP_PROTOCOL_O,
     103                 :            :         MLX5DR_DEFINER_FNAME_IP_PROTOCOL_I,
     104                 :            :         MLX5DR_DEFINER_FNAME_L4_SPORT_O,
     105                 :            :         MLX5DR_DEFINER_FNAME_L4_SPORT_I,
     106                 :            :         MLX5DR_DEFINER_FNAME_L4_DPORT_O,
     107                 :            :         MLX5DR_DEFINER_FNAME_L4_DPORT_I,
     108                 :            :         MLX5DR_DEFINER_FNAME_TCP_FLAGS_I,
     109                 :            :         MLX5DR_DEFINER_FNAME_TCP_FLAGS_O,
     110                 :            :         MLX5DR_DEFINER_FNAME_GTP_TEID,
     111                 :            :         MLX5DR_DEFINER_FNAME_GTP_MSG_TYPE,
     112                 :            :         MLX5DR_DEFINER_FNAME_GTP_EXT_FLAG,
     113                 :            :         MLX5DR_DEFINER_FNAME_GTP_FLAGS,
     114                 :            :         MLX5DR_DEFINER_FNAME_GTP_NEXT_EXT_HDR,
     115                 :            :         MLX5DR_DEFINER_FNAME_GTP_EXT_HDR_PDU,
     116                 :            :         MLX5DR_DEFINER_FNAME_GTP_EXT_HDR_QFI,
     117                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_0,
     118                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_1,
     119                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_2,
     120                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_3,
     121                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_4,
     122                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_5,
     123                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_6,
     124                 :            :         MLX5DR_DEFINER_FNAME_FLEX_PARSER_7,
     125                 :            :         MLX5DR_DEFINER_FNAME_VPORT_REG_C_0,
     126                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_DW0,
     127                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_DW1,
     128                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_GPE_FLAGS,
     129                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_GPE_RSVD0,
     130                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_GPE_PROTO,
     131                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_GPE_VNI,
     132                 :            :         MLX5DR_DEFINER_FNAME_VXLAN_GPE_RSVD1,
     133                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_CTRL,
     134                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_PROTO,
     135                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_VNI,
     136                 :            :         MLX5DR_DEFINER_FNAME_SOURCE_QP,
     137                 :            :         MLX5DR_DEFINER_FNAME_REG_0,
     138                 :            :         MLX5DR_DEFINER_FNAME_REG_1,
     139                 :            :         MLX5DR_DEFINER_FNAME_REG_2,
     140                 :            :         MLX5DR_DEFINER_FNAME_REG_3,
     141                 :            :         MLX5DR_DEFINER_FNAME_REG_4,
     142                 :            :         MLX5DR_DEFINER_FNAME_REG_5,
     143                 :            :         MLX5DR_DEFINER_FNAME_REG_6,
     144                 :            :         MLX5DR_DEFINER_FNAME_REG_7,
     145                 :            :         MLX5DR_DEFINER_FNAME_REG_8,
     146                 :            :         MLX5DR_DEFINER_FNAME_REG_9,
     147                 :            :         MLX5DR_DEFINER_FNAME_REG_10,
     148                 :            :         MLX5DR_DEFINER_FNAME_REG_11,
     149                 :            :         MLX5DR_DEFINER_FNAME_REG_A,
     150                 :            :         MLX5DR_DEFINER_FNAME_REG_B,
     151                 :            :         MLX5DR_DEFINER_FNAME_GRE_KEY_PRESENT,
     152                 :            :         MLX5DR_DEFINER_FNAME_GRE_C_VER,
     153                 :            :         MLX5DR_DEFINER_FNAME_GRE_PROTOCOL,
     154                 :            :         MLX5DR_DEFINER_FNAME_GRE_OPT_KEY,
     155                 :            :         MLX5DR_DEFINER_FNAME_GRE_OPT_SEQ,
     156                 :            :         MLX5DR_DEFINER_FNAME_GRE_OPT_CHECKSUM,
     157                 :            :         MLX5DR_DEFINER_FNAME_NVGRE_C_K_S,
     158                 :            :         MLX5DR_DEFINER_FNAME_NVGRE_PROTOCOL,
     159                 :            :         MLX5DR_DEFINER_FNAME_NVGRE_DW1,
     160                 :            :         MLX5DR_DEFINER_FNAME_INTEGRITY_O,
     161                 :            :         MLX5DR_DEFINER_FNAME_INTEGRITY_I,
     162                 :            :         MLX5DR_DEFINER_FNAME_ICMP_DW1,
     163                 :            :         MLX5DR_DEFINER_FNAME_ICMP_DW2,
     164                 :            :         MLX5DR_DEFINER_FNAME_ESP_SPI,
     165                 :            :         MLX5DR_DEFINER_FNAME_ESP_SEQUENCE_NUMBER,
     166                 :            :         MLX5DR_DEFINER_FNAME_MPLS0_O,
     167                 :            :         MLX5DR_DEFINER_FNAME_MPLS1_O,
     168                 :            :         MLX5DR_DEFINER_FNAME_MPLS2_O,
     169                 :            :         MLX5DR_DEFINER_FNAME_MPLS3_O,
     170                 :            :         MLX5DR_DEFINER_FNAME_MPLS4_O,
     171                 :            :         MLX5DR_DEFINER_FNAME_MPLS0_I,
     172                 :            :         MLX5DR_DEFINER_FNAME_MPLS1_I,
     173                 :            :         MLX5DR_DEFINER_FNAME_MPLS2_I,
     174                 :            :         MLX5DR_DEFINER_FNAME_MPLS3_I,
     175                 :            :         MLX5DR_DEFINER_FNAME_MPLS4_I,
     176                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS0_O,
     177                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS1_O,
     178                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS2_O,
     179                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS3_O,
     180                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS4_O,
     181                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS0_I,
     182                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS1_I,
     183                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS2_I,
     184                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS3_I,
     185                 :            :         MLX5DR_DEFINER_FNAME_OKS2_MPLS4_I,
     186                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_0,
     187                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_1,
     188                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_2,
     189                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_3,
     190                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_4,
     191                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_5,
     192                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_6,
     193                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_OK_7,
     194                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_0,
     195                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_1,
     196                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_2,
     197                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_3,
     198                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_4,
     199                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_5,
     200                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_6,
     201                 :            :         MLX5DR_DEFINER_FNAME_GENEVE_OPT_DW_7,
     202                 :            :         MLX5DR_DEFINER_FNAME_IB_L4_OPCODE,
     203                 :            :         MLX5DR_DEFINER_FNAME_IB_L4_QPN,
     204                 :            :         MLX5DR_DEFINER_FNAME_IB_L4_A,
     205                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L2_O,
     206                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L2_I,
     207                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L3_O,
     208                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L3_I,
     209                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L4_O,
     210                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L4_I,
     211                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L4_EXT_O,
     212                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_L4_EXT_I,
     213                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_TUNNEL,
     214                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_FRAG_O,
     215                 :            :         MLX5DR_DEFINER_FNAME_PTYPE_FRAG_I,
     216                 :            :         MLX5DR_DEFINER_FNAME_RANDOM_NUM,
     217                 :            :         MLX5DR_DEFINER_FNAME_MAX,
     218                 :            : };
     219                 :            : 
     220                 :            : enum mlx5dr_definer_type {
     221                 :            :         MLX5DR_DEFINER_TYPE_MATCH,
     222                 :            :         MLX5DR_DEFINER_TYPE_JUMBO,
     223                 :            :         MLX5DR_DEFINER_TYPE_RANGE,
     224                 :            : };
     225                 :            : 
     226                 :            : struct mlx5dr_definer_fc {
     227                 :            :         uint8_t item_idx;
     228                 :            :         uint8_t is_range;
     229                 :            :         uint8_t compare_idx;
     230                 :            :         bool compare_set_base;
     231                 :            :         union {
     232                 :            :                 uint32_t extra_data;
     233                 :            :                 void *dr_ctx;
     234                 :            :         };
     235                 :            :         uint32_t byte_off;
     236                 :            :         int bit_off;
     237                 :            :         uint32_t bit_mask;
     238                 :            :         enum mlx5dr_definer_fname fname;
     239                 :            :         uint8_t not_overwrite;
     240                 :            :         void (*tag_set)(struct mlx5dr_definer_fc *fc,
     241                 :            :                         const void *item_spec,
     242                 :            :                         uint8_t *tag);
     243                 :            :         void (*tag_mask_set)(struct mlx5dr_definer_fc *fc,
     244                 :            :                              const void *item_spec,
     245                 :            :                              uint8_t *tag);
     246                 :            : };
     247                 :            : 
     248                 :            : struct mlx5_ifc_definer_hl_eth_l2_bits {
     249                 :            :         u8 dmac_47_16[0x20];
     250                 :            :         u8 dmac_15_0[0x10];
     251                 :            :         u8 l3_ethertype[0x10];
     252                 :            :         u8 reserved_at_40[0x1];
     253                 :            :         u8 sx_sniffer[0x1];
     254                 :            :         u8 functional_lb[0x1];
     255                 :            :         u8 ip_fragmented[0x1];
     256                 :            :         u8 qp_type[0x2];
     257                 :            :         u8 encap_type[0x2];
     258                 :            :         u8 port_number[0x2];
     259                 :            :         u8 l3_type[0x2];
     260                 :            :         u8 l4_type_bwc[0x2];
     261                 :            :         u8 first_vlan_qualifier[0x2];
     262                 :            :         u8 tci[0x10]; /* contains first_priority[0x3] + first_cfi[0x1] + first_vlan_id[0xc] */
     263                 :            :         u8 l4_type[0x4];
     264                 :            :         u8 reserved_at_64[0x2];
     265                 :            :         u8 ipsec_layer[0x2];
     266                 :            :         u8 l2_type[0x2];
     267                 :            :         u8 force_lb[0x1];
     268                 :            :         u8 l2_ok[0x1];
     269                 :            :         u8 l3_ok[0x1];
     270                 :            :         u8 l4_ok[0x1];
     271                 :            :         u8 second_vlan_qualifier[0x2];
     272                 :            :         u8 second_priority[0x3];
     273                 :            :         u8 second_cfi[0x1];
     274                 :            :         u8 second_vlan_id[0xc];
     275                 :            : };
     276                 :            : 
     277                 :            : struct mlx5_ifc_definer_hl_eth_l2_src_bits {
     278                 :            :         u8 smac_47_16[0x20];
     279                 :            :         u8 smac_15_0[0x10];
     280                 :            :         u8 loopback_syndrome[0x8];
     281                 :            :         u8 l3_type[0x2];
     282                 :            :         u8 l4_type_bwc[0x2];
     283                 :            :         u8 first_vlan_qualifier[0x2];
     284                 :            :         u8 ip_fragmented[0x1];
     285                 :            :         u8 functional_lb[0x1];
     286                 :            : };
     287                 :            : 
     288                 :            : struct mlx5_ifc_definer_hl_ib_l2_bits {
     289                 :            :         u8 sx_sniffer[0x1];
     290                 :            :         u8 force_lb[0x1];
     291                 :            :         u8 functional_lb[0x1];
     292                 :            :         u8 reserved_at_3[0x3];
     293                 :            :         u8 port_number[0x2];
     294                 :            :         u8 sl[0x4];
     295                 :            :         u8 qp_type[0x2];
     296                 :            :         u8 lnh[0x2];
     297                 :            :         u8 dlid[0x10];
     298                 :            :         u8 vl[0x4];
     299                 :            :         u8 lrh_packet_length[0xc];
     300                 :            :         u8 slid[0x10];
     301                 :            : };
     302                 :            : 
     303                 :            : struct mlx5_ifc_definer_hl_eth_l3_bits {
     304                 :            :         u8 ip_version[0x4];
     305                 :            :         u8 ihl[0x4];
     306                 :            :         union {
     307                 :            :                 u8 tos[0x8];
     308                 :            :                 struct {
     309                 :            :                         u8 dscp[0x6];
     310                 :            :                         u8 ecn[0x2];
     311                 :            :                 };
     312                 :            :         };
     313                 :            :         u8 time_to_live_hop_limit[0x8];
     314                 :            :         u8 protocol_next_header[0x8];
     315                 :            :         u8 identification[0x10];
     316                 :            :         union {
     317                 :            :                 u8 ipv4_frag[0x10];
     318                 :            :                 struct {
     319                 :            :                         u8 flags[0x3];
     320                 :            :                         u8 fragment_offset[0xd];
     321                 :            :                 };
     322                 :            :         };
     323                 :            :         u8 ipv4_total_length[0x10];
     324                 :            :         u8 checksum[0x10];
     325                 :            :         u8 reserved_at_60[0xc];
     326                 :            :         u8 flow_label[0x14];
     327                 :            :         u8 packet_length[0x10];
     328                 :            :         u8 ipv6_payload_length[0x10];
     329                 :            : };
     330                 :            : 
     331                 :            : struct mlx5_ifc_definer_hl_eth_l4_bits {
     332                 :            :         u8 source_port[0x10];
     333                 :            :         u8 destination_port[0x10];
     334                 :            :         u8 data_offset[0x4];
     335                 :            :         u8 l4_ok[0x1];
     336                 :            :         u8 l3_ok[0x1];
     337                 :            :         u8 ip_fragmented[0x1];
     338                 :            :         u8 tcp_ns[0x1];
     339                 :            :         union {
     340                 :            :                 u8 tcp_flags[0x8];
     341                 :            :                 struct {
     342                 :            :                         u8 tcp_cwr[0x1];
     343                 :            :                         u8 tcp_ece[0x1];
     344                 :            :                         u8 tcp_urg[0x1];
     345                 :            :                         u8 tcp_ack[0x1];
     346                 :            :                         u8 tcp_psh[0x1];
     347                 :            :                         u8 tcp_rst[0x1];
     348                 :            :                         u8 tcp_syn[0x1];
     349                 :            :                         u8 tcp_fin[0x1];
     350                 :            :                 };
     351                 :            :         };
     352                 :            :         u8 first_fragment[0x1];
     353                 :            :         u8 reserved_at_31[0xf];
     354                 :            : };
     355                 :            : 
     356                 :            : struct mlx5_ifc_definer_hl_src_qp_gvmi_bits {
     357                 :            :         u8 loopback_syndrome[0x8];
     358                 :            :         u8 l3_type[0x2];
     359                 :            :         u8 l4_type_bwc[0x2];
     360                 :            :         u8 first_vlan_qualifier[0x2];
     361                 :            :         u8 reserved_at_e[0x1];
     362                 :            :         u8 functional_lb[0x1];
     363                 :            :         u8 source_gvmi[0x10];
     364                 :            :         u8 force_lb[0x1];
     365                 :            :         u8 ip_fragmented[0x1];
     366                 :            :         u8 source_is_requestor[0x1];
     367                 :            :         u8 reserved_at_23[0x5];
     368                 :            :         u8 source_qp[0x18];
     369                 :            : };
     370                 :            : 
     371                 :            : struct mlx5_ifc_definer_hl_ib_l4_bits {
     372                 :            :         u8 opcode[0x8];
     373                 :            :         u8 qp[0x18];
     374                 :            :         u8 se[0x1];
     375                 :            :         u8 migreq[0x1];
     376                 :            :         u8 ackreq[0x1];
     377                 :            :         u8 fecn[0x1];
     378                 :            :         u8 becn[0x1];
     379                 :            :         u8 bth[0x1];
     380                 :            :         u8 deth[0x1];
     381                 :            :         u8 dcceth[0x1];
     382                 :            :         u8 reserved_at_28[0x2];
     383                 :            :         u8 pad_count[0x2];
     384                 :            :         u8 tver[0x4];
     385                 :            :         u8 p_key[0x10];
     386                 :            :         u8 reserved_at_40[0x8];
     387                 :            :         u8 deth_source_qp[0x18];
     388                 :            : };
     389                 :            : 
     390                 :            : enum mlx5dr_integrity_ok1_bits {
     391                 :            :         MLX5DR_DEFINER_OKS1_FIRST_L4_OK = 24,
     392                 :            :         MLX5DR_DEFINER_OKS1_FIRST_L3_OK = 25,
     393                 :            :         MLX5DR_DEFINER_OKS1_SECOND_L4_OK = 26,
     394                 :            :         MLX5DR_DEFINER_OKS1_SECOND_L3_OK = 27,
     395                 :            :         MLX5DR_DEFINER_OKS1_FIRST_L4_CSUM_OK = 28,
     396                 :            :         MLX5DR_DEFINER_OKS1_FIRST_IPV4_CSUM_OK = 29,
     397                 :            :         MLX5DR_DEFINER_OKS1_SECOND_L4_CSUM_OK = 30,
     398                 :            :         MLX5DR_DEFINER_OKS1_SECOND_IPV4_CSUM_OK = 31,
     399                 :            : };
     400                 :            : 
     401                 :            : struct mlx5_ifc_definer_hl_oks1_bits {
     402                 :            :         union {
     403                 :            :                 u8 oks1_bits[0x20];
     404                 :            :                 struct {
     405                 :            :                         u8 second_ipv4_checksum_ok[0x1];
     406                 :            :                         u8 second_l4_checksum_ok[0x1];
     407                 :            :                         u8 first_ipv4_checksum_ok[0x1];
     408                 :            :                         u8 first_l4_checksum_ok[0x1];
     409                 :            :                         u8 second_l3_ok[0x1];
     410                 :            :                         u8 second_l4_ok[0x1];
     411                 :            :                         u8 first_l3_ok[0x1];
     412                 :            :                         u8 first_l4_ok[0x1];
     413                 :            :                         u8 flex_parser7_steering_ok[0x1];
     414                 :            :                         u8 flex_parser6_steering_ok[0x1];
     415                 :            :                         u8 flex_parser5_steering_ok[0x1];
     416                 :            :                         u8 flex_parser4_steering_ok[0x1];
     417                 :            :                         u8 flex_parser3_steering_ok[0x1];
     418                 :            :                         u8 flex_parser2_steering_ok[0x1];
     419                 :            :                         u8 flex_parser1_steering_ok[0x1];
     420                 :            :                         u8 flex_parser0_steering_ok[0x1];
     421                 :            :                         u8 second_ipv6_extension_header_vld[0x1];
     422                 :            :                         u8 first_ipv6_extension_header_vld[0x1];
     423                 :            :                         u8 l3_tunneling_ok[0x1];
     424                 :            :                         u8 l2_tunneling_ok[0x1];
     425                 :            :                         u8 second_tcp_ok[0x1];
     426                 :            :                         u8 second_udp_ok[0x1];
     427                 :            :                         u8 second_ipv4_ok[0x1];
     428                 :            :                         u8 second_ipv6_ok[0x1];
     429                 :            :                         u8 second_l2_ok[0x1];
     430                 :            :                         u8 vxlan_ok[0x1];
     431                 :            :                         u8 gre_ok[0x1];
     432                 :            :                         u8 first_tcp_ok[0x1];
     433                 :            :                         u8 first_udp_ok[0x1];
     434                 :            :                         u8 first_ipv4_ok[0x1];
     435                 :            :                         u8 first_ipv6_ok[0x1];
     436                 :            :                         u8 first_l2_ok[0x1];
     437                 :            :                 };
     438                 :            :         };
     439                 :            : };
     440                 :            : 
     441                 :            : struct mlx5_ifc_definer_hl_oks2_bits {
     442                 :            :         u8 reserved_at_0[0xa];
     443                 :            :         u8 second_mpls_ok[0x1];
     444                 :            :         u8 second_mpls4_s_bit[0x1];
     445                 :            :         u8 second_mpls4_qualifier[0x1];
     446                 :            :         u8 second_mpls3_s_bit[0x1];
     447                 :            :         u8 second_mpls3_qualifier[0x1];
     448                 :            :         u8 second_mpls2_s_bit[0x1];
     449                 :            :         u8 second_mpls2_qualifier[0x1];
     450                 :            :         u8 second_mpls1_s_bit[0x1];
     451                 :            :         u8 second_mpls1_qualifier[0x1];
     452                 :            :         u8 second_mpls0_s_bit[0x1];
     453                 :            :         u8 second_mpls0_qualifier[0x1];
     454                 :            :         u8 first_mpls_ok[0x1];
     455                 :            :         u8 first_mpls4_s_bit[0x1];
     456                 :            :         u8 first_mpls4_qualifier[0x1];
     457                 :            :         u8 first_mpls3_s_bit[0x1];
     458                 :            :         u8 first_mpls3_qualifier[0x1];
     459                 :            :         u8 first_mpls2_s_bit[0x1];
     460                 :            :         u8 first_mpls2_qualifier[0x1];
     461                 :            :         u8 first_mpls1_s_bit[0x1];
     462                 :            :         u8 first_mpls1_qualifier[0x1];
     463                 :            :         u8 first_mpls0_s_bit[0x1];
     464                 :            :         u8 first_mpls0_qualifier[0x1];
     465                 :            : };
     466                 :            : 
     467                 :            : struct mlx5_ifc_definer_hl_voq_bits {
     468                 :            :         u8 reserved_at_0[0x18];
     469                 :            :         u8 ecn_ok[0x1];
     470                 :            :         u8 congestion[0x1];
     471                 :            :         u8 profile[0x2];
     472                 :            :         u8 internal_prio[0x4];
     473                 :            : };
     474                 :            : 
     475                 :            : struct mlx5_ifc_definer_hl_ipv4_src_dst_bits {
     476                 :            :         u8 source_address[0x20];
     477                 :            :         u8 destination_address[0x20];
     478                 :            : };
     479                 :            : 
     480                 :            : struct mlx5_ifc_definer_hl_random_number_bits {
     481                 :            :         u8 random_number[0x10];
     482                 :            :         u8 reserved[0x10];
     483                 :            : };
     484                 :            : 
     485                 :            : struct mlx5_ifc_definer_hl_ipv6_addr_bits {
     486                 :            :         u8 ipv6_address_127_96[0x20];
     487                 :            :         u8 ipv6_address_95_64[0x20];
     488                 :            :         u8 ipv6_address_63_32[0x20];
     489                 :            :         u8 ipv6_address_31_0[0x20];
     490                 :            : };
     491                 :            : 
     492                 :            : struct mlx5_ifc_definer_tcp_icmp_header_bits {
     493                 :            :         union {
     494                 :            :                 struct {
     495                 :            :                         u8 icmp_dw1[0x20];
     496                 :            :                         u8 icmp_dw2[0x20];
     497                 :            :                         u8 icmp_dw3[0x20];
     498                 :            :                 };
     499                 :            :                 struct {
     500                 :            :                         u8 tcp_seq[0x20];
     501                 :            :                         u8 tcp_ack[0x20];
     502                 :            :                         u8 tcp_win_urg[0x20];
     503                 :            :                 };
     504                 :            :         };
     505                 :            : };
     506                 :            : 
     507                 :            : struct mlx5_ifc_definer_hl_tunnel_header_bits {
     508                 :            :         u8 tunnel_header_0[0x20];
     509                 :            :         u8 tunnel_header_1[0x20];
     510                 :            :         u8 tunnel_header_2[0x20];
     511                 :            :         u8 tunnel_header_3[0x20];
     512                 :            : };
     513                 :            : 
     514                 :            : struct mlx5_ifc_definer_hl_ipsec_bits {
     515                 :            :         u8 spi[0x20];
     516                 :            :         u8 sequence_number[0x20];
     517                 :            :         u8 reserved[0x10];
     518                 :            :         u8 ipsec_syndrome[0x8];
     519                 :            :         u8 next_header[0x8];
     520                 :            : };
     521                 :            : 
     522                 :            : struct mlx5_ifc_definer_hl_metadata_bits {
     523                 :            :         u8 metadata_to_cqe[0x20];
     524                 :            :         u8 general_purpose[0x20];
     525                 :            :         u8 acomulated_hash[0x20];
     526                 :            : };
     527                 :            : 
     528                 :            : struct mlx5_ifc_definer_hl_flex_parser_bits {
     529                 :            :         u8 flex_parser_7[0x20];
     530                 :            :         u8 flex_parser_6[0x20];
     531                 :            :         u8 flex_parser_5[0x20];
     532                 :            :         u8 flex_parser_4[0x20];
     533                 :            :         u8 flex_parser_3[0x20];
     534                 :            :         u8 flex_parser_2[0x20];
     535                 :            :         u8 flex_parser_1[0x20];
     536                 :            :         u8 flex_parser_0[0x20];
     537                 :            : };
     538                 :            : 
     539                 :            : struct mlx5_ifc_definer_hl_registers_bits {
     540                 :            :         u8 register_c_10[0x20];
     541                 :            :         u8 register_c_11[0x20];
     542                 :            :         u8 register_c_8[0x20];
     543                 :            :         u8 register_c_9[0x20];
     544                 :            :         u8 register_c_6[0x20];
     545                 :            :         u8 register_c_7[0x20];
     546                 :            :         u8 register_c_4[0x20];
     547                 :            :         u8 register_c_5[0x20];
     548                 :            :         u8 register_c_2[0x20];
     549                 :            :         u8 register_c_3[0x20];
     550                 :            :         u8 register_c_0[0x20];
     551                 :            :         u8 register_c_1[0x20];
     552                 :            : };
     553                 :            : 
     554                 :            : struct mlx5_ifc_definer_hl_mpls_bits {
     555                 :            :         u8 mpls0_label[0x20];
     556                 :            :         u8 mpls1_label[0x20];
     557                 :            :         u8 mpls2_label[0x20];
     558                 :            :         u8 mpls3_label[0x20];
     559                 :            :         u8 mpls4_label[0x20];
     560                 :            : };
     561                 :            : 
     562                 :            : struct mlx5_ifc_definer_hl_bits {
     563                 :            :         struct mlx5_ifc_definer_hl_eth_l2_bits eth_l2_outer;
     564                 :            :         struct mlx5_ifc_definer_hl_eth_l2_bits eth_l2_inner;
     565                 :            :         struct mlx5_ifc_definer_hl_eth_l2_src_bits eth_l2_src_outer;
     566                 :            :         struct mlx5_ifc_definer_hl_eth_l2_src_bits eth_l2_src_inner;
     567                 :            :         struct mlx5_ifc_definer_hl_ib_l2_bits ib_l2;
     568                 :            :         struct mlx5_ifc_definer_hl_eth_l3_bits eth_l3_outer;
     569                 :            :         struct mlx5_ifc_definer_hl_eth_l3_bits eth_l3_inner;
     570                 :            :         struct mlx5_ifc_definer_hl_eth_l4_bits eth_l4_outer;
     571                 :            :         struct mlx5_ifc_definer_hl_eth_l4_bits eth_l4_inner;
     572                 :            :         struct mlx5_ifc_definer_hl_src_qp_gvmi_bits source_qp_gvmi;
     573                 :            :         struct mlx5_ifc_definer_hl_ib_l4_bits ib_l4;
     574                 :            :         struct mlx5_ifc_definer_hl_oks1_bits oks1;
     575                 :            :         struct mlx5_ifc_definer_hl_oks2_bits oks2;
     576                 :            :         struct mlx5_ifc_definer_hl_voq_bits voq;
     577                 :            :         u8 reserved_at_480[0x380];
     578                 :            :         struct mlx5_ifc_definer_hl_ipv4_src_dst_bits ipv4_src_dest_outer;
     579                 :            :         struct mlx5_ifc_definer_hl_ipv4_src_dst_bits ipv4_src_dest_inner;
     580                 :            :         struct mlx5_ifc_definer_hl_ipv6_addr_bits ipv6_dst_outer;
     581                 :            :         struct mlx5_ifc_definer_hl_ipv6_addr_bits ipv6_dst_inner;
     582                 :            :         struct mlx5_ifc_definer_hl_ipv6_addr_bits ipv6_src_outer;
     583                 :            :         struct mlx5_ifc_definer_hl_ipv6_addr_bits ipv6_src_inner;
     584                 :            :         u8 unsupported_dest_ib_l3[0x80];
     585                 :            :         u8 unsupported_source_ib_l3[0x80];
     586                 :            :         u8 unsupported_udp_misc_outer[0x20];
     587                 :            :         u8 unsupported_udp_misc_inner[0x20];
     588                 :            :         struct mlx5_ifc_definer_tcp_icmp_header_bits tcp_icmp;
     589                 :            :         struct mlx5_ifc_definer_hl_tunnel_header_bits tunnel_header;
     590                 :            :         struct mlx5_ifc_definer_hl_mpls_bits mpls_outer;
     591                 :            :         struct mlx5_ifc_definer_hl_mpls_bits mpls_inner;
     592                 :            :         u8 unsupported_config_headers_outer[0x80];
     593                 :            :         u8 unsupported_config_headers_inner[0x80];
     594                 :            :         struct mlx5_ifc_definer_hl_random_number_bits random_number;
     595                 :            :         struct mlx5_ifc_definer_hl_ipsec_bits ipsec;
     596                 :            :         struct mlx5_ifc_definer_hl_metadata_bits metadata;
     597                 :            :         u8 unsupported_utc_timestamp[0x40];
     598                 :            :         u8 unsupported_free_running_timestamp[0x40];
     599                 :            :         struct mlx5_ifc_definer_hl_flex_parser_bits flex_parser;
     600                 :            :         struct mlx5_ifc_definer_hl_registers_bits registers;
     601                 :            :         /* Reserved in case header layout on future HW */
     602                 :            :         u8 unsupported_reserved[0xd40];
     603                 :            : };
     604                 :            : 
     605                 :            : enum mlx5dr_definer_gtp {
     606                 :            :         MLX5DR_DEFINER_GTP_EXT_HDR_BIT = 0x04,
     607                 :            : };
     608                 :            : 
     609                 :            : struct mlx5_ifc_header_gtp_bits {
     610                 :            :         union {
     611                 :            :                  u8 v_pt_rsv_flags[0x8];
     612                 :            :                 struct {
     613                 :            :                         u8 version[0x3];
     614                 :            :                         u8 proto_type[0x1];
     615                 :            :                         u8 reserved1[0x1];
     616                 :            :                         u8 ext_hdr_flag[0x1];
     617                 :            :                         u8 seq_num_flag[0x1];
     618                 :            :                         u8 pdu_flag[0x1];
     619                 :            :                 };
     620                 :            :         };
     621                 :            :         u8 msg_type[0x8];
     622                 :            :         u8 msg_len[0x8];
     623                 :            :         u8 teid[0x20];
     624                 :            : };
     625                 :            : 
     626                 :            : struct mlx5_ifc_header_opt_gtp_bits {
     627                 :            :         u8 seq_num[0x10];
     628                 :            :         u8 pdu_num[0x8];
     629                 :            :         u8 next_ext_hdr_type[0x8];
     630                 :            : };
     631                 :            : 
     632                 :            : struct mlx5_ifc_header_gtp_psc_bits {
     633                 :            :         u8 len[0x8];
     634                 :            :         u8 pdu_type[0x4];
     635                 :            :         u8 flags[0x4];
     636                 :            :         u8 qfi[0x8];
     637                 :            :         u8 reserved2[0x8];
     638                 :            : };
     639                 :            : 
     640                 :            : struct mlx5_ifc_header_ipv6_vtc_bits {
     641                 :            :         u8 version[0x4];
     642                 :            :         union {
     643                 :            :                 u8 tos[0x8];
     644                 :            :                 struct {
     645                 :            :                         u8 dscp[0x6];
     646                 :            :                         u8 ecn[0x2];
     647                 :            :                 };
     648                 :            :         };
     649                 :            :         u8 flow_label[0x14];
     650                 :            : };
     651                 :            : 
     652                 :            : struct mlx5_ifc_header_ipv6_routing_ext_bits {
     653                 :            :         u8 next_hdr[0x8];
     654                 :            :         u8 hdr_len[0x8];
     655                 :            :         u8 type[0x8];
     656                 :            :         u8 segments_left[0x8];
     657                 :            :         union {
     658                 :            :                 u8 flags[0x20];
     659                 :            :                 struct {
     660                 :            :                         u8 last_entry[0x8];
     661                 :            :                         u8 flag[0x8];
     662                 :            :                         u8 tag[0x10];
     663                 :            :                 };
     664                 :            :         };
     665                 :            : };
     666                 :            : 
     667                 :            : struct mlx5_ifc_header_vxlan_bits {
     668                 :            :         u8 flags[0x8];
     669                 :            :         u8 reserved1[0x18];
     670                 :            :         u8 vni[0x18];
     671                 :            :         u8 reserved2[0x8];
     672                 :            : };
     673                 :            : 
     674                 :            : struct mlx5_ifc_header_vxlan_gpe_bits {
     675                 :            :         u8 flags[0x8];
     676                 :            :         u8 rsvd0[0x10];
     677                 :            :         u8 protocol[0x8];
     678                 :            :         u8 vni[0x18];
     679                 :            :         u8 rsvd1[0x8];
     680                 :            : };
     681                 :            : 
     682                 :            : struct mlx5_ifc_header_gre_bits {
     683                 :            :         union {
     684                 :            :                 u8 c_rsvd0_ver[0x10];
     685                 :            :                 struct {
     686                 :            :                         u8 gre_c_present[0x1];
     687                 :            :                         u8 reserved_at_1[0x1];
     688                 :            :                         u8 gre_k_present[0x1];
     689                 :            :                         u8 gre_s_present[0x1];
     690                 :            :                         u8 reserved_at_4[0x9];
     691                 :            :                         u8 version[0x3];
     692                 :            :                 };
     693                 :            :         };
     694                 :            :         u8 gre_protocol[0x10];
     695                 :            :         u8 checksum[0x10];
     696                 :            :         u8 reserved_at_30[0x10];
     697                 :            : };
     698                 :            : 
     699                 :            : struct mlx5_ifc_header_geneve_bits {
     700                 :            :         union {
     701                 :            :                 u8 ver_opt_len_o_c_rsvd[0x10];
     702                 :            :                 struct {
     703                 :            :                         u8 version[0x2];
     704                 :            :                         u8 opt_len[0x6];
     705                 :            :                         u8 o_flag[0x1];
     706                 :            :                         u8 c_flag[0x1];
     707                 :            :                         u8 reserved_at_a[0x6];
     708                 :            :                 };
     709                 :            :         };
     710                 :            :         u8 protocol_type[0x10];
     711                 :            :         u8 vni[0x18];
     712                 :            :         u8 reserved_at_38[0x8];
     713                 :            : };
     714                 :            : 
     715                 :            : struct mlx5_ifc_header_geneve_opt_bits {
     716                 :            :         u8 class[0x10];
     717                 :            :         u8 type[0x8];
     718                 :            :         u8 reserved[0x3];
     719                 :            :         u8 len[0x5];
     720                 :            : };
     721                 :            : 
     722                 :            : struct mlx5_ifc_header_icmp_bits {
     723                 :            :         union {
     724                 :            :                 u8 icmp_dw1[0x20];
     725                 :            :                 struct {
     726                 :            :                         u8 type[0x8];
     727                 :            :                         u8 code[0x8];
     728                 :            :                         u8 cksum[0x10];
     729                 :            :                 };
     730                 :            :         };
     731                 :            :         union {
     732                 :            :                 u8 icmp_dw2[0x20];
     733                 :            :                 struct {
     734                 :            :                         u8 ident[0x10];
     735                 :            :                         u8 seq_nb[0x10];
     736                 :            :                 };
     737                 :            :         };
     738                 :            : };
     739                 :            : 
     740                 :            : struct mlx5dr_definer {
     741                 :            :         enum mlx5dr_definer_type type;
     742                 :            :         uint8_t dw_selector[DW_SELECTORS];
     743                 :            :         uint8_t byte_selector[BYTE_SELECTORS];
     744                 :            :         struct mlx5dr_rule_match_tag mask;
     745                 :            :         struct mlx5dr_devx_obj *obj;
     746                 :            : };
     747                 :            : 
     748                 :            : struct mlx5dr_definer_cache {
     749                 :            :         LIST_HEAD(definer_head, mlx5dr_definer_cache_item) head;
     750                 :            : };
     751                 :            : 
     752                 :            : struct mlx5dr_definer_cache_item {
     753                 :            :         struct mlx5dr_definer definer;
     754                 :            :         uint32_t refcount;
     755                 :            :         LIST_ENTRY(mlx5dr_definer_cache_item) next;
     756                 :            : };
     757                 :            : 
     758                 :            : static inline bool
     759                 :            : mlx5dr_definer_is_jumbo(struct mlx5dr_definer *definer)
     760                 :            : {
     761   [ #  #  #  #  :          0 :         return (definer->type == MLX5DR_DEFINER_TYPE_JUMBO);
          #  #  #  #  #  
                      # ]
     762                 :            : }
     763                 :            : 
     764                 :            : void mlx5dr_definer_create_tag(const struct rte_flow_item *items,
     765                 :            :                                struct mlx5dr_definer_fc *fc,
     766                 :            :                                uint32_t fc_sz,
     767                 :            :                                uint8_t *tag);
     768                 :            : 
     769                 :            : void mlx5dr_definer_create_tag_range(const struct rte_flow_item *items,
     770                 :            :                                      struct mlx5dr_definer_fc *fc,
     771                 :            :                                      uint32_t fc_sz,
     772                 :            :                                      uint8_t *tag);
     773                 :            : 
     774                 :            : int mlx5dr_definer_get_id(struct mlx5dr_definer *definer);
     775                 :            : 
     776                 :            : int mlx5dr_definer_matcher_init(struct mlx5dr_context *ctx,
     777                 :            :                                 struct mlx5dr_matcher *matcher);
     778                 :            : 
     779                 :            : void mlx5dr_definer_matcher_uninit(struct mlx5dr_matcher *matcher);
     780                 :            : 
     781                 :            : int mlx5dr_definer_init_cache(struct mlx5dr_definer_cache **cache);
     782                 :            : 
     783                 :            : void mlx5dr_definer_uninit_cache(struct mlx5dr_definer_cache *cache);
     784                 :            : 
     785                 :            : int mlx5dr_definer_compare(struct mlx5dr_definer *definer_a,
     786                 :            :                            struct mlx5dr_definer *definer_b);
     787                 :            : 
     788                 :            : #endif

Generated by: LCOV version 1.14