Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
5c5670fa YG |
2 | #ifndef __NET_TC_SAMPLE_H |
3 | #define __NET_TC_SAMPLE_H | |
4 | ||
5 | #include <net/act_api.h> | |
6 | #include <linux/tc_act/tc_sample.h> | |
7 | #include <net/psample.h> | |
8 | ||
9 | struct tcf_sample { | |
10 | struct tc_action common; | |
11 | u32 rate; | |
12 | bool truncate; | |
13 | u32 trunc_size; | |
14 | struct psample_group __rcu *psample_group; | |
15 | u32 psample_group_num; | |
16 | struct list_head tcfm_list; | |
5c5670fa YG |
17 | }; |
18 | #define to_sample(a) ((struct tcf_sample *)a) | |
19 | ||
20 | static inline bool is_tcf_sample(const struct tc_action *a) | |
21 | { | |
22 | #ifdef CONFIG_NET_CLS_ACT | |
eddd2cf1 | 23 | return a->ops && a->ops->id == TCA_ID_SAMPLE; |
5c5670fa YG |
24 | #else |
25 | return false; | |
26 | #endif | |
27 | } | |
28 | ||
29 | static inline __u32 tcf_sample_rate(const struct tc_action *a) | |
30 | { | |
31 | return to_sample(a)->rate; | |
32 | } | |
33 | ||
34 | static inline bool tcf_sample_truncate(const struct tc_action *a) | |
35 | { | |
36 | return to_sample(a)->truncate; | |
37 | } | |
38 | ||
39 | static inline int tcf_sample_trunc_size(const struct tc_action *a) | |
40 | { | |
41 | return to_sample(a)->trunc_size; | |
42 | } | |
43 | ||
44 | static inline struct psample_group * | |
45 | tcf_sample_psample_group(const struct tc_action *a) | |
46 | { | |
67cbf7de | 47 | return rcu_dereference_rtnl(to_sample(a)->psample_group); |
5c5670fa YG |
48 | } |
49 | ||
50 | #endif /* __NET_TC_SAMPLE_H */ |