All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements
@ 2021-08-12 21:42 Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 1/4] bnxt: don't lock the tx queue from napi poll Jakub Kicinski
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-12 21:42 UTC (permalink / raw)
  To: davem
  Cc: netdev, michael.chan, prashant, eddie.wai, huangjw, gospo,
	edwin.peer, Jakub Kicinski

A lockdep warning was triggered by netpoll because napi poll
was taking the xmit lock. Fix that and a couple more issues
noticed while reading the code.

Jakub Kicinski (4):
  bnxt: don't lock the tx queue from napi poll
  bnxt: disable napi before canceling DIM
  bnxt: make sure xmit_more + errors does not miss doorbells
  bnxt: count Tx drops

 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 98 ++++++++++++++---------
 drivers/net/ethernet/broadcom/bnxt/bnxt.h |  1 +
 2 files changed, 62 insertions(+), 37 deletions(-)

-- 
2.31.1


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

* [PATCH net v3 1/4] bnxt: don't lock the tx queue from napi poll
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
@ 2021-08-12 21:42 ` Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 2/4] bnxt: disable napi before canceling DIM Jakub Kicinski
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-12 21:42 UTC (permalink / raw)
  To: davem
  Cc: netdev, michael.chan, prashant, eddie.wai, huangjw, gospo,
	edwin.peer, Jakub Kicinski

We can't take the tx lock from the napi poll routine, because
netpoll can poll napi at any moment, including with the tx lock
already held.

The tx lock is protecting against two paths - the disable
path, and (as Michael points out) the NETDEV_TX_BUSY case
which may occur if NAPI completions race with start_xmit
and both decide to re-enable the queue.

For the disable/ifdown path use synchronize_net() to make sure
closing the device does not race we restarting the queues.
Annotate accesses to dev_state against data races.

For the NAPI cleanup vs start_xmit path - appropriate barriers
are already in place in the main spot where Tx queue is stopped
but we need to do the same careful dance in the TX_BUSY case.

Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--
v2: keep the unlikely in bnxt_tx_int() [Edwin]
v3: be careful about stopping in the BUSY case [Michael]
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 54 ++++++++++++++---------
 1 file changed, 32 insertions(+), 22 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 2fe743503949..84aa25875050 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -365,6 +365,26 @@ static u16 bnxt_xmit_get_cfa_action(struct sk_buff *skb)
 	return md_dst->u.port_info.port_id;
 }
 
+static bool bnxt_txr_netif_try_stop_queue(struct bnxt *bp,
+					  struct bnxt_tx_ring_info *txr,
+					  struct netdev_queue *txq)
+{
+	netif_tx_stop_queue(txq);
+
+	/* netif_tx_stop_queue() must be done before checking
+	 * tx index in bnxt_tx_avail() below, because in
+	 * bnxt_tx_int(), we update tx index before checking for
+	 * netif_tx_queue_stopped().
+	 */
+	smp_mb();
+	if (bnxt_tx_avail(bp, txr) > bp->tx_wake_thresh) {
+		netif_tx_wake_queue(txq);
+		return false;
+	}
+
+	return true;
+}
+
 static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct bnxt *bp = netdev_priv(dev);
@@ -393,8 +413,8 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	free_size = bnxt_tx_avail(bp, txr);
 	if (unlikely(free_size < skb_shinfo(skb)->nr_frags + 2)) {
-		netif_tx_stop_queue(txq);
-		return NETDEV_TX_BUSY;
+		if (bnxt_txr_netif_try_stop_queue(bp, txr, txq))
+			return NETDEV_TX_BUSY;
 	}
 
 	length = skb->len;
@@ -626,16 +646,7 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		if (netdev_xmit_more() && !tx_buf->is_push)
 			bnxt_db_write(bp, &txr->tx_db, prod);
 
-		netif_tx_stop_queue(txq);
-
-		/* netif_tx_stop_queue() must be done before checking
-		 * tx index in bnxt_tx_avail() below, because in
-		 * bnxt_tx_int(), we update tx index before checking for
-		 * netif_tx_queue_stopped().
-		 */
-		smp_mb();
-		if (bnxt_tx_avail(bp, txr) > bp->tx_wake_thresh)
-			netif_tx_wake_queue(txq);
+		bnxt_txr_netif_try_stop_queue(bp, txr, txq);
 	}
 	return NETDEV_TX_OK;
 
@@ -732,14 +743,9 @@ static void bnxt_tx_int(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts)
 	smp_mb();
 
 	if (unlikely(netif_tx_queue_stopped(txq)) &&
-	    (bnxt_tx_avail(bp, txr) > bp->tx_wake_thresh)) {
-		__netif_tx_lock(txq, smp_processor_id());
-		if (netif_tx_queue_stopped(txq) &&
-		    bnxt_tx_avail(bp, txr) > bp->tx_wake_thresh &&
-		    txr->dev_state != BNXT_DEV_STATE_CLOSING)
-			netif_tx_wake_queue(txq);
-		__netif_tx_unlock(txq);
-	}
+	    bnxt_tx_avail(bp, txr) > bp->tx_wake_thresh &&
+	    READ_ONCE(txr->dev_state) != BNXT_DEV_STATE_CLOSING)
+		netif_tx_wake_queue(txq);
 }
 
 static struct page *__bnxt_alloc_rx_page(struct bnxt *bp, dma_addr_t *mapping,
@@ -9165,9 +9171,11 @@ void bnxt_tx_disable(struct bnxt *bp)
 	if (bp->tx_ring) {
 		for (i = 0; i < bp->tx_nr_rings; i++) {
 			txr = &bp->tx_ring[i];
-			txr->dev_state = BNXT_DEV_STATE_CLOSING;
+			WRITE_ONCE(txr->dev_state, BNXT_DEV_STATE_CLOSING);
 		}
 	}
+	/* Make sure napi polls see @dev_state change */
+	synchronize_net();
 	/* Drop carrier first to prevent TX timeout */
 	netif_carrier_off(bp->dev);
 	/* Stop all TX queues */
@@ -9181,8 +9189,10 @@ void bnxt_tx_enable(struct bnxt *bp)
 
 	for (i = 0; i < bp->tx_nr_rings; i++) {
 		txr = &bp->tx_ring[i];
-		txr->dev_state = 0;
+		WRITE_ONCE(txr->dev_state, 0);
 	}
+	/* Make sure napi polls see @dev_state change */
+	synchronize_net();
 	netif_tx_wake_all_queues(bp->dev);
 	if (bp->link_info.link_up)
 		netif_carrier_on(bp->dev);
-- 
2.31.1


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

* [PATCH net v3 2/4] bnxt: disable napi before canceling DIM
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 1/4] bnxt: don't lock the tx queue from napi poll Jakub Kicinski
@ 2021-08-12 21:42 ` Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 3/4] bnxt: make sure xmit_more + errors does not miss doorbells Jakub Kicinski
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-12 21:42 UTC (permalink / raw)
  To: davem
  Cc: netdev, michael.chan, prashant, eddie.wai, huangjw, gospo,
	edwin.peer, Jakub Kicinski

