Skip to content

Commit a16b8e0

Browse files
roidayanSaeed Mahameed
authored andcommitted
net/mlx5e: Fix inner tirs handling
In the cited commit inner_tirs argument was added to create and destroy inner tirs, and no indication was added to mlx5e_modify_tirs_hash() function. In order to have a consistent handling, use inner_indir_tir[0].tirn in tirs destroy/modify function as an indication to whether inner tirs are created. Inner tirs are not created for representors and before this commit, a call to mlx5e_modify_tirs_hash() was sending HW commands to modify non-existent inner tirs. Fixes: 46dc933 ("net/mlx5e: Provide explicit directive if to create inner indirect tirs") Signed-off-by: Roi Dayan <[email protected]> Reviewed-by: Vlad Buslov <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 16736e1 commit a16b8e0

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1121,7 +1121,7 @@ void mlx5e_close_drop_rq(struct mlx5e_rq *drop_rq);
11211121
int mlx5e_create_indirect_rqt(struct mlx5e_priv *priv);
11221122

11231123
int mlx5e_create_indirect_tirs(struct mlx5e_priv *priv, bool inner_ttc);
1124-
void mlx5e_destroy_indirect_tirs(struct mlx5e_priv *priv, bool inner_ttc);
1124+
void mlx5e_destroy_indirect_tirs(struct mlx5e_priv *priv);
11251125

11261126
int mlx5e_create_direct_rqts(struct mlx5e_priv *priv, struct mlx5e_tir *tirs);
11271127
void mlx5e_destroy_direct_rqts(struct mlx5e_priv *priv, struct mlx5e_tir *tirs);

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2717,7 +2717,8 @@ void mlx5e_modify_tirs_hash(struct mlx5e_priv *priv, void *in, int inlen)
27172717
mlx5_core_modify_tir(mdev, priv->indir_tir[tt].tirn, in, inlen);
27182718
}
27192719

2720-
if (!mlx5e_tunnel_inner_ft_supported(priv->mdev))
2720+
/* Verify inner tirs resources allocated */
2721+
if (!priv->inner_indir_tir[0].tirn)
27212722
return;
27222723

27232724
for (tt = 0; tt < MLX5E_NUM_INDIR_TIRS; tt++) {
@@ -3408,14 +3409,15 @@ int mlx5e_create_direct_tirs(struct mlx5e_priv *priv, struct mlx5e_tir *tirs)
34083409
return err;
34093410
}
34103411

3411-
void mlx5e_destroy_indirect_tirs(struct mlx5e_priv *priv, bool inner_ttc)
3412+
void mlx5e_destroy_indirect_tirs(struct mlx5e_priv *priv)
34123413
{
34133414
int i;
34143415

34153416
for (i = 0; i < MLX5E_NUM_INDIR_TIRS; i++)
34163417
mlx5e_destroy_tir(priv->mdev, &priv->indir_tir[i]);
34173418

3418-
if (!inner_ttc || !mlx5e_tunnel_inner_ft_supported(priv->mdev))
3419+
/* Verify inner tirs resources allocated */
3420+
if (!priv->inner_indir_tir[0].tirn)
34193421
return;
34203422

34213423
for (i = 0; i < MLX5E_NUM_INDIR_TIRS; i++)
@@ -5123,7 +5125,7 @@ static int mlx5e_init_nic_rx(struct mlx5e_priv *priv)
51235125
err_destroy_direct_tirs:
51245126
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
51255127
err_destroy_indirect_tirs:
5126-
mlx5e_destroy_indirect_tirs(priv, true);
5128+
mlx5e_destroy_indirect_tirs(priv);
51275129
err_destroy_direct_rqts:
51285130
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
51295131
err_destroy_indirect_rqts:
@@ -5142,7 +5144,7 @@ static void mlx5e_cleanup_nic_rx(struct mlx5e_priv *priv)
51425144
mlx5e_destroy_direct_tirs(priv, priv->xsk_tir);
51435145
mlx5e_destroy_direct_rqts(priv, priv->xsk_tir);
51445146
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
5145-
mlx5e_destroy_indirect_tirs(priv, true);
5147+
mlx5e_destroy_indirect_tirs(priv);
51465148
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
51475149
mlx5e_destroy_rqt(priv, &priv->indir_rqt);
51485150
mlx5e_close_drop_rq(&priv->drop_rq);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,7 +1743,7 @@ static int mlx5e_init_rep_rx(struct mlx5e_priv *priv)
17431743
err_destroy_direct_tirs:
17441744
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
17451745
err_destroy_indirect_tirs:
1746-
mlx5e_destroy_indirect_tirs(priv, false);
1746+
mlx5e_destroy_indirect_tirs(priv);
17471747
err_destroy_direct_rqts:
17481748
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
17491749
err_destroy_indirect_rqts:
@@ -1761,7 +1761,7 @@ static void mlx5e_cleanup_rep_rx(struct mlx5e_priv *priv)
17611761
mlx5e_destroy_rep_root_ft(priv);
17621762
mlx5e_destroy_ttc_table(priv, &priv->fs.ttc);
17631763
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
1764-
mlx5e_destroy_indirect_tirs(priv, false);
1764+
mlx5e_destroy_indirect_tirs(priv);
17651765
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
17661766
mlx5e_destroy_rqt(priv, &priv->indir_rqt);
17671767
mlx5e_close_drop_rq(&priv->drop_rq);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)
396396
err_destroy_direct_tirs:
397397
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
398398
err_destroy_indirect_tirs:
399-
mlx5e_destroy_indirect_tirs(priv, true);
399+
mlx5e_destroy_indirect_tirs(priv);
400400
err_destroy_direct_rqts:
401401
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
402402
err_destroy_indirect_rqts:
@@ -412,7 +412,7 @@ static void mlx5i_cleanup_rx(struct mlx5e_priv *priv)
412412
{
413413
mlx5i_destroy_flow_steering(priv);
414414
mlx5e_destroy_direct_tirs(priv, priv->direct_tir);
415-
mlx5e_destroy_indirect_tirs(priv, true);
415+
mlx5e_destroy_indirect_tirs(priv);
416416
mlx5e_destroy_direct_rqts(priv, priv->direct_tir);
417417
mlx5e_destroy_rqt(priv, &priv->indir_rqt);
418418
mlx5e_close_drop_rq(&priv->drop_rq);

0 commit comments

Comments
 (0)