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