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);
28 * Function to handle the parsing of RTE Flows and placing
29 * the RTE flow items into the ulp structures.
32 bnxt_ulp_rte_parser_hdr_parse(const struct rte_flow_item pattern[],
33 struct ulp_rte_parser_params *params);
36 * Function to handle the parsing of RTE Flows and placing
37 * the RTE flow actions into the ulp structures.
40 bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],
41 struct ulp_rte_parser_params *params);
43 /* Function to handle the parsing of RTE Flow item PF Header. */
45 ulp_rte_pf_hdr_handler(const struct rte_flow_item *item,
46 struct ulp_rte_parser_params *params);
48 /* Function to handle the parsing of RTE Flow item VF Header. */
50 ulp_rte_vf_hdr_handler(const struct rte_flow_item *item,
51 struct ulp_rte_parser_params *params);
53 /* Function to handle the parsing of RTE Flow item port id Header. */
55 ulp_rte_port_id_hdr_handler(const struct rte_flow_item *item,
56 struct ulp_rte_parser_params *params);
58 /* Function to handle the parsing of RTE Flow item port Header. */
60 ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item,
61 struct ulp_rte_parser_params *params);
63 /* Function to handle the RTE item Ethernet Header. */
65 ulp_rte_eth_hdr_handler(const struct rte_flow_item *item,
66 struct ulp_rte_parser_params *params);
68 /* Function to handle the parsing of RTE Flow item Vlan Header. */
70 ulp_rte_vlan_hdr_handler(const struct rte_flow_item *item,
71 struct ulp_rte_parser_params *params);
73 /* Function to handle the parsing of RTE Flow item IPV4 Header. */
75 ulp_rte_ipv4_hdr_handler(const struct rte_flow_item *item,
76 struct ulp_rte_parser_params *params);
78 /* Function to handle the parsing of RTE Flow item IPV6 Header. */
80 ulp_rte_ipv6_hdr_handler(const struct rte_flow_item *item,
81 struct ulp_rte_parser_params *params);
83 /* Function to handle the parsing of RTE Flow item UDP Header. */
85 ulp_rte_udp_hdr_handler(const struct rte_flow_item *item,
86 struct ulp_rte_parser_params *params);
88 /* Function to handle the parsing of RTE Flow item TCP Header. */
90 ulp_rte_tcp_hdr_handler(const struct rte_flow_item *item,
91 struct ulp_rte_parser_params *params);
93 /* Function to handle the parsing of RTE Flow item Vxlan Header. */
95 ulp_rte_vxlan_hdr_handler(const struct rte_flow_item *item,
96 struct ulp_rte_parser_params *params);
98 /* Function to handle the parsing of RTE Flow item void Header. */
100 ulp_rte_void_hdr_handler(const struct rte_flow_item *item,
101 struct ulp_rte_parser_params *params);
103 /* Function to handle the parsing of RTE Flow action void Header. */
105 ulp_rte_void_act_handler(const struct rte_flow_action *action_item,
106 struct ulp_rte_parser_params *params);
108 /* Function to handle the parsing of RTE Flow action RSS Header. */
110 ulp_rte_rss_act_handler(const struct rte_flow_action *action_item,
111 struct ulp_rte_parser_params *params);
113 /* Function to handle the parsing of RTE Flow action Mark Header. */
115 ulp_rte_mark_act_handler(const struct rte_flow_action *action_item,
116 struct ulp_rte_parser_params *params);
118 /* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
120 ulp_rte_vxlan_encap_act_handler(const struct rte_flow_action *action_item,
121 struct ulp_rte_parser_params *params);
123 /* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
125 ulp_rte_vxlan_decap_act_handler(const struct rte_flow_action *action_item,
126 struct ulp_rte_parser_params *params);
128 /* Function to handle the parsing of RTE Flow action drop Header. */
130 ulp_rte_drop_act_handler(const struct rte_flow_action *action_item,
131 struct ulp_rte_parser_params *params);
133 /* Function to handle the parsing of RTE Flow action count. */
135 ulp_rte_count_act_handler(const struct rte_flow_action *action_item,
136 struct ulp_rte_parser_params *params);
138 /* Function to handle the parsing of RTE Flow action PF. */
140 ulp_rte_pf_act_handler(const struct rte_flow_action *action_item,
141 struct ulp_rte_parser_params *params);
143 /* Function to handle the parsing of RTE Flow action VF. */
145 ulp_rte_vf_act_handler(const struct rte_flow_action *action_item,
146 struct ulp_rte_parser_params *params);
148 /* Function to handle the parsing of RTE Flow action port_id. */
150 ulp_rte_port_id_act_handler(const struct rte_flow_action *act_item,
151 struct ulp_rte_parser_params *params);
153 /* Function to handle the parsing of RTE Flow action phy_port. */
155 ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
156 struct ulp_rte_parser_params *params);
158 #endif /* _ULP_RTE_PARSER_H_ */