napi schedules DIM, napi has to be disabled first,
then DIM canceled.

Noticed while reading the code.

Fixes: 0bc0b97fca73 ("bnxt_en: cleanup DIM work on device shutdown")
Fixes: 6a8788f25625 ("bnxt_en: add support for software dynamic interrupt moderation")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 84aa25875050..721b5df36311 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -9134,10 +9134,9 @@ static void bnxt_disable_napi(struct bnxt *bp)
 	for (i = 0; i < bp->cp_nr_rings; i++) {
 		struct bnxt_cp_ring_info *cpr = &bp->bnapi[i]->cp_ring;
 
+		napi_disable(&bp->bnapi[i]->napi);
 		if (bp->bnapi[i]->rx_ring)
 			cancel_work_sync(&cpr->dim.work);
-
-		napi_disable(&bp->bnapi[i]->napi);
 	}
 }
 
-- 
2.31.1


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

* [PATCH net v3 3/4] bnxt: make sure xmit_more + errors does not miss doorbells
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 1/4] bnxt: don't lock the tx queue from napi poll Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 2/4] bnxt: disable napi before canceling DIM Jakub Kicinski
@ 2021-08-12 21:42 ` Jakub Kicinski
  2021-08-12 21:42 ` [PATCH net v3 4/4] bnxt: count Tx drops Jakub Kicinski
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-12 21:42 UTC (permalink / raw)
  To: davem
  Cc: netdev, michael.chan, prashant, eddie.wai, huangjw, gospo,
	edwin.peer, Jakub Kicinski

