Message ID | 1586187416-22454-1-git-send-email-paulb@mellanox.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net] net: sched: Fix setting last executed chain on skb extension | expand |
From: Paul Blakey <paulb@mellanox.com> Date: Mon, 6 Apr 2020 18:36:56 +0300 > After driver sets the missed chain on the tc skb extension it is > consumed (deleted) by tc_classify_ingress and tc jumps to that chain. > If tc now misses on this chain (either no match, or no goto action), > then last executed chain remains 0, and the skb extension is not re-added, > and the next datapath (ovs) will start from 0. > > Fix that by setting last executed chain to the chain read from the skb > extension, so if there is a miss, we set it back. > > Fixes: af699626ee26 ("net: sched: Support specifying a starting chain via tc skb ext") > Reviewed-by: Oz Shlomo <ozsh@mellanox.com> > Reviewed-by: Jiri Pirko <jiri@mellanox.com> > Signed-off-by: Paul Blakey <paulb@mellanox.com> > Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Applied, thank you.
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index f6a3b96..55bd142 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -1667,6 +1667,7 @@ int tcf_classify_ingress(struct sk_buff *skb, skb_ext_del(skb, TC_SKB_EXT); tp = rcu_dereference_bh(fchain->filter_chain); + last_executed_chain = fchain->index; } ret = __tcf_classify(skb, tp, orig_tp, res, compat_mode,