Index: /branches/rel_apv_10_7_3/usr/click/lib/libintel_dpdk/drivers/net/i40e/i40e_ethdev_vf.c
===================================================================
--- /branches/rel_apv_10_7_3/usr/click/lib/libintel_dpdk/drivers/net/i40e/i40e_ethdev_vf.c	(revision 39756)
+++ /branches/rel_apv_10_7_3/usr/click/lib/libintel_dpdk/drivers/net/i40e/i40e_ethdev_vf.c	(working copy)
@@ -339,7 +339,7 @@
 	return !ret;
 }
 
-#define MAX_TRY_TIMES 200
+#define MAX_TRY_TIMES 400
 #define ASQ_DELAY_MS  10
 
 static int
@@ -1475,7 +1475,7 @@
 }
 
 # define CHECK_TRY_TIMES 3
-# define CHECK_DELAY_MS 400
+# define CHECK_DELAY_MS 500
 static int
 i40evf_init_vf(struct rte_eth_dev *dev)
 {
@@ -1531,18 +1531,13 @@
 	}
 
 	for (i = 0; i < CHECK_TRY_TIMES; i++) {
-		rte_delay_ms(CHECK_DELAY_MS << i);
+		rte_delay_ms(CHECK_DELAY_MS << (i > 2 ? 2: i));
 		err = i40evf_check_api_version(dev);
 		if (err == 0) break;
-		PMD_INIT_LOG(ERR, "check_api version failed %d times", i);
+		PMD_INIT_LOG(ERR, "check_api version failed %d times", i + 1);
 	}
 	if (i >= CHECK_TRY_TIMES) {
-		/* VF reset, shutdown admin queue and initialize again */
-		if (i40e_shutdown_adminq(hw) != I40E_SUCCESS) {
-			PMD_INIT_LOG(ERR, "Last try: i40e_shutdown_adminq failed");
-			return -1;
-		}
-		sleep(1);
+		// sleep(1);
 		i40e_init_adminq_parameter(hw);
 		if (i40e_init_adminq(hw) != I40E_SUCCESS) {
 			PMD_INIT_LOG(ERR, "Last try: init_adminq failed");
@@ -1562,10 +1557,10 @@
 	}
 
 	for (i = 0; i < CHECK_TRY_TIMES; i++) {
-		rte_delay_ms(CHECK_DELAY_MS << i);
+		rte_delay_ms(CHECK_DELAY_MS << (i > 2 ? 2: i));
 		err = i40evf_get_vf_resource(dev);
 		if (err == 0) break;
-		PMD_INIT_LOG(ERR, "i40evf_get_vf_config failed %d times", i);
+		PMD_INIT_LOG(ERR, "i40evf_get_vf_config failed %d times", i + 1);
 	}
 	if (i >= CHECK_TRY_TIMES) goto err_alloc;
 
