DPDK 23.11.0
Loading...
Searching...
No Matches
rte_flow_driver.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016 6WIND S.A.
3 * Copyright 2016 Mellanox Technologies, Ltd
4 */
5
6#ifndef RTE_FLOW_DRIVER_H_
7#define RTE_FLOW_DRIVER_H_
8
18#include <stdint.h>
19
20#include "rte_ethdev.h"
21#include "ethdev_driver.h"
22#include "rte_flow.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
41 int (*validate)
42 (struct rte_eth_dev *,
43 const struct rte_flow_attr *,
44 const struct rte_flow_item [],
45 const struct rte_flow_action [],
46 struct rte_flow_error *);
48 struct rte_flow *(*create)
49 (struct rte_eth_dev *,
50 const struct rte_flow_attr *,
51 const struct rte_flow_item [],
52 const struct rte_flow_action [],
53 struct rte_flow_error *);
55 int (*destroy)
56 (struct rte_eth_dev *,
57 struct rte_flow *,
58 struct rte_flow_error *);
60 int (*flush)
61 (struct rte_eth_dev *,
62 struct rte_flow_error *);
64 int (*query)
65 (struct rte_eth_dev *,
66 struct rte_flow *,
67 const struct rte_flow_action *,
68 void *,
69 struct rte_flow_error *);
71 int (*isolate)
72 (struct rte_eth_dev *,
73 int,
74 struct rte_flow_error *);
76 int (*dev_dump)
77 (struct rte_eth_dev *dev,
78 struct rte_flow *flow,
79 FILE *file,
80 struct rte_flow_error *error);
83 (struct rte_eth_dev *dev,
84 void **context,
85 uint32_t nb_contexts,
86 struct rte_flow_error *err);
89 (struct rte_eth_dev *dev,
90 uint32_t queue_id,
91 void **contexts,
92 uint32_t nb_contexts,
93 struct rte_flow_error *error);
95 struct rte_flow_action_handle *(*action_handle_create)
96 (struct rte_eth_dev *dev,
97 const struct rte_flow_indir_action_conf *conf,
98 const struct rte_flow_action *action,
99 struct rte_flow_error *error);
102 (struct rte_eth_dev *dev,
103 struct rte_flow_action_handle *handle,
104 struct rte_flow_error *error);
107 (struct rte_eth_dev *dev,
108 struct rte_flow_action_handle *handle,
109 const void *update,
110 struct rte_flow_error *error);
113 (struct rte_eth_dev *dev,
114 const struct rte_flow_action_handle *handle,
115 void *data,
116 struct rte_flow_error *error);
119 (struct rte_eth_dev *dev,
120 struct rte_flow_action_handle *handle,
121 const void *update, void *query,
122 enum rte_flow_query_update_mode qu_mode,
123 struct rte_flow_error *error);
125 struct rte_flow_action_list_handle *(*action_list_handle_create)
126 (struct rte_eth_dev *dev,
127 const struct rte_flow_indir_action_conf *conf,
128 const struct rte_flow_action actions[],
129 struct rte_flow_error *error);
132 (struct rte_eth_dev *dev,
133 struct rte_flow_action_list_handle *handle,
134 struct rte_flow_error *error);
137 (struct rte_eth_dev *dev,
138 struct rte_flow_tunnel *tunnel,
139 struct rte_flow_action **pmd_actions,
140 uint32_t *num_of_actions,
141 struct rte_flow_error *err);
144 (struct rte_eth_dev *dev,
145 struct rte_flow_tunnel *tunnel,
146 struct rte_flow_item **pmd_items,
147 uint32_t *num_of_items,
148 struct rte_flow_error *err);
151 (struct rte_eth_dev *dev,
152 struct rte_mbuf *m,
153 struct rte_flow_restore_info *info,
154 struct rte_flow_error *err);
157 (struct rte_eth_dev *dev,
158 struct rte_flow_action *pmd_actions,
159 uint32_t num_of_actions,
160 struct rte_flow_error *err);
163 (struct rte_eth_dev *dev,
164 struct rte_flow_item *pmd_items,
165 uint32_t num_of_items,
166 struct rte_flow_error *err);
169 (struct rte_eth_dev *dev,
170 uint16_t *proxy_port_id,
171 struct rte_flow_error *error);
172 struct rte_flow_item_flex_handle *(*flex_item_create)
173 (struct rte_eth_dev *dev,
174 const struct rte_flow_item_flex_conf *conf,
175 struct rte_flow_error *error);
176 int (*flex_item_release)
177 (struct rte_eth_dev *dev,
178 const struct rte_flow_item_flex_handle *handle,
179 struct rte_flow_error *error);
181 int (*info_get)
182 (struct rte_eth_dev *dev,
183 struct rte_flow_port_info *port_info,
184 struct rte_flow_queue_info *queue_info,
185 struct rte_flow_error *err);
188 (struct rte_eth_dev *dev,
189 const struct rte_flow_port_attr *port_attr,
190 uint16_t nb_queue,
191 const struct rte_flow_queue_attr *queue_attr[],
192 struct rte_flow_error *err);
194 struct rte_flow_pattern_template *(*pattern_template_create)
195 (struct rte_eth_dev *dev,
196 const struct rte_flow_pattern_template_attr *template_attr,
197 const struct rte_flow_item pattern[],
198 struct rte_flow_error *err);
201 (struct rte_eth_dev *dev,
202 struct rte_flow_pattern_template *pattern_template,
203 struct rte_flow_error *err);
205 struct rte_flow_actions_template *(*actions_template_create)
206 (struct rte_eth_dev *dev,
207 const struct rte_flow_actions_template_attr *template_attr,
208 const struct rte_flow_action actions[],
209 const struct rte_flow_action masks[],
210 struct rte_flow_error *err);
213 (struct rte_eth_dev *dev,
214 struct rte_flow_actions_template *actions_template,
215 struct rte_flow_error *err);
217 struct rte_flow_template_table *(*template_table_create)
218 (struct rte_eth_dev *dev,
219 const struct rte_flow_template_table_attr *table_attr,
220 struct rte_flow_pattern_template *pattern_templates[],
221 uint8_t nb_pattern_templates,
222 struct rte_flow_actions_template *actions_templates[],
223 uint8_t nb_actions_templates,
224 struct rte_flow_error *err);
227 (struct rte_eth_dev *dev,
228 struct rte_flow_template_table *template_table,
229 struct rte_flow_error *err);
232 (struct rte_eth_dev *dev,
233 uint32_t group_id,
234 const struct rte_flow_group_attr *attr,
235 const struct rte_flow_action actions[],
236 struct rte_flow_error *err);
238 struct rte_flow *(*async_create)
239 (struct rte_eth_dev *dev,
240 uint32_t queue_id,
241 const struct rte_flow_op_attr *op_attr,
242 struct rte_flow_template_table *template_table,
243 const struct rte_flow_item pattern[],
244 uint8_t pattern_template_index,
245 const struct rte_flow_action actions[],
246 uint8_t actions_template_index,
247 void *user_data,
248 struct rte_flow_error *err);
250 struct rte_flow *(*async_create_by_index)
251 (struct rte_eth_dev *dev,
252 uint32_t queue_id,
253 const struct rte_flow_op_attr *op_attr,
254 struct rte_flow_template_table *template_table,
255 uint32_t rule_index,
256 const struct rte_flow_action actions[],
257 uint8_t actions_template_index,
258 void *user_data,
259 struct rte_flow_error *err);
262 (struct rte_eth_dev *dev,
263 uint32_t queue_id,
264 const struct rte_flow_op_attr *op_attr,
265 struct rte_flow *flow,
266 void *user_data,
267 struct rte_flow_error *err);
269 int (*push)
270 (struct rte_eth_dev *dev,
271 uint32_t queue_id,
272 struct rte_flow_error *err);
274 int (*pull)
275 (struct rte_eth_dev *dev,
276 uint32_t queue_id,
277 struct rte_flow_op_result res[],
278 uint16_t n_res,
279 struct rte_flow_error *error);
281 struct rte_flow_action_handle *(*async_action_handle_create)
282 (struct rte_eth_dev *dev,
283 uint32_t queue_id,
284 const struct rte_flow_op_attr *op_attr,
285 const struct rte_flow_indir_action_conf *indir_action_conf,
286 const struct rte_flow_action *action,
287 void *user_data,
288 struct rte_flow_error *err);
291 (struct rte_eth_dev *dev,
292 uint32_t queue_id,
293 const struct rte_flow_op_attr *op_attr,
294 struct rte_flow_action_handle *action_handle,
295 void *user_data,
296 struct rte_flow_error *error);
299 (struct rte_eth_dev *dev,
300 uint32_t queue_id,
301 const struct rte_flow_op_attr *op_attr,
302 struct rte_flow_action_handle *action_handle,
303 const void *update,
304 void *user_data,
305 struct rte_flow_error *error);
308 (struct rte_eth_dev *dev,
309 uint32_t queue_id,
310 const struct rte_flow_op_attr *op_attr,
311 const struct rte_flow_action_handle *action_handle,
312 void *data,
313 void *user_data,
314 struct rte_flow_error *error);
317 (struct rte_eth_dev *dev, uint32_t queue_id,
318 const struct rte_flow_op_attr *op_attr,
319 struct rte_flow_action_handle *action_handle,
320 const void *update, void *query,
321 enum rte_flow_query_update_mode qu_mode,
322 void *user_data, struct rte_flow_error *error);
325 (struct rte_eth_dev *dev,
326 struct rte_flow *flow,
327 const struct rte_flow_action actions[],
328 struct rte_flow_error *error);
331 (struct rte_eth_dev *dev,
332 uint32_t queue_id,
333 const struct rte_flow_op_attr *op_attr,
334 struct rte_flow *flow,
335 const struct rte_flow_action actions[],
336 uint8_t actions_template_index,
337 void *user_data,
338 struct rte_flow_error *error);
340 struct rte_flow_action_list_handle *
341 (*async_action_list_handle_create)
342 (struct rte_eth_dev *dev, uint32_t queue_id,
343 const struct rte_flow_op_attr *attr,
344 const struct rte_flow_indir_action_conf *conf,
345 const struct rte_flow_action *actions,
346 void *user_data, struct rte_flow_error *error);
349 (struct rte_eth_dev *dev, uint32_t queue_id,
350 const struct rte_flow_op_attr *op_attr,
351 struct rte_flow_action_list_handle *action_handle,
352 void *user_data, struct rte_flow_error *error);
355 (struct rte_eth_dev *dev,
356 const struct rte_flow_action_list_handle *handle,
357 const void **update, void **query,
359 struct rte_flow_error *error);
362 (struct rte_eth_dev *dev, uint32_t queue_id,
363 const struct rte_flow_op_attr *attr,
364 const struct rte_flow_action_list_handle *handle,
365 const void **update, void **query,
367 void *user_data, struct rte_flow_error *error);
370 (struct rte_eth_dev *dev, const struct rte_flow_template_table *table,
371 const struct rte_flow_item pattern[], uint8_t pattern_template_index,
372 uint32_t *hash, struct rte_flow_error *error);
373};
374
388const struct rte_flow_ops *
389rte_flow_ops_get(uint16_t port_id, struct rte_flow_error *error);
390
394int
396
397#ifdef __cplusplus
398}
399#endif
400
401#endif /* RTE_FLOW_DRIVER_H_ */
rte_flow_query_update_mode
Definition rte_flow.h:6369
const struct rte_flow_ops * rte_flow_ops_get(uint16_t port_id, struct rte_flow_error *error)
int rte_flow_restore_info_dynflag_register(void)
int(* pattern_template_destroy)(struct rte_eth_dev *dev, struct rte_flow_pattern_template *pattern_template, struct rte_flow_error *err)
int(* get_aged_flows)(struct rte_eth_dev *dev, void **context, uint32_t nb_contexts, struct rte_flow_error *err)
int(* async_destroy)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow *flow, void *user_data, struct rte_flow_error *err)
int(* tunnel_action_decap_release)(struct rte_eth_dev *dev, struct rte_flow_action *pmd_actions, uint32_t num_of_actions, struct rte_flow_error *err)
int(* action_handle_query)(struct rte_eth_dev *dev, const struct rte_flow_action_handle *handle, void *data, struct rte_flow_error *error)
int(* tunnel_match)(struct rte_eth_dev *dev, struct rte_flow_tunnel *tunnel, struct rte_flow_item **pmd_items, uint32_t *num_of_items, struct rte_flow_error *err)
int(* async_action_handle_query)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, const struct rte_flow_action_handle *action_handle, void *data, void *user_data, struct rte_flow_error *error)
int(* async_action_list_handle_query_update)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *attr, const struct rte_flow_action_list_handle *handle, const void **update, void **query, enum rte_flow_query_update_mode mode, void *user_data, struct rte_flow_error *error)
int(* async_action_list_handle_destroy)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_list_handle *action_handle, void *user_data, struct rte_flow_error *error)
int(* tunnel_item_release)(struct rte_eth_dev *dev, struct rte_flow_item *pmd_items, uint32_t num_of_items, struct rte_flow_error *err)
int(* action_handle_query_update)(struct rte_eth_dev *dev, struct rte_flow_action_handle *handle, const void *update, void *query, enum rte_flow_query_update_mode qu_mode, struct rte_flow_error *error)
int(* flow_calc_table_hash)(struct rte_eth_dev *dev, const struct rte_flow_template_table *table, const struct rte_flow_item pattern[], uint8_t pattern_template_index, uint32_t *hash, struct rte_flow_error *error)
int(* get_restore_info)(struct rte_eth_dev *dev, struct rte_mbuf *m, struct rte_flow_restore_info *info, struct rte_flow_error *err)
int(* tunnel_decap_set)(struct rte_eth_dev *dev, struct rte_flow_tunnel *tunnel, struct rte_flow_action **pmd_actions, uint32_t *num_of_actions, struct rte_flow_error *err)
int(* action_list_handle_query_update)(struct rte_eth_dev *dev, const struct rte_flow_action_list_handle *handle, const void **update, void **query, enum rte_flow_query_update_mode mode, struct rte_flow_error *error)
int(* get_q_aged_flows)(struct rte_eth_dev *dev, uint32_t queue_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error)
int(* actions_template_destroy)(struct rte_eth_dev *dev, struct rte_flow_actions_template *actions_template, struct rte_flow_error *err)
int(* group_set_miss_actions)(struct rte_eth_dev *dev, uint32_t group_id, const struct rte_flow_group_attr *attr, const struct rte_flow_action actions[], struct rte_flow_error *err)
int(* action_list_handle_destroy)(struct rte_eth_dev *dev, struct rte_flow_action_list_handle *handle, struct rte_flow_error *error)
int(* pull)(struct rte_eth_dev *dev, uint32_t queue_id, struct rte_flow_op_result res[], uint16_t n_res, struct rte_flow_error *error)
int(* async_actions_update)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow *flow, const struct rte_flow_action actions[], uint8_t actions_template_index, void *user_data, struct rte_flow_error *error)
int(* template_table_destroy)(struct rte_eth_dev *dev, struct rte_flow_template_table *template_table, struct rte_flow_error *err)
int(* async_action_handle_update)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, const void *update, void *user_data, struct rte_flow_error *error)
int(* validate)(struct rte_eth_dev *, const struct rte_flow_attr *, const struct rte_flow_item[], const struct rte_flow_action[], struct rte_flow_error *)
int(* info_get)(struct rte_eth_dev *dev, struct rte_flow_port_info *port_info, struct rte_flow_queue_info *queue_info, struct rte_flow_error *err)
int(* async_action_handle_destroy)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, void *user_data, struct rte_flow_error *error)
int(* pick_transfer_proxy)(struct rte_eth_dev *dev, uint16_t *proxy_port_id, struct rte_flow_error *error)
int(* configure)(struct rte_eth_dev *dev, const struct rte_flow_port_attr *port_attr, uint16_t nb_queue, const struct rte_flow_queue_attr *queue_attr[], struct rte_flow_error *err)
int(* action_handle_destroy)(struct rte_eth_dev *dev, struct rte_flow_action_handle *handle, struct rte_flow_error *error)
int(* push)(struct rte_eth_dev *dev, uint32_t queue_id, struct rte_flow_error *err)
int(* query)(struct rte_eth_dev *, struct rte_flow *, const struct rte_flow_action *, void *, struct rte_flow_error *)
int(* flush)(struct rte_eth_dev *, struct rte_flow_error *)
int(* destroy)(struct rte_eth_dev *, struct rte_flow *, struct rte_flow_error *)
int(* isolate)(struct rte_eth_dev *, int, struct rte_flow_error *)
int(* async_action_handle_query_update)(struct rte_eth_dev *dev, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, const void *update, void *query, enum rte_flow_query_update_mode qu_mode, void *user_data, struct rte_flow_error *error)
int(* actions_update)(struct rte_eth_dev *dev, struct rte_flow *flow, const struct rte_flow_action actions[], struct rte_flow_error *error)
int(* dev_dump)(struct rte_eth_dev *dev, struct rte_flow *flow, FILE *file, struct rte_flow_error *error)
int(* action_handle_update)(struct rte_eth_dev *dev, struct rte_flow_action_handle *handle, const void *update, struct rte_flow_error *error)