diff options
author | Kamil Krawczyk <kamil.krawczyk@intel.com> | 2014-07-09 03:46:15 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-07-24 07:37:18 -0400 |
commit | 77813d0a9f750f8d5075bcbb59d30417e51ab605 (patch) | |
tree | 01303ec6f046576f452f39f7a1ca1ac8b277d113 /drivers/net/ethernet/intel/i40e/i40e_adminq.c | |
parent | b65476cd53e074802661f4bdd9bc279b8ab65a23 (diff) |
i40e/i40evf: ARQ copy desc data even for failed commands
Copy desc and buffer data even for ARQ events which return error status.
Previously, a check for NVM related AQ commands which is done later in this
function would not recognize that such a command was received and would
not clear nvm_busy flag. This would block access to NVM until a driver reset.
This will fix that.
Change-ID: If69ad74e165b56081c0686b97402511d2e2880c0
Signed-off-by: Kamil Krawczyk <kamil.krawczyk@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_adminq.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_adminq.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/ethernet/intel/i40e/i40e_adminq.c index 1e21fbb1359c..c6d767c63f1b 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c | |||
@@ -979,15 +979,15 @@ i40e_status i40e_clean_arq_element(struct i40e_hw *hw, | |||
979 | I40E_DEBUG_AQ_MESSAGE, | 979 | I40E_DEBUG_AQ_MESSAGE, |
980 | "AQRX: Event received with error 0x%X.\n", | 980 | "AQRX: Event received with error 0x%X.\n", |
981 | hw->aq.arq_last_status); | 981 | hw->aq.arq_last_status); |
982 | } else { | ||
983 | e->desc = *desc; | ||
984 | datalen = le16_to_cpu(desc->datalen); | ||
985 | e->msg_size = min(datalen, e->msg_size); | ||
986 | if (e->msg_buf != NULL && (e->msg_size != 0)) | ||
987 | memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va, | ||
988 | e->msg_size); | ||
989 | } | 982 | } |
990 | 983 | ||
984 | e->desc = *desc; | ||
985 | datalen = le16_to_cpu(desc->datalen); | ||
986 | e->msg_size = min(datalen, e->msg_size); | ||
987 | if (e->msg_buf != NULL && (e->msg_size != 0)) | ||
988 | memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va, | ||
989 | e->msg_size); | ||
990 | |||
991 | i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQRX: desc and buffer:\n"); | 991 | i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQRX: desc and buffer:\n"); |
992 | i40e_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, e->msg_buf); | 992 | i40e_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, e->msg_buf); |
993 | 993 | ||