git: 3d093d5b0053 - releng/12.3 - igc: correctly update RCTL when changing multicast filters.

From: Peter Grehan <grehan_at_FreeBSD.org>
Date: Sun, 14 Nov 2021 01:13:25 UTC
The branch releng/12.3 has been updated by grehan:

URL: https://cgit.FreeBSD.org/src/commit/?id=3d093d5b00533827864689f7638476eff83c7894

commit 3d093d5b00533827864689f7638476eff83c7894
Author:     Peter Grehan <grehan@FreeBSD.org>
AuthorDate: 2021-10-11 17:49:01 +0000
Commit:     Peter Grehan <grehan@FreeBSD.org>
CommitDate: 2021-11-14 01:40:32 +0000

    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.
    
    Approved by:    re  (gjb)
    Obtained from:  Rubicon Communications, LLC ("Netgate")
    
    (cherry picked from commit 5a3eb6207a353c3a18da8abcf00a2d75276dd29e)
    (cherry picked from commit 73e1138208a5888aaabfc44d8e48aa04554c9146)
---
 sys/dev/igc/if_igc.c | 6 +++---
 1 file 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);
 }
 
 /*********************************************************************