1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __NET_TC_CTINFO_H 3*4882a593Smuzhiyun #define __NET_TC_CTINFO_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <net/act_api.h> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun struct tcf_ctinfo_params { 8*4882a593Smuzhiyun struct rcu_head rcu; 9*4882a593Smuzhiyun struct net *net; 10*4882a593Smuzhiyun u32 dscpmask; 11*4882a593Smuzhiyun u32 dscpstatemask; 12*4882a593Smuzhiyun u32 cpmarkmask; 13*4882a593Smuzhiyun u16 zone; 14*4882a593Smuzhiyun u8 mode; 15*4882a593Smuzhiyun u8 dscpmaskshift; 16*4882a593Smuzhiyun }; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct tcf_ctinfo { 19*4882a593Smuzhiyun struct tc_action common; 20*4882a593Smuzhiyun struct tcf_ctinfo_params __rcu *params; 21*4882a593Smuzhiyun u64 stats_dscp_set; 22*4882a593Smuzhiyun u64 stats_dscp_error; 23*4882a593Smuzhiyun u64 stats_cpmark_set; 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun enum { 27*4882a593Smuzhiyun CTINFO_MODE_DSCP = BIT(0), 28*4882a593Smuzhiyun CTINFO_MODE_CPMARK = BIT(1) 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #define to_ctinfo(a) ((struct tcf_ctinfo *)a) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #endif /* __NET_TC_CTINFO_H */ 34