]>
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; | |
17 | struct rcu_head rcu; | |
18 | }; | |
19 | #define to_sample(a) ((struct tcf_sample *)a) | |
20 | ||
21 | static inline bool is_tcf_sample(const struct tc_action *a) | |
22 | { | |
23 | #ifdef CONFIG_NET_CLS_ACT | |
24 | return a->ops && a->ops->type == TCA_ACT_SAMPLE; | |
25 | #else | |
26 | return false; | |
27 | #endif | |
28 | } | |
29 | ||
30 | static inline __u32 tcf_sample_rate(const struct tc_action *a) | |
31 | { | |
32 | return to_sample(a)->rate; | |
33 | } | |
34 | ||
35 | static inline bool tcf_sample_truncate(const struct tc_action *a) | |
36 | { | |
37 | return to_sample(a)->truncate; | |
38 | } | |
39 | ||
40 | static inline int tcf_sample_trunc_size(const struct tc_action *a) | |
41 | { | |
42 | return to_sample(a)->trunc_size; | |
43 | } | |
44 | ||
45 | static inline struct psample_group * | |
46 | tcf_sample_psample_group(const struct tc_action *a) | |
47 | { | |
48 | return rcu_dereference(to_sample(a)->psample_group); | |
49 | } | |
50 | ||
51 | #endif /* __NET_TC_SAMPLE_H */ |