]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.19.35/bnxt_en-reset-device-on-rx-buffer-errors.patch
Linux 4.19.35
[thirdparty/kernel/stable-queue.git] / releases / 4.19.35 / bnxt_en-reset-device-on-rx-buffer-errors.patch
CommitLineData
a9fba688
SL
1From 81da2651bf88ba0b3c599399c508bb731cc631a6 Mon Sep 17 00:00:00 2001
2From: Michael Chan <michael.chan@broadcom.com>
3Date: Mon, 8 Apr 2019 17:39:55 -0400
4Subject: bnxt_en: Reset device on RX buffer errors.
5
6[ Upstream commit 8e44e96c6c8e8fb80b84a2ca11798a8554f710f2 ]
7
8If the RX completion indicates RX buffers errors, the RX ring will be
9disabled by firmware and no packets will be received on that ring from
10that point on. Recover by resetting the device.
11
12Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
13Signed-off-by: Michael Chan <michael.chan@broadcom.com>
14Signed-off-by: David S. Miller <davem@davemloft.net>
15Signed-off-by: Sasha Levin <sashal@kernel.org>
16---
17 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++++++
18 1 file changed, 6 insertions(+)
19
20diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
21index a8abb47178be..581ad0a17d0c 100644
22--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
23+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
24@@ -1573,11 +1573,17 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_napi *bnapi, u32 *raw_cons,
25
26 rx_buf->data = NULL;
27 if (rxcmp1->rx_cmp_cfa_code_errors_v2 & RX_CMP_L2_ERRORS) {
28+ u32 rx_err = le32_to_cpu(rxcmp1->rx_cmp_cfa_code_errors_v2);
29+
30 bnxt_reuse_rx_data(rxr, cons, data);
31 if (agg_bufs)
32 bnxt_reuse_rx_agg_bufs(bnapi, cp_cons, agg_bufs);
33
34 rc = -EIO;
35+ if (rx_err & RX_CMPL_ERRORS_BUFFER_ERROR_MASK) {
36+ netdev_warn(bp->dev, "RX buffer error %x\n", rx_err);
37+ bnxt_sched_reset(bp, rxr);
38+ }
39 goto next_rx;
40 }
41
42--
432.19.1
44