* [PATCH net 1/3] bnxt_en: Ring free response from close path should use completion ring
2016-01-28 8:11 [PATCH net 0/3] bnxt_en: Bug fixes Michael Chan
@ 2016-01-28 8:11 ` Michael Chan
2016-01-28 8:11 ` [PATCH net 2/3] bnxt_en: Exclude rx_drop_pkts hw counter from the stack's rx_dropped counter Michael Chan
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Michael Chan @ 2016-01-28 8:11 UTC (permalink / raw)
To: davem; +Cc: netdev
From: Prashant Sreedharan <prashant@broadcom.com>
Use completion ring for ring free response from firmware. The response
will be the last entry in the ring and we can free the ring after getting
the response. This will guarantee no spurious DMA to freed memory.
Signed-off-by: Prashant Sreedharan <prashant@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index df835f5..17dcacd 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -3406,7 +3406,7 @@ static int hwrm_ring_free_send_msg(struct bnxt *bp,
struct hwrm_ring_free_output *resp = bp->hwrm_cmd_resp_addr;
u16 error_code;
- bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_RING_FREE, -1, -1);
+ bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_RING_FREE, cmpl_ring_id, -1);
req.ring_type = ring_type;
req.ring_id = cpu_to_le16(ring->fw_ring_id);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 2/3] bnxt_en: Exclude rx_drop_pkts hw counter from the stack's rx_dropped counter.
2016-01-28 8:11 [PATCH net 0/3] bnxt_en: Bug fixes Michael Chan
2016-01-28 8:11 ` [PATCH net 1/3] bnxt_en: Ring free response from close path should use completion ring Michael Chan
@ 2016-01-28 8:11 ` Michael Chan
2016-01-28 8:11 ` [PATCH net 3/3] bnxt_en: Fix crash in bnxt_free_tx_skbs() during tx timeout Michael Chan
2016-01-30 1:28 ` [PATCH net 0/3] bnxt_en: Bug fixes David Miller
3 siblings, 0 replies; 5+ messages in thread
From: Michael Chan @ 2016-01-28 8:11 UTC (permalink / raw)
To: davem; +Cc: netdev
This hardware counter is misleading as it counts dropped packets that
don't match the hardware filters for unicast/broadcast/multicast. We
will still report this counter in ethtool -S for diagnostics purposes.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 17dcacd..ebc5413 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -4819,8 +4819,6 @@ bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
stats->multicast += le64_to_cpu(hw_stats->rx_mcast_pkts);
- stats->rx_dropped += le64_to_cpu(hw_stats->rx_drop_pkts);
-
stats->tx_dropped += le64_to_cpu(hw_stats->tx_drop_pkts);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 3/3] bnxt_en: Fix crash in bnxt_free_tx_skbs() during tx timeout.
2016-01-28 8:11 [PATCH net 0/3] bnxt_en: Bug fixes Michael Chan
2016-01-28 8:11 ` [PATCH net 1/3] bnxt_en: Ring free response from close path should use completion ring Michael Chan
2016-01-28 8:11 ` [PATCH net 2/3] bnxt_en: Exclude rx_drop_pkts hw counter from the stack's rx_dropped counter Michael Chan
@ 2016-01-28 8:11 ` Michael Chan
2016-01-30 1:28 ` [PATCH net 0/3] bnxt_en: Bug fixes David Miller
3 siblings, 0 replies; 5+ messages in thread
From: Michael Chan @ 2016-01-28 8:11 UTC (permalink / raw)
To: davem; +Cc: netdev
The ring index j is not wrapped properly at the end of the ring, causing
it to reference pointers past the end of the ring. For proper loop
termination and to access the ring properly, we need to increment j and
mask it before referencing the ring entry.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index ebc5413..5dc89e5 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1490,10 +1490,11 @@ static void bnxt_free_tx_skbs(struct bnxt *bp)
last = tx_buf->nr_frags;
j += 2;
- for (k = 0; k < last; k++, j = NEXT_TX(j)) {
+ for (k = 0; k < last; k++, j++) {
+ int ring_idx = j & bp->tx_ring_mask;
skb_frag_t *frag = &skb_shinfo(skb)->frags[k];
- tx_buf = &txr->tx_buf_ring[j];
+ tx_buf = &txr->tx_buf_ring[ring_idx];
dma_unmap_page(
&pdev->dev,
dma_unmap_addr(tx_buf, mapping),
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 0/3] bnxt_en: Bug fixes.
2016-01-28 8:11 [PATCH net 0/3] bnxt_en: Bug fixes Michael Chan
` (2 preceding siblings ...)
2016-01-28 8:11 ` [PATCH net 3/3] bnxt_en: Fix crash in bnxt_free_tx_skbs() during tx timeout Michael Chan
@ 2016-01-30 1:28 ` David Miller
3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2016-01-30 1:28 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: Michael Chan <mchan@broadcom.com>
Date: Thu, 28 Jan 2016 03:11:19 -0500
> 3 small bug fix patches for net.
Series applied, thanks Michael.
^ permalink raw reply [flat|nested] 5+ messages in thread