[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190817132825.29790-3-idosch@idosch.org>
Date: Sat, 17 Aug 2019 16:28:11 +0300
From: Ido Schimmel <idosch@...sch.org>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, nhorman@...driver.com, jiri@...lanox.com,
toke@...hat.com, dsahern@...il.com, roopa@...ulusnetworks.com,
nikolay@...ulusnetworks.com, jakub.kicinski@...ronome.com,
andy@...yhouse.net, f.fainelli@...il.com, andrew@...n.ch,
vivien.didelot@...il.com, mlxsw@...lanox.com,
Ido Schimmel <idosch@...lanox.com>
Subject: [PATCH net-next v3 02/16] drop_monitor: Initialize hardware per-CPU data
From: Ido Schimmel <idosch@...lanox.com>
Like software drops, hardware drops also need the same type of per-CPU
data. Therefore, initialize it during module initialization and
de-initialize it during module exit.
Signed-off-by: Ido Schimmel <idosch@...lanox.com>
Acked-by: Jiri Pirko <jiri@...lanox.com>
---
net/core/drop_monitor.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
index 349ab78b8c3e..aa9147a18329 100644
--- a/net/core/drop_monitor.c
+++ b/net/core/drop_monitor.c
@@ -76,6 +76,7 @@ struct dm_hw_stat_delta {
static struct genl_family net_drop_monitor_family;
static DEFINE_PER_CPU(struct per_cpu_dm_data, dm_cpu_data);
+static DEFINE_PER_CPU(struct per_cpu_dm_data, dm_hw_cpu_data);
static int dm_hit_limit = 64;
static int dm_delay = 1;
@@ -966,6 +967,22 @@ static void net_dm_cpu_data_fini(int cpu)
__net_dm_cpu_data_fini(data);
}
+static void net_dm_hw_cpu_data_init(int cpu)
+{
+ struct per_cpu_dm_data *hw_data;
+
+ hw_data = &per_cpu(dm_hw_cpu_data, cpu);
+ __net_dm_cpu_data_init(hw_data);
+}
+
+static void net_dm_hw_cpu_data_fini(int cpu)
+{
+ struct per_cpu_dm_data *hw_data;
+
+ hw_data = &per_cpu(dm_hw_cpu_data, cpu);
+ __net_dm_cpu_data_fini(hw_data);
+}
+
static int __init init_net_drop_monitor(void)
{
int cpu, rc;
@@ -992,8 +1009,10 @@ static int __init init_net_drop_monitor(void)
rc = 0;
- for_each_possible_cpu(cpu)
+ for_each_possible_cpu(cpu) {
net_dm_cpu_data_init(cpu);
+ net_dm_hw_cpu_data_init(cpu);
+ }
goto out;
@@ -1014,8 +1033,10 @@ static void exit_net_drop_monitor(void)
* we are guarnateed not to have any current users when we get here
*/
- for_each_possible_cpu(cpu)
+ for_each_possible_cpu(cpu) {
+ net_dm_hw_cpu_data_fini(cpu);
net_dm_cpu_data_fini(cpu);
+ }
BUG_ON(genl_unregister_family(&net_drop_monitor_family));
}
--
2.21.0
Powered by blists - more mailing lists