rem: struct ifnet   *ifp = &adapter->interface_data.ac_if;
context: em_set_multi(struct adapter * adapter){        u_int32_t reg_rctl = 0;        u_int8_t  mta[MAX_NUM_MULTICAST_ADDRESSES * ETH_LENGTH_OF_ADDRESS];        struct ifmultiaddr  *ifma;        int mcnt = 0;        struct ifnet   *ifp = &adapter->interface_data.ac_if;            IOCTL_DEBUGOUT("em_set_multi: begin");         if (adapter->hw.mac_type == em_82542_rev2_0) {                reg_rctl = E1000_READ_REG(&adapter->hw, RCTL);                if (adapter->hw.pci_cmd_word & CMD_MEM_WRT_INVALIDATE) {                         em_pci_clear_mwi(&adapter->hw);                }                reg_rctl |= E1000_RCTL_RST;                E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl);                msec_delay(5);        }        #if __FreeBSD_version < 500000        LIST_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {#else        TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {#endif                  if (ifma->ifma_addr->sa_family != AF_LINK)                        continue; 		if (mcnt == MAX_NUM_MULTICAST_ADDRESSES) break;                bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr),                      &mta[mcnt*ETH_LENGTH_OF_ADDRESS], ETH_LENGTH_OF_ADDRESS);                mcnt++;        }        if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) {                reg_rctl = E1000_READ_REG(&adapter->hw, RCTL);                reg_rctl |= E1000_RCTL_MPE;                E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl);        } else                em_mc_addr_list_update(&adapter->hw, mta, mcnt, 0, 1);        if (adapter->hw.mac_type == em_82542_rev2_0) {                reg_rctl = E1000_READ_REG(&adapter->hw, RCTL);                reg_rctl &= ~E1000_RCTL_RST;                E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl);                msec_delay(5);                if (adapter->hw.pci_cmd_word & CMD_MEM_WRT_INVALIDATE) {                        em_pci_set_mwi(&adapter->hw);                }        }        return;}