Skip to content

Commit a451b8e

Browse files
committed
Merge tag 'mlx5-fixes-2023-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5 fixes 2023-05-31 This series provides bug fixes to mlx5 driver. * tag 'mlx5-fixes-2023-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux: net/mlx5: Read embedded cpu after init bit cleared net/mlx5e: Fix error handling in mlx5e_refresh_tirs net/mlx5: Ensure af_desc.mask is properly initialized net/mlx5: Fix setting of irq->map.index for static IRQ case net/mlx5: Remove rmap also in case dynamic MSIX not supported ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 66dd101 + bbfa4b5 commit a451b8e

File tree

3 files changed

+12
-14
lines changed

3 files changed

+12
-14
lines changed

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,8 @@ int mlx5e_refresh_tirs(struct mlx5e_priv *priv, bool enable_uc_lb,
150150

151151
inlen = MLX5_ST_SZ_BYTES(modify_tir_in);
152152
in = kvzalloc(inlen, GFP_KERNEL);
153-
if (!in) {
154-
err = -ENOMEM;
155-
goto out;
156-
}
153+
if (!in)
154+
return -ENOMEM;
157155

158156
if (enable_uc_lb)
159157
lb_flags = MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST;
@@ -171,14 +169,13 @@ int mlx5e_refresh_tirs(struct mlx5e_priv *priv, bool enable_uc_lb,
171169
tirn = tir->tirn;
172170
err = mlx5_core_modify_tir(mdev, tirn, in);
173171
if (err)
174-
goto out;
172+
break;
175173
}
174+
mutex_unlock(&mdev->mlx5e_res.hw_objs.td.list_lock);
176175

177-
out:
178176
kvfree(in);
179177
if (err)
180178
netdev_err(priv->netdev, "refresh tir(0x%x) failed, %d\n", tirn, err);
181-
mutex_unlock(&mdev->mlx5e_res.hw_objs.td.list_lock);
182179

183180
return err;
184181
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,6 @@ static int mlx5_pci_init(struct mlx5_core_dev *dev, struct pci_dev *pdev,
923923
}
924924

925925
mlx5_pci_vsc_init(dev);
926-
dev->caps.embedded_cpu = mlx5_read_embedded_cpu(dev);
927926
return 0;
928927

929928
err_clr_master:
@@ -1155,6 +1154,7 @@ static int mlx5_function_setup(struct mlx5_core_dev *dev, bool boot, u64 timeout
11551154
goto err_cmd_cleanup;
11561155
}
11571156

1157+
dev->caps.embedded_cpu = mlx5_read_embedded_cpu(dev);
11581158
mlx5_cmd_set_state(dev, MLX5_CMDIF_STATE_UP);
11591159

11601160
mlx5_start_health_poll(dev);

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ static void irq_release(struct mlx5_irq *irq)
141141
irq_update_affinity_hint(irq->map.virq, NULL);
142142
#ifdef CONFIG_RFS_ACCEL
143143
rmap = mlx5_eq_table_get_rmap(pool->dev);
144-
if (rmap && irq->map.index)
144+
if (rmap)
145145
irq_cpu_rmap_remove(rmap, irq->map.virq);
146146
#endif
147147

@@ -232,12 +232,13 @@ struct mlx5_irq *mlx5_irq_alloc(struct mlx5_irq_pool *pool, int i,
232232
if (!irq)
233233
return ERR_PTR(-ENOMEM);
234234
if (!i || !pci_msix_can_alloc_dyn(dev->pdev)) {
235-
/* The vector at index 0 was already allocated.
236-
* Just get the irq number. If dynamic irq is not supported
237-
* vectors have also been allocated.
235+
/* The vector at index 0 is always statically allocated. If
236+
* dynamic irq is not supported all vectors are statically
237+
* allocated. In both cases just get the irq number and set
238+
* the index.
238239
*/
239240
irq->map.virq = pci_irq_vector(dev->pdev, i);
240-
irq->map.index = 0;
241+
irq->map.index = i;
241242
} else {
242243
irq->map = pci_msix_alloc_irq_at(dev->pdev, MSI_ANY_INDEX, af_desc);
243244
if (!irq->map.virq) {
@@ -570,11 +571,11 @@ int mlx5_irqs_request_vectors(struct mlx5_core_dev *dev, u16 *cpus, int nirqs,
570571

571572
af_desc.is_managed = false;
572573
for (i = 0; i < nirqs; i++) {
574+
cpumask_clear(&af_desc.mask);
573575
cpumask_set_cpu(cpus[i], &af_desc.mask);
574576
irq = mlx5_irq_request(dev, i + 1, &af_desc, rmap);
575577
if (IS_ERR(irq))
576578
break;
577-
cpumask_clear(&af_desc.mask);
578579
irqs[i] = irq;
579580
}
580581

0 commit comments

Comments
 (0)