net/ice/base: enhance NVM read
Add an option to read NVM from flash directly. Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
This commit is contained in:
parent
3937b8b0f0
commit
4b6e8c03be
@ -1684,6 +1684,28 @@ struct ice_aqc_nvm {
|
||||
__le32 addr_low;
|
||||
};
|
||||
|
||||
/* NVM Module_Type ID, needed offset and read_len for struct ice_aqc_nvm. */
|
||||
#define ICE_AQC_NVM_SECTOR_UNIT 4096 /* In Bytes */
|
||||
#define ICE_AQC_NVM_WORD_UNIT 2 /* In Bytes */
|
||||
|
||||
#define ICE_AQC_NVM_START_POINT 0
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_OFFSET 0x90
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_RD_LEN 2 /* In Bytes */
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_M MAKEMASK(0x7FFF, 0)
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_TYPE_S 15
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_TYPE_M BIT(15)
|
||||
#define ICE_AQC_NVM_EMP_SR_PTR_TYPE_SECTOR 1
|
||||
|
||||
#define ICE_AQC_NVM_LLDP_CFG_PTR_OFFSET 0x46
|
||||
#define ICE_AQC_NVM_LLDP_CFG_HEADER_LEN 2 /* In Bytes */
|
||||
#define ICE_AQC_NVM_LLDP_CFG_PTR_RD_LEN 2 /* In Bytes */
|
||||
|
||||
#define ICE_AQC_NVM_LLDP_PRESERVED_MOD_ID 0x129
|
||||
#define ICE_AQC_NVM_CUR_LLDP_PERSIST_RD_OFFSET 2 /* In Bytes */
|
||||
#define ICE_AQC_NVM_LLDP_STATUS_M MAKEMASK(0xF, 0)
|
||||
#define ICE_AQC_NVM_LLDP_STATUS_M_LEN 4 /* In Bits */
|
||||
#define ICE_AQC_NVM_LLDP_STATUS_RD_LEN 4 /* In Bytes */
|
||||
|
||||
|
||||
/* Used for 0x0704 as well as for 0x0705 commands */
|
||||
struct ice_aqc_nvm_cfg {
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define _ICE_DCB_H_
|
||||
|
||||
#include "ice_type.h"
|
||||
#include "ice_common.h"
|
||||
|
||||
#define ICE_DCBX_OFFLOAD_DIS 0
|
||||
#define ICE_DCBX_OFFLOAD_ENABLED 1
|
||||
|
@ -13,13 +13,15 @@
|
||||
* @length: length of the section to be read (in bytes from the offset)
|
||||
* @data: command buffer (size [bytes] = length)
|
||||
* @last_command: tells if this is the last command in a series
|
||||
* @read_shadow_ram: tell if this is a shadow RAM read
|
||||
* @cd: pointer to command details structure or NULL
|
||||
*
|
||||
* Read the NVM using the admin queue commands (0x0701)
|
||||
*/
|
||||
static enum ice_status
|
||||
ice_aq_read_nvm(struct ice_hw *hw, u16 module_typeid, u32 offset, u16 length,
|
||||
void *data, bool last_command, struct ice_sq_cd *cd)
|
||||
void *data, bool last_command, bool read_shadow_ram,
|
||||
struct ice_sq_cd *cd)
|
||||
{
|
||||
struct ice_aq_desc desc;
|
||||
struct ice_aqc_nvm *cmd;
|
||||
@ -34,6 +36,9 @@ ice_aq_read_nvm(struct ice_hw *hw, u16 module_typeid, u32 offset, u16 length,
|
||||
|
||||
ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_nvm_read);
|
||||
|
||||
if (!read_shadow_ram && module_typeid == ICE_AQC_NVM_START_POINT)
|
||||
cmd->cmd_flags |= ICE_AQC_NVM_FLASH_ONLY;
|
||||
|
||||
/* If this is the last command in a series, set the proper flag. */
|
||||
if (last_command)
|
||||
cmd->cmd_flags |= ICE_AQC_NVM_LAST_CMD;
|
||||
@ -104,8 +109,9 @@ ice_read_sr_aq(struct ice_hw *hw, u32 offset, u16 words, u16 *data,
|
||||
* So do this conversion while calling ice_aq_read_nvm.
|
||||
*/
|
||||
if (!status)
|
||||
status = ice_aq_read_nvm(hw, 0, 2 * offset, 2 * words, data,
|
||||
last_command, NULL);
|
||||
status = ice_aq_read_nvm(hw, ICE_AQC_NVM_START_POINT,
|
||||
2 * offset, 2 * words, data,
|
||||
last_command, true, NULL);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user