1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright (C) 2019 Chelsio Communications.  All rights reserved. */
3 
4 #ifndef __CXGB4_TC_MATCHALL_H__
5 #define __CXGB4_TC_MATCHALL_H__
6 
7 #include <net/pkt_cls.h>
8 
9 enum cxgb4_matchall_state {
10 	CXGB4_MATCHALL_STATE_DISABLED = 0,
11 	CXGB4_MATCHALL_STATE_ENABLED,
12 };
13 
14 struct cxgb4_matchall_egress_entry {
15 	enum cxgb4_matchall_state state; /* Current MATCHALL offload state */
16 	u8 hwtc; /* Traffic class bound to port */
17 	u64 cookie; /* Used to identify the MATCHALL rule offloaded */
18 };
19 
20 struct cxgb4_tc_port_matchall {
21 	struct cxgb4_matchall_egress_entry egress; /* Egress offload info */
22 };
23 
24 struct cxgb4_tc_matchall {
25 	struct cxgb4_tc_port_matchall *port_matchall; /* Per port entry */
26 };
27 
28 int cxgb4_tc_matchall_replace(struct net_device *dev,
29 			      struct tc_cls_matchall_offload *cls_matchall);
30 int cxgb4_tc_matchall_destroy(struct net_device *dev,
31 			      struct tc_cls_matchall_offload *cls_matchall);
32 
33 int cxgb4_init_tc_matchall(struct adapter *adap);
34 void cxgb4_cleanup_tc_matchall(struct adapter *adap);
35 #endif /* __CXGB4_TC_MATCHALL_H__ */
36