diff options
author | Davide Caratti <dcaratti@redhat.com> | 2021-07-28 20:08:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-07-29 22:17:37 +0100 |
commit | 3aa2605594556c676fb88744bd9845acae60683d (patch) | |
tree | 9ee66dff30989b750f6b4fa16009f11e5e880186 /net/sched/sch_qfq.c | |
parent | b2492d503b414e25fc9b9fee347567a083e4b911 (diff) | |
download | linux-3aa2605594556c676fb88744bd9845acae60683d.tar.gz linux-3aa2605594556c676fb88744bd9845acae60683d.tar.bz2 linux-3aa2605594556c676fb88744bd9845acae60683d.zip |
net/sched: store the last executed chain also for clsact egress
currently, only 'ingress' and 'clsact ingress' qdiscs store the tc 'chain
id' in the skb extension. However, userspace programs (like ovs) are able
to setup egress rules, and datapath gets confused in case it doesn't find
the 'chain id' for a packet that's "recirculated" by tc.
Change tcf_classify() to have the same semantic as tcf_classify_ingress()
so that a single function can be called in ingress / egress, using the tc
ingress / egress block respectively.
Suggested-by: Alaa Hleilel <alaa@nvidia.com>
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_qfq.c')
-rw-r--r-- | net/sched/sch_qfq.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index b692a0de1ad5..58a9d42b52b8 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c @@ -690,7 +690,7 @@ static struct qfq_class *qfq_classify(struct sk_buff *skb, struct Qdisc *sch, *qerr = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS; fl = rcu_dereference_bh(q->filter_list); - result = tcf_classify(skb, fl, &res, false); + result = tcf_classify(skb, NULL, fl, &res, false); if (result >= 0) { #ifdef CONFIG_NET_CLS_ACT switch (result) { |