Index: head/sys/dev/ixgbe/if_ix.c =================================================================== --- head/sys/dev/ixgbe/if_ix.c +++ head/sys/dev/ixgbe/if_ix.c @@ -5273,10 +5273,10 @@ uint32_t *msg) { - switch (msg[0]) { + switch (msg[1]) { case IXGBE_API_VER_1_0: case IXGBE_API_VER_1_1: - vf->api_ver = msg[0]; + vf->api_ver = msg[1]; ixgbe_send_vf_ack(adapter, vf, msg[0]); break; default: Index: head/sys/dev/ixgbe/if_ixv.c =================================================================== --- head/sys/dev/ixgbe/if_ixv.c +++ head/sys/dev/ixgbe/if_ixv.c @@ -1665,10 +1665,6 @@ reg |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF; IXGBE_WRITE_REG(hw, IXGBE_VFSRRCTL(i), reg); - /* Set the Tail Pointer */ - IXGBE_WRITE_REG(hw, IXGBE_VFRDT(rxr->me), - adapter->num_rx_desc - 1); - /* Set the processing limit */ rxr->process_limit = ixv_rx_process_limit; @@ -1687,6 +1683,10 @@ msec_delay(1); } wmb(); + + /* Set the Tail Pointer */ + IXGBE_WRITE_REG(hw, IXGBE_VFRDT(rxr->me), + adapter->num_rx_desc - 1); } rxcsum = IXGBE_READ_REG(hw, IXGBE_RXCSUM); Index: head/sys/dev/ixgbe/ixgbe_vf.c =================================================================== --- head/sys/dev/ixgbe/ixgbe_vf.c +++ head/sys/dev/ixgbe/ixgbe_vf.c @@ -225,6 +225,8 @@ if (ret_val) return ret_val; + msgbuf[0] &= ~IXGBE_VT_MSGTYPE_CTS; + if (msgbuf[0] != (IXGBE_VF_RESET | IXGBE_VT_MSGTYPE_ACK) && msgbuf[0] != (IXGBE_VF_RESET | IXGBE_VT_MSGTYPE_NACK)) return IXGBE_ERR_INVALID_MAC_ADDR;