]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Revert "net/mlx5: Add retry mechanism to the command entry index allocation"
authorMoshe Shemesh <moshe@nvidia.com>
Sun, 5 Dec 2021 09:20:59 +0000 (11:20 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 7 Jan 2022 00:55:42 +0000 (16:55 -0800)
This reverts commit 79c9232b2cee4d3e1f41ad0e7c2cdbf3d79a454c.

The reverted commit had added a retry mechanism to the command entry
index allocation. The previous patch ensures that there is a free
command entry index once the command work handler holds the command
semaphore. Thus the retry mechanism is not needed.

Fixes: 79c9232b2cee ("net/mlx5: Add retry mechanism to the command entry index allocation")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/cmd.c

index f588503157d0422904626b6cc7a4df11f03d2702..17fe0580965331623055940f46c4578e585abad7 100644 (file)
@@ -904,25 +904,6 @@ static bool opcode_allowed(struct mlx5_cmd *cmd, u16 opcode)
        return cmd->allowed_opcode == opcode;
 }
 
-static int cmd_alloc_index_retry(struct mlx5_cmd *cmd)
-{
-       unsigned long alloc_end = jiffies + msecs_to_jiffies(1000);
-       int idx;
-
-retry:
-       idx = cmd_alloc_index(cmd);
-       if (idx < 0 && time_before(jiffies, alloc_end)) {
-               /* Index allocation can fail on heavy load of commands. This is a temporary
-                * situation as the current command already holds the semaphore, meaning that
-                * another command completion is being handled and it is expected to release
-                * the entry index soon.
-                */
-               cpu_relax();
-               goto retry;
-       }
-       return idx;
-}
-
 bool mlx5_cmd_is_down(struct mlx5_core_dev *dev)
 {
        return pci_channel_offline(dev->pdev) ||
@@ -950,7 +931,7 @@ static void cmd_work_handler(struct work_struct *work)
        sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem;
        down(sem);
        if (!ent->page_queue) {
-               alloc_ret = cmd_alloc_index_retry(cmd);
+               alloc_ret = cmd_alloc_index(cmd);
                if (alloc_ret < 0) {
                        mlx5_core_err_rl(dev, "failed to allocate command entry\n");
                        if (ent->callback) {