diff options
| author | Peter Grehan <grehan@FreeBSD.org> | 2021-10-11 17:49:01 +0000 |
|---|---|---|
| committer | Peter Grehan <grehan@FreeBSD.org> | 2021-11-13 00:58:34 +0000 |
| commit | 73e1138208a5888aaabfc44d8e48aa04554c9146 (patch) | |
| tree | 380ce271c4012d8145b9416aec33fc20ba8daee1 | |
| parent | 0e9e3016b9db4572f78ebb7cf475e8fae84e37df (diff) | |
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.
Obtained from: Rubicon Communications, LLC ("Netgate")
(cherry picked from commit 5a3eb6207a353c3a18da8abcf00a2d75276dd29e)
| -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 b72f55166907..06b78394cd2f 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); } /********************************************************************* |