skbs are freed on error and not put on the ring. We may, however,
be in a situation where we're freeing the last skb of a batch,
and there is a doorbell ring pending because of xmit_more() being
true earlier. Make sure we ring the door bell in such situations.

Since errors are rare don't pay attention to xmit_more() and just
always flush the pending frames.

The busy case should be safe to be left alone because it can
only happen if start_xmit races with completions and they
both enable the queue. In that case the kick can't be pending.

Noticed while reading the code.

Fixes: 4d172f21cefe ("bnxt_en: Implement xmit_more.")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
v2: - netdev_warn() -> netif_warn() [Edwin]
    - use correct prod value [Michael]
v3: - consolidate the txbuf->skb clearing [Michael]
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 39 +++++++++++++++--------
 drivers/net/ethernet/broadcom/bnxt/bnxt.h |  1 +
 2 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 721b5df36311..389016ea65cf 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -72,7 +72,8 @@
 #include "bnxt_debugfs.h"
 
 #define BNXT_TX_TIMEOUT		(5 * HZ)
-#define BNXT_DEF_MSG_ENABLE	(NETIF_MSG_DRV | NETIF_MSG_HW)
+#define BNXT_DEF_MSG_ENABLE	(NETIF_MSG_DRV | NETIF_MSG_HW | \
+				 NETIF_MSG_TX_ERR)
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Broadcom BCM573xx network driver");
@@ -365,6 +366,13 @@ static u16 bnxt_xmit_get_cfa_action(struct sk_buff *skb)
 	return md_dst->u.port_info.port_id;
 }
 
+static void bnxt_txr_db_kick(struct bnxt *bp, struct bnxt_tx_ring_info *txr,
+			     u16 prod)
+{
+	bnxt_db_write(bp, &txr->tx_db, prod);
+	txr->kick_pending = 0;
+}
+
 static bool bnxt_txr_netif_try_stop_queue(struct bnxt *bp,
 					  struct bnxt_tx_ring_info *txr,
 					  struct netdev_queue *txq)
@@ -413,6 +421,10 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	free_size = bnxt_tx_avail(bp, txr);
 	if (unlikely(free_size < skb_shinfo(skb)->nr_frags + 2)) {
+		/* We must have raced with NAPI cleanup */
+		if (net_ratelimit() && txr->kick_pending)
+			netif_warn(bp, tx_err, dev,
+				   "bnxt: ring busy w/ flush pending!\n");
 		if (bnxt_txr_netif_try_stop_queue(bp, txr, txq))
 			return NETDEV_TX_BUSY;
 	}
@@ -537,21 +549,16 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 normal_tx:
 	if (length < BNXT_MIN_PKT_SIZE) {
 		pad = BNXT_MIN_PKT_SIZE - length;
-		if (skb_pad(skb, pad)) {
+		if (skb_pad(skb, pad))
 			/* SKB already freed. */
-			tx_buf->skb = NULL;
-			return NETDEV_TX_OK;
-		}
+			goto tx_kick_pending;
 		length = BNXT_MIN_PKT_SIZE;
 	}
 
 	mapping = dma_map_single(&pdev->dev, skb->data, len, DMA_TO_DEVICE);
 
