mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 21:24:00 +08:00
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>
This commit is contained in:
parent
b65476cd53
commit
77813d0a9f
@ -979,15 +979,15 @@ i40e_status i40e_clean_arq_element(struct i40e_hw *hw,
|
||||
I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQRX: Event received with error 0x%X.\n",
|
||||
hw->aq.arq_last_status);
|
||||
} else {
|
||||
e->desc = *desc;
|
||||
datalen = le16_to_cpu(desc->datalen);
|
||||
e->msg_size = min(datalen, e->msg_size);
|
||||
if (e->msg_buf != NULL && (e->msg_size != 0))
|
||||
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
||||
e->msg_size);
|
||||
}
|
||||
|
||||
e->desc = *desc;
|
||||
datalen = le16_to_cpu(desc->datalen);
|
||||
e->msg_size = min(datalen, e->msg_size);
|
||||
if (e->msg_buf != NULL && (e->msg_size != 0))
|
||||
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
||||
e->msg_size);
|
||||
|
||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQRX: desc and buffer:\n");
|
||||
i40e_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, e->msg_buf);
|
||||
|
||||
|
@ -927,15 +927,15 @@ i40e_status i40evf_clean_arq_element(struct i40e_hw *hw,
|
||||
I40E_DEBUG_AQ_MESSAGE,
|
||||
"AQRX: Event received with error 0x%X.\n",
|
||||
hw->aq.arq_last_status);
|
||||
} else {
|
||||
e->desc = *desc;
|
||||
datalen = le16_to_cpu(desc->datalen);
|
||||
e->msg_size = min(datalen, e->msg_size);
|
||||
if (e->msg_buf != NULL && (e->msg_size != 0))
|
||||
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
||||
e->msg_size);
|
||||
}
|
||||
|
||||
e->desc = *desc;
|
||||
datalen = le16_to_cpu(desc->datalen);
|
||||
e->msg_size = min(datalen, e->msg_size);
|
||||
if (e->msg_buf != NULL && (e->msg_size != 0))
|
||||
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
||||
e->msg_size);
|
||||
|
||||
if (i40e_is_nvm_update_op(&e->desc))
|
||||
hw->aq.nvm_busy = false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user