49 lines
2.2 KiB
Diff
49 lines
2.2 KiB
Diff
From e9c25119d53e4ed49454a852dbf0d4a0b1998973 Mon Sep 17 00:00:00 2001
|
|
From: Kamal Heib <kheib@redhat.com>
|
|
Date: Fri, 17 Apr 2026 11:27:00 -0400
|
|
Subject: [PATCH] net/mlx5: CT: Use the correct counter offset
|
|
|
|
JIRA: https://redhat.atlassian.net/browse/RHEL-169055
|
|
|
|
commit d2d6f950cb43be6845a41cac5956cb2a10e657e5
|
|
Author: Vlad Dogaru <vdogaru@nvidia.com>
|
|
Date: Sun Aug 17 23:23:23 2025 +0300
|
|
|
|
net/mlx5: CT: Use the correct counter offset
|
|
|
|
Specifying the counter action is not enough, as it is used by multiple
|
|
counters that were allocated in a bulk. By omitting the offset, rules
|
|
will be associated with a different counter from the same bulk.
|
|
Subsequently, the CT subsystem checks the correct counter, assumes that
|
|
no traffic has triggered the rule, and ages out the rule. The end result
|
|
is intermittent offloading of long lived connections, as rules are aged
|
|
out then promptly re-added.
|
|
|
|
Fix this by specifying the correct offset along with the counter rule.
|
|
|
|
Fixes: 34eea5b12a10 ("net/mlx5e: CT: Add initial support for Hardware Steering")
|
|
Signed-off-by: Vlad Dogaru <vdogaru@nvidia.com>
|
|
Reviewed-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
|
|
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
|
|
Link: https://patch.msgid.link/20250817202323.308604-8-mbloch@nvidia.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
|
|
Signed-off-by: Kamal Heib <kheib@redhat.com>
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_hmfs.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_hmfs.c
|
|
index a4263137fef5..01d522b02947 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_hmfs.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_hmfs.c
|
|
@@ -173,6 +173,8 @@ static void mlx5_ct_fs_hmfs_fill_rule_actions(struct mlx5_ct_fs_hmfs *fs_hmfs,
|
|
|
|
memset(rule_actions, 0, NUM_CT_HMFS_RULES * sizeof(*rule_actions));
|
|
rule_actions[0].action = mlx5_fc_get_hws_action(fs_hmfs->ctx, attr->counter);
|
|
+ rule_actions[0].counter.offset =
|
|
+ attr->counter->id - attr->counter->bulk->base_id;
|
|
/* Modify header is special, it may require extra arguments outside the action itself. */
|
|
if (mh_action->mh_data) {
|
|
rule_actions[1].modify_header.offset = mh_action->mh_data->offset;
|
|
--
|
|
2.50.1 (Apple Git-155)
|
|
|