net/ice/base: add function for NVM checksum verification
authorQi Zhang <qi.z.zhang@intel.com>
Tue, 15 Dec 2020 03:22:08 +0000 (11:22 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Jan 2021 15:03:06 +0000 (16:03 +0100)
AQ 0x0706 lets user to verify and recalculate NVM checksum. The usage
depends on command flags.

Signed-off-by: Milena Olech <milena.olech@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
drivers/net/ice/base/ice_nvm.c
drivers/net/ice/base/ice_nvm.h

index c807ce9..45310bf 100644 (file)
@@ -1077,6 +1077,34 @@ enum ice_status ice_nvm_validate_checksum(struct ice_hw *hw)
        return status;
 }
 
+/**
+ * ice_nvm_recalculate_checksum
+ * @hw: pointer to the HW struct
+ *
+ * Recalculate NVM PFA checksum (0x0706)
+ */
+enum ice_status ice_nvm_recalculate_checksum(struct ice_hw *hw)
+{
+       struct ice_aqc_nvm_checksum *cmd;
+       struct ice_aq_desc desc;
+       enum ice_status status;
+
+       status = ice_acquire_nvm(hw, ICE_RES_READ);
+       if (status)
+               return status;
+
+       cmd = &desc.params.nvm_checksum;
+
+       ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_nvm_checksum);
+       cmd->flags = ICE_AQC_NVM_CHECKSUM_RECALC;
+
+       status = ice_aq_send_cmd(hw, &desc, NULL, 0, NULL);
+
+       ice_release_nvm(hw);
+
+       return status;
+}
+
 /**
  * ice_nvm_access_get_features - Return the NVM access features structure
  * @cmd: NVM access command to process
index 52f79ca..48b7195 100644 (file)
@@ -119,4 +119,5 @@ enum ice_status ice_read_sr_word(struct ice_hw *hw, u16 offset, u16 *data);
 enum ice_status
 ice_read_sr_buf(struct ice_hw *hw, u16 offset, u16 *words, u16 *data);
 enum ice_status ice_nvm_validate_checksum(struct ice_hw *hw);
+enum ice_status ice_nvm_recalculate_checksum(struct ice_hw *hw);
 #endif /* _ICE_NVM_H_ */