1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2016 - 2020, Broadcom 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef BNXNVM_DEFS_H 8*91f16700Schasinglulu #define BNXNVM_DEFS_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #if defined(__GNUC__) 11*91f16700Schasinglulu #define PACKED_STRUCT __packed 12*91f16700Schasinglulu #else /* non-GCC compiler */ 13*91f16700Schasinglulu 14*91f16700Schasinglulu #ifndef DOS_DRIVERS 15*91f16700Schasinglulu #pragma pack(push) 16*91f16700Schasinglulu #pragma pack(1) 17*91f16700Schasinglulu #endif 18*91f16700Schasinglulu #define PACKED_STRUCT 19*91f16700Schasinglulu #endif 20*91f16700Schasinglulu 21*91f16700Schasinglulu typedef uint32_t u32_t; 22*91f16700Schasinglulu typedef uint8_t u8_t; 23*91f16700Schasinglulu typedef uint16_t u16_t; 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define BNXNVM_DEFAULT_BLOCK_SIZE 4096 26*91f16700Schasinglulu #define BNXNVM_UNUSED_BYTE_VALUE 0xff 27*91f16700Schasinglulu 28*91f16700Schasinglulu #define NV_MAX_BLOCK_SIZE 16384 29*91f16700Schasinglulu 30*91f16700Schasinglulu #define BITS_PER_BYTE (8) 31*91f16700Schasinglulu #define SIZEOF_IN_BITS(x) (sizeof(x)*BITS_PER_BYTE) 32*91f16700Schasinglulu 33*91f16700Schasinglulu /************************/ 34*91f16700Schasinglulu /* byte-swapping macros */ 35*91f16700Schasinglulu /************************/ 36*91f16700Schasinglulu #define BYTE_SWAP_16(x) \ 37*91f16700Schasinglulu ((((u16_t)(x) & 0xff00) >> 8) | \ 38*91f16700Schasinglulu (((u16_t)(x) & 0x00ff) << 8)) 39*91f16700Schasinglulu #define BYTE_SWAP_32(x) \ 40*91f16700Schasinglulu ((((u32_t)(x) & 0xff000000) >> 24) | \ 41*91f16700Schasinglulu (((u32_t)(x) & 0x00ff0000) >> 8) | \ 42*91f16700Schasinglulu (((u32_t)(x) & 0x0000ff00) << 8) | \ 43*91f16700Schasinglulu (((u32_t)(x) & 0x000000ff) << 24)) 44*91f16700Schasinglulu 45*91f16700Schasinglulu /* auto-detect integer size */ 46*91f16700Schasinglulu #define BYTE_SWAP_INT(x) \ 47*91f16700Schasinglulu (SIZEOF_IN_BITS(x) == 16 ? BYTE_SWAP_16(x) : \ 48*91f16700Schasinglulu SIZEOF_IN_BITS(x) == 32 ? BYTE_SWAP_32(x) : (x)) 49*91f16700Schasinglulu 50*91f16700Schasinglulu /********************************/ 51*91f16700Schasinglulu /* Architecture-specific macros */ 52*91f16700Schasinglulu /********************************/ 53*91f16700Schasinglulu #ifdef __BIG_ENDIAN__ /* e.g. Motorola */ 54*91f16700Schasinglulu 55*91f16700Schasinglulu #define BE_INT16(x) (x) 56*91f16700Schasinglulu #define BE_INT32(x) (x) 57*91f16700Schasinglulu #define BE_INT(x) (x) 58*91f16700Schasinglulu #define LE_INT16(x) BYTE_SWAP_16(x) 59*91f16700Schasinglulu #define LE_INT32(x) BYTE_SWAP_32(x) 60*91f16700Schasinglulu #define LE_INT(x) BYTE_SWAP_INT(x) 61*91f16700Schasinglulu 62*91f16700Schasinglulu #else /* Little Endian (e.g. Intel) */ 63*91f16700Schasinglulu 64*91f16700Schasinglulu #define LE_INT16(x) (x) 65*91f16700Schasinglulu #define LE_INT32(x) (x) 66*91f16700Schasinglulu #define LE_INT(x) (x) 67*91f16700Schasinglulu #define BE_INT16(x) BYTE_SWAP_16(x) 68*91f16700Schasinglulu #define BE_INT32(x) BYTE_SWAP_32(x) 69*91f16700Schasinglulu #define BE_INT(x) BYTE_SWAP_INT(x) 70*91f16700Schasinglulu 71*91f16700Schasinglulu #endif 72*91f16700Schasinglulu 73*91f16700Schasinglulu 74*91f16700Schasinglulu enum { 75*91f16700Schasinglulu NV_OK = 0, 76*91f16700Schasinglulu NV_NOT_NVRAM, 77*91f16700Schasinglulu NV_BAD_MB, 78*91f16700Schasinglulu NV_BAD_DIR_HEADER, 79*91f16700Schasinglulu NV_BAD_DIR_ENTRY, 80*91f16700Schasinglulu NV_FW_NOT_FOUND, 81*91f16700Schasinglulu }; 82*91f16700Schasinglulu 83*91f16700Schasinglulu typedef struct { 84*91f16700Schasinglulu #define BNXNVM_MASTER_BLOCK_SIG BE_INT32(0x424E5834) /*"BNX4"*/ 85*91f16700Schasinglulu /* Signature*/ 86*91f16700Schasinglulu u32_t sig; 87*91f16700Schasinglulu /* Length of Master Block Header, in bytes [32] */ 88*91f16700Schasinglulu u32_t length; 89*91f16700Schasinglulu /* Block size, in bytes [4096] */ 90*91f16700Schasinglulu u32_t block_size; 91*91f16700Schasinglulu /* Byte-offset to Directory Block (translated) */ 92*91f16700Schasinglulu u32_t directory_offset; 93*91f16700Schasinglulu /* Byte-offset to Block Redirection Table (non-translated) */ 94*91f16700Schasinglulu u32_t redirect_offset; 95*91f16700Schasinglulu /* Size, in bytes of Reserved Blocks region (at end of NVRAM) */ 96*91f16700Schasinglulu u32_t reserved_size; 97*91f16700Schasinglulu /* 98*91f16700Schasinglulu * Size of NVRAM (in bytes) - may be used to 99*91f16700Schasinglulu * override auto-detected size 100*91f16700Schasinglulu */ 101*91f16700Schasinglulu u32_t nvram_size; 102*91f16700Schasinglulu /* CRC-32 (IEEE 802.3 compatible) of the above */ 103*91f16700Schasinglulu u32_t chksum; 104*91f16700Schasinglulu } PACKED_STRUCT bnxnvm_master_block_header_t; 105*91f16700Schasinglulu 106*91f16700Schasinglulu typedef struct { 107*91f16700Schasinglulu #define BNXNVM_DIRECTORY_BLOCK_SIG BE_INT32(0x44697230) /* "Dir0" */ 108*91f16700Schasinglulu /* Signature */ 109*91f16700Schasinglulu u32_t sig; 110*91f16700Schasinglulu /* Length of Directory Header, in bytes [16] */ 111*91f16700Schasinglulu u32_t length; 112*91f16700Schasinglulu /* Number of Directory Entries */ 113*91f16700Schasinglulu u32_t entries; 114*91f16700Schasinglulu /* Length of each Directory Entry, in bytes [24] */ 115*91f16700Schasinglulu u32_t entry_length; 116*91f16700Schasinglulu } PACKED_STRUCT bnxnvm_directory_block_header_t; 117*91f16700Schasinglulu 118*91f16700Schasinglulu typedef struct { 119*91f16700Schasinglulu /* Directory Entry Type (see enum bnxnvm_directory_type) */ 120*91f16700Schasinglulu u16_t type; 121*91f16700Schasinglulu /* Instance of this Directory Entry type (0-based) */ 122*91f16700Schasinglulu u16_t ordinal; 123*91f16700Schasinglulu /* 124*91f16700Schasinglulu * Directory Entry Extension flags used to identify 125*91f16700Schasinglulu * secondary instances of a type:ordinal combinations 126*91f16700Schasinglulu */ 127*91f16700Schasinglulu u16_t ext; 128*91f16700Schasinglulu /* Directory Entry Attribute flags used to describe the item contents */ 129*91f16700Schasinglulu u16_t attr; 130*91f16700Schasinglulu /* Item location in NVRAM specified as offset (in bytes) */ 131*91f16700Schasinglulu u32_t item_location; 132*91f16700Schasinglulu /* 133*91f16700Schasinglulu * Length of NVRAM item in bytes 134*91f16700Schasinglulu * (including padding - multiple of block size) 135*91f16700Schasinglulu */ 136*91f16700Schasinglulu u32_t item_length; 137*91f16700Schasinglulu /* Length of item data in bytes (excluding padding) */ 138*91f16700Schasinglulu u32_t data_length; 139*91f16700Schasinglulu /* 140*91f16700Schasinglulu * CRC-32 (IEEE 802.3 compatible) of item data 141*91f16700Schasinglulu * (excluding padding) (optional) 142*91f16700Schasinglulu */ 143*91f16700Schasinglulu u32_t data_chksum; 144*91f16700Schasinglulu } PACKED_STRUCT bnxnvm_directory_entry_t; 145*91f16700Schasinglulu 146*91f16700Schasinglulu enum bnxnvm_version_format { 147*91f16700Schasinglulu /* US-ASCII string (not necessarily null-terminated) */ 148*91f16700Schasinglulu BNX_VERSION_FMT_ASCII = 0, 149*91f16700Schasinglulu /* Each field 16-bits, displayed as unpadded decimal (e.g. "1.2.3.4") */ 150*91f16700Schasinglulu BNX_VERSION_FMT_DEC = 1, 151*91f16700Schasinglulu /* A single hexadecimal value, up to 64-bits (no dots) */ 152*91f16700Schasinglulu BNX_VERSION_FMT_HEX = 2, 153*91f16700Schasinglulu /* Multiple version values (three 8-bit version fields) */ 154*91f16700Schasinglulu BNX_VERSION_FMT_MULTI = 3 155*91f16700Schasinglulu }; 156*91f16700Schasinglulu 157*91f16700Schasinglulu /* This structure definition must not change: */ 158*91f16700Schasinglulu typedef struct { 159*91f16700Schasinglulu u16_t flags; /* bit-flags (defaults to 0x0000) */ 160*91f16700Schasinglulu u8_t version_format; /* enum bnxnvm_version_format */ 161*91f16700Schasinglulu u8_t version_length; /* in bytes */ 162*91f16700Schasinglulu u8_t version[16]; /* version value */ 163*91f16700Schasinglulu u16_t dir_type; /* enum bnxnvm_directory_type */ 164*91f16700Schasinglulu /* size of the entire trailer (to locate end of component data) */ 165*91f16700Schasinglulu u16_t trailer_length; 166*91f16700Schasinglulu #define BNXNVM_COMPONENT_TRAILER_SIG BE_INT32(0x54726c72) /* "Trlr" */ 167*91f16700Schasinglulu u32_t sig; 168*91f16700Schasinglulu u32_t chksum; /* CRC-32 of all bytes to this point */ 169*91f16700Schasinglulu } PACKED_STRUCT bnxnvm_component_trailer_base_t; 170*91f16700Schasinglulu 171*91f16700Schasinglulu typedef struct { 172*91f16700Schasinglulu /* 173*91f16700Schasinglulu * new trailer members (e.g. digital signature) 174*91f16700Schasinglulu * go here (insert at top): 175*91f16700Schasinglulu */ 176*91f16700Schasinglulu u8_t rsa_sig[256]; /* 2048-bit RSA-encrypted SHA-256 hash */ 177*91f16700Schasinglulu bnxnvm_component_trailer_base_t base; 178*91f16700Schasinglulu } PACKED_STRUCT bnxnvm_component_trailer_t; 179*91f16700Schasinglulu 180*91f16700Schasinglulu #define BNX_MAX_LEN_DIR_NAME 12 181*91f16700Schasinglulu #define BNX_MAX_LEN_DIR_DESC 50 182*91f16700Schasinglulu /********************************************************* 183*91f16700Schasinglulu * NVRAM Directory Entry/Item Types, Names, and Descriptions 184*91f16700Schasinglulu * 185*91f16700Schasinglulu * If you see a name or description that needs improvement, 186*91f16700Schasinglulu * please correct it or raise for discussion. 187*91f16700Schasinglulu * When adding a new directory type, it would be appreciated 188*91f16700Schasinglulu * if you also updated ../../libs/nvm/bnxt_nvm_str.c. 189*91f16700Schasinglulu * DIR_NAME macros may contain up to 12 alpha-numeric 190*91f16700Schasinglulu * US-ASCII characters only, camelCase is preferred for clarity. 191*91f16700Schasinglulu * DIR_DESC macros may contain up to 50 US-ASCII characters 192*91f16700Schasinglulu * providing a verbose description of the directory type. 193*91f16700Schasinglulu */ 194*91f16700Schasinglulu enum bnxnvm_directory_type { 195*91f16700Schasinglulu /* 0x00 Unused directory entry, available for use */ 196*91f16700Schasinglulu BNX_DIR_TYPE_UNUSED = 0, 197*91f16700Schasinglulu #define BNX_DIR_NAME_UNUSED "unused" 198*91f16700Schasinglulu #define BNX_DIR_DESC_UNUSED "Deleted directory entry, available for reuse" 199*91f16700Schasinglulu /* 0x01 Package installation log */ 200*91f16700Schasinglulu BNX_DIR_TYPE_PKG_LOG = 1, 201*91f16700Schasinglulu #define BNX_DIR_NAME_PKG_LOG "pkgLog" 202*91f16700Schasinglulu #define BNX_DIR_DESC_PKG_LOG "Package Installation Log" 203*91f16700Schasinglulu BNX_DIR_TYPE_CHIMP_PATCH = 3, 204*91f16700Schasinglulu #define BNX_DIR_NAME_CHIMP_PATCH "chimpPatch" 205*91f16700Schasinglulu #define BNX_DIR_DESC_CHIMP_PATCH "ChiMP Patch Firmware" 206*91f16700Schasinglulu /* 0x04 ChiMP firmware: Boot Code phase 1 */ 207*91f16700Schasinglulu BNX_DIR_TYPE_BOOTCODE = 4, 208*91f16700Schasinglulu #define BNX_DIR_NAME_BOOTCODE "chimpBoot" 209*91f16700Schasinglulu #define BNX_DIR_DESC_BOOTCODE "Chip Management Processor Boot Firmware" 210*91f16700Schasinglulu /* 0x05 VPD data block */ 211*91f16700Schasinglulu BNX_DIR_TYPE_VPD = 5, 212*91f16700Schasinglulu #define BNX_DIR_NAME_VPD "VPD" 213*91f16700Schasinglulu #define BNX_DIR_DESC_VPD "Vital Product Data" 214*91f16700Schasinglulu /* 0x06 Exp ROM MBA */ 215*91f16700Schasinglulu BNX_DIR_TYPE_EXP_ROM_MBA = 6, 216*91f16700Schasinglulu #define BNX_DIR_NAME_EXP_ROM_MBA "MBA" 217*91f16700Schasinglulu #define BNX_DIR_DESC_EXP_ROM_MBA "Multiple Boot Agent Expansion ROM" 218*91f16700Schasinglulu BNX_DIR_TYPE_AVS = 7, /* 0x07 AVS FW */ 219*91f16700Schasinglulu #define BNX_DIR_NAME_AVS "AVS" 220*91f16700Schasinglulu #define BNX_DIR_DESC_AVS "Adaptive Voltage Scaling Firmware" 221*91f16700Schasinglulu BNX_DIR_TYPE_PCIE = 8, /* 0x08 PCIE FW */ 222*91f16700Schasinglulu #define BNX_DIR_NAME_PCIE "PCIEucode" 223*91f16700Schasinglulu #define BNX_DIR_DESC_PCIE "PCIe Microcode" 224*91f16700Schasinglulu BNX_DIR_TYPE_PORT_MACRO = 9, /* 0x09 PORT MACRO FW */ 225*91f16700Schasinglulu #define BNX_DIR_NAME_PORT_MACRO "portMacro" 226*91f16700Schasinglulu #define BNX_DIR_DESC_PORT_MACRO "Port Macro Firmware" 227*91f16700Schasinglulu BNX_DIR_TYPE_APE_FW = 10, /* 0x0A APE Firmware */ 228*91f16700Schasinglulu #define BNX_DIR_NAME_APE_FW "apeFW" 229*91f16700Schasinglulu #define BNX_DIR_DESC_APE_FW "Application Processing Engine Firmware" 230*91f16700Schasinglulu /* 0x0B Patch firmware executed by APE ROM */ 231*91f16700Schasinglulu BNX_DIR_TYPE_APE_PATCH = 11, 232*91f16700Schasinglulu #define BNX_DIR_NAME_APE_PATCH "apePatch" 233*91f16700Schasinglulu #define BNX_DIR_DESC_APE_PATCH "APE Patch Firmware" 234*91f16700Schasinglulu BNX_DIR_TYPE_KONG_FW = 12, /* 0x0C Kong Firmware */ 235*91f16700Schasinglulu #define BNX_DIR_NAME_KONG_FW "kongFW" 236*91f16700Schasinglulu #define BNX_DIR_DESC_KONG_FW "Kong Firmware" 237*91f16700Schasinglulu /* 0x0D Patch firmware executed by Kong ROM */ 238*91f16700Schasinglulu BNX_DIR_TYPE_KONG_PATCH = 13, 239*91f16700Schasinglulu #define BNX_DIR_NAME_KONG_PATCH "kongPatch" 240*91f16700Schasinglulu #define BNX_DIR_DESC_KONG_PATCH "Kong Patch Firmware" 241*91f16700Schasinglulu BNX_DIR_TYPE_BONO_FW = 14, /* 0x0E Bono Firmware */ 242*91f16700Schasinglulu #define BNX_DIR_NAME_BONO_FW "bonoFW" 243*91f16700Schasinglulu #define BNX_DIR_DESC_BONO_FW "Bono Firmware" 244*91f16700Schasinglulu /* 0x0F Patch firmware executed by Bono ROM */ 245*91f16700Schasinglulu BNX_DIR_TYPE_BONO_PATCH = 15, 246*91f16700Schasinglulu #define BNX_DIR_NAME_BONO_PATCH "bonoPatch" 247*91f16700Schasinglulu #define BNX_DIR_DESC_BONO_PATCH "Bono Patch Firmware" 248*91f16700Schasinglulu BNX_DIR_TYPE_TANG_FW = 16, /* 0x10 Tang firmware */ 249*91f16700Schasinglulu #define BNX_DIR_NAME_TANG_FW "tangFW" 250*91f16700Schasinglulu #define BNX_DIR_DESC_TANG_FW "Tang Firmware" 251*91f16700Schasinglulu /* 0x11 Patch firmware executed by Tang ROM */ 252*91f16700Schasinglulu BNX_DIR_TYPE_TANG_PATCH = 17, 253*91f16700Schasinglulu #define BNX_DIR_NAME_TANG_PATCH "tangPatch" 254*91f16700Schasinglulu #define BNX_DIR_DESC_TANG_PATCH "Tang Patch Firmware" 255*91f16700Schasinglulu /* 0x12 ChiMP firmware: Boot Code phase 2 (loaded by phase 1) */ 256*91f16700Schasinglulu BNX_DIR_TYPE_BOOTCODE_2 = 18, 257*91f16700Schasinglulu #define BNX_DIR_NAME_BOOTCODE_2 "chimpHWRM" 258*91f16700Schasinglulu #define BNX_DIR_DESC_BOOTCODE_2 "ChiMP Hardware Resource Manager Firmware" 259*91f16700Schasinglulu BNX_DIR_TYPE_CCM = 19, /* 0x13 CCM ROM binary */ 260*91f16700Schasinglulu #define BNX_DIR_NAME_CCM "CCM" 261*91f16700Schasinglulu #define BNX_DIR_DESC_CCM "Comprehensive Configuration Management" 262*91f16700Schasinglulu /* 0x14 PCI-IDs, PCI-related configuration properties */ 263*91f16700Schasinglulu BNX_DIR_TYPE_PCI_CFG = 20, 264*91f16700Schasinglulu #define BNX_DIR_NAME_PCI_CFG "pciCFG" 265*91f16700Schasinglulu #define BNX_DIR_DESC_PCI_CFG "PCIe Configuration Data" 266*91f16700Schasinglulu 267*91f16700Schasinglulu BNX_DIR_TYPE_TSCF_UCODE = 21, /* 0x15 TSCF micro-code */ 268*91f16700Schasinglulu #define BNX_DIR_NAME_TSCF_UCODE "PHYucode" 269*91f16700Schasinglulu #define BNX_DIR_DESC_TSCF_UCODE "Falcon PHY Microcode" 270*91f16700Schasinglulu BNX_DIR_TYPE_ISCSI_BOOT = 22, /* 0x16 iSCSI Boot */ 271*91f16700Schasinglulu #define BNX_DIR_NAME_ISCSI_BOOT "iSCSIboot" 272*91f16700Schasinglulu #define BNX_DIR_DESC_ISCSI_BOOT "iSCSI Boot Software Initiator" 273*91f16700Schasinglulu /* 0x18 iSCSI Boot IPV6 - ***DEPRECATED*** */ 274*91f16700Schasinglulu BNX_DIR_TYPE_ISCSI_BOOT_IPV6 = 24, 275*91f16700Schasinglulu /* 0x19 iSCSI Boot IPV4N6 - ***DEPRECATED*** */ 276*91f16700Schasinglulu BNX_DIR_TYPE_ISCSI_BOOT_IPV4N6 = 25, 277*91f16700Schasinglulu BNX_DIR_TYPE_ISCSI_BOOT_CFG = 26, /* 0x1a iSCSI Boot CFG v6 */ 278*91f16700Schasinglulu #define BNX_DIR_NAME_ISCSI_BOOT_CFG "iSCSIcfg" 279*91f16700Schasinglulu #define BNX_DIR_DESC_ISCSI_BOOT_CFG "iSCSI Boot Configuration Data" 280*91f16700Schasinglulu BNX_DIR_TYPE_EXT_PHY = 27, /* 0x1b External PHY FW */ 281*91f16700Schasinglulu #define BNX_DIR_NAME_EXT_PHY "extPHYfw" 282*91f16700Schasinglulu #define BNX_DIR_DESC_EXT_PHY "External PHY Firmware" 283*91f16700Schasinglulu BNX_DIR_TYPE_MODULES_PN = 28, /* 0x1c Modules PartNum list */ 284*91f16700Schasinglulu #define BNX_DIR_NAME_MODULES_PN "modPartNums" 285*91f16700Schasinglulu #define BNX_DIR_DESC_MODULES_PN "Optical Modules Part Number List" 286*91f16700Schasinglulu BNX_DIR_TYPE_SHARED_CFG = 40, /* 0x28 shared configuration block */ 287*91f16700Schasinglulu #define BNX_DIR_NAME_SHARED_CFG "sharedCFG" 288*91f16700Schasinglulu #define BNX_DIR_DESC_SHARED_CFG "Shared Configuration Data" 289*91f16700Schasinglulu BNX_DIR_TYPE_PORT_CFG = 41, /* 0x29 port configuration block */ 290*91f16700Schasinglulu #define BNX_DIR_NAME_PORT_CFG "portCFG" 291*91f16700Schasinglulu #define BNX_DIR_DESC_PORT_CFG "Port Configuration Data" 292*91f16700Schasinglulu BNX_DIR_TYPE_FUNC_CFG = 42, /* 0x2A func configuration block */ 293*91f16700Schasinglulu #define BNX_DIR_NAME_FUNC_CFG "funcCFG" 294*91f16700Schasinglulu #define BNX_DIR_DESC_FUNC_CFG "Function Configuration Data" 295*91f16700Schasinglulu 296*91f16700Schasinglulu /* Management Firmware (TruManage) related dir entries*/ 297*91f16700Schasinglulu /* 0x30 Management firmware configuration (see BMCFG library)*/ 298*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_CFG = 48, 299*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_CFG "mgmtCFG" 300*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_CFG "Out-of-band Management Configuration Data" 301*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_DATA = 49, /* 0x31 "Opaque Management Data" */ 302*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_DATA "mgmtData" 303*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_DATA "Out-of-band Management Data" 304*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_WEB_DATA = 50, /* 0x32 "Web GUI" file data */ 305*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_WEB_DATA "webData" 306*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_WEB_DATA "Out-of-band Management Web Data" 307*91f16700Schasinglulu /* 0x33 "Web GUI" file metadata */ 308*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_WEB_META = 51, 309*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_WEB_META "webMeta" 310*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_WEB_META "Out-of-band Management Web Metadata" 311*91f16700Schasinglulu /* 0x34 Management firmware Event Log (a.k.a. "SEL") */ 312*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_EVENT_LOG = 52, 313*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_EVENT_LOG "eventLog" 314*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_EVENT_LOG "Out-of-band Management Event Log" 315*91f16700Schasinglulu /* 0x35 Management firmware Audit Log */ 316*91f16700Schasinglulu BNX_DIR_TYPE_MGMT_AUDIT_LOG = 53 317*91f16700Schasinglulu #define BNX_DIR_NAME_MGMT_AUDIT_LOG "auditLog" 318*91f16700Schasinglulu #define BNX_DIR_DESC_MGMT_AUDIT_LOG "Out-of-band Management Audit Log" 319*91f16700Schasinglulu 320*91f16700Schasinglulu }; 321*91f16700Schasinglulu 322*91f16700Schasinglulu /* For backwards compatibility only, may be removed later */ 323*91f16700Schasinglulu #define BNX_DIR_TYPE_ISCSI_BOOT_CFG6 BNX_DIR_TYPE_ISCSI_BOOT_CFG 324*91f16700Schasinglulu 325*91f16700Schasinglulu /* Firmware NVM items of "APE BIN" format are identified with 326*91f16700Schasinglulu * the following macro: 327*91f16700Schasinglulu */ 328*91f16700Schasinglulu #define BNX_DIR_TYPE_IS_APE_BIN_FMT(type)\ 329*91f16700Schasinglulu ((type) == BNX_DIR_TYPE_CHIMP_PATCH \ 330*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_BOOTCODE \ 331*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_BOOTCODE_2 \ 332*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_APE_FW \ 333*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_APE_PATCH \ 334*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_TANG_FW \ 335*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_TANG_PATCH \ 336*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_KONG_FW \ 337*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_KONG_PATCH \ 338*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_BONO_FW \ 339*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_BONO_PATCH \ 340*91f16700Schasinglulu ) 341*91f16700Schasinglulu 342*91f16700Schasinglulu /* Other (non APE BIN) executable NVM items are identified with 343*91f16700Schasinglulu * the following macro: 344*91f16700Schasinglulu */ 345*91f16700Schasinglulu #define BNX_DIR_TYPE_IS_OTHER_EXEC(type)\ 346*91f16700Schasinglulu ((type) == BNX_DIR_TYPE_AVS \ 347*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_EXP_ROM_MBA \ 348*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_PCIE \ 349*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_TSCF_UCODE \ 350*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_EXT_PHY \ 351*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_CCM \ 352*91f16700Schasinglulu || (type) == BNX_DIR_TYPE_ISCSI_BOOT \ 353*91f16700Schasinglulu ) 354*91f16700Schasinglulu 355*91f16700Schasinglulu /* Executable NVM items (e.g. microcode, firmware, software) identified 356*91f16700Schasinglulu * with the following macro 357*91f16700Schasinglulu */ 358*91f16700Schasinglulu #define BNX_DIR_TYPE_IS_EXECUTABLE(type) \ 359*91f16700Schasinglulu (BNX_DIR_TYPE_IS_APE_BIN_FMT(type) \ 360*91f16700Schasinglulu || BNX_DIR_TYPE_IS_OTHER_EXEC(type)) 361*91f16700Schasinglulu 362*91f16700Schasinglulu #define BNX_DIR_ORDINAL_FIRST 0 /* Ordinals are 0-based */ 363*91f16700Schasinglulu 364*91f16700Schasinglulu /* No extension flags for this directory entry */ 365*91f16700Schasinglulu #define BNX_DIR_EXT_NONE 0 366*91f16700Schasinglulu /* Directory entry is inactive (not used, not hidden, 367*91f16700Schasinglulu * not available for reuse) 368*91f16700Schasinglulu */ 369*91f16700Schasinglulu #define BNX_DIR_EXT_INACTIVE (1 << 0) 370*91f16700Schasinglulu /* Directory content is a temporary staging location for 371*91f16700Schasinglulu * updating the primary (non-update) directory entry contents 372*91f16700Schasinglulu * (e.g. performing a secure firmware update) 373*91f16700Schasinglulu */ 374*91f16700Schasinglulu #define BNX_DIR_EXT_UPDATE (1 << 1) 375*91f16700Schasinglulu 376*91f16700Schasinglulu /* No attribute flags set for this directory entry */ 377*91f16700Schasinglulu #define BNX_DIR_ATTR_NONE 0 378*91f16700Schasinglulu /* Directory entry checksum of contents is purposely incorrect */ 379*91f16700Schasinglulu #define BNX_DIR_ATTR_NO_CHKSUM (1 << 0) 380*91f16700Schasinglulu /* Directory contents are in the form of a property-stream 381*91f16700Schasinglulu * (e.g. configuration properties) 382*91f16700Schasinglulu */ 383*91f16700Schasinglulu #define BNX_DIR_ATTR_PROP_STREAM (1 << 1) 384*91f16700Schasinglulu /* Directory content (e.g. iSCSI boot) supports IPv4 */ 385*91f16700Schasinglulu #define BNX_DIR_ATTR_IPv4 (1 << 2) 386*91f16700Schasinglulu /* Directory content (e.g. iSCSI boot) supports IPv6 */ 387*91f16700Schasinglulu #define BNX_DIR_ATTR_IPv6 (1 << 3) 388*91f16700Schasinglulu /* Directory content includes standard NVM component trailer 389*91f16700Schasinglulu * (bnxnvm_component_trailer_t) 390*91f16700Schasinglulu */ 391*91f16700Schasinglulu #define BNX_DIR_ATTR_TRAILER (1 << 4) 392*91f16700Schasinglulu 393*91f16700Schasinglulu /* Index of tab-delimited fields in each package log 394*91f16700Schasinglulu * (BNX_DIR_TYPE_PKG_LOG) record (\n-terminated line): 395*91f16700Schasinglulu */ 396*91f16700Schasinglulu enum bnxnvm_pkglog_field_index { 397*91f16700Schasinglulu /* Package installation date/time in ISO-8601 format */ 398*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_INSTALLED_TIMESTAMP = 0, 399*91f16700Schasinglulu /* Installed package description (from package header) or "N/A" */ 400*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_PKG_DESCRIPTION = 1, 401*91f16700Schasinglulu /* Installed package version string (from package header) or "N/A" */ 402*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_PKG_VERSION = 2, 403*91f16700Schasinglulu /* Installed package creation/modification timestamp (ISO-8601) */ 404*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_PKG_TIMESTAMP = 3, 405*91f16700Schasinglulu /* Installed package checksum in hexadecimal (CRC-32) or "N/A" */ 406*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_PKG_CHECKSUM = 4, 407*91f16700Schasinglulu /* Total number of packaged items applied in this installation */ 408*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_INSTALLED_ITEMS = 5, 409*91f16700Schasinglulu /* Hexadecimal bit-mask identifying which items were installed */ 410*91f16700Schasinglulu BNX_PKG_LOG_FIELD_IDX_INSTALLED_MASK = 6 411*91f16700Schasinglulu }; 412*91f16700Schasinglulu 413*91f16700Schasinglulu #if !defined(__GNUC__) 414*91f16700Schasinglulu #ifndef DOS_DRIVERS 415*91f16700Schasinglulu #pragma pack(pop) /* original packing */ 416*91f16700Schasinglulu #endif 417*91f16700Schasinglulu #endif 418*91f16700Schasinglulu 419*91f16700Schasinglulu #endif /* Don't add anything after this line */ 420