|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
|