**/
 static i40e_status i40e_pf_loop_reset(struct i40e_pf *pf)
 {
-       const unsigned short MAX_CNT = 1000;
-       const unsigned short MSECS = 10;
+       /* wait max 10 seconds for PF reset to succeed */
+       const unsigned long time_end = jiffies + 10 * HZ;
+
        struct i40e_hw *hw = &pf->hw;
        i40e_status ret;
-       int cnt;
 
-       for (cnt = 0; cnt < MAX_CNT; ++cnt) {
+       ret = i40e_pf_reset(hw);
+       while (ret != I40E_SUCCESS && time_before(jiffies, time_end)) {
+               usleep_range(10000, 20000);
                ret = i40e_pf_reset(hw);
-               if (!ret)
-                       break;
-               msleep(MSECS);
        }
 
-       if (cnt == MAX_CNT) {
+       if (ret == I40E_SUCCESS)
+               pf->pfr_count++;
+       else
                dev_info(&pf->pdev->dev, "PF reset failed: %d\n", ret);
-               return ret;
-       }
 
-       pf->pfr_count++;
        return ret;
 }