]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net/mlx5: HWS, don't rehash on every kind of insertion failure
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Sun, 17 Aug 2025 20:23:21 +0000 (23:23 +0300)
committerJakub Kicinski <kuba@kernel.org>
Wed, 20 Aug 2025 02:35:13 +0000 (19:35 -0700)
If rule creation failed due to a full queue, due to timeout
in polling for completion, or due to matcher being in resize,
don't try to initiate rehash sequence - rehash would have
failed anyway.

Fixes: 2111bb970c78 ("net/mlx5: HWS, added backward-compatible API handling")
Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Vlad Dogaru <vdogaru@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Link: https://patch.msgid.link/20250817202323.308604-6-mbloch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c

index 2a59be11fe5511538bc84fbd0b73909aa92ecf3f..adeccc588e5d180a3a4e0d6552873a0cd84e1a1a 100644 (file)
@@ -1063,6 +1063,21 @@ int mlx5hws_bwc_rule_create_simple(struct mlx5hws_bwc_rule *bwc_rule,
                return 0; /* rule inserted successfully */
        }
 
+       /* Rule insertion could fail due to queue being full, timeout, or
+        * matcher in resize. In such cases, no point in trying to rehash.
+        */
+       if (ret == -EBUSY || ret == -ETIMEDOUT || ret == -EAGAIN) {
+               mutex_unlock(queue_lock);
+               mlx5hws_err(ctx,
+                           "BWC rule insertion failed - %s (%d)\n",
+                           ret == -EBUSY ? "queue is full" :
+                           ret == -ETIMEDOUT ? "timeout" :
+                           ret == -EAGAIN ? "matcher in resize" : "N/A",
+                           ret);
+               hws_bwc_rule_cnt_dec(bwc_rule);
+               return ret;
+       }
+
        /* At this point the rule wasn't added.
         * It could be because there was collision, or some other problem.
         * Try rehash by size and insert rule again - last chance.