Commit 6b5c1b89 authored by Shannon Nelson's avatar Shannon Nelson Committed by Jeff Kirsher

i40e/i40evf: add handling of writeback descriptor

If the writeback descriptor buffer was previously created, this gives it
to the AQ command request to be used to save the results.

Change-ID: I8c8a1af81e6ebed6d0a15ed31697fe1a6c4e3708
Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 87db27a9
...@@ -418,6 +418,10 @@ static i40e_status i40e_write_nvm_aq(struct i40e_hw *hw, u8 module_pointer, ...@@ -418,6 +418,10 @@ static i40e_status i40e_write_nvm_aq(struct i40e_hw *hw, u8 module_pointer,
bool last_command) bool last_command)
{ {
i40e_status ret_code = I40E_ERR_NVM; i40e_status ret_code = I40E_ERR_NVM;
struct i40e_asq_cmd_details cmd_details;
memset(&cmd_details, 0, sizeof(cmd_details));
cmd_details.wb_desc = &hw->nvm_wb_desc;
/* Here we are checking the SR limit only for the flat memory model. /* Here we are checking the SR limit only for the flat memory model.
* We cannot do it for the module-based model, as we did not acquire * We cannot do it for the module-based model, as we did not acquire
...@@ -443,7 +447,7 @@ static i40e_status i40e_write_nvm_aq(struct i40e_hw *hw, u8 module_pointer, ...@@ -443,7 +447,7 @@ static i40e_status i40e_write_nvm_aq(struct i40e_hw *hw, u8 module_pointer,
ret_code = i40e_aq_update_nvm(hw, module_pointer, ret_code = i40e_aq_update_nvm(hw, module_pointer,
2 * offset, /*bytes*/ 2 * offset, /*bytes*/
2 * words, /*bytes*/ 2 * words, /*bytes*/
data, last_command, NULL); data, last_command, &cmd_details);
return ret_code; return ret_code;
} }
...@@ -1041,6 +1045,7 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw, ...@@ -1041,6 +1045,7 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
struct i40e_nvm_access *cmd, struct i40e_nvm_access *cmd,
u8 *bytes, int *perrno) u8 *bytes, int *perrno)
{ {
struct i40e_asq_cmd_details cmd_details;
i40e_status status; i40e_status status;
u8 module, transaction; u8 module, transaction;
bool last; bool last;
...@@ -1049,8 +1054,11 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw, ...@@ -1049,8 +1054,11 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
module = i40e_nvmupd_get_module(cmd->config); module = i40e_nvmupd_get_module(cmd->config);
last = (transaction == I40E_NVM_LCB) || (transaction == I40E_NVM_SA); last = (transaction == I40E_NVM_LCB) || (transaction == I40E_NVM_SA);
memset(&cmd_details, 0, sizeof(cmd_details));
cmd_details.wb_desc = &hw->nvm_wb_desc;
status = i40e_aq_read_nvm(hw, module, cmd->offset, (u16)cmd->data_size, status = i40e_aq_read_nvm(hw, module, cmd->offset, (u16)cmd->data_size,
bytes, last, NULL); bytes, last, &cmd_details);
if (status) { if (status) {
i40e_debug(hw, I40E_DEBUG_NVM, i40e_debug(hw, I40E_DEBUG_NVM,
"i40e_nvmupd_nvm_read mod 0x%x off 0x%x len 0x%x\n", "i40e_nvmupd_nvm_read mod 0x%x off 0x%x len 0x%x\n",
...@@ -1077,14 +1085,19 @@ static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw, ...@@ -1077,14 +1085,19 @@ static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
int *perrno) int *perrno)
{ {
i40e_status status = 0; i40e_status status = 0;
struct i40e_asq_cmd_details cmd_details;
u8 module, transaction; u8 module, transaction;
bool last; bool last;
transaction = i40e_nvmupd_get_transaction(cmd->config); transaction = i40e_nvmupd_get_transaction(cmd->config);
module = i40e_nvmupd_get_module(cmd->config); module = i40e_nvmupd_get_module(cmd->config);
last = (transaction & I40E_NVM_LCB); last = (transaction & I40E_NVM_LCB);
memset(&cmd_details, 0, sizeof(cmd_details));
cmd_details.wb_desc = &hw->nvm_wb_desc;
status = i40e_aq_erase_nvm(hw, module, cmd->offset, (u16)cmd->data_size, status = i40e_aq_erase_nvm(hw, module, cmd->offset, (u16)cmd->data_size,
last, NULL); last, &cmd_details);
if (status) { if (status) {
i40e_debug(hw, I40E_DEBUG_NVM, i40e_debug(hw, I40E_DEBUG_NVM,
"i40e_nvmupd_nvm_erase mod 0x%x off 0x%x len 0x%x\n", "i40e_nvmupd_nvm_erase mod 0x%x off 0x%x len 0x%x\n",
...@@ -1112,6 +1125,7 @@ static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw, ...@@ -1112,6 +1125,7 @@ static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
u8 *bytes, int *perrno) u8 *bytes, int *perrno)
{ {
i40e_status status = 0; i40e_status status = 0;
struct i40e_asq_cmd_details cmd_details;
u8 module, transaction; u8 module, transaction;
bool last; bool last;
...@@ -1119,8 +1133,12 @@ static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw, ...@@ -1119,8 +1133,12 @@ static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
module = i40e_nvmupd_get_module(cmd->config); module = i40e_nvmupd_get_module(cmd->config);
last = (transaction & I40E_NVM_LCB); last = (transaction & I40E_NVM_LCB);
memset(&cmd_details, 0, sizeof(cmd_details));
cmd_details.wb_desc = &hw->nvm_wb_desc;
status = i40e_aq_update_nvm(hw, module, cmd->offset, status = i40e_aq_update_nvm(hw, module, cmd->offset,
(u16)cmd->data_size, bytes, last, NULL); (u16)cmd->data_size, bytes, last,
&cmd_details);
if (status) { if (status) {
i40e_debug(hw, I40E_DEBUG_NVM, i40e_debug(hw, I40E_DEBUG_NVM,
"i40e_nvmupd_nvm_write mod 0x%x off 0x%x len 0x%x\n", "i40e_nvmupd_nvm_write mod 0x%x off 0x%x len 0x%x\n",
......
...@@ -492,6 +492,7 @@ struct i40e_hw { ...@@ -492,6 +492,7 @@ struct i40e_hw {
/* state of nvm update process */ /* state of nvm update process */
enum i40e_nvmupd_state nvmupd_state; enum i40e_nvmupd_state nvmupd_state;
struct i40e_aq_desc nvm_wb_desc;
/* HMC info */ /* HMC info */
struct i40e_hmc_info hmc; /* HMC info struct */ struct i40e_hmc_info hmc; /* HMC info struct */
......
...@@ -486,6 +486,7 @@ struct i40e_hw { ...@@ -486,6 +486,7 @@ struct i40e_hw {
/* state of nvm update process */ /* state of nvm update process */
enum i40e_nvmupd_state nvmupd_state; enum i40e_nvmupd_state nvmupd_state;
struct i40e_aq_desc nvm_wb_desc;
/* HMC info */ /* HMC info */
struct i40e_hmc_info hmc; /* HMC info struct */ struct i40e_hmc_info hmc; /* HMC info struct */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment