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
This commit is contained in:
parent
3dc7a1897e
commit
5a3eb6207a
@ -1172,12 +1172,12 @@ igc_if_multi_set(if_ctx_t ctx)
|
|||||||
reg_rctl |= IGC_RCTL_MPE;
|
reg_rctl |= IGC_RCTL_MPE;
|
||||||
reg_rctl &= ~IGC_RCTL_UPE;
|
reg_rctl &= ~IGC_RCTL_UPE;
|
||||||
} else
|
} else
|
||||||
reg_rctl = ~(IGC_RCTL_UPE | IGC_RCTL_MPE);
|
reg_rctl &= ~(IGC_RCTL_UPE | IGC_RCTL_MPE);
|
||||||
|
|
||||||
IGC_WRITE_REG(&adapter->hw, IGC_RCTL, reg_rctl);
|
|
||||||
|
|
||||||
if (mcnt < MAX_NUM_MULTICAST_ADDRESSES)
|
if (mcnt < MAX_NUM_MULTICAST_ADDRESSES)
|
||||||
igc_update_mc_addr_list(&adapter->hw, mta, mcnt);
|
igc_update_mc_addr_list(&adapter->hw, mta, mcnt);
|
||||||
|
|
||||||
|
IGC_WRITE_REG(&adapter->hw, IGC_RCTL, reg_rctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user