-	if (unlikely(dma_mapping_error(&pdev->dev, mapping))) {
-		dev_kfree_skb_any(skb);
-		tx_buf->skb = NULL;
-		return NETDEV_TX_OK;
-	}
+	if (unlikely(dma_mapping_error(&pdev->dev, mapping)))
+		goto tx_free;
 
 	dma_unmap_addr_set(tx_buf, mapping, mapping);
 	flags = (len << TX_BD_LEN_SHIFT) | TX_BD_TYPE_LONG_TX_BD |
@@ -638,13 +645,15 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	txr->tx_prod = prod;
 
 	if (!netdev_xmit_more() || netif_xmit_stopped(txq))
-		bnxt_db_write(bp, &txr->tx_db, prod);
+		bnxt_txr_db_kick(bp, txr, prod);
+	else
+		txr->kick_pending = 1;
 
 tx_done:
 
 	if (unlikely(bnxt_tx_avail(bp, txr) <= MAX_SKB_FRAGS + 1)) {
 		if (netdev_xmit_more() && !tx_buf->is_push)
-			bnxt_db_write(bp, &txr->tx_db, prod);
+			bnxt_txr_db_kick(bp, txr, prod);
 
 		bnxt_txr_netif_try_stop_queue(bp, txr, txq);
 	}
@@ -659,7 +668,6 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	/* start back at beginning and unmap skb */
 	prod = txr->tx_prod;
 	tx_buf = &txr->tx_buf_ring[prod];
-	tx_buf->skb = NULL;
 	dma_unmap_single(&pdev->dev, dma_unmap_addr(tx_buf, mapping),
 			 skb_headlen(skb), PCI_DMA_TODEVICE);
 	prod = NEXT_TX(prod);
@@ -673,7 +681,12 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 			       PCI_DMA_TODEVICE);
 	}
 
+tx_free:
 	dev_kfree_skb_any(skb);
