]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-4.4/bnxt_en-improve-multicast-address-setup-logic.patch
4.4-stable patches
[thirdparty/kernel/stable-queue.git] / queue-4.4 / bnxt_en-improve-multicast-address-setup-logic.patch
CommitLineData
d0832b76
GKH
1From foo@baz Sat 04 May 2019 12:23:27 PM CEST
2From: Michael Chan <michael.chan@broadcom.com>
3Date: Thu, 25 Apr 2019 22:31:50 -0400
4Subject: bnxt_en: Improve multicast address setup logic.
5
6From: Michael Chan <michael.chan@broadcom.com>
7
8[ Upstream commit b4e30e8e7ea1d1e35ffd64ca46f7d9a7f227b4bf ]
9
10The driver builds a list of multicast addresses and sends it to the
11firmware when the driver's ndo_set_rx_mode() is called. In rare
12cases, the firmware can fail this call if internal resources to
13add multicast addresses are exhausted. In that case, we should
14try the call again by setting the ALL_MCAST flag which is more
15guaranteed to succeed.
16
17Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
18Signed-off-by: Michael Chan <michael.chan@broadcom.com>
19Signed-off-by: David S. Miller <davem@davemloft.net>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 9 ++++++++-
23 1 file changed, 8 insertions(+), 1 deletion(-)
24
25--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
26+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
27@@ -4957,8 +4957,15 @@ static int bnxt_cfg_rx_mode(struct bnxt
28
29 skip_uc:
30 rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, 0);
31+ if (rc && vnic->mc_list_count) {
32+ netdev_info(bp->dev, "Failed setting MC filters rc: %d, turning on ALL_MCAST mode\n",
33+ rc);
34+ vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST;
35+ vnic->mc_list_count = 0;
36+ rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, 0);
37+ }
38 if (rc)
39- netdev_err(bp->dev, "HWRM cfa l2 rx mask failure rc: %x\n",
40+ netdev_err(bp->dev, "HWRM cfa l2 rx mask failure rc: %d\n",
41 rc);
42
43 return rc;