diff options
author | Michael Chan <michael.chan@broadcom.com> | 2019-11-18 03:56:36 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-18 17:13:28 -0800 |
commit | 19b3751ffa713d04290effb26fe01009010f2206 (patch) | |
tree | ab4d8cb31cf565c508d14aac24fb44039aa2d233 /drivers/net/ethernet/broadcom/bnxt/bnxt.c | |
parent | bnxt_en: Update firmware interface spec to 1.10.1.12. (diff) | |
download | linux-dev-19b3751ffa713d04290effb26fe01009010f2206.tar.xz linux-dev-19b3751ffa713d04290effb26fe01009010f2206.zip |
bnxt_en: Improve RX buffer error handling.
When hardware reports RX buffer errors, the latest 57500 chips do not
require reset. The packet is discarded by the hardware and the
ring will continue to operate.
Also, add an rx_buf_errors counter for this type of error. It can help
the user to identify if the aggregation ring is too small.
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 81bb6ce0adbf..0e5b5b853b2d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1767,8 +1767,12 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, rc = -EIO; if (rx_err & RX_CMPL_ERRORS_BUFFER_ERROR_MASK) { - netdev_warn(bp->dev, "RX buffer error %x\n", rx_err); - bnxt_sched_reset(bp, rxr); + bnapi->cp_ring.rx_buf_errors++; + if (!(bp->flags & BNXT_FLAG_CHIP_P5)) { + netdev_warn(bp->dev, "RX buffer error %x\n", + rx_err); + bnxt_sched_reset(bp, rxr); + } } goto next_rx_no_len; } |