aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/i40e/i40e_common.c
diff options
context:
space:
mode:
authorPiotr Azarewicz <piotr.azarewicz@intel.com>2018-07-31 06:41:47 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-08-07 15:20:45 -0400
commitf05798b4ff82d919e94e5060d1e9993a3e025361 (patch)
tree462cdf0a91930534b229c97079335b70eaf168ca /drivers/net/ethernet/intel/i40e/i40e_common.c
parentb2b57b29588c36920fe1364f3f24bebfbe8bf321 (diff)
i40e: Add AQ command for rearrange NVM structure
During switching between old NVM structure approach (called structured NVM) to new one (called flat NVM) or backward flash needs to be rearranged to required NVM structure. This is a part of transition from one NVM structure to another. The function is introduced to command firmware to start rearrangement process. Signed-off-by: Piotr Azarewicz <piotr.azarewicz@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_common.c')
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_common.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index eb2d1530d331..85f75b5978fc 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -3541,6 +3541,41 @@ i40e_aq_update_nvm_exit:
3541} 3541}
3542 3542
3543/** 3543/**
3544 * i40e_aq_rearrange_nvm
3545 * @hw: pointer to the hw struct
3546 * @rearrange_nvm: defines direction of rearrangement
3547 * @cmd_details: pointer to command details structure or NULL
3548 *
3549 * Rearrange NVM structure, available only for transition FW
3550 **/
3551i40e_status i40e_aq_rearrange_nvm(struct i40e_hw *hw,
3552 u8 rearrange_nvm,
3553 struct i40e_asq_cmd_details *cmd_details)
3554{
3555 struct i40e_aqc_nvm_update *cmd;
3556 i40e_status status;
3557 struct i40e_aq_desc desc;
3558
3559 cmd = (struct i40e_aqc_nvm_update *)&desc.params.raw;
3560
3561 i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_nvm_update);
3562
3563 rearrange_nvm &= (I40E_AQ_NVM_REARRANGE_TO_FLAT |
3564 I40E_AQ_NVM_REARRANGE_TO_STRUCT);
3565
3566 if (!rearrange_nvm) {
3567 status = I40E_ERR_PARAM;
3568 goto i40e_aq_rearrange_nvm_exit;
3569 }
3570
3571 cmd->command_flags |= rearrange_nvm;
3572 status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
3573
3574i40e_aq_rearrange_nvm_exit:
3575 return status;
3576}
3577
3578/**
3544 * i40e_aq_get_lldp_mib 3579 * i40e_aq_get_lldp_mib
3545 * @hw: pointer to the hw struct 3580 * @hw: pointer to the hw struct
3546 * @bridge_type: type of bridge requested 3581 * @bridge_type: type of bridge requested