i40e: Add returning AQ critical error to SW
The FW has the ability to return a critical error on every AQ command. When this critical error occurs then we need to send the correct response to the caller. Signed-off-by: Michal Kosiarz <michal.kosiarz@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
9515a2e082
commit
f34e308b67
@ -907,10 +907,15 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
|
||||
/* update the error if time out occurred */
|
||||
if ((!cmd_completed) &&
|
||||
(!details->async && !details->postpone)) {
|
||||
i40e_debug(hw,
|
||||
I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: Writeback timeout.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_TIMEOUT;
|
||||
if (rd32(hw, hw->aq.asq.len) & I40E_GL_ATQLEN_ATQCRIT_MASK) {
|
||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: AQ Critical error.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR;
|
||||
} else {
|
||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: Writeback timeout.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_TIMEOUT;
|
||||
}
|
||||
}
|
||||
|
||||
asq_send_command_error:
|
||||
|
@ -278,6 +278,8 @@ const char *i40e_stat_str(struct i40e_hw *hw, i40e_status stat_err)
|
||||
return "I40E_NOT_SUPPORTED";
|
||||
case I40E_ERR_FIRMWARE_API_VERSION:
|
||||
return "I40E_ERR_FIRMWARE_API_VERSION";
|
||||
case I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR:
|
||||
return "I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR";
|
||||
}
|
||||
|
||||
snprintf(hw->err_str, sizeof(hw->err_str), "%d", stat_err);
|
||||
|
@ -95,6 +95,7 @@ enum i40e_status_code {
|
||||
I40E_ERR_NOT_READY = -63,
|
||||
I40E_NOT_SUPPORTED = -64,
|
||||
I40E_ERR_FIRMWARE_API_VERSION = -65,
|
||||
I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR = -66,
|
||||
};
|
||||
|
||||
#endif /* _I40E_STATUS_H_ */
|
||||
|
@ -837,10 +837,15 @@ i40e_status i40evf_asq_send_command(struct i40e_hw *hw,
|
||||
/* update the error if time out occurred */
|
||||
if ((!cmd_completed) &&
|
||||
(!details->async && !details->postpone)) {
|
||||
i40e_debug(hw,
|
||||
I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: Writeback timeout.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_TIMEOUT;
|
||||
if (rd32(hw, hw->aq.asq.len) & I40E_VF_ATQLEN1_ATQCRIT_MASK) {
|
||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: AQ Critical error.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR;
|
||||
} else {
|
||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQTX: Writeback timeout.\n");
|
||||
status = I40E_ERR_ADMIN_QUEUE_TIMEOUT;
|
||||
}
|
||||
}
|
||||
|
||||
asq_send_command_error:
|
||||
|
@ -284,6 +284,8 @@ const char *i40evf_stat_str(struct i40e_hw *hw, i40e_status stat_err)
|
||||
return "I40E_NOT_SUPPORTED";
|
||||
case I40E_ERR_FIRMWARE_API_VERSION:
|
||||
return "I40E_ERR_FIRMWARE_API_VERSION";
|
||||
case I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR:
|
||||
return "I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR";
|
||||
}
|
||||
|
||||
snprintf(hw->err_str, sizeof(hw->err_str), "%d", stat_err);
|
||||
|
@ -95,6 +95,7 @@ enum i40e_status_code {
|
||||
I40E_ERR_NOT_READY = -63,
|
||||
I40E_NOT_SUPPORTED = -64,
|
||||
I40E_ERR_FIRMWARE_API_VERSION = -65,
|
||||
I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR = -66,
|
||||
};
|
||||
|
||||
#endif /* _I40E_STATUS_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user