xref: /openbmc/linux/drivers/net/ethernet/marvell/prestera/prestera_flow.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
18b474a9fSSerhiy Boiko /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
28b474a9fSSerhiy Boiko /* Copyright (c) 2020 Marvell International Ltd. All rights reserved. */
38b474a9fSSerhiy Boiko 
48b474a9fSSerhiy Boiko #ifndef _PRESTERA_FLOW_H_
58b474a9fSSerhiy Boiko #define _PRESTERA_FLOW_H_
68b474a9fSSerhiy Boiko 
78b474a9fSSerhiy Boiko #include <net/flow_offload.h>
88b474a9fSSerhiy Boiko 
98b474a9fSSerhiy Boiko struct prestera_port;
1047327e19SVolodymyr Mytnyk struct prestera_switch;
1147327e19SVolodymyr Mytnyk 
1247327e19SVolodymyr Mytnyk struct prestera_flow_block_binding {
1347327e19SVolodymyr Mytnyk 	struct list_head list;
1447327e19SVolodymyr Mytnyk 	struct prestera_port *port;
1547327e19SVolodymyr Mytnyk 	int span_id;
1647327e19SVolodymyr Mytnyk };
1747327e19SVolodymyr Mytnyk 
1847327e19SVolodymyr Mytnyk struct prestera_flow_block {
1947327e19SVolodymyr Mytnyk 	struct list_head binding_list;
2047327e19SVolodymyr Mytnyk 	struct prestera_switch *sw;
2147327e19SVolodymyr Mytnyk 	struct net *net;
2247327e19SVolodymyr Mytnyk 	struct prestera_acl_ruleset *ruleset_zero;
2347327e19SVolodymyr Mytnyk 	struct flow_block_cb *block_cb;
24fa5d824cSVolodymyr Mytnyk 	struct list_head template_list;
25*44af9571SMaksym Glubokiy 	struct {
26*44af9571SMaksym Glubokiy 		u32 prio_min;
27*44af9571SMaksym Glubokiy 		u32 prio_max;
28*44af9571SMaksym Glubokiy 		bool bound;
29*44af9571SMaksym Glubokiy 	} mall;
30604ba230SVolodymyr Mytnyk 	unsigned int rule_count;
31702e7014SMaksym Glubokiy 	bool ingress;
3247327e19SVolodymyr Mytnyk };
338b474a9fSSerhiy Boiko 
348b474a9fSSerhiy Boiko int prestera_flow_block_setup(struct prestera_port *port,
358b474a9fSSerhiy Boiko 			      struct flow_block_offload *f);
368b474a9fSSerhiy Boiko 
378b474a9fSSerhiy Boiko #endif /* _PRESTERA_FLOW_H_ */
38