mirror of https://gitee.com/openkylin/linux.git
i40e: fix retrying in i40e_aq_get_phy_capabilities
Fixed a bug where driver was breaking out of the loop and reporting an error without retrying first. Signed-off-by: Marcin Formela <marcin.formela@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
65c275e401
commit
1b5f5d388b
|
@ -1577,19 +1577,22 @@ i40e_status i40e_aq_get_phy_capabilities(struct i40e_hw *hw,
|
|||
status = i40e_asq_send_command(hw, &desc, abilities,
|
||||
abilities_size, cmd_details);
|
||||
|
||||
if (status)
|
||||
break;
|
||||
|
||||
if (hw->aq.asq_last_status == I40E_AQ_RC_EIO) {
|
||||
switch (hw->aq.asq_last_status) {
|
||||
case I40E_AQ_RC_EIO:
|
||||
status = I40E_ERR_UNKNOWN_PHY;
|
||||
break;
|
||||
} else if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN) {
|
||||
case I40E_AQ_RC_EAGAIN:
|
||||
usleep_range(1000, 2000);
|
||||
total_delay++;
|
||||
status = I40E_ERR_TIMEOUT;
|
||||
break;
|
||||
/* also covers I40E_AQ_RC_OK */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} while ((hw->aq.asq_last_status != I40E_AQ_RC_OK) &&
|
||||
(total_delay < max_delay));
|
||||
|
||||
} while ((hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN) &&
|
||||
(total_delay < max_delay));
|
||||
|
||||
if (status)
|
||||
return status;
|
||||
|
|
Loading…
Reference in New Issue