netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver
@ 2012-06-25 10:24 Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 1/3] net/mlx4_en: Set correct port parameters during device initialization Yevgeny Petrilin
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Yevgeny Petrilin @ 2012-06-25 10:24 UTC (permalink / raw)
  To: davem; +Cc: netdev

This is a set of 3 bug fixes generated agains net tree:

---
Diff from V1:
Removed atomic counter patch for rework.

Yevgeny Petrilin (3):
	net/mlx4_en: Set correct port parameters during device initialization
	net/mlx4: Use single completion vector after NOP failure
	net/mlx4_en: Release QP range in free_resources

 en_netdev.c |   18 ++++++++++++------
 main.c      |    2 ++
 mlx4_en.h   |    1 +
 3 files changed, 15 insertions(+), 6 deletions(-)

Thanks,
Yevgeny

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH V1 1/3] net/mlx4_en: Set correct port parameters during device initialization
  2012-06-25 10:24 [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver Yevgeny Petrilin
@ 2012-06-25 10:24 ` Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 2/3] net/mlx4: Use single completion vector after NOP failure Yevgeny Petrilin
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Yevgeny Petrilin @ 2012-06-25 10:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, Yevgeny Petrilin

Set valid port parameters: MTU and flow control configuration when
configuring the port during HW device initialization,
prior to the net device open() being called.
Using  invalid parameters (such as all zeros)
could lead to bad firmware behavior.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 926d8aa..a80280e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1204,9 +1204,11 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
 	en_warn(priv, "Using %d RX rings\n", prof->rx_ring_num);
 
 	/* Configure port */
+	mlx4_en_calc_rx_buf(dev);
 	err = mlx4_SET_PORT_general(mdev->dev, priv->port,
-				    MLX4_EN_MIN_MTU,
-				    0, 0, 0, 0);
+				    priv->rx_skb_size + ETH_FCS_LEN,
+				    prof->tx_pause, prof->tx_ppp,
+				    prof->rx_pause, prof->rx_ppp);
 	if (err) {
 		en_err(priv, "Failed setting port general configurations "
 		       "for port %d, with error %d\n", priv->port, err);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH V1 2/3] net/mlx4: Use single completion vector after NOP failure
  2012-06-25 10:24 [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 1/3] net/mlx4_en: Set correct port parameters during device initialization Yevgeny Petrilin
@ 2012-06-25 10:24 ` Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 3/3] net/mlx4_en: Release QP range in free_resources Yevgeny Petrilin
  2012-06-25 23:30 ` [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Yevgeny Petrilin @ 2012-06-25 10:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, Yevgeny Petrilin

Fix a crash at the error flow of NOP command which caused the driver to try and use
a completion vector which wasn't allocated.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
 drivers/net/ethernet/mellanox/mlx4/main.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index 18c8deb..c91a2b8 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -1978,6 +1978,8 @@ slave_start:
 	if (err == -EBUSY && (dev->flags & MLX4_FLAG_MSI_X) &&
 	    !mlx4_is_mfunc(dev)) {
 		dev->flags &= ~MLX4_FLAG_MSI_X;
+		dev->caps.num_comp_vectors = 1;
+		dev->caps.comp_pool	   = 0;
 		pci_disable_msix(pdev);
 		err = mlx4_setup_hca(dev);
 	}
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH V1 3/3] net/mlx4_en: Release QP range in free_resources
  2012-06-25 10:24 [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 1/3] net/mlx4_en: Set correct port parameters during device initialization Yevgeny Petrilin
  2012-06-25 10:24 ` [PATCH V1 2/3] net/mlx4: Use single completion vector after NOP failure Yevgeny Petrilin
@ 2012-06-25 10:24 ` Yevgeny Petrilin
  2012-06-25 23:30 ` [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Yevgeny Petrilin @ 2012-06-25 10:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, Yevgeny Petrilin

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>
---
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c |   12 ++++++++----
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h   |    1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index a80280e..073b85b 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -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;
 }
 
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
index 6ae3509..225c20d 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
@@ -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;
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver
  2012-06-25 10:24 [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver Yevgeny Petrilin
                   ` (2 preceding siblings ...)
  2012-06-25 10:24 ` [PATCH V1 3/3] net/mlx4_en: Release QP range in free_resources Yevgeny Petrilin
@ 2012-06-25 23:30 ` David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2012-06-25 23:30 UTC (permalink / raw)
  To: yevgenyp; +Cc: netdev

From: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Date: Mon, 25 Jun 2012 13:24:10 +0300

> This is a set of 3 bug fixes generated agains net tree:
> 
> ---
> Diff from V1:
> Removed atomic counter patch for rework.
> 
> Yevgeny Petrilin (3):
> 	net/mlx4_en: Set correct port parameters during device initialization
> 	net/mlx4: Use single completion vector after NOP failure
> 	net/mlx4_en: Release QP range in free_resources

All applied, thanks.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-06-25 23:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-25 10:24 [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver Yevgeny Petrilin
2012-06-25 10:24 ` [PATCH V1 1/3] net/mlx4_en: Set correct port parameters during device initialization Yevgeny Petrilin
2012-06-25 10:24 ` [PATCH V1 2/3] net/mlx4: Use single completion vector after NOP failure Yevgeny Petrilin
2012-06-25 10:24 ` [PATCH V1 3/3] net/mlx4_en: Release QP range in free_resources Yevgeny Petrilin
2012-06-25 23:30 ` [PATCH net V1 0/3] net/mlx4: Bug fixes for the mlx4_en driver David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).