summaryrefslogtreecommitdiffstats
path: root/net/sched/sch_ets.c
diff options
context:
space:
mode:
authorDavide Caratti <dcaratti@redhat.com>2021-07-28 20:08:00 +0200
committerDavid S. Miller <davem@davemloft.net>2021-07-29 23:17:37 +0200
commit3aa2605594556c676fb88744bd9845acae60683d (patch)
tree9ee66dff30989b750f6b4fa16009f11e5e880186 /net/sched/sch_ets.c
parentMerge branch 'dpaa2-switch-add-mirroring-support' (diff)
downloadlinux-3aa2605594556c676fb88744bd9845acae60683d.tar.xz
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_ets.c')
-rw-r--r--net/sched/sch_ets.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_ets.c b/net/sched/sch_ets.c
index c1e84d1eeaba..925924fab1ab 100644
--- a/net/sched/sch_ets.c
+++ b/net/sched/sch_ets.c
@@ -390,7 +390,7 @@ static struct ets_class *ets_classify(struct sk_buff *skb, struct Qdisc *sch,
*qerr = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS;
if (TC_H_MAJ(skb->priority) != sch->handle) {
fl = rcu_dereference_bh(q->filter_list);
- err = tcf_classify(skb, fl, &res, false);
+ err = tcf_classify(skb, NULL, fl, &res, false);
#ifdef CONFIG_NET_CLS_ACT
switch (err) {
case TC_ACT_STOLEN: