mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
net/mlx4_en: Release QP range in free_resources
Add a missing resource release in ring cleanup. Not doing this leaves a range of QPs that are being reserved, and no one can use them. Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9858d2d1ac
commit
044ca2a5f2
2 changed files with 9 additions and 4 deletions
|
@ -929,15 +929,20 @@ void mlx4_en_free_resources(struct mlx4_en_priv *priv)
|
|||
if (priv->rx_cq[i].buf)
|
||||
mlx4_en_destroy_cq(priv, &priv->rx_cq[i]);
|
||||
}
|
||||
|
||||
if (priv->base_tx_qpn) {
|
||||
mlx4_qp_release_range(priv->mdev->dev, priv->base_tx_qpn, priv->tx_ring_num);
|
||||
priv->base_tx_qpn = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int mlx4_en_alloc_resources(struct mlx4_en_priv *priv)
|
||||
{
|
||||
struct mlx4_en_port_profile *prof = priv->prof;
|
||||
int i;
|
||||
int base_tx_qpn, err;
|
||||
int err;
|
||||
|
||||
err = mlx4_qp_reserve_range(priv->mdev->dev, priv->tx_ring_num, 256, &base_tx_qpn);
|
||||
err = mlx4_qp_reserve_range(priv->mdev->dev, priv->tx_ring_num, 256, &priv->base_tx_qpn);
|
||||
if (err) {
|
||||
en_err(priv, "failed reserving range for TX rings\n");
|
||||
return err;
|
||||
|
@ -949,7 +954,7 @@ int mlx4_en_alloc_resources(struct mlx4_en_priv *priv)
|
|||
prof->tx_ring_size, i, TX))
|
||||
goto err;
|
||||
|
||||
if (mlx4_en_create_tx_ring(priv, &priv->tx_ring[i], base_tx_qpn + i,
|
||||
if (mlx4_en_create_tx_ring(priv, &priv->tx_ring[i], priv->base_tx_qpn + i,
|
||||
prof->tx_ring_size, TXBB_SIZE))
|
||||
goto err;
|
||||
}
|
||||
|
@ -969,7 +974,6 @@ int mlx4_en_alloc_resources(struct mlx4_en_priv *priv)
|
|||
|
||||
err:
|
||||
en_err(priv, "Failed to allocate NIC resources\n");
|
||||
mlx4_qp_release_range(priv->mdev->dev, base_tx_qpn, priv->tx_ring_num);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
|
|
@ -495,6 +495,7 @@ struct mlx4_en_priv {
|
|||
int vids[128];
|
||||
bool wol;
|
||||
struct device *ddev;
|
||||
int base_tx_qpn;
|
||||
|
||||
#ifdef CONFIG_MLX4_EN_DCB
|
||||
struct ieee_ets ets;
|
||||
|
|
Loading…
Reference in a new issue