i40e: set max limit for access polling
authorShannon Nelson <shannon.nelson@intel.com>
Thu, 13 Nov 2014 08:23:19 +0000 (08:23 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 9 Dec 2014 20:57:03 +0000 (12:57 -0800)
Don't bother trying to set a smaller timeout on the polling,
just simplify the code and always use the max limit.  Also,
rename a variable for clarity and fix a comment.

Change-ID: I0300c3562ccc4fd5fa3088f8ae52db0c1eb33af5
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Acked-by: Michal Kosiarz <michal.kosiarz@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_nvm.c
drivers/net/ethernet/intel/i40e/i40e_type.h
drivers/net/ethernet/intel/i40evf/i40e_type.h

index 37f0f5f950d841c3839757db11336b83576ed103..f55e52b2a0036aec2c43f23ef5ec315091cb1708 100644 (file)
@@ -80,45 +80,40 @@ i40e_status i40e_acquire_nvm(struct i40e_hw *hw,
 {
        i40e_status ret_code = 0;
        u64 gtime, timeout;
-       u64 time = 0;
+       u64 time_left = 0;
 
        if (hw->nvm.blank_nvm_mode)
                goto i40e_i40e_acquire_nvm_exit;
 
        ret_code = i40e_aq_request_resource(hw, I40E_NVM_RESOURCE_ID, access,
-                                           0, &time, NULL);
+                                           0, &time_left, NULL);
        /* Reading the Global Device Timer */
        gtime = rd32(hw, I40E_GLVFGEN_TIMER);
 
        /* Store the timeout */
-       hw->nvm.hw_semaphore_timeout = I40E_MS_TO_GTIME(time) + gtime;
+       hw->nvm.hw_semaphore_timeout = I40E_MS_TO_GTIME(time_left) + gtime;
 
        if (ret_code) {
-               /* Set the polling timeout */
-               if (time > I40E_MAX_NVM_TIMEOUT)
-                       timeout = I40E_MS_TO_GTIME(I40E_MAX_NVM_TIMEOUT)
-                                 + gtime;
-               else
-                       timeout = hw->nvm.hw_semaphore_timeout;
                /* Poll until the current NVM owner timeouts */
+               timeout = I40E_MS_TO_GTIME(I40E_MAX_NVM_TIMEOUT) + gtime;
                while (gtime < timeout) {
                        usleep_range(10000, 20000);
+                       gtime = rd32(hw, I40E_GLVFGEN_TIMER);
                        ret_code = i40e_aq_request_resource(hw,
                                                        I40E_NVM_RESOURCE_ID,
-                                                       access, 0, &time,
+                                                       access, 0, &time_left,
                                                        NULL);
                        if (!ret_code) {
                                hw->nvm.hw_semaphore_timeout =
-                                               I40E_MS_TO_GTIME(time) + gtime;
+                                           I40E_MS_TO_GTIME(time_left) + gtime;
                                break;
                        }
-                       gtime = rd32(hw, I40E_GLVFGEN_TIMER);
                }
                if (ret_code) {
                        hw->nvm.hw_semaphore_timeout = 0;
                        i40e_debug(hw, I40E_DEBUG_NVM,
                                   "NVM acquire timed out, wait %llu ms before trying again.\n",
-                                  time);
+                                  time_left);
                }
        }
 
index 306a23a489b185c88a4847be13be100e3e82af99..844421fba958e85624fd729b00b4ce3be7ee652a 100644 (file)
@@ -261,7 +261,7 @@ enum i40e_aq_resource_access_type {
 };
 
 struct i40e_nvm_info {
-       u64 hw_semaphore_timeout; /* 2usec global time (GTIME resolution) */
+       u64 hw_semaphore_timeout; /* usec global time (GTIME resolution) */
        u32 timeout;              /* [ms] */
        u16 sr_size;              /* Shadow RAM size in words */
        bool blank_nvm_mode;      /* is NVM empty (no FW present)*/
index 9d472d6b28bda13d6b615063ac49bd2b0fcc6cc1..d8175cddd683b10e75c80f60b49fe2fcb8f3b4c1 100644 (file)
@@ -260,7 +260,7 @@ enum i40e_aq_resource_access_type {
 };
 
 struct i40e_nvm_info {
-       u64 hw_semaphore_timeout; /* 2usec global time (GTIME resolution) */
+       u64 hw_semaphore_timeout; /* usec global time (GTIME resolution) */
        u32 timeout;              /* [ms] */
        u16 sr_size;              /* Shadow RAM size in words */
        bool blank_nvm_mode;      /* is NVM empty (no FW present)*/