162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __NET_TC_CTINFO_H
362306a36Sopenharmony_ci#define __NET_TC_CTINFO_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <net/act_api.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_cistruct tcf_ctinfo_params {
862306a36Sopenharmony_ci	struct rcu_head rcu;
962306a36Sopenharmony_ci	struct net *net;
1062306a36Sopenharmony_ci	u32 dscpmask;
1162306a36Sopenharmony_ci	u32 dscpstatemask;
1262306a36Sopenharmony_ci	u32 cpmarkmask;
1362306a36Sopenharmony_ci	u16 zone;
1462306a36Sopenharmony_ci	u8 mode;
1562306a36Sopenharmony_ci	u8 dscpmaskshift;
1662306a36Sopenharmony_ci};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistruct tcf_ctinfo {
1962306a36Sopenharmony_ci	struct tc_action common;
2062306a36Sopenharmony_ci	struct tcf_ctinfo_params __rcu *params;
2162306a36Sopenharmony_ci	u64 stats_dscp_set;
2262306a36Sopenharmony_ci	u64 stats_dscp_error;
2362306a36Sopenharmony_ci	u64 stats_cpmark_set;
2462306a36Sopenharmony_ci};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cienum {
2762306a36Sopenharmony_ci	CTINFO_MODE_DSCP	= BIT(0),
2862306a36Sopenharmony_ci	CTINFO_MODE_CPMARK	= BIT(1)
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define to_ctinfo(a) ((struct tcf_ctinfo *)a)
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci#endif /* __NET_TC_CTINFO_H */
34