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_matchall_ingress_entry { |
21 | enum cxgb4_matchall_state state; /* Current MATCHALL offload state */ |
22 | u32 tid[CXGB4_FILTER_TYPE_MAX]; /* Index to hardware filter entries */ |
23 | /* Filter entries */ |
24 | struct ch_filter_specification fs[CXGB4_FILTER_TYPE_MAX]; |
25 | u16 viid_mirror; /* Identifier for allocated Mirror VI */ |
26 | u64 bytes; /* # of bytes hitting the filter */ |
27 | u64 packets; /* # of packets hitting the filter */ |
28 | u64 last_used; /* Last updated jiffies time */ |
29 | }; |
30 | |
31 | struct cxgb4_tc_port_matchall { |
32 | struct cxgb4_matchall_egress_entry egress; /* Egress offload info */ |
33 | struct cxgb4_matchall_ingress_entry ingress; /* Ingress offload info */ |
34 | }; |
35 | |
36 | struct cxgb4_tc_matchall { |
37 | struct cxgb4_tc_port_matchall *port_matchall; /* Per port entry */ |
38 | }; |
39 | |
40 | int cxgb4_tc_matchall_replace(struct net_device *dev, |
41 | struct tc_cls_matchall_offload *cls_matchall, |
42 | bool ingress); |
43 | int cxgb4_tc_matchall_destroy(struct net_device *dev, |
44 | struct tc_cls_matchall_offload *cls_matchall, |
45 | bool ingress); |
46 | int cxgb4_tc_matchall_stats(struct net_device *dev, |
47 | struct tc_cls_matchall_offload *cls_matchall); |
48 | |
49 | int cxgb4_init_tc_matchall(struct adapter *adap); |
50 | void cxgb4_cleanup_tc_matchall(struct adapter *adap); |
51 | #endif /* __CXGB4_TC_MATCHALL_H__ */ |
52 | |