diff options
author | Peter Grehan <grehan@FreeBSD.org> | 2021-10-11 17:49:01 +0000 |
---|---|---|
committer | Peter Grehan <grehan@FreeBSD.org> | 2021-10-22 11:16:12 +0000 |
commit | 5a3eb6207a353c3a18da8abcf00a2d75276dd29e (patch) | |
tree | be034100cbfd2e5335beb45f51660c1d286fae77 /sys | |
parent | 3dc7a1897e0bb9e4b529c01cb3f88e1c387af5e8 (diff) | |
download | src-5a3eb6207a353c3a18da8abcf00a2d75276dd29e.tar.gz src-5a3eb6207a353c3a18da8abcf00a2d75276dd29e.zip |
igc: correctly update RCTL when changing multicast filters.
Fix clearing of bits in RCTL for the non-bpf/non-allmulti case.
Update RCTL after modifying the multicast filter registers as per
the Linux driver.
This fixes LACP on igc interfaces, where incoming LACP multicasti
control packets were being dropped.
Reviewed by: kbowling
Obtained from: Rubicon Communications, LLC ("Netgate")
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D32574
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/igc/if_igc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/igc/if_igc.c b/sys/dev/igc/if_igc.c index 6d94a7c223c7..436493185d5c 100644 --- a/sys/dev/igc/if_igc.c +++ b/sys/dev/igc/if_igc.c @@ -1172,12 +1172,12 @@ igc_if_multi_set(if_ctx_t ctx) reg_rctl |= IGC_RCTL_MPE; reg_rctl &= ~IGC_RCTL_UPE; } else - reg_rctl = ~(IGC_RCTL_UPE | IGC_RCTL_MPE); - - IGC_WRITE_REG(&adapter->hw, IGC_RCTL, reg_rctl); + reg_rctl &= ~(IGC_RCTL_UPE | IGC_RCTL_MPE); if (mcnt < MAX_NUM_MULTICAST_ADDRESSES) igc_update_mc_addr_list(&adapter->hw, mta, mcnt); + + IGC_WRITE_REG(&adapter->hw, IGC_RCTL, reg_rctl); } /********************************************************************* |