All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] bnx2x: always reinitialize the rx queue indices
@ 2015-12-09 22:11 Chas Williams
  2015-12-13  0:25 ` Thomas Monjalon
  0 siblings, 1 reply; 2+ messages in thread
From: Chas Williams @ 2015-12-09 22:11 UTC (permalink / raw)
  To: dev

If you stop and start the driver, the rx queue will have the previous
index values when programming the adapter.  Therefore, we should always
reset the queue indices when the rx ring is setup.  Note:  We need to
clear (write) the status block's completion queue index since it is
possibly in a read cache.

Tidy some init code to make it clearer what the defaults are.

Signed-off-by: Chas Williams <3chas3@gmail.com>
---
 drivers/net/bnx2x/bnx2x.c      | 16 +++++++++++-----
 drivers/net/bnx2x/bnx2x_rxtx.c |  2 +-
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 294711f..d6e28a5 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -5005,11 +5005,17 @@ static void bnx2x_init_rx_rings(struct bnx2x_softc *sc)
 			return;
 		}
 
-/*
- * Activate the BD ring...
- * Warning, this will generate an interrupt (to the TSTORM)
- * so this can only be done after the chip is initialized
- */
+		rxq->rx_bd_head = 0;
+		rxq->rx_bd_tail = rxq->nb_rx_desc;
+		rxq->rx_cq_head = 0;
+		rxq->rx_cq_tail = TOTAL_RCQ_ENTRIES(rxq);
+		*fp->rx_cq_cons_sb = 0;
+
+		/*
+		 * Activate the BD ring...
+		 * Warning, this will generate an interrupt (to the TSTORM)
+		 * so this can only be done after the chip is initialized
+		 */
 		bnx2x_update_rx_prod(sc, fp, rxq->rx_bd_tail, rxq->rx_cq_tail);
 
 		if (i != 0) {
diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c
index 9379127..89d93a1 100644
--- a/drivers/net/bnx2x/bnx2x_rxtx.c
+++ b/drivers/net/bnx2x/bnx2x_rxtx.c
@@ -156,7 +156,7 @@ bnx2x_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->pkt_first_seg = NULL;
 	rxq->pkt_last_seg = NULL;
 	rxq->rx_bd_head = 0;
-	rxq->rx_bd_tail = idx;
+	rxq->rx_bd_tail = rxq->nb_rx_desc;
 
 	/* Allocate CQ chain. */
 	dma_size = BNX2X_RX_CHAIN_PAGE_SZ * rxq->nb_cq_pages;
-- 
2.1.0

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

* Re: [PATCH] bnx2x: always reinitialize the rx queue indices
  2015-12-09 22:11 [PATCH] bnx2x: always reinitialize the rx queue indices Chas Williams
@ 2015-12-13  0:25 ` Thomas Monjalon
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Monjalon @ 2015-12-13  0:25 UTC (permalink / raw)
  To: Chas Williams; +Cc: dev

2015-12-09 17:11, Chas Williams:
> If you stop and start the driver, the rx queue will have the previous
> index values when programming the adapter.  Therefore, we should always
> reset the queue indices when the rx ring is setup.  Note:  We need to
> clear (write) the status block's completion queue index since it is
> possibly in a read cache.
> 
> Tidy some init code to make it clearer what the defaults are.
> 
> Signed-off-by: Chas Williams <3chas3@gmail.com>

Applied, thanks

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

end of thread, other threads:[~2015-12-13  0:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-09 22:11 [PATCH] bnx2x: always reinitialize the rx queue indices Chas Williams
2015-12-13  0:25 ` Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.