forked from Minki/linux
i40e: set max limit for access polling
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>
This commit is contained in:
parent
2a6d8c2f01
commit
c509c1decb
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)*/
|
||||
|
@ -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)*/
|
||||
|
Loading…
Reference in New Issue
Block a user