--- a/sys/dev/netif/ig_hal/e1000_vf.c +++ b/sys/dev/netif/ig_hal/e1000_vf.c @@ -400,7 +400,7 @@ void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *mc_addr_list, u32 mc_addr_count) { - u32 msgbuf[E1000_VFMAILBOX_SIZE]; + u32 msgbuf[E1000_VFMAILBOX_SIZE] = { 0 }; u16 *hash_list = (u16 *)&msgbuf[1]; u32 hash_value; u32 i; @@ -419,11 +419,12 @@ DEBUGOUT1("MC Addr Count = %d\n", mc_addr_count); if (mc_addr_count > 30) { - msgbuf[0] |= E1000_VF_SET_MULTICAST_OVERFLOW; + msgbuf[0] = E1000_VF_SET_MULTICAST | + E1000_VF_SET_MULTICAST_OVERFLOW; mc_addr_count = 30; + } else { + msgbuf[0] = E1000_VF_SET_MULTICAST; } - - msgbuf[0] = E1000_VF_SET_MULTICAST; msgbuf[0] |= mc_addr_count << E1000_VT_MSGINFO_SHIFT; for (i = 0; i < mc_addr_count; i++) {