You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
420 lines
15 KiB
420 lines
15 KiB
/*
|
|
* Copyright (c) 2016 - 2020, Broadcom
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef BNXNVM_DEFS_H
|
|
#define BNXNVM_DEFS_H
|
|
|
|
#if defined(__GNUC__)
|
|
#define PACKED_STRUCT __packed
|
|
#else /* non-GCC compiler */
|
|
|
|
#ifndef DOS_DRIVERS
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
#endif
|
|
#define PACKED_STRUCT
|
|
#endif
|
|
|
|
typedef uint32_t u32_t;
|
|
typedef uint8_t u8_t;
|
|
typedef uint16_t u16_t;
|
|
|
|
#define BNXNVM_DEFAULT_BLOCK_SIZE 4096
|
|
#define BNXNVM_UNUSED_BYTE_VALUE 0xff
|
|
|
|
#define NV_MAX_BLOCK_SIZE 16384
|
|
|
|
#define BITS_PER_BYTE (8)
|
|
#define SIZEOF_IN_BITS(x) (sizeof(x)*BITS_PER_BYTE)
|
|
|
|
/************************/
|
|
/* byte-swapping macros */
|
|
/************************/
|
|
#define BYTE_SWAP_16(x) \
|
|
((((u16_t)(x) & 0xff00) >> 8) | \
|
|
(((u16_t)(x) & 0x00ff) << 8))
|
|
#define BYTE_SWAP_32(x) \
|
|
((((u32_t)(x) & 0xff000000) >> 24) | \
|
|
(((u32_t)(x) & 0x00ff0000) >> 8) | \
|
|
(((u32_t)(x) & 0x0000ff00) << 8) | \
|
|
(((u32_t)(x) & 0x000000ff) << 24))
|
|
|
|
/* auto-detect integer size */
|
|
#define BYTE_SWAP_INT(x) \
|
|
(SIZEOF_IN_BITS(x) == 16 ? BYTE_SWAP_16(x) : \
|
|
SIZEOF_IN_BITS(x) == 32 ? BYTE_SWAP_32(x) : (x))
|
|
|
|
/********************************/
|
|
/* Architecture-specific macros */
|
|
/********************************/
|
|
#ifdef __BIG_ENDIAN__ /* e.g. Motorola */
|
|
|
|
#define BE_INT16(x) (x)
|
|
#define BE_INT32(x) (x)
|
|
#define BE_INT(x) (x)
|
|
#define LE_INT16(x) BYTE_SWAP_16(x)
|
|
#define LE_INT32(x) BYTE_SWAP_32(x)
|
|
#define LE_INT(x) BYTE_SWAP_INT(x)
|
|
|
|
#else /* Little Endian (e.g. Intel) */
|
|
|
|
#define LE_INT16(x) (x)
|
|
#define LE_INT32(x) (x)
|
|
#define LE_INT(x) (x)
|
|
#define BE_INT16(x) BYTE_SWAP_16(x)
|
|
#define BE_INT32(x) BYTE_SWAP_32(x)
|
|
#define BE_INT(x) BYTE_SWAP_INT(x)
|
|
|
|
#endif
|
|
|
|
|
|
enum {
|
|
NV_OK = 0,
|
|
NV_NOT_NVRAM,
|
|
NV_BAD_MB,
|
|
NV_BAD_DIR_HEADER,
|
|
NV_BAD_DIR_ENTRY,
|
|
NV_FW_NOT_FOUND,
|
|
};
|
|
|
|
typedef struct {
|
|
#define BNXNVM_MASTER_BLOCK_SIG BE_INT32(0x424E5834) /*"BNX4"*/
|
|
/* Signature*/
|
|
u32_t sig;
|
|
/* Length of Master Block Header, in bytes [32] */
|
|
u32_t length;
|
|
/* Block size, in bytes [4096] */
|
|
u32_t block_size;
|
|
/* Byte-offset to Directory Block (translated) */
|
|
u32_t directory_offset;
|
|
/* Byte-offset to Block Redirection Table (non-translated) */
|
|
u32_t redirect_offset;
|
|
/* Size, in bytes of Reserved Blocks region (at end of NVRAM) */
|
|
u32_t reserved_size;
|
|
/*
|
|
* Size of NVRAM (in bytes) - may be used to
|
|
* override auto-detected size
|
|
*/
|
|
u32_t nvram_size;
|
|
/* CRC-32 (IEEE 802.3 compatible) of the above */
|
|
u32_t chksum;
|
|
} PACKED_STRUCT bnxnvm_master_block_header_t;
|
|
|
|
typedef struct {
|
|
#define BNXNVM_DIRECTORY_BLOCK_SIG BE_INT32(0x44697230) /* "Dir0" */
|
|
/* Signature */
|
|
u32_t sig;
|
|
/* Length of Directory Header, in bytes [16] */
|
|
u32_t length;
|
|
/* Number of Directory Entries */
|
|
u32_t entries;
|
|
/* Length of each Directory Entry, in bytes [24] */
|
|
u32_t entry_length;
|
|
} PACKED_STRUCT bnxnvm_directory_block_header_t;
|
|
|
|
typedef struct {
|
|
/* Directory Entry Type (see enum bnxnvm_directory_type) */
|
|
u16_t type;
|
|
/* Instance of this Directory Entry type (0-based) */
|
|
u16_t ordinal;
|
|
/*
|
|
* Directory Entry Extension flags used to identify
|
|
* secondary instances of a type:ordinal combinations
|
|
*/
|
|
u16_t ext;
|
|
/* Directory Entry Attribute flags used to describe the item contents */
|
|
u16_t attr;
|
|
/* Item location in NVRAM specified as offset (in bytes) */
|
|
u32_t item_location;
|
|
/*
|
|
* Length of NVRAM item in bytes
|
|
* (including padding - multiple of block size)
|
|
*/
|
|
u32_t item_length;
|
|
/* Length of item data in bytes (excluding padding) */
|
|
u32_t data_length;
|
|
/*
|
|
* CRC-32 (IEEE 802.3 compatible) of item data
|
|
* (excluding padding) (optional)
|
|
*/
|
|
u32_t data_chksum;
|
|
} PACKED_STRUCT bnxnvm_directory_entry_t;
|
|
|
|
enum bnxnvm_version_format {
|
|
/* US-ASCII string (not necessarily null-terminated) */
|
|
BNX_VERSION_FMT_ASCII = 0,
|
|
/* Each field 16-bits, displayed as unpadded decimal (e.g. "1.2.3.4") */
|
|
BNX_VERSION_FMT_DEC = 1,
|
|
/* A single hexadecimal value, up to 64-bits (no dots) */
|
|
BNX_VERSION_FMT_HEX = 2,
|
|
/* Multiple version values (three 8-bit version fields) */
|
|
BNX_VERSION_FMT_MULTI = 3
|
|
};
|
|
|
|
/* This structure definition must not change: */
|
|
typedef struct {
|
|
u16_t flags; /* bit-flags (defaults to 0x0000) */
|
|
u8_t version_format; /* enum bnxnvm_version_format */
|
|
u8_t version_length; /* in bytes */
|
|
u8_t version[16]; /* version value */
|
|
u16_t dir_type; /* enum bnxnvm_directory_type */
|
|
/* size of the entire trailer (to locate end of component data) */
|
|
u16_t trailer_length;
|
|
#define BNXNVM_COMPONENT_TRAILER_SIG BE_INT32(0x54726c72) /* "Trlr" */
|
|
u32_t sig;
|
|
u32_t chksum; /* CRC-32 of all bytes to this point */
|
|
} PACKED_STRUCT bnxnvm_component_trailer_base_t;
|
|
|
|
typedef struct {
|
|
/*
|
|
* new trailer members (e.g. digital signature)
|
|
* go here (insert at top):
|
|
*/
|
|
u8_t rsa_sig[256]; /* 2048-bit RSA-encrypted SHA-256 hash */
|
|
bnxnvm_component_trailer_base_t base;
|
|
} PACKED_STRUCT bnxnvm_component_trailer_t;
|
|
|
|
#define BNX_MAX_LEN_DIR_NAME 12
|
|
#define BNX_MAX_LEN_DIR_DESC 50
|
|
/*********************************************************
|
|
* NVRAM Directory Entry/Item Types, Names, and Descriptions
|
|
*
|
|
* If you see a name or description that needs improvement,
|
|
* please correct it or raise for discussion.
|
|
* When adding a new directory type, it would be appreciated
|
|
* if you also updated ../../libs/nvm/bnxt_nvm_str.c.
|
|
* DIR_NAME macros may contain up to 12 alpha-numeric
|
|
* US-ASCII characters only, camelCase is preferred for clarity.
|
|
* DIR_DESC macros may contain up to 50 US-ASCII characters
|
|
* providing a verbose description of the directory type.
|
|
*/
|
|
enum bnxnvm_directory_type {
|
|
/* 0x00 Unused directory entry, available for use */
|
|
BNX_DIR_TYPE_UNUSED = 0,
|
|
#define BNX_DIR_NAME_UNUSED "unused"
|
|
#define BNX_DIR_DESC_UNUSED "Deleted directory entry, available for reuse"
|
|
/* 0x01 Package installation log */
|
|
BNX_DIR_TYPE_PKG_LOG = 1,
|
|
#define BNX_DIR_NAME_PKG_LOG "pkgLog"
|
|
#define BNX_DIR_DESC_PKG_LOG "Package Installation Log"
|
|
BNX_DIR_TYPE_CHIMP_PATCH = 3,
|
|
#define BNX_DIR_NAME_CHIMP_PATCH "chimpPatch"
|
|
#define BNX_DIR_DESC_CHIMP_PATCH "ChiMP Patch Firmware"
|
|
/* 0x04 ChiMP firmware: Boot Code phase 1 */
|
|
BNX_DIR_TYPE_BOOTCODE = 4,
|
|
#define BNX_DIR_NAME_BOOTCODE "chimpBoot"
|
|
#define BNX_DIR_DESC_BOOTCODE "Chip Management Processor Boot Firmware"
|
|
/* 0x05 VPD data block */
|
|
BNX_DIR_TYPE_VPD = 5,
|
|
#define BNX_DIR_NAME_VPD "VPD"
|
|
#define BNX_DIR_DESC_VPD "Vital Product Data"
|
|
/* 0x06 Exp ROM MBA */
|
|
BNX_DIR_TYPE_EXP_ROM_MBA = 6,
|
|
#define BNX_DIR_NAME_EXP_ROM_MBA "MBA"
|
|
#define BNX_DIR_DESC_EXP_ROM_MBA "Multiple Boot Agent Expansion ROM"
|
|
BNX_DIR_TYPE_AVS = 7, /* 0x07 AVS FW */
|
|
#define BNX_DIR_NAME_AVS "AVS"
|
|
#define BNX_DIR_DESC_AVS "Adaptive Voltage Scaling Firmware"
|
|
BNX_DIR_TYPE_PCIE = 8, /* 0x08 PCIE FW */
|
|
#define BNX_DIR_NAME_PCIE "PCIEucode"
|
|
#define BNX_DIR_DESC_PCIE "PCIe Microcode"
|
|
BNX_DIR_TYPE_PORT_MACRO = 9, /* 0x09 PORT MACRO FW */
|
|
#define BNX_DIR_NAME_PORT_MACRO "portMacro"
|
|
#define BNX_DIR_DESC_PORT_MACRO "Port Macro Firmware"
|
|
BNX_DIR_TYPE_APE_FW = 10, /* 0x0A APE Firmware */
|
|
#define BNX_DIR_NAME_APE_FW "apeFW"
|
|
#define BNX_DIR_DESC_APE_FW "Application Processing Engine Firmware"
|
|
/* 0x0B Patch firmware executed by APE ROM */
|
|
BNX_DIR_TYPE_APE_PATCH = 11,
|
|
#define BNX_DIR_NAME_APE_PATCH "apePatch"
|
|
#define BNX_DIR_DESC_APE_PATCH "APE Patch Firmware"
|
|
BNX_DIR_TYPE_KONG_FW = 12, /* 0x0C Kong Firmware */
|
|
#define BNX_DIR_NAME_KONG_FW "kongFW"
|
|
#define BNX_DIR_DESC_KONG_FW "Kong Firmware"
|
|
/* 0x0D Patch firmware executed by Kong ROM */
|
|
BNX_DIR_TYPE_KONG_PATCH = 13,
|
|
#define BNX_DIR_NAME_KONG_PATCH "kongPatch"
|
|
#define BNX_DIR_DESC_KONG_PATCH "Kong Patch Firmware"
|
|
BNX_DIR_TYPE_BONO_FW = 14, /* 0x0E Bono Firmware */
|
|
#define BNX_DIR_NAME_BONO_FW "bonoFW"
|
|
#define BNX_DIR_DESC_BONO_FW "Bono Firmware"
|
|
/* 0x0F Patch firmware executed by Bono ROM */
|
|
BNX_DIR_TYPE_BONO_PATCH = 15,
|
|
#define BNX_DIR_NAME_BONO_PATCH "bonoPatch"
|
|
#define BNX_DIR_DESC_BONO_PATCH "Bono Patch Firmware"
|
|
BNX_DIR_TYPE_TANG_FW = 16, /* 0x10 Tang firmware */
|
|
#define BNX_DIR_NAME_TANG_FW "tangFW"
|
|
#define BNX_DIR_DESC_TANG_FW "Tang Firmware"
|
|
/* 0x11 Patch firmware executed by Tang ROM */
|
|
BNX_DIR_TYPE_TANG_PATCH = 17,
|
|
#define BNX_DIR_NAME_TANG_PATCH "tangPatch"
|
|
#define BNX_DIR_DESC_TANG_PATCH "Tang Patch Firmware"
|
|
/* 0x12 ChiMP firmware: Boot Code phase 2 (loaded by phase 1) */
|
|
BNX_DIR_TYPE_BOOTCODE_2 = 18,
|
|
#define BNX_DIR_NAME_BOOTCODE_2 "chimpHWRM"
|
|
#define BNX_DIR_DESC_BOOTCODE_2 "ChiMP Hardware Resource Manager Firmware"
|
|
BNX_DIR_TYPE_CCM = 19, /* 0x13 CCM ROM binary */
|
|
#define BNX_DIR_NAME_CCM "CCM"
|
|
#define BNX_DIR_DESC_CCM "Comprehensive Configuration Management"
|
|
/* 0x14 PCI-IDs, PCI-related configuration properties */
|
|
BNX_DIR_TYPE_PCI_CFG = 20,
|
|
#define BNX_DIR_NAME_PCI_CFG "pciCFG"
|
|
#define BNX_DIR_DESC_PCI_CFG "PCIe Configuration Data"
|
|
|
|
BNX_DIR_TYPE_TSCF_UCODE = 21, /* 0x15 TSCF micro-code */
|
|
#define BNX_DIR_NAME_TSCF_UCODE "PHYucode"
|
|
#define BNX_DIR_DESC_TSCF_UCODE "Falcon PHY Microcode"
|
|
BNX_DIR_TYPE_ISCSI_BOOT = 22, /* 0x16 iSCSI Boot */
|
|
#define BNX_DIR_NAME_ISCSI_BOOT "iSCSIboot"
|
|
#define BNX_DIR_DESC_ISCSI_BOOT "iSCSI Boot Software Initiator"
|
|
/* 0x18 iSCSI Boot IPV6 - ***DEPRECATED*** */
|
|
BNX_DIR_TYPE_ISCSI_BOOT_IPV6 = 24,
|
|
/* 0x19 iSCSI Boot IPV4N6 - ***DEPRECATED*** */
|
|
BNX_DIR_TYPE_ISCSI_BOOT_IPV4N6 = 25,
|
|
BNX_DIR_TYPE_ISCSI_BOOT_CFG = 26, /* 0x1a iSCSI Boot CFG v6 */
|
|
#define BNX_DIR_NAME_ISCSI_BOOT_CFG "iSCSIcfg"
|
|
#define BNX_DIR_DESC_ISCSI_BOOT_CFG "iSCSI Boot Configuration Data"
|
|
BNX_DIR_TYPE_EXT_PHY = 27, /* 0x1b External PHY FW */
|
|
#define BNX_DIR_NAME_EXT_PHY "extPHYfw"
|
|
#define BNX_DIR_DESC_EXT_PHY "External PHY Firmware"
|
|
BNX_DIR_TYPE_MODULES_PN = 28, /* 0x1c Modules PartNum list */
|
|
#define BNX_DIR_NAME_MODULES_PN "modPartNums"
|
|
#define BNX_DIR_DESC_MODULES_PN "Optical Modules Part Number List"
|
|
BNX_DIR_TYPE_SHARED_CFG = 40, /* 0x28 shared configuration block */
|
|
#define BNX_DIR_NAME_SHARED_CFG "sharedCFG"
|
|
#define BNX_DIR_DESC_SHARED_CFG "Shared Configuration Data"
|
|
BNX_DIR_TYPE_PORT_CFG = 41, /* 0x29 port configuration block */
|
|
#define BNX_DIR_NAME_PORT_CFG "portCFG"
|
|
#define BNX_DIR_DESC_PORT_CFG "Port Configuration Data"
|
|
BNX_DIR_TYPE_FUNC_CFG = 42, /* 0x2A func configuration block */
|
|
#define BNX_DIR_NAME_FUNC_CFG "funcCFG"
|
|
#define BNX_DIR_DESC_FUNC_CFG "Function Configuration Data"
|
|
|
|
/* Management Firmware (TruManage) related dir entries*/
|
|
/* 0x30 Management firmware configuration (see BMCFG library)*/
|
|
BNX_DIR_TYPE_MGMT_CFG = 48,
|
|
#define BNX_DIR_NAME_MGMT_CFG "mgmtCFG"
|
|
#define BNX_DIR_DESC_MGMT_CFG "Out-of-band Management Configuration Data"
|
|
BNX_DIR_TYPE_MGMT_DATA = 49, /* 0x31 "Opaque Management Data" */
|
|
#define BNX_DIR_NAME_MGMT_DATA "mgmtData"
|
|
#define BNX_DIR_DESC_MGMT_DATA "Out-of-band Management Data"
|
|
BNX_DIR_TYPE_MGMT_WEB_DATA = 50, /* 0x32 "Web GUI" file data */
|
|
#define BNX_DIR_NAME_MGMT_WEB_DATA "webData"
|
|
#define BNX_DIR_DESC_MGMT_WEB_DATA "Out-of-band Management Web Data"
|
|
/* 0x33 "Web GUI" file metadata */
|
|
BNX_DIR_TYPE_MGMT_WEB_META = 51,
|
|
#define BNX_DIR_NAME_MGMT_WEB_META "webMeta"
|
|
#define BNX_DIR_DESC_MGMT_WEB_META "Out-of-band Management Web Metadata"
|
|
/* 0x34 Management firmware Event Log (a.k.a. "SEL") */
|
|
BNX_DIR_TYPE_MGMT_EVENT_LOG = 52,
|
|
#define BNX_DIR_NAME_MGMT_EVENT_LOG "eventLog"
|
|
#define BNX_DIR_DESC_MGMT_EVENT_LOG "Out-of-band Management Event Log"
|
|
/* 0x35 Management firmware Audit Log */
|
|
BNX_DIR_TYPE_MGMT_AUDIT_LOG = 53
|
|
#define BNX_DIR_NAME_MGMT_AUDIT_LOG "auditLog"
|
|
#define BNX_DIR_DESC_MGMT_AUDIT_LOG "Out-of-band Management Audit Log"
|
|
|
|
};
|
|
|
|
/* For backwards compatibility only, may be removed later */
|
|
#define BNX_DIR_TYPE_ISCSI_BOOT_CFG6 BNX_DIR_TYPE_ISCSI_BOOT_CFG
|
|
|
|
/* Firmware NVM items of "APE BIN" format are identified with
|
|
* the following macro:
|
|
*/
|
|
#define BNX_DIR_TYPE_IS_APE_BIN_FMT(type)\
|
|
((type) == BNX_DIR_TYPE_CHIMP_PATCH \
|
|
|| (type) == BNX_DIR_TYPE_BOOTCODE \
|
|
|| (type) == BNX_DIR_TYPE_BOOTCODE_2 \
|
|
|| (type) == BNX_DIR_TYPE_APE_FW \
|
|
|| (type) == BNX_DIR_TYPE_APE_PATCH \
|
|
|| (type) == BNX_DIR_TYPE_TANG_FW \
|
|
|| (type) == BNX_DIR_TYPE_TANG_PATCH \
|
|
|| (type) == BNX_DIR_TYPE_KONG_FW \
|
|
|| (type) == BNX_DIR_TYPE_KONG_PATCH \
|
|
|| (type) == BNX_DIR_TYPE_BONO_FW \
|
|
|| (type) == BNX_DIR_TYPE_BONO_PATCH \
|
|
)
|
|
|
|
/* Other (non APE BIN) executable NVM items are identified with
|
|
* the following macro:
|
|
*/
|
|
#define BNX_DIR_TYPE_IS_OTHER_EXEC(type)\
|
|
((type) == BNX_DIR_TYPE_AVS \
|
|
|| (type) == BNX_DIR_TYPE_EXP_ROM_MBA \
|
|
|| (type) == BNX_DIR_TYPE_PCIE \
|
|
|| (type) == BNX_DIR_TYPE_TSCF_UCODE \
|
|
|| (type) == BNX_DIR_TYPE_EXT_PHY \
|
|
|| (type) == BNX_DIR_TYPE_CCM \
|
|
|| (type) == BNX_DIR_TYPE_ISCSI_BOOT \
|
|
)
|
|
|
|
/* Executable NVM items (e.g. microcode, firmware, software) identified
|
|
* with the following macro
|
|
*/
|
|
#define BNX_DIR_TYPE_IS_EXECUTABLE(type) \
|
|
(BNX_DIR_TYPE_IS_APE_BIN_FMT(type) \
|
|
|| BNX_DIR_TYPE_IS_OTHER_EXEC(type))
|
|
|
|
#define BNX_DIR_ORDINAL_FIRST 0 /* Ordinals are 0-based */
|
|
|
|
/* No extension flags for this directory entry */
|
|
#define BNX_DIR_EXT_NONE 0
|
|
/* Directory entry is inactive (not used, not hidden,
|
|
* not available for reuse)
|
|
*/
|
|
#define BNX_DIR_EXT_INACTIVE (1 << 0)
|
|
/* Directory content is a temporary staging location for
|
|
* updating the primary (non-update) directory entry contents
|
|
* (e.g. performing a secure firmware update)
|
|
*/
|
|
#define BNX_DIR_EXT_UPDATE (1 << 1)
|
|
|
|
/* No attribute flags set for this directory entry */
|
|
#define BNX_DIR_ATTR_NONE 0
|
|
/* Directory entry checksum of contents is purposely incorrect */
|
|
#define BNX_DIR_ATTR_NO_CHKSUM (1 << 0)
|
|
/* Directory contents are in the form of a property-stream
|
|
* (e.g. configuration properties)
|
|
*/
|
|
#define BNX_DIR_ATTR_PROP_STREAM (1 << 1)
|
|
/* Directory content (e.g. iSCSI boot) supports IPv4 */
|
|
#define BNX_DIR_ATTR_IPv4 (1 << 2)
|
|
/* Directory content (e.g. iSCSI boot) supports IPv6 */
|
|
#define BNX_DIR_ATTR_IPv6 (1 << 3)
|
|
/* Directory content includes standard NVM component trailer
|
|
* (bnxnvm_component_trailer_t)
|
|
*/
|
|
#define BNX_DIR_ATTR_TRAILER (1 << 4)
|
|
|
|
/* Index of tab-delimited fields in each package log
|
|
* (BNX_DIR_TYPE_PKG_LOG) record (\n-terminated line):
|
|
*/
|
|
enum bnxnvm_pkglog_field_index {
|
|
/* Package installation date/time in ISO-8601 format */
|
|
BNX_PKG_LOG_FIELD_IDX_INSTALLED_TIMESTAMP = 0,
|
|
/* Installed package description (from package header) or "N/A" */
|
|
BNX_PKG_LOG_FIELD_IDX_PKG_DESCRIPTION = 1,
|
|
/* Installed package version string (from package header) or "N/A" */
|
|
BNX_PKG_LOG_FIELD_IDX_PKG_VERSION = 2,
|
|
/* Installed package creation/modification timestamp (ISO-8601) */
|
|
BNX_PKG_LOG_FIELD_IDX_PKG_TIMESTAMP = 3,
|
|
/* Installed package checksum in hexadecimal (CRC-32) or "N/A" */
|
|
BNX_PKG_LOG_FIELD_IDX_PKG_CHECKSUM = 4,
|
|
/* Total number of packaged items applied in this installation */
|
|
BNX_PKG_LOG_FIELD_IDX_INSTALLED_ITEMS = 5,
|
|
/* Hexadecimal bit-mask identifying which items were installed */
|
|
BNX_PKG_LOG_FIELD_IDX_INSTALLED_MASK = 6
|
|
};
|
|
|
|
#if !defined(__GNUC__)
|
|
#ifndef DOS_DRIVERS
|
|
#pragma pack(pop) /* original packing */
|
|
#endif
|
|
#endif
|
|
|
|
#endif /* Don't add anything after this line */
|