u16 *hash_list = (u16 *)&msgbuf[1];
        u32 hash_value;
        u32 cnt, i;
+       s32 ret_val;
 
        /* Each entry in the list uses 1 16 bit word.  We have 30
         * 16 bit words available in our HW msg buffer (minus 1 for the
                mc_addr_list += ETH_ALEN;
        }
 
-       mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE);
+       ret_val = mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE);
+       if (!ret_val)
+               mbx->ops.read_posted(hw, msgbuf, 1);
 }
 
 /**
 {
        struct e1000_mbx_info *mbx = &hw->mbx;
        u32 msgbuf[2];
+       s32 ret_val;
 
        msgbuf[0] = E1000_VF_SET_LPE;
        msgbuf[1] = max_size;
 
-       mbx->ops.write_posted(hw, msgbuf, 2);
+       ret_val = mbx->ops.write_posted(hw, msgbuf, 2);
+       if (!ret_val)
+               mbx->ops.read_posted(hw, msgbuf, 1);
 }
 
 /**