[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f4fdc1f1-bee2-8456-8daa-fbf65aabe0d4@solarflare.com>
Date: Fri, 17 May 2019 18:14:35 +0100
From: Edward Cree <ecree@...arflare.com>
To: Jamal Hadi Salim <jhs@...atatu.com>, Jiri Pirko <jiri@...nulli.us>,
"Pablo Neira Ayuso" <pablo@...filter.org>,
David Miller <davem@...emloft.net>
CC: netdev <netdev@...r.kernel.org>,
Cong Wang <xiyou.wangcong@...il.com>,
Andy Gospodarek <andy@...yhouse.net>,
Jakub Kicinski <jakub.kicinski@...ronome.com>,
Michael Chan <michael.chan@...adcom.com>,
Vishal Kulkarni <vishal@...lsio.com>
Subject: Re: [RFC PATCH v2 net-next 0/3] flow_offload: Re-add per-action
statistics
On 17/05/2019 16:27, Edward Cree wrote:
> I'm now leaning towards the
> approach of adding "unsigned long cookie" to struct flow_action_entry
> and populating it with (unsigned long)act in tc_setup_flow_action().
For concreteness, here's what that looks like: patch 1 is replaced with
the following, the other two are unchanged.
Drivers now have an easier job, as they can just use the cookie directly
as a hashtable key, rather than worrying about which action types share
indices.
--8<--
[RFC PATCH v2.5 net-next 1/3] flow_offload: add a cookie to flow_action_entry
Populated with the address of the struct tc_action from which it was made.
Required for support of shared counters (and possibly other shared per-
action entities in future).
Signed-off-by: Edward Cree <ecree@...arflare.com>
---
include/net/flow_offload.h | 1 +
net/sched/cls_api.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h
index 6200900434e1..fb3278a2bd41 100644
--- a/include/net/flow_offload.h
+++ b/include/net/flow_offload.h
@@ -137,6 +137,7 @@ enum flow_action_mangle_base {
struct flow_action_entry {
enum flow_action_id id;
+ unsigned long cookie;
union {
u32 chain_index; /* FLOW_ACTION_GOTO */
struct net_device *dev; /* FLOW_ACTION_REDIRECT */
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index d4699156974a..5411cec17af5 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -3195,6 +3195,7 @@ int tc_setup_flow_action(struct flow_action *flow_action,
struct flow_action_entry *entry;
entry = &flow_action->entries[j];
+ entry->cookie = (unsigned long)act;
if (is_tcf_gact_ok(act)) {
entry->id = FLOW_ACTION_ACCEPT;
} else if (is_tcf_gact_shot(act)) {
Powered by blists - more mailing lists