Unverified Commit 49177142 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!6019 net/sched: act_mirred: use the backlog for mirred ingress

parents a548f864 2dc6241e
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -197,18 +197,14 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
	return ret;
}

static bool is_mirred_nested(void)
{
	return unlikely(__this_cpu_read(mirred_rec_level) > 1);
}

static int tcf_mirred_forward(bool want_ingress, struct sk_buff *skb)
static int
tcf_mirred_forward(bool at_ingress, bool want_ingress, struct sk_buff *skb)
{
	int err;

	if (!want_ingress)
		err = dev_queue_xmit(skb);
	else if (is_mirred_nested())
	else if (!at_ingress)
		err = netif_rx(skb);
	else
		err = netif_receive_skb(skb);
@@ -300,14 +296,15 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,
		if (use_reinsert) {
			res->ingress = want_ingress;
			res->qstats = this_cpu_ptr(m->common.cpu_qstats);
			if (tcf_mirred_forward(want_ingress, skb) && res->qstats)
			if (tcf_mirred_forward(skb_at_tc_ingress(skb), want_ingress, skb)
			    && res->qstats)
				qstats_overlimit_inc(res->qstats);
			__this_cpu_dec(mirred_rec_level);
			return TC_ACT_CONSUMED;
		}
	}

	err = tcf_mirred_forward(want_ingress, skb2);
	err = tcf_mirred_forward(skb_at_tc_ingress(skb), want_ingress, skb2);
	if (err) {
out:
		qstats_overlimit_inc(this_cpu_ptr(m->common.cpu_qstats));
+0 −3
Original line number Diff line number Diff line
@@ -183,9 +183,6 @@ mirred_egress_to_ingress_tcp_test()
	check_err $? "didn't mirred redirect ICMP"
	tc_check_packets "dev $h1 ingress" 102 10
	check_err $? "didn't drop mirred ICMP"
	local overlimits=$(tc_rule_stats_get ${h1} 101 egress .overlimits)
	test ${overlimits} = 10
	check_err $? "wrong overlimits, expected 10 got ${overlimits}"

	tc filter del dev $h1 egress protocol ip pref 100 handle 100 flower
	tc filter del dev $h1 egress protocol ip pref 101 handle 101 flower