tc_actionRegular
4.4: ✅struct tc_action {
void *priv;
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
};
4.8: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
struct tcf_hashinfo *hinfo;
struct hlist_node tcfa_head;
u32 tcfa_index;
int tcfa_refcnt;
int tcfa_bindcnt;
u32 tcfa_capab;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_queue tcfa_qstats;
struct gnet_stats_rate_est64 tcfa_rate_est;
spinlock_t tcfa_lock;
struct callback_head tcfa_rcu;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_queue *cpu_qstats;
};
4.10: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
struct tcf_hashinfo *hinfo;
struct hlist_node tcfa_head;
u32 tcfa_index;
int tcfa_refcnt;
int tcfa_bindcnt;
u32 tcfa_capab;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct callback_head tcfa_rcu;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
};
4.13: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
struct tcf_hashinfo *hinfo;
struct hlist_node tcfa_head;
u32 tcfa_index;
int tcfa_refcnt;
int tcfa_bindcnt;
u32 tcfa_capab;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct callback_head tcfa_rcu;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
4.15: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
int tcfa_refcnt;
int tcfa_bindcnt;
u32 tcfa_capab;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
4.18: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct list_head list;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
int tcfa_refcnt;
int tcfa_bindcnt;
u32 tcfa_capab;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
5.0: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
5.3: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
5.4: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
5.8: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
};
5.11: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
};
5.13: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
};
5.15: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
};
5.19: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_sync tcfa_bstats;
struct gnet_stats_basic_sync tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_sync *cpu_bstats;
struct gnet_stats_basic_sync *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
u32 in_hw_count;
};
6.2: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_sync tcfa_bstats;
struct gnet_stats_basic_sync tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_sync *cpu_bstats;
struct gnet_stats_basic_sync *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
u32 in_hw_count;
};
6.5: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_sync tcfa_bstats;
struct gnet_stats_basic_sync tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_sync *cpu_bstats;
struct gnet_stats_basic_sync *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *user_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
u32 in_hw_count;
};
6.8: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_sync tcfa_bstats;
struct gnet_stats_basic_sync tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_sync *cpu_bstats;
struct gnet_stats_basic_sync *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *user_cookie;
struct tcf_chain *goto_chain;
u32 tcfa_flags;
u8 hw_stats;
u8 used_hw_stats;
bool used_hw_stats_valid;
u32 in_hw_count;
};
arm64: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
armhf: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
ppc64el: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
riscv64: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
aws: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
azure: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
gcp: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
lowlatency: ✅struct tc_action {
const struct tc_action_ops *ops;
__u32 type;
__u32 order;
struct tcf_idrinfo *idrinfo;
u32 tcfa_index;
refcount_t tcfa_refcnt;
atomic_t tcfa_bindcnt;
int tcfa_action;
struct tcf_t tcfa_tm;
struct gnet_stats_basic_packed tcfa_bstats;
struct gnet_stats_basic_packed tcfa_bstats_hw;
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator *tcfa_rate_est;
spinlock_t tcfa_lock;
struct gnet_stats_basic_cpu *cpu_bstats;
struct gnet_stats_basic_cpu *cpu_bstats_hw;
struct gnet_stats_queue *cpu_qstats;
struct tc_cookie *act_cookie;
struct tcf_chain *goto_chain;
};
Regular
4.4 and 4.8 ⚠️struct tcf_hashinfo *hinfo
struct hlist_node tcfa_head
u32 tcfa_index
int tcfa_refcnt
int tcfa_bindcnt
u32 tcfa_capab
int tcfa_action
struct tcf_t tcfa_tm
struct gnet_stats_basic_packed tcfa_bstats
struct gnet_stats_queue tcfa_qstats
struct gnet_stats_rate_est64 tcfa_rate_est
spinlock_t tcfa_lock
struct callback_head tcfa_rcu
struct gnet_stats_basic_cpu *cpu_bstats
struct gnet_stats_queue *cpu_qstats
void *priv
4.8 and 4.10 ⚠️struct tc_cookie *act_cookie
struct gnet_stats_rate_est64 tcfa_rate_est ➡️ struct net_rate_estimator *tcfa_rate_est
4.10 and 4.13 ⚠️struct tcf_chain *goto_chain
4.13 and 4.15 ⚠️struct tcf_idrinfo *idrinfo
struct tcf_hashinfo *hinfo
struct hlist_node tcfa_head
struct callback_head tcfa_rcu
4.15 and 4.18 ✅
4.18 and 5.0 ⚠️struct gnet_stats_basic_packed tcfa_bstats_hw
struct gnet_stats_basic_cpu *cpu_bstats_hw
struct list_head list
u32 tcfa_capab
int tcfa_refcnt ➡️ refcount_t tcfa_refcnt
int tcfa_bindcnt ➡️ atomic_t tcfa_bindcnt
5.0 and 5.3 ✅
5.3 and 5.4 ✅
5.4 and 5.8 ⚠️u32 tcfa_flags
u8 hw_stats
u8 used_hw_stats
bool used_hw_stats_valid
__u32 order
5.8 and 5.11 ✅
5.11 and 5.13 ✅
5.13 and 5.15 ✅
5.15 and 5.19 ⚠️u32 in_hw_count
struct gnet_stats_basic_packed tcfa_bstats ➡️ struct gnet_stats_basic_sync tcfa_bstats
struct gnet_stats_basic_packed tcfa_bstats_hw ➡️ struct gnet_stats_basic_sync tcfa_bstats_hw
struct gnet_stats_basic_cpu *cpu_bstats ➡️ struct gnet_stats_basic_sync *cpu_bstats
struct gnet_stats_basic_cpu *cpu_bstats_hw ➡️ struct gnet_stats_basic_sync *cpu_bstats_hw
5.19 and 6.2 ✅
6.2 and 6.5 ⚠️struct tc_cookie *user_cookie
struct tc_cookie *act_cookie
6.5 and 6.8 ✅
amd64 and arm64 ✅
amd64 and armhf ✅
amd64 and ppc64el ✅
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