New upstream version 18.08
[deb_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 #include "cxgbe.h"
11
12 #define CXGBE_FLOW_POLL_US  10
13 #define CXGBE_FLOW_POLL_CNT 10
14
15 struct chrte_fparse {
16         int (*fptr)(const void *mask, /* currently supported mask */
17                     const struct rte_flow_item *item, /* user input */
18                     struct ch_filter_specification *fs, /* where to parse */
19                     struct rte_flow_error *e);
20         const void *dmask; /* Specify what is supported by chelsio by default*/
21 };
22
23 struct rte_flow {
24         struct filter_entry *f;
25         struct ch_filter_specification fs; /* temp, to create filter */
26         struct chrte_fparse *item_parser;
27         /*
28          * filter_entry doesn't store user priority.
29          * Post creation of filter this will indicate the
30          * flow index (fidx) for both hash and tcam filters
31          */
32         unsigned int fidx;
33         struct rte_eth_dev *dev;
34 };
35
36 int
37 cxgbe_dev_filter_ctrl(struct rte_eth_dev *dev,
38                       enum rte_filter_type filter_type,
39                       enum rte_filter_op filter_op,
40                       void *arg);
41
42 #endif /* _CXGBE_FLOW_H_ */