+tx_kick_pending:
+	if (txr->kick_pending)
+		bnxt_txr_db_kick(bp, txr, txr->tx_prod);
+	txr->tx_buf_ring[txr->tx_prod].skb = NULL;
 	return NETDEV_TX_OK;
 }
 
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index bcf8d00b8c80..ba4e0fc38520 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -786,6 +786,7 @@ struct bnxt_tx_ring_info {
 	u16			tx_prod;
 	u16			tx_cons;
 	u16			txq_index;
+	u8			kick_pending;
 	struct bnxt_db_info	tx_db;
 
 	struct tx_bd		*tx_desc_ring[MAX_TX_PAGES];
-- 
2.31.1


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

* [PATCH net v3 4/4] bnxt: count Tx drops
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
                   ` (2 preceding siblings ...)
  2021-08-12 21:42 ` [PATCH net v3 3/4] bnxt: make sure xmit_more + errors does not miss doorbells Jakub Kicinski
@ 2021-08-12 21:42 ` Jakub Kicinski
  2021-08-12 22:07 ` [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Michael Chan
  2021-08-12 22:35 ` Edwin Peer
  5 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-12 21:42 UTC (permalink / raw)
  To: davem
  Cc: netdev, michael.chan, prashant, eddie.wai, huangjw, gospo,
	edwin.peer, Jakub Kicinski

Drivers should count packets they are dropping.

Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 389016ea65cf..dd2d2a5fef15 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -412,6 +412,7 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	i = skb_get_queue_mapping(skb);
 	if (unlikely(i >= bp->tx_nr_rings)) {
 		dev_kfree_skb_any(skb);
+		atomic_long_inc(&dev->tx_dropped);
 		return NETDEV_TX_OK;
 	}
 
@@ -687,6 +688,7 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	if (txr->kick_pending)
 		bnxt_txr_db_kick(bp, txr, txr->tx_prod);
 	txr->tx_buf_ring[txr->tx_prod].skb = NULL;
+	atomic_long_inc(&dev->tx_dropped);
 	return NETDEV_TX_OK;
 }
 
-- 
2.31.1


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

* Re: [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
                   ` (3 preceding siblings ...)
  2021-08-12 21:42 ` [PATCH net v3 4/4] bnxt: count Tx drops Jakub Kicinski
@ 2021-08-12 22:07 ` Michael Chan
  2021-08-13 17:27   ` Jakub Kicinski
  2021-08-12 22:35 ` Edwin Peer
  5 siblings, 1 reply; 8+ messages in thread
From: Michael Chan @ 2021-08-12 22:07 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: David Miller, Netdev, Prashant Sreedharan, Eddie Wai,
	Jeffrey Huang, Andrew Gospodarek, Edwin Peer

[-- Attachment #1: Type: text/plain, Size: 297 bytes --]

On Thu, Aug 12, 2021 at 2:42 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> A lockdep warning was triggered by netpoll because napi poll
> was taking the xmit lock. Fix that and a couple more issues
> noticed while reading the code.

Reviewed-by: Michael Chan <michael.chan@broadcom.com>

Thanks.

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4209 bytes --]

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

* Re: [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements
  2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
                   ` (4 preceding siblings ...)
  2021-08-12 22:07 ` [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Michael Chan
@ 2021-08-12 22:35 ` Edwin Peer
  5 siblings, 0 replies; 8+ messages in thread
From: Edwin Peer @ 2021-08-12 22:35 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: David S . Miller, netdev, Michael Chan, Prashant Sreedharan,
	Eddie Wai, Jeffrey Huang, Andrew Gospodarek

Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>

Regards,
Edwin Peer

On Thu, Aug 12, 2021 at 2:42 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> A lockdep warning was triggered by netpoll because napi poll
> was taking the xmit lock. Fix that and a couple more issues
> noticed while reading the code.
>
> Jakub Kicinski (4):
>   bnxt: don't lock the tx queue from napi poll
>   bnxt: disable napi before canceling DIM
>   bnxt: make sure xmit_more + errors does not miss doorbells
>   bnxt: count Tx drops
>
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c | 98 ++++++++++++++---------
>  drivers/net/ethernet/broadcom/bnxt/bnxt.h |  1 +
>  2 files changed, 62 insertions(+), 37 deletions(-)
>
> --
> 2.31.1
>

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

* Re: [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements
  2021-08-12 22:07 ` [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Michael Chan
@ 2021-08-13 17:27   ` Jakub Kicinski
  0 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2021-08-13 17:27 UTC (permalink / raw)
  To: Michael Chan, Edwin Peer
  Cc: David Miller, Netdev, Prashant Sreedharan, Eddie Wai,
	Jeffrey Huang, Andrew Gospodarek

On Thu, 12 Aug 2021 15:07:53 -0700 Michael Chan wrote:
> On Thu, Aug 12, 2021 at 2:42 PM Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > A lockdep warning was triggered by netpoll because napi poll
> > was taking the xmit lock. Fix that and a couple more issues
> > noticed while reading the code.  
> 
> Reviewed-by: Michael Chan <michael.chan@broadcom.com>

Applied, thanks!

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

end of thread, other threads:[~2021-08-13 17:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-12 21:42 [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Jakub Kicinski
2021-08-12 21:42 ` [PATCH net v3 1/4] bnxt: don't lock the tx queue from napi poll Jakub Kicinski
2021-08-12 21:42 ` [PATCH net v3 2/4] bnxt: disable napi before canceling DIM Jakub Kicinski
2021-08-12 21:42 ` [PATCH net v3 3/4] bnxt: make sure xmit_more + errors does not miss doorbells Jakub Kicinski
2021-08-12 21:42 ` [PATCH net v3 4/4] bnxt: count Tx drops Jakub Kicinski
2021-08-12 22:07 ` [PATCH net v3 0/4] bnxt: Tx NAPI disabling resiliency improvements Michael Chan
2021-08-13 17:27   ` Jakub Kicinski
2021-08-12 22:35 ` Edwin Peer

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.