Message ID | 20200721074000.30449-8-guinanx.sun@intel.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Qi Zhang |
Headers | show |
Series | update i40e base code | expand |
Context | Check | Description |
---|---|---|
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | success | coding style OK |
Acked-by: Jeff Guo <jia.guo@intel.com> On 7/21/2020 3:39 PM, Guinan Sun wrote: > Add AQ command "NVM update in process" > to replace the original AQ command "NVM progress". > > Signed-off-by: Jaroslaw Ilgiewicz <jaroslaw.ilgiewicz@intel.com> > Signed-off-by: Guinan Sun <guinanx.sun@intel.com> > --- > drivers/net/i40e/base/i40e_adminq_cmd.h | 12 +++++- > drivers/net/i40e/base/i40e_common.c | 53 +++++++++++++++---------- > drivers/net/i40e/base/i40e_prototype.h | 6 ++- > 3 files changed, 46 insertions(+), 25 deletions(-) > > diff --git a/drivers/net/i40e/base/i40e_adminq_cmd.h b/drivers/net/i40e/base/i40e_adminq_cmd.h > index c7686b0d3..0766e69a8 100644 > --- a/drivers/net/i40e/base/i40e_adminq_cmd.h > +++ b/drivers/net/i40e/base/i40e_adminq_cmd.h > @@ -240,7 +240,7 @@ enum i40e_admin_queue_opc { > i40e_aqc_opc_nvm_update = 0x0703, > i40e_aqc_opc_nvm_config_read = 0x0704, > i40e_aqc_opc_nvm_config_write = 0x0705, > - i40e_aqc_opc_nvm_progress = 0x0706, > + i40e_aqc_opc_nvm_update_in_process = 0x0706, > i40e_aqc_opc_oem_post_update = 0x0720, > i40e_aqc_opc_thermal_sensor = 0x0721, > > @@ -2400,6 +2400,16 @@ struct i40e_aqc_nvm_config_data_feature { > > I40E_CHECK_STRUCT_LEN(0x6, i40e_aqc_nvm_config_data_feature); > > +/* NVM Update in Process (direct 0x0706) */ > +struct i40e_aqc_nvm_update_in_process { > + u8 command; > +#define I40E_AQ_UPDATE_FLOW_END 0x0 > +#define I40E_AQ_UPDATE_FLOW_START 0x1 > + u8 reserved[15]; > +}; > + > +I40E_CHECK_CMD_LENGTH(i40e_aqc_nvm_update_in_process); > + > struct i40e_aqc_nvm_config_data_immediate_field { > __le32 field_id; > __le32 field_value; > diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c > index 65317f6c6..6c6fb4de4 100644 > --- a/drivers/net/i40e/base/i40e_common.c > +++ b/drivers/net/i40e/base/i40e_common.c > @@ -3686,6 +3686,37 @@ enum i40e_status_code i40e_aq_write_nvm_config(struct i40e_hw *hw, > return status; > } > > +/** > + * i40e_aq_nvm_update_in_process > + * @hw: pointer to the hw struct > + * @update_flow_state: True indicates that update flow starts, false that ends > + * @cmd_details: pointer to command details structure or NULL > + * > + * Indicate NVM update in process. > + **/ > +enum i40e_status_code > +i40e_aq_nvm_update_in_process(struct i40e_hw *hw, > + bool update_flow_state, > + struct i40e_asq_cmd_details *cmd_details) > +{ > + struct i40e_aq_desc desc; > + struct i40e_aqc_nvm_update_in_process *cmd = > + (struct i40e_aqc_nvm_update_in_process *)&desc.params.raw; > + enum i40e_status_code status; > + > + i40e_fill_default_direct_cmd_desc(&desc, > + i40e_aqc_opc_nvm_update_in_process); > + > + cmd->command = I40E_AQ_UPDATE_FLOW_END; > + > + if (update_flow_state) > + cmd->command |= I40E_AQ_UPDATE_FLOW_START; > + > + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); > + > + return status; > +} > + > /** > * i40e_aq_oem_post_update - triggers an OEM specific flow after update > * @hw: pointer to the hw struct > @@ -4257,28 +4288,6 @@ enum i40e_status_code i40e_aq_rearrange_nvm(struct i40e_hw *hw, > return status; > } > > -/** > - * i40e_aq_nvm_progress > - * @hw: pointer to the hw struct > - * @progress: pointer to progress returned from AQ > - * @cmd_details: pointer to command details structure or NULL > - * > - * Gets progress of flash rearrangement process > - **/ > -enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress, > - struct i40e_asq_cmd_details *cmd_details) > -{ > - enum i40e_status_code status; > - struct i40e_aq_desc desc; > - > - DEBUGFUNC("i40e_aq_nvm_progress"); > - > - i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_nvm_progress); > - status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); > - *progress = desc.params.raw[0]; > - return status; > -} > - > /** > * i40e_aq_get_lldp_mib > * @hw: pointer to the hw struct > diff --git a/drivers/net/i40e/base/i40e_prototype.h b/drivers/net/i40e/base/i40e_prototype.h > index 91fa23491..9a89f3002 100644 > --- a/drivers/net/i40e/base/i40e_prototype.h > +++ b/drivers/net/i40e/base/i40e_prototype.h > @@ -254,8 +254,10 @@ enum i40e_status_code i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer, > enum i40e_status_code i40e_aq_rearrange_nvm(struct i40e_hw *hw, > u8 rearrange_nvm, > struct i40e_asq_cmd_details *cmd_details); > -enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress, > - struct i40e_asq_cmd_details *cmd_details); > +enum i40e_status_code > +i40e_aq_nvm_update_in_process(struct i40e_hw *hw, > + bool update_flow_state, > + struct i40e_asq_cmd_details *cmd_details); > enum i40e_status_code i40e_aq_get_lldp_mib(struct i40e_hw *hw, u8 bridge_type, > u8 mib_type, void *buff, u16 buff_size, > u16 *local_len, u16 *remote_len,
diff --git a/drivers/net/i40e/base/i40e_adminq_cmd.h b/drivers/net/i40e/base/i40e_adminq_cmd.h index c7686b0d3..0766e69a8 100644 --- a/drivers/net/i40e/base/i40e_adminq_cmd.h +++ b/drivers/net/i40e/base/i40e_adminq_cmd.h @@ -240,7 +240,7 @@ enum i40e_admin_queue_opc { i40e_aqc_opc_nvm_update = 0x0703, i40e_aqc_opc_nvm_config_read = 0x0704, i40e_aqc_opc_nvm_config_write = 0x0705, - i40e_aqc_opc_nvm_progress = 0x0706, + i40e_aqc_opc_nvm_update_in_process = 0x0706, i40e_aqc_opc_oem_post_update = 0x0720, i40e_aqc_opc_thermal_sensor = 0x0721, @@ -2400,6 +2400,16 @@ struct i40e_aqc_nvm_config_data_feature { I40E_CHECK_STRUCT_LEN(0x6, i40e_aqc_nvm_config_data_feature); +/* NVM Update in Process (direct 0x0706) */ +struct i40e_aqc_nvm_update_in_process { + u8 command; +#define I40E_AQ_UPDATE_FLOW_END 0x0 +#define I40E_AQ_UPDATE_FLOW_START 0x1 + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_nvm_update_in_process); + struct i40e_aqc_nvm_config_data_immediate_field { __le32 field_id; __le32 field_value; diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c index 65317f6c6..6c6fb4de4 100644 --- a/drivers/net/i40e/base/i40e_common.c +++ b/drivers/net/i40e/base/i40e_common.c @@ -3686,6 +3686,37 @@ enum i40e_status_code i40e_aq_write_nvm_config(struct i40e_hw *hw, return status; } +/** + * i40e_aq_nvm_update_in_process + * @hw: pointer to the hw struct + * @update_flow_state: True indicates that update flow starts, false that ends + * @cmd_details: pointer to command details structure or NULL + * + * Indicate NVM update in process. + **/ +enum i40e_status_code +i40e_aq_nvm_update_in_process(struct i40e_hw *hw, + bool update_flow_state, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_nvm_update_in_process *cmd = + (struct i40e_aqc_nvm_update_in_process *)&desc.params.raw; + enum i40e_status_code status; + + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_nvm_update_in_process); + + cmd->command = I40E_AQ_UPDATE_FLOW_END; + + if (update_flow_state) + cmd->command |= I40E_AQ_UPDATE_FLOW_START; + + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + + return status; +} + /** * i40e_aq_oem_post_update - triggers an OEM specific flow after update * @hw: pointer to the hw struct @@ -4257,28 +4288,6 @@ enum i40e_status_code i40e_aq_rearrange_nvm(struct i40e_hw *hw, return status; } -/** - * i40e_aq_nvm_progress - * @hw: pointer to the hw struct - * @progress: pointer to progress returned from AQ - * @cmd_details: pointer to command details structure or NULL - * - * Gets progress of flash rearrangement process - **/ -enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress, - struct i40e_asq_cmd_details *cmd_details) -{ - enum i40e_status_code status; - struct i40e_aq_desc desc; - - DEBUGFUNC("i40e_aq_nvm_progress"); - - i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_nvm_progress); - status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); - *progress = desc.params.raw[0]; - return status; -} - /** * i40e_aq_get_lldp_mib * @hw: pointer to the hw struct diff --git a/drivers/net/i40e/base/i40e_prototype.h b/drivers/net/i40e/base/i40e_prototype.h index 91fa23491..9a89f3002 100644 --- a/drivers/net/i40e/base/i40e_prototype.h +++ b/drivers/net/i40e/base/i40e_prototype.h @@ -254,8 +254,10 @@ enum i40e_status_code i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer, enum i40e_status_code i40e_aq_rearrange_nvm(struct i40e_hw *hw, u8 rearrange_nvm, struct i40e_asq_cmd_details *cmd_details); -enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress, - struct i40e_asq_cmd_details *cmd_details); +enum i40e_status_code +i40e_aq_nvm_update_in_process(struct i40e_hw *hw, + bool update_flow_state, + struct i40e_asq_cmd_details *cmd_details); enum i40e_status_code i40e_aq_get_lldp_mib(struct i40e_hw *hw, u8 bridge_type, u8 mib_type, void *buff, u16 buff_size, u16 *local_len, u16 *remote_len,