xref: /dpdk/drivers/net/cxgbe/cxgbe_flow.h (revision fb7ad441d43d4152cb7bde992a1136c20d9166e9)
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 "mps_tcam.h"
11 #include "cxgbe.h"
12 
13 /* Max poll time is 100 * 100msec = 10 sec */
14 #define CXGBE_FLOW_POLL_MS  100 /* 100 milliseconds */
15 #define CXGBE_FLOW_POLL_CNT 100 /* Max number of times to poll */
16 
17 struct chrte_fparse {
18 	int (*fptr)(const void *mask, /* currently supported mask */
19 		    const struct rte_flow_item *item, /* user input */
20 		    struct ch_filter_specification *fs, /* where to parse */
21 		    struct rte_flow_error *e);
22 	const void *dmask; /* Specify what is supported by chelsio by default*/
23 };
24 
25 struct rte_flow {
26 	struct filter_entry *f;
27 	struct ch_filter_specification fs; /* temp, to create filter */
28 	struct chrte_fparse *item_parser;
29 	/*
30 	 * filter_entry doesn't store user priority.
31 	 * Post creation of filter this will indicate the
32 	 * flow index (fidx) for both hash and tcam filters
33 	 */
34 	unsigned int fidx;
35 	struct rte_eth_dev *dev;
36 };
37 
38 int cxgbe_dev_flow_ops_get(struct rte_eth_dev *dev,
39 			   const struct rte_flow_ops **ops);
40 
41 #endif /* _CXGBE_FLOW_H_ */
42