]>
Commit | Line | Data |
---|---|---|
15e6eb8b GKH |
1 | From foo@baz Sat 04 May 2019 11:25:56 AM CEST |
2 | From: Michael Chan <michael.chan@broadcom.com> | |
3 | Date: Thu, 25 Apr 2019 22:31:50 -0400 | |
4 | Subject: bnxt_en: Improve multicast address setup logic. | |
5 | ||
6 | From: Michael Chan <michael.chan@broadcom.com> | |
7 | ||
8 | [ Upstream commit b4e30e8e7ea1d1e35ffd64ca46f7d9a7f227b4bf ] | |
9 | ||
10 | The driver builds a list of multicast addresses and sends it to the | |
11 | firmware when the driver's ndo_set_rx_mode() is called. In rare | |
12 | cases, the firmware can fail this call if internal resources to | |
13 | add multicast addresses are exhausted. In that case, we should | |
14 | try the call again by setting the ALL_MCAST flag which is more | |
15 | guaranteed to succeed. | |
16 | ||
17 | Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") | |
18 | Signed-off-by: Michael Chan <michael.chan@broadcom.com> | |
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
20 | Signed-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 | @@ -6768,8 +6768,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; |