]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.14.112/bnxt_en-reset-device-on-rx-buffer-errors.patch
Linux 4.14.112
[thirdparty/kernel/stable-queue.git] / releases / 4.14.112 / bnxt_en-reset-device-on-rx-buffer-errors.patch
1 From foo@baz Mon Apr 15 07:47:06 CEST 2019
2 From: Michael Chan <michael.chan@broadcom.com>
3 Date: Mon, 8 Apr 2019 17:39:55 -0400
4 Subject: bnxt_en: Reset device on RX buffer errors.
5
6 From: Michael Chan <michael.chan@broadcom.com>
7
8 [ Upstream commit 8e44e96c6c8e8fb80b84a2ca11798a8554f710f2 ]
9
10 If the RX completion indicates RX buffers errors, the RX ring will be
11 disabled by firmware and no packets will be received on that ring from
12 that point on. Recover by resetting the device.
13
14 Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
15 Signed-off-by: Michael Chan <michael.chan@broadcom.com>
16 Signed-off-by: David S. Miller <davem@davemloft.net>
17 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18 ---
19 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++++++
20 1 file changed, 6 insertions(+)
21
22 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
23 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
24 @@ -1557,11 +1557,17 @@ static int bnxt_rx_pkt(struct bnxt *bp,
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