Skip to content

Commit cb56079

Browse files
author
Paolo Abeni
committed
Merge branch 'mlx5-misc-fixes-2024-10-15'
Tariq Toukan says: ==================== mlx5 misc fixes 2024-10-15 This patchset provides misc bug fixes from the team to the mlx5 core and Eth drivers. Series generated against: commit 174714f ("selftests: drivers: net: fix name not defined") ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
2 parents 7decd1f + 4dbc1d1 commit cb56079

File tree

8 files changed

+41
-13
lines changed

8 files changed

+41
-13
lines changed

drivers/net/ethernet/mellanox/mlx5/core/cmd.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1765,6 +1765,10 @@ static void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, u64 vec, bool force
17651765
}
17661766
}
17671767

1768+
#define MLX5_MAX_MANAGE_PAGES_CMD_ENT 1
1769+
#define MLX5_CMD_MASK ((1UL << (cmd->vars.max_reg_cmds + \
1770+
MLX5_MAX_MANAGE_PAGES_CMD_ENT)) - 1)
1771+
17681772
static void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev)
17691773
{
17701774
struct mlx5_cmd *cmd = &dev->cmd;
@@ -1776,7 +1780,7 @@ static void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev)
17761780
/* wait for pending handlers to complete */
17771781
mlx5_eq_synchronize_cmd_irq(dev);
17781782
spin_lock_irqsave(&dev->cmd.alloc_lock, flags);
1779-
vector = ~dev->cmd.vars.bitmask & ((1ul << (1 << dev->cmd.vars.log_sz)) - 1);
1783+
vector = ~dev->cmd.vars.bitmask & MLX5_CMD_MASK;
17801784
if (!vector)
17811785
goto no_trig;
17821786

@@ -2361,7 +2365,7 @@ int mlx5_cmd_enable(struct mlx5_core_dev *dev)
23612365

23622366
cmd->state = MLX5_CMDIF_STATE_DOWN;
23632367
cmd->vars.max_reg_cmds = (1 << cmd->vars.log_sz) - 1;
2364-
cmd->vars.bitmask = (1UL << cmd->vars.max_reg_cmds) - 1;
2368+
cmd->vars.bitmask = MLX5_CMD_MASK;
23652369

23662370
sema_init(&cmd->vars.sem, cmd->vars.max_reg_cmds);
23672371
sema_init(&cmd->vars.pages_sem, 1);

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6509,7 +6509,9 @@ static void _mlx5e_remove(struct auxiliary_device *adev)
65096509
mlx5e_dcbnl_delete_app(priv);
65106510
unregister_netdev(priv->netdev);
65116511
_mlx5e_suspend(adev, false);
6512-
priv->profile->cleanup(priv);
6512+
/* Avoid cleanup if profile rollback failed. */
6513+
if (priv->profile)
6514+
priv->profile->cleanup(priv);
65136515
mlx5e_destroy_netdev(priv);
65146516
mlx5e_devlink_port_unregister(mlx5e_dev);
65156517
mlx5e_destroy_devlink(mlx5e_dev);

drivers/net/ethernet/mellanox/mlx5/core/eq.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,12 @@ int mlx5_comp_eqn_get(struct mlx5_core_dev *dev, u16 vecidx, int *eqn)
10611061
struct mlx5_eq_comp *eq;
10621062
int ret = 0;
10631063

1064+
if (vecidx >= table->max_comp_eqs) {
1065+
mlx5_core_dbg(dev, "Requested vector index %u should be less than %u",
1066+
vecidx, table->max_comp_eqs);
1067+
return -EINVAL;
1068+
}
1069+
10641070
mutex_lock(&table->comp_lock);
10651071
eq = xa_load(&table->comp_eqs, vecidx);
10661072
if (eq) {

drivers/net/ethernet/mellanox/mlx5/core/eswitch.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1489,7 +1489,7 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int num_vfs)
14891489
}
14901490

14911491
if (err)
1492-
goto abort;
1492+
goto err_esw_enable;
14931493

14941494
esw->fdb_table.flags |= MLX5_ESW_FDB_CREATED;
14951495

@@ -1503,7 +1503,8 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int num_vfs)
15031503

15041504
return 0;
15051505

1506-
abort:
1506+
err_esw_enable:
1507+
mlx5_eq_notifier_unregister(esw->dev, &esw->nb);
15071508
mlx5_esw_acls_ns_cleanup(esw);
15081509
return err;
15091510
}

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_bwc.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,6 @@ static int hws_bwc_matcher_move(struct mlx5hws_bwc_matcher *bwc_matcher)
691691
static int
692692
hws_bwc_matcher_rehash_size(struct mlx5hws_bwc_matcher *bwc_matcher)
693693
{
694-
u32 num_of_rules;
695694
int ret;
696695

697696
/* If the current matcher size is already at its max size, we can't
@@ -705,8 +704,7 @@ hws_bwc_matcher_rehash_size(struct mlx5hws_bwc_matcher *bwc_matcher)
705704
* Need to check again if we really need rehash.
706705
* If the reason for rehash was size, but not any more - skip rehash.
707706
*/
708-
num_of_rules = __atomic_load_n(&bwc_matcher->num_of_rules, __ATOMIC_RELAXED);
709-
if (!hws_bwc_matcher_rehash_size_needed(bwc_matcher, num_of_rules))
707+
if (!hws_bwc_matcher_rehash_size_needed(bwc_matcher, bwc_matcher->num_of_rules))
710708
return 0;
711709

712710
/* Now we're done all the checking - do the rehash:

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_context.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ struct mlx5hws_context {
4646
struct mlx5hws_send_engine *send_queue;
4747
size_t queues;
4848
struct mutex *bwc_send_queue_locks; /* protect BWC queues */
49+
struct lock_class_key *bwc_lock_class_keys;
4950
struct list_head tbl_list;
5051
struct mlx5hws_context_debug_info debug_info;
5152
struct xarray peer_ctx_xa;

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_definer.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1925,7 +1925,7 @@ mlx5hws_definer_calc_layout(struct mlx5hws_context *ctx,
19251925
ret = hws_definer_conv_match_params_to_hl(ctx, mt, match_hl);
19261926
if (ret) {
19271927
mlx5hws_err(ctx, "Failed to convert items to header layout\n");
1928-
goto free_fc;
1928+
goto free_match_hl;
19291929
}
19301930

19311931
/* Find the match definer layout for header layout match union */
@@ -1946,7 +1946,7 @@ mlx5hws_definer_calc_layout(struct mlx5hws_context *ctx,
19461946

19471947
free_fc:
19481948
kfree(mt->fc);
1949-
1949+
free_match_hl:
19501950
kfree(match_hl);
19511951
return ret;
19521952
}

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_send.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -941,14 +941,18 @@ static void __hws_send_queues_close(struct mlx5hws_context *ctx, u16 queues)
941941

942942
static void hws_send_queues_bwc_locks_destroy(struct mlx5hws_context *ctx)
943943
{
944-
int bwc_queues = ctx->queues - 1;
944+
int bwc_queues = mlx5hws_bwc_queues(ctx);
945945
int i;
946946

947947
if (!mlx5hws_context_bwc_supported(ctx))
948948
return;
949949

950-
for (i = 0; i < bwc_queues; i++)
950+
for (i = 0; i < bwc_queues; i++) {
951951
mutex_destroy(&ctx->bwc_send_queue_locks[i]);
952+
lockdep_unregister_key(ctx->bwc_lock_class_keys + i);
953+
}
954+
955+
kfree(ctx->bwc_lock_class_keys);
952956
kfree(ctx->bwc_send_queue_locks);
953957
}
954958

@@ -977,10 +981,22 @@ static int hws_bwc_send_queues_init(struct mlx5hws_context *ctx)
977981
if (!ctx->bwc_send_queue_locks)
978982
return -ENOMEM;
979983

980-
for (i = 0; i < bwc_queues; i++)
984+
ctx->bwc_lock_class_keys = kcalloc(bwc_queues,
985+
sizeof(*ctx->bwc_lock_class_keys),
986+
GFP_KERNEL);
987+
if (!ctx->bwc_lock_class_keys)
988+
goto err_lock_class_keys;
989+
990+
for (i = 0; i < bwc_queues; i++) {
981991
mutex_init(&ctx->bwc_send_queue_locks[i]);
992+
lockdep_register_key(ctx->bwc_lock_class_keys + i);
993+
}
982994

983995
return 0;
996+
997+
err_lock_class_keys:
998+
kfree(ctx->bwc_send_queue_locks);
999+
return -ENOMEM;
9841000
}
9851001

9861002
int mlx5hws_send_queues_open(struct mlx5hws_context *ctx,

0 commit comments

Comments
 (0)