1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2020 Broadcom
6 #ifndef _ULP_RTE_PARSER_H_
7 #define _ULP_RTE_PARSER_H_
11 #include <rte_flow_driver.h>
12 #include "ulp_template_db.h"
13 #include "ulp_template_struct.h"
15 /* defines to be used in the tunnel header parsing */
16 #define BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS 2
17 #define BNXT_ULP_ENCAP_IPV4_ID_PROTO 6
18 #define BNXT_ULP_ENCAP_IPV4_DEST_IP 4
19 #define BNXT_ULP_ENCAP_IPV4_SIZE 12
20 #define BNXT_ULP_ENCAP_IPV6_SIZE 8
21 #define BNXT_ULP_ENCAP_UDP_SIZE 4
23 /* Function to handle the parsing of the RTE port id. */
25 ulp_rte_parser_svif_process(struct ulp_rte_parser_params *params);
27 /* Function to handle the implicit VNIC RTE port id */
29 ulp_rte_parser_vnic_process(struct ulp_rte_parser_params *params);
32 * Function to handle the parsing of RTE Flows and placing
33 * the RTE flow items into the ulp structures.
36 bnxt_ulp_rte_parser_hdr_parse(const struct rte_flow_item pattern[],
37 struct ulp_rte_parser_params *params);
40 * Function to handle the parsing of RTE Flows and placing
41 * the RTE flow actions into the ulp structures.
44 bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],
45 struct ulp_rte_parser_params *params);
47 /* Function to handle the parsing of RTE Flow item PF Header. */
49 ulp_rte_pf_hdr_handler(const struct rte_flow_item *item,
50 struct ulp_rte_parser_params *params);
52 /* Function to handle the parsing of RTE Flow item VF Header. */
54 ulp_rte_vf_hdr_handler(const struct rte_flow_item *item,
55 struct ulp_rte_parser_params *params);
57 /* Function to handle the parsing of RTE Flow item port id Header. */
59 ulp_rte_port_id_hdr_handler(const struct rte_flow_item *item,
60 struct ulp_rte_parser_params *params);
62 /* Function to handle the parsing of RTE Flow item port Header. */
64 ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item,
65 struct ulp_rte_parser_params *params);
67 /* Function to handle the RTE item Ethernet Header. */
69 ulp_rte_eth_hdr_handler(const struct rte_flow_item *item,
70 struct ulp_rte_parser_params *params);
72 /* Function to handle the parsing of RTE Flow item Vlan Header. */
74 ulp_rte_vlan_hdr_handler(const struct rte_flow_item *item,
75 struct ulp_rte_parser_params *params);
77 /* Function to handle the parsing of RTE Flow item IPV4 Header. */
79 ulp_rte_ipv4_hdr_handler(const struct rte_flow_item *item,
80 struct ulp_rte_parser_params *params);
82 /* Function to handle the parsing of RTE Flow item IPV6 Header. */
84 ulp_rte_ipv6_hdr_handler(const struct rte_flow_item *item,
85 struct ulp_rte_parser_params *params);
87 /* Function to handle the parsing of RTE Flow item UDP Header. */
89 ulp_rte_udp_hdr_handler(const struct rte_flow_item *item,
90 struct ulp_rte_parser_params *params);
92 /* Function to handle the parsing of RTE Flow item TCP Header. */
94 ulp_rte_tcp_hdr_handler(const struct rte_flow_item *item,
95 struct ulp_rte_parser_params *params);
97 /* Function to handle the parsing of RTE Flow item Vxlan Header. */
99 ulp_rte_vxlan_hdr_handler(const struct rte_flow_item *item,
100 struct ulp_rte_parser_params *params);
102 /* Function to handle the parsing of RTE Flow item void Header. */
104 ulp_rte_void_hdr_handler(const struct rte_flow_item *item,
105 struct ulp_rte_parser_params *params);
107 /* Function to handle the parsing of RTE Flow action void Header. */
109 ulp_rte_void_act_handler(const struct rte_flow_action *action_item,
110 struct ulp_rte_parser_params *params);
112 /* Function to handle the parsing of RTE Flow action RSS Header. */
114 ulp_rte_rss_act_handler(const struct rte_flow_action *action_item,
115 struct ulp_rte_parser_params *params);
117 /* Function to handle the parsing of RTE Flow action Mark Header. */
119 ulp_rte_mark_act_handler(const struct rte_flow_action *action_item,
120 struct ulp_rte_parser_params *params);
122 /* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
124 ulp_rte_vxlan_encap_act_handler(const struct rte_flow_action *action_item,
125 struct ulp_rte_parser_params *params);
127 /* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
129 ulp_rte_vxlan_decap_act_handler(const struct rte_flow_action *action_item,
130 struct ulp_rte_parser_params *params);
132 /* Function to handle the parsing of RTE Flow action drop Header. */
134 ulp_rte_drop_act_handler(const struct rte_flow_action *action_item,
135 struct ulp_rte_parser_params *params);
137 /* Function to handle the parsing of RTE Flow action count. */
139 ulp_rte_count_act_handler(const struct rte_flow_action *action_item,
140 struct ulp_rte_parser_params *params);
142 /* Function to handle the parsing of RTE Flow action PF. */
144 ulp_rte_pf_act_handler(const struct rte_flow_action *action_item,
145 struct ulp_rte_parser_params *params);
147 /* Function to handle the parsing of RTE Flow action VF. */
149 ulp_rte_vf_act_handler(const struct rte_flow_action *action_item,
150 struct ulp_rte_parser_params *params);
152 /* Function to handle the parsing of RTE Flow action port_id. */
154 ulp_rte_port_id_act_handler(const struct rte_flow_action *act_item,
155 struct ulp_rte_parser_params *params);
157 /* Function to handle the parsing of RTE Flow action phy_port. */
159 ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
160 struct ulp_rte_parser_params *params);
162 #endif /* _ULP_RTE_PARSER_H_ */