1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2014-2021 Broadcom 3 * All rights reserved. 4 */ 5 6 #include "ulp_template_db_enum.h" 7 #include "ulp_template_struct.h" 8 #include "ulp_rte_parser.h" 9 10 /* 11 * This structure has to be indexed based on the rte_flow_action_type that is 12 * part of DPDK. The below array is list of parsing functions for each of the 13 * flow actions that are supported. 14 */ 15 struct bnxt_ulp_rte_act_info ulp_act_info[] = { 16 [RTE_FLOW_ACTION_TYPE_END] = { 17 .act_type = BNXT_ULP_ACT_TYPE_END, 18 .proto_act_func = NULL 19 }, 20 [RTE_FLOW_ACTION_TYPE_VOID] = { 21 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 22 .proto_act_func = ulp_rte_void_act_handler 23 }, 24 [RTE_FLOW_ACTION_TYPE_PASSTHRU] = { 25 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 26 .proto_act_func = NULL 27 }, 28 [RTE_FLOW_ACTION_TYPE_JUMP] = { 29 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 30 .proto_act_func = ulp_rte_jump_act_handler 31 }, 32 [RTE_FLOW_ACTION_TYPE_MARK] = { 33 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 34 .proto_act_func = ulp_rte_mark_act_handler 35 }, 36 [RTE_FLOW_ACTION_TYPE_FLAG] = { 37 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 38 .proto_act_func = NULL 39 }, 40 [RTE_FLOW_ACTION_TYPE_QUEUE] = { 41 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 42 .proto_act_func = NULL 43 }, 44 [RTE_FLOW_ACTION_TYPE_DROP] = { 45 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 46 .proto_act_func = ulp_rte_drop_act_handler 47 }, 48 [RTE_FLOW_ACTION_TYPE_COUNT] = { 49 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 50 .proto_act_func = ulp_rte_count_act_handler 51 }, 52 [RTE_FLOW_ACTION_TYPE_RSS] = { 53 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 54 .proto_act_func = ulp_rte_rss_act_handler 55 }, 56 [RTE_FLOW_ACTION_TYPE_PF] = { 57 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 58 .proto_act_func = ulp_rte_pf_act_handler 59 }, 60 [RTE_FLOW_ACTION_TYPE_VF] = { 61 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 62 .proto_act_func = ulp_rte_vf_act_handler 63 }, 64 [RTE_FLOW_ACTION_TYPE_PHY_PORT] = { 65 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 66 .proto_act_func = ulp_rte_phy_port_act_handler 67 }, 68 [RTE_FLOW_ACTION_TYPE_PORT_ID] = { 69 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 70 .proto_act_func = ulp_rte_port_act_handler 71 }, 72 [RTE_FLOW_ACTION_TYPE_METER] = { 73 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 74 .proto_act_func = NULL 75 }, 76 [RTE_FLOW_ACTION_TYPE_SECURITY] = { 77 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 78 .proto_act_func = NULL 79 }, 80 [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = { 81 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 82 .proto_act_func = NULL 83 }, 84 [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = { 85 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 86 .proto_act_func = NULL 87 }, 88 [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = { 89 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 90 .proto_act_func = NULL 91 }, 92 [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = { 93 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 94 .proto_act_func = NULL 95 }, 96 [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = { 97 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 98 .proto_act_func = NULL 99 }, 100 [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = { 101 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 102 .proto_act_func = NULL 103 }, 104 [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = { 105 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 106 .proto_act_func = ulp_rte_of_pop_vlan_act_handler 107 }, 108 [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = { 109 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 110 .proto_act_func = ulp_rte_of_push_vlan_act_handler 111 }, 112 [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = { 113 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 114 .proto_act_func = ulp_rte_of_set_vlan_vid_act_handler 115 }, 116 [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = { 117 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 118 .proto_act_func = ulp_rte_of_set_vlan_pcp_act_handler 119 }, 120 [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = { 121 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 122 .proto_act_func = NULL 123 }, 124 [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = { 125 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 126 .proto_act_func = NULL 127 }, 128 [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = { 129 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 130 .proto_act_func = ulp_rte_vxlan_encap_act_handler 131 }, 132 [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = { 133 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 134 .proto_act_func = ulp_rte_vxlan_decap_act_handler 135 }, 136 [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = { 137 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 138 .proto_act_func = NULL 139 }, 140 [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = { 141 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 142 .proto_act_func = NULL 143 }, 144 [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = { 145 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 146 .proto_act_func = NULL 147 }, 148 [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = { 149 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 150 .proto_act_func = NULL 151 }, 152 [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = { 153 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 154 .proto_act_func = ulp_rte_set_ipv4_src_act_handler 155 }, 156 [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = { 157 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 158 .proto_act_func = ulp_rte_set_ipv4_dst_act_handler 159 }, 160 [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = { 161 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 162 .proto_act_func = NULL 163 }, 164 [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = { 165 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 166 .proto_act_func = NULL 167 }, 168 [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = { 169 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 170 .proto_act_func = ulp_rte_set_tp_src_act_handler 171 }, 172 [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = { 173 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 174 .proto_act_func = ulp_rte_set_tp_dst_act_handler 175 }, 176 [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = { 177 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 178 .proto_act_func = NULL 179 }, 180 [RTE_FLOW_ACTION_TYPE_DEC_TTL] = { 181 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 182 .proto_act_func = ulp_rte_dec_ttl_act_handler 183 }, 184 [RTE_FLOW_ACTION_TYPE_SET_TTL] = { 185 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 186 .proto_act_func = NULL 187 }, 188 [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = { 189 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 190 .proto_act_func = NULL 191 }, 192 [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = { 193 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 194 .proto_act_func = NULL 195 }, 196 [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = { 197 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 198 .proto_act_func = NULL 199 }, 200 [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = { 201 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 202 .proto_act_func = NULL 203 }, 204 [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = { 205 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 206 .proto_act_func = NULL 207 }, 208 [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = { 209 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 210 .proto_act_func = NULL 211 }, 212 [RTE_FLOW_ACTION_TYPE_SAMPLE] = { 213 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 214 .proto_act_func = ulp_rte_sample_act_handler 215 }, 216 [RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR] = { 217 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 218 .proto_act_func = ulp_rte_port_act_handler 219 }, 220 [RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT] = { 221 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 222 .proto_act_func = ulp_rte_port_act_handler 223 }, 224 }; 225 226 struct bnxt_ulp_rte_act_info ulp_vendor_act_info[] = { 227 [BNXT_RTE_FLOW_ACTION_TYPE_END - BNXT_RTE_FLOW_ACTION_TYPE_END] = { 228 .act_type = BNXT_ULP_ACT_TYPE_END, 229 .proto_act_func = NULL 230 }, 231 [BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ACTION_TYPE_END] = { 232 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, 233 .proto_act_func = ulp_vendor_vxlan_decap_act_handler 234 }, 235 [BNXT_RTE_FLOW_ACTION_TYPE_LAST - BNXT_RTE_FLOW_ACTION_TYPE_END] = { 236 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED, 237 .proto_act_func = NULL 238 } 239 }; 240 241 /* 242 * This table has to be indexed based on the rte_flow_item_type that is part of 243 * DPDK. The below array is list of parsing functions for each of the flow items 244 * that are supported. 245 */ 246 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = { 247 [RTE_FLOW_ITEM_TYPE_END] = { 248 .hdr_type = BNXT_ULP_HDR_TYPE_END, 249 .proto_hdr_func = NULL 250 }, 251 [RTE_FLOW_ITEM_TYPE_VOID] = { 252 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 253 .proto_hdr_func = ulp_rte_void_hdr_handler 254 }, 255 [RTE_FLOW_ITEM_TYPE_INVERT] = { 256 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 257 .proto_hdr_func = NULL 258 }, 259 [RTE_FLOW_ITEM_TYPE_ANY] = { 260 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 261 .proto_hdr_func = ulp_rte_item_any_handler 262 }, 263 [RTE_FLOW_ITEM_TYPE_PF] = { 264 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 265 .proto_hdr_func = ulp_rte_pf_hdr_handler 266 }, 267 [RTE_FLOW_ITEM_TYPE_VF] = { 268 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 269 .proto_hdr_func = ulp_rte_vf_hdr_handler 270 }, 271 [RTE_FLOW_ITEM_TYPE_PHY_PORT] = { 272 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 273 .proto_hdr_func = ulp_rte_phy_port_hdr_handler 274 }, 275 [RTE_FLOW_ITEM_TYPE_PORT_ID] = { 276 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 277 .proto_hdr_func = ulp_rte_port_hdr_handler 278 }, 279 [RTE_FLOW_ITEM_TYPE_RAW] = { 280 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 281 .proto_hdr_func = NULL 282 }, 283 [RTE_FLOW_ITEM_TYPE_ETH] = { 284 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 285 .proto_hdr_func = ulp_rte_eth_hdr_handler 286 }, 287 [RTE_FLOW_ITEM_TYPE_VLAN] = { 288 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 289 .proto_hdr_func = ulp_rte_vlan_hdr_handler 290 }, 291 [RTE_FLOW_ITEM_TYPE_IPV4] = { 292 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 293 .proto_hdr_func = ulp_rte_ipv4_hdr_handler 294 }, 295 [RTE_FLOW_ITEM_TYPE_IPV6] = { 296 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 297 .proto_hdr_func = ulp_rte_ipv6_hdr_handler 298 }, 299 [RTE_FLOW_ITEM_TYPE_ICMP] = { 300 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 301 .proto_hdr_func = ulp_rte_icmp_hdr_handler 302 }, 303 [RTE_FLOW_ITEM_TYPE_UDP] = { 304 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 305 .proto_hdr_func = ulp_rte_udp_hdr_handler 306 }, 307 [RTE_FLOW_ITEM_TYPE_TCP] = { 308 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 309 .proto_hdr_func = ulp_rte_tcp_hdr_handler 310 }, 311 [RTE_FLOW_ITEM_TYPE_SCTP] = { 312 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 313 .proto_hdr_func = NULL 314 }, 315 [RTE_FLOW_ITEM_TYPE_VXLAN] = { 316 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 317 .proto_hdr_func = ulp_rte_vxlan_hdr_handler 318 }, 319 [RTE_FLOW_ITEM_TYPE_E_TAG] = { 320 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 321 .proto_hdr_func = NULL 322 }, 323 [RTE_FLOW_ITEM_TYPE_NVGRE] = { 324 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 325 .proto_hdr_func = NULL 326 }, 327 [RTE_FLOW_ITEM_TYPE_MPLS] = { 328 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 329 .proto_hdr_func = NULL 330 }, 331 [RTE_FLOW_ITEM_TYPE_GRE] = { 332 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 333 .proto_hdr_func = ulp_rte_gre_hdr_handler 334 }, 335 [RTE_FLOW_ITEM_TYPE_FUZZY] = { 336 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 337 .proto_hdr_func = NULL 338 }, 339 [RTE_FLOW_ITEM_TYPE_GTP] = { 340 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 341 .proto_hdr_func = NULL 342 }, 343 [RTE_FLOW_ITEM_TYPE_GTPC] = { 344 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 345 .proto_hdr_func = NULL 346 }, 347 [RTE_FLOW_ITEM_TYPE_GTPU] = { 348 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 349 .proto_hdr_func = NULL 350 }, 351 [RTE_FLOW_ITEM_TYPE_ESP] = { 352 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 353 .proto_hdr_func = NULL 354 }, 355 [RTE_FLOW_ITEM_TYPE_GENEVE] = { 356 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 357 .proto_hdr_func = NULL 358 }, 359 [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = { 360 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 361 .proto_hdr_func = NULL 362 }, 363 [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = { 364 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 365 .proto_hdr_func = NULL 366 }, 367 [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = { 368 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 369 .proto_hdr_func = NULL 370 }, 371 [RTE_FLOW_ITEM_TYPE_ICMP6] = { 372 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 373 .proto_hdr_func = ulp_rte_icmp6_hdr_handler 374 }, 375 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = { 376 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 377 .proto_hdr_func = NULL 378 }, 379 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = { 380 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 381 .proto_hdr_func = NULL 382 }, 383 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = { 384 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 385 .proto_hdr_func = NULL 386 }, 387 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = { 388 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 389 .proto_hdr_func = NULL 390 }, 391 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = { 392 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 393 .proto_hdr_func = NULL 394 }, 395 [RTE_FLOW_ITEM_TYPE_MARK] = { 396 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 397 .proto_hdr_func = NULL 398 }, 399 [RTE_FLOW_ITEM_TYPE_META] = { 400 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 401 .proto_hdr_func = NULL 402 }, 403 [RTE_FLOW_ITEM_TYPE_GRE_KEY] = { 404 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 405 .proto_hdr_func = NULL 406 }, 407 [RTE_FLOW_ITEM_TYPE_GTP_PSC] = { 408 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 409 .proto_hdr_func = NULL 410 }, 411 [RTE_FLOW_ITEM_TYPE_PPPOES] = { 412 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 413 .proto_hdr_func = NULL 414 }, 415 [RTE_FLOW_ITEM_TYPE_PPPOED] = { 416 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 417 .proto_hdr_func = NULL 418 }, 419 [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = { 420 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 421 .proto_hdr_func = NULL 422 }, 423 [RTE_FLOW_ITEM_TYPE_NSH] = { 424 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 425 .proto_hdr_func = NULL 426 }, 427 [RTE_FLOW_ITEM_TYPE_IGMP] = { 428 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 429 .proto_hdr_func = NULL 430 }, 431 [RTE_FLOW_ITEM_TYPE_AH] = { 432 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 433 .proto_hdr_func = NULL 434 }, 435 [RTE_FLOW_ITEM_TYPE_HIGIG2] = { 436 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 437 .proto_hdr_func = NULL 438 }, 439 [RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR] = { 440 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 441 .proto_hdr_func = ulp_rte_port_hdr_handler 442 }, 443 [RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT] = { 444 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 445 .proto_hdr_func = ulp_rte_port_hdr_handler 446 } 447 }; 448 449 struct bnxt_ulp_rte_hdr_info ulp_vendor_hdr_info[] = { 450 [BNXT_RTE_FLOW_ITEM_TYPE_END - BNXT_RTE_FLOW_ITEM_TYPE_END] = { 451 .hdr_type = BNXT_ULP_HDR_TYPE_END, 452 .proto_hdr_func = NULL 453 }, 454 [BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ITEM_TYPE_END] = { 455 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, 456 .proto_hdr_func = ulp_rte_vendor_vxlan_decap_hdr_handler 457 }, 458 [BNXT_RTE_FLOW_ITEM_TYPE_LAST - BNXT_RTE_FLOW_ITEM_TYPE_END] = { 459 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED, 460 .proto_hdr_func = NULL 461 }, 462 463 }; 464