Index: sys/dev/e1000/if_em.c =================================================================== --- sys/dev/e1000/if_em.c +++ sys/dev/e1000/if_em.c @@ -1734,6 +1734,9 @@ mcnt = if_foreach_llmaddr(ifp, em_copy_maddr, mta); + if (mcnt < MAX_NUM_MULTICAST_ADDRESSES) + e1000_update_mc_addr_list(&sc->hw, mta, mcnt); + reg_rctl = E1000_READ_REG(&sc->hw, E1000_RCTL); if (if_getflags(ifp) & IFF_PROMISC) @@ -1747,9 +1750,6 @@ E1000_WRITE_REG(&sc->hw, E1000_RCTL, reg_rctl); - if (mcnt < MAX_NUM_MULTICAST_ADDRESSES) - e1000_update_mc_addr_list(&sc->hw, mta, mcnt); - if (sc->hw.mac.type == e1000_82542 && sc->hw.revision_id == E1000_REVISION_2) { reg_rctl = E1000_READ_REG(&sc->hw, E1000_RCTL);