File net_sched-refactor-TC-action-init-API.patch of Package linux-glibc-devel
From 695176bfe5dec2051f950bdac0ae0b21e29e6de3 Mon Sep 17 00:00:00 2001
From: Cong Wang <cong.wang@bytedance.com>
Date: Thu, 29 Jul 2021 16:12:14 -0700
Subject: [PATCH] net_sched: refactor TC action init API
Git-commit: 695176bfe5dec2051f950bdac0ae0b21e29e6de3
Patch-mainline: v5.15-rc1
References: bsc#1189998
TC action ->init() API has 10 parameters, it becomes harder
to read. Some of them are just boolean and can be replaced
by flags. Similarly for the internal API tcf_action_init()
and tcf_exts_validate().
This patch converts them to flags and fold them into
the upper 16 bits of "flags", whose lower 16 bits are still
reserved for user-space. More specifically, the following
kernel flags are introduced:
TCA_ACT_FLAGS_POLICE replace 'name' in a few contexts, to
distinguish whether it is compatible with policer.
TCA_ACT_FLAGS_BIND replaces 'bind', to indicate whether
this action is bound to a filter.
TCA_ACT_FLAGS_REPLACE replaces 'ovr' in most contexts,
means we are replacing an existing action.
TCA_ACT_FLAGS_NO_RTNL replaces 'rtnl_held' but has the
opposite meaning, because we still hold RTNL in most
cases.
The only user-space flag TCA_ACT_FLAGS_NO_PERCPU_STATS is
untouched and still stored as before.
I have tested this patch with tdc and I do not see any
failure related to this patch.
Tested-by: Vlad Buslov <vladbu@nvidia.com>
Acked-by: Jamal Hadi Salim<jhs@mojatatu.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Cong Wang <cong.wang@bytedance.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
---
include/net/act_api.h | 22 ++++++++-----
include/net/pkt_cls.h | 2 +-
include/net/sch_generic.h | 2 +-
include/uapi/linux/pkt_cls.h | 1 +
net/sched/act_api.c | 61 ++++++++++++++++++------------------
net/sched/act_bpf.c | 4 +--
net/sched/act_connmark.c | 4 +--
net/sched/act_csum.c | 7 +++--
net/sched/act_ct.c | 4 +--
net/sched/act_ctinfo.c | 4 +--
net/sched/act_gact.c | 4 +--
net/sched/act_gate.c | 4 +--
net/sched/act_ife.c | 9 +++---
net/sched/act_ipt.c | 21 +++++++------
net/sched/act_mirred.c | 4 +--
net/sched/act_mpls.c | 4 +--
net/sched/act_nat.c | 6 ++--
net/sched/act_pedit.c | 4 +--
net/sched/act_police.c | 4 +--
net/sched/act_sample.c | 7 +++--
net/sched/act_simple.c | 4 +--
net/sched/act_skbedit.c | 4 +--
net/sched/act_skbmod.c | 3 +-
net/sched/act_tunnel_key.c | 4 +--
net/sched/act_vlan.c | 4 +--
net/sched/cls_api.c | 28 ++++++++++-------
net/sched/cls_basic.c | 10 +++---
net/sched/cls_bpf.c | 8 ++---
net/sched/cls_cgroup.c | 6 ++--
net/sched/cls_flow.c | 6 ++--
net/sched/cls_flower.c | 18 +++++------
net/sched/cls_fw.c | 13 ++++----
net/sched/cls_matchall.c | 17 +++++-----
net/sched/cls_route.c | 10 +++---
net/sched/cls_rsvp.h | 7 ++---
net/sched/cls_tcindex.c | 10 +++---
net/sched/cls_u32.c | 24 +++++++-------
37 files changed, 185 insertions(+), 169 deletions(-)
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
index 025c40fef93d..6836ccb9c45d 100644
--- a/include/linux/pkt_cls.h
+++ b/include/linux/pkt_cls.h
@@ -22,6 +22,7 @@ enum {
__TCA_ACT_MAX
};
+/* See other TCA_ACT_FLAGS_ * flags in include/net/act_api.h. */
#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1 /* Don't use percpu allocator for
* actions stats.
*/