net/cxgbe: parse and validate flows
[dpdk.git] / drivers / net / cxgbe / cxgbe_flow.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Chelsio Communications.
3  * All rights reserved.
4  */
5 #ifndef _CXGBE_FLOW_H_
6 #define _CXGBE_FLOW_H_
7
8 #include <rte_flow_driver.h>
9 #include "cxgbe_filter.h"
10
11 struct chrte_fparse {
12         int (*fptr)(const void *mask, /* currently supported mask */
13                     const struct rte_flow_item *item, /* user input */
14                     struct ch_filter_specification *fs, /* where to parse */
15                     struct rte_flow_error *e);
16         const void *dmask; /* Specify what is supported by chelsio by default*/
17 };
18
19 struct rte_flow {
20         struct filter_entry *f;
21         struct ch_filter_specification fs; /* temp, to create filter */
22         struct chrte_fparse *item_parser;
23         /*
24          * filter_entry doesn't store user priority.
25          * Post creation of filter this will indicate the
26          * flow index (fidx) for both hash and tcam filters
27          */
28         unsigned int fidx;
29         struct rte_eth_dev *dev;
30 };
31
32 int
33 cxgbe_dev_filter_ctrl(struct rte_eth_dev *dev,
34                       enum rte_filter_type filter_type,
35                       enum rte_filter_op filter_op,
36                       void *arg);
37
38 #endif /* _CXGBE_FLOW_H_ */