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

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

parents 0a28d59d 7703be13
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -206,18 +206,14 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
	return err;
}

static bool is_mirred_nested(void)
{
	return unlikely(__this_cpu_read(mirred_nest_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);
@@ -314,7 +310,7 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,
		/* let's the caller reinsert the packet, if possible */
		if (use_reinsert) {
			res->ingress = want_ingress;
			err = tcf_mirred_forward(res->ingress, skb);
			err = tcf_mirred_forward(at_ingress, res->ingress, skb);
			if (err)
				tcf_action_inc_overlimit_qstats(&m->common);
			__this_cpu_dec(mirred_nest_level);
@@ -322,7 +318,7 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,
		}
	}

	err = tcf_mirred_forward(want_ingress, skb2);
	err = tcf_mirred_forward(at_ingress, want_ingress, skb2);
	if (err) {
out:
		tcf_action_inc_overlimit_qstats(&m->common);
+0 −3
Original line number Diff line number Diff line
@@ -188,9 +188,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