Commit 5e1ad95b authored by Vlad Buslov's avatar Vlad Buslov Committed by David S. Miller
Browse files

net: sched: extract bstats update code into function



Extract common code that increments cpu_bstats counter into standalone act
API function. Change hardware offloaded actions that use percpu counter
allocation to use the new function instead of incrementing cpu_bstats
directly.

This commit doesn't change functionality.

Signed-off-by: default avatarVlad Buslov <vladbu@mellanox.com>
Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c8ecebd0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -186,6 +186,13 @@ int tcf_action_dump(struct sk_buff *skb, struct tc_action *actions[], int bind,
		    int ref);
int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int);
int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int);

static inline void tcf_action_update_bstats(struct tc_action *a,
					    struct sk_buff *skb)
{
	bstats_cpu_update(this_cpu_ptr(a->cpu_bstats), skb);
}

void tcf_action_update_stats(struct tc_action *a, u64 bytes, u32 packets,
			     bool drop, bool hw);
int tcf_action_copy_stats(struct sk_buff *, struct tc_action *, int);
+1 −1
Original line number Diff line number Diff line
@@ -580,7 +580,7 @@ static int tcf_csum_act(struct sk_buff *skb, const struct tc_action *a,
	params = rcu_dereference_bh(p->params);

	tcf_lastuse_update(&p->tcf_tm);
	bstats_cpu_update(this_cpu_ptr(p->common.cpu_bstats), skb);
	tcf_action_update_bstats(&p->common, skb);

	action = READ_ONCE(p->tcf_action);
	if (unlikely(action == TC_ACT_SHOT))
+1 −1
Original line number Diff line number Diff line
@@ -465,7 +465,7 @@ out_push:
	skb_push_rcsum(skb, nh_ofs);

out:
	bstats_cpu_update(this_cpu_ptr(a->cpu_bstats), skb);
	tcf_action_update_bstats(&c->common, skb);
	return retval;

drop:
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ static int tcf_gact_act(struct sk_buff *skb, const struct tc_action *a,
		action = gact_rand[ptype](gact);
	}
#endif
	bstats_cpu_update(this_cpu_ptr(gact->common.cpu_bstats), skb);
	tcf_action_update_bstats(&gact->common, skb);
	if (action == TC_ACT_SHOT)
		qstats_drop_inc(this_cpu_ptr(gact->common.cpu_qstats));

+1 −1
Original line number Diff line number Diff line
@@ -231,7 +231,7 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,
	}

	tcf_lastuse_update(&m->tcf_tm);
	bstats_cpu_update(this_cpu_ptr(m->common.cpu_bstats), skb);
	tcf_action_update_bstats(&m->common, skb);

	m_mac_header_xmit = READ_ONCE(m->tcfm_mac_header_xmit);
	m_eaction = READ_ONCE(m->tcfm_eaction);
Loading