]>
Commit | Line | Data |
---|---|---|
a9fba688 SL |
1 | From 81da2651bf88ba0b3c599399c508bb731cc631a6 Mon Sep 17 00:00:00 2001 |
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 | [ Upstream commit 8e44e96c6c8e8fb80b84a2ca11798a8554f710f2 ] | |
7 | ||
8 | If the RX completion indicates RX buffers errors, the RX ring will be | |
9 | disabled by firmware and no packets will be received on that ring from | |
10 | that point on. Recover by resetting the device. | |
11 | ||
12 | Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") | |
13 | Signed-off-by: Michael Chan <michael.chan@broadcom.com> | |
14 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
15 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
16 | --- | |
17 | drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++++++ | |
18 | 1 file changed, 6 insertions(+) | |
19 | ||
20 | diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c | |
21 | index 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 | -- | |
43 | 2.19.1 | |
44 |