mirror of
https://abf.rosa.ru/djam/kernel-5.10.git
synced 2025-02-25 09:42:49 +00:00
48 lines
1.5 KiB
Diff
48 lines
1.5 KiB
Diff
From foo@baz Thu Feb 23 21:13:05 CET 2017
|
|
From: Or Gerlitz <ogerlitz@mellanox.com>
|
|
Date: Sun, 12 Feb 2017 11:21:31 +0200
|
|
Subject: net/mlx5e: Disable preemption when doing TC statistics upcall
|
|
|
|
From: Or Gerlitz <ogerlitz@mellanox.com>
|
|
|
|
|
|
[ Upstream commit fed06ee89b78d3af32e235e0e89ad0d946fcb95d ]
|
|
|
|
When called by HW offloading drivers, the TC action (e.g
|
|
net/sched/act_mirred.c) code uses this_cpu logic, e.g
|
|
|
|
_bstats_cpu_update(this_cpu_ptr(a->cpu_bstats), bytes, packets)
|
|
|
|
per the kernel documention, preemption should be disabled, add that.
|
|
|
|
Before the fix, when running with CONFIG_PREEMPT set, we get a
|
|
|
|
BUG: using smp_processor_id() in preemptible [00000000] code: tc/3793
|
|
|
|
asserion from the TC action (mirred) stats_update callback.
|
|
|
|
Fixes: aad7e08d39bd ('net/mlx5e: Hardware offloaded flower filter statistics support')
|
|
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
|
|
@@ -567,10 +567,14 @@ int mlx5e_stats_flower(struct mlx5e_priv
|
|
|
|
mlx5_fc_query_cached(counter, &bytes, &packets, &lastuse);
|
|
|
|
+ preempt_disable();
|
|
+
|
|
tcf_exts_to_list(f->exts, &actions);
|
|
list_for_each_entry(a, &actions, list)
|
|
tcf_action_stats_update(a, bytes, packets, lastuse);
|
|
|
|
+ preempt_enable();
|
|
+
|
|
return 0;
|
|
}
|
|
|