/**************************************************************************** * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2014 QLogic Corporation * The contents of this file are subject to the terms of the * QLogic End User License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the License at * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/ * QLogic_End_User_Software_License.txt * See the License for the specific language governing permissions * and limitations under the License. * * * FILE NAME: ncsi_cmds.h * * DESCRIPTION: Note that the response definitions include the notion of * a rsp Payload consisting of the actual data returned for a * given rsp, and the rsp frame Payload consisting of the rsp * Payload plus all padding and checksum bytes. The size of * each of these must be understood independently for proper * programming of the rsp pkt header, and the actual UMP TX * operation. * * CONVENTIONS: * * AUTHOR: Tim Sharp * * CREATION DATE: 2007 * * ****************************************************************************/ #ifndef NCSI_CMDS_H #define NCSI_CMDS_H /*---------------------------------------------------------------------------- ------------------------------ include files --------------------------------- ----------------------------------------------------------------------------*/ #include "bcmtype.h" #include "ncsi_basic_types.h" /*---------------------------------------------------------------------------- ------------------------------ local definitions ----------------------------- structs, unions, typedefs, #defines, etc belong here... ----------------------------------------------------------------------------*/ typedef enum NcsiGetParameterSelector { NCSI_PARAM_BOOTCODE_REV = 0, NCSI_PARAM_HOST_L2_MAC, NCSI_PARAM_ALT_HOST_L2_MAC, NCSI_PARAM_HOST_ISCSI_MAC, NCSI_PARAM_ALT_HOST_ISCSI_MAC, NCSI_PARAM_PXE_BOOT_REV, NCSI_PARAM_ISCSI_BOOT_REV, NCSI_PARAM_PCI_DEVICE_ID, NCSI_PARAM_PCI_VENDOR_ID, NCSI_PARAM_PCI_SUBSYSTEM_ID, NCSI_PARAM_PCI_SUBSYSTEM_VENDOR_ID }NcsiGetParameterSelector_t; /***************************************************************************** NcsiRmiiControlPktHeader_t this structure definition is for the common UMP command/response frame header used in both cmd and rsp pkts. UMP frame header idntifies wheteher a received packet is to be processed locally or forwarded for transmission. *****************************************************************************/ #define NCSI_CMD_CHANNEL_ID_MAX_VALUE 1 #define NCSI_CMD_HEADER_SIZE 16 typedef struct NcsiControlPktHeader #if defined (BIG_ENDIAN) { u16_t PlusTwoPadding; /* for plus 2 alignment */ u8_t DestAddr[SIZEOF_MAC_ADDRESS]; /* 6 */ u8_t SrcAddr[SIZEOF_MAC_ADDRESS]; /* 12 */ u16_t EtherType; /* 14 ids pkt as cmd */ #define NCSI_ETHER_TYPE_ID (0x88F8) u8_t McId; u8_t HeaderRevNum; /* 16 ids */ u8_t Reserved0; u8_t InstanceId; /* 18 ids order of pkts */ u8_t TypeCode; /* 19 ids specific command */ #define NCSI_CMD_TYPE_AEN (0xFF) #define NCSI_CMD_TYPE_MASK (0x7F) #define NCSI_CMD_TYPE_CLEAR_INITIAL_STATE (0x00) #define NCSI_CMD_TYPE_PACKAGE_SELECT (0x01) #define NCSI_CMD_TYPE_PACKAGE_DESELECT (0x02) #define NCSI_CMD_TYPE_ENABLE_CHANNEL (0x03) #define NCSI_CMD_TYPE_DISABLE_CHANNEL (0x04) #define NCSI_CMD_TYPE_RESET_CHANNEL (0x05) #define NCSI_CMD_TYPE_ENABLE_CHANNEL_EGRESS_TX (0x06) #define NCSI_CMD_TYPE_DISABLE_CHANNEL_EGRESS_TX (0x07) #define NCSI_CMD_TYPE_ENABLE_AEN (0x08) #define NCSI_CMD_TYPE_SET_LINK (0x09) #define NCSI_CMD_TYPE_GET_LINK_STATUS (0x0A) #define NCSI_CMD_TYPE_SET_VLAN_FILTERS (0x0B) #define NCSI_CMD_TYPE_ENABLE_VLAN (0x0C) #define NCSI_CMD_TYPE_DISABLE_VLAN (0x0D) #define NCSI_CMD_TYPE_SET_MAC_ADDRESS (0x0E) #define NCSI_CMD_TYPE_ENABLE_BROADCAST_PKT_FILTER (0x10) #define NCSI_CMD_TYPE_DISABLE_BROADCAST_PKT_FILTER (0x11) #define NCSI_CMD_TYPE_ENABLE_MULTICAST_PKT_FILTER (0x12) #define NCSI_CMD_TYPE_DISABLE_MULTICAST_PKT_FILTER (0x13) #define NCSI_CMD_TYPE_SET_NCSI_FLOW_CONTROL (0x14) #define NCSI_CMD_TYPE_GET_VERSION_ID (0x15) #define NCSI_CMD_TYPE_GET_CAPABILITIES (0x16) #define NCSI_CMD_TYPE_GET_PARAMETERS (0x17) #define NCSI_CMD_TYPE_GET_IF_STATISTICS (0x18) #define NCSI_CMD_TYPE_GET_NCSI_STATISTICS (0x19) #define NCSI_CMD_TYPE_GET_NCSI_PASS_THROUGH_STATISTICS (0x1A) #define NCSI_CMD_TYPE_LAST_NON_OEM_CMD NCSI_CMD_TYPE_GET_NCSI_PASS_THROUGH_STATISTICS #define NCSI_CMD_TYPE_OEM (0x50) #define NCSI_CMD_RESPONSE_BIT (0x80) u8_t ChannelId; /* 20 ids specific bcm5706 */ #define NCSI_CMD_CHANNEL_ID_MASK 0x1F #define NCSI_CMD_PACKAGE_ID_MASK 0xE0 u16_t PayloadSize; /* 22 ids how much Payload */ u32_t Reserved1[2]; } NcsiRmiiControlPktHeader_t; #elif defined (LITTLE_ENDIAN) { u8_t DestAddr[SIZEOF_MAC_ADDRESS+2]; /* 6 + 2 padding */ u8_t SrcAddr[SIZEOF_MAC_ADDRESS-2]; u16_t EtherType; /* 14 ids pkt as cmd */ #define NCSI_ETHER_TYPE_ID (0x88F8) u8_t SrcAddr_lsw[2]; u8_t InstanceId; u8_t Reserved0; u8_t HeaderRevNum; u8_t McId; u16_t PayloadSize; /* 22 ids how much Payload */ u8_t ChannelId; #define NCSI_CMD_PACKAGE_ID_MASK 0xE0 #define NCSI_CMD_CHANNEL_ID_MASK 0x1F u8_t TypeCode; #define NCSI_CMD_RESPONSE_BIT (0x80) #define NCSI_CMD_TYPE_OEM (0x50) #define NCSI_CMD_TYPE_LAST_NON_OEM_CMD NCSI_CMD_TYPE_GET_NCSI_PASS_THROUGH_STATISTICS #define NCSI_CMD_TYPE_GET_NCSI_PASS_THROUGH_STATISTICS (0x1A) #define NCSI_CMD_TYPE_GET_NCSI_STATISTICS (0x19) #define NCSI_CMD_TYPE_GET_IF_STATISTICS (0x18) #define NCSI_CMD_TYPE_GET_PARAMETERS (0x17) #define NCSI_CMD_TYPE_GET_CAPABILITIES (0x16) #define NCSI_CMD_TYPE_GET_VERSION_ID (0x15) #define NCSI_CMD_TYPE_SET_NCSI_FLOW_CONTROL (0x14) #define NCSI_CMD_TYPE_DISABLE_MULTICAST_PKT_FILTER (0x13) #define NCSI_CMD_TYPE_ENABLE_MULTICAST_PKT_FILTER (0x12) #define NCSI_CMD_TYPE_DISABLE_BROADCAST_PKT_FILTER (0x11) #define NCSI_CMD_TYPE_ENABLE_BROADCAST_PKT_FILTER (0x10) #define NCSI_CMD_TYPE_SET_MAC_ADDRESS (0x0E) #define NCSI_CMD_TYPE_DISABLE_VLAN (0x0D) #define NCSI_CMD_TYPE_ENABLE_VLAN (0x0C) #define NCSI_CMD_TYPE_SET_VLAN_FILTERS (0x0B) #define NCSI_CMD_TYPE_GET_LINK_STATUS (0x0A) #define NCSI_CMD_TYPE_SET_LINK (0x09) #define NCSI_CMD_TYPE_ENABLE_AEN (0x08) #define NCSI_CMD_TYPE_DISABLE_CHANNEL_EGRESS_TX (0x07) #define NCSI_CMD_TYPE_ENABLE_CHANNEL_EGRESS_TX (0x06) #define NCSI_CMD_TYPE_RESET_CHANNEL (0x05) #define NCSI_CMD_TYPE_DISABLE_CHANNEL (0x04) #define NCSI_CMD_TYPE_ENABLE_CHANNEL (0x03) #define NCSI_CMD_TYPE_PACKAGE_DESELECT (0x02) #define NCSI_CMD_TYPE_PACKAGE_SELECT (0x01) #define NCSI_CMD_TYPE_CLEAR_INITIAL_STATE (0x00) #define NCSI_CMD_TYPE_MASK (0x7F) #define NCSI_CMD_TYPE_AEN (0xFF) u32_t Reserved1[2]; } NcsiRmiiControlPktHeader_t; #endif // ENDIAN typedef NcsiRmiiControlPktHeader_t *pNcsiRmiiControlPktHeader_t; #define NCSI_DEFS_SIZE_OF_NCSI_FRAME_HEADER (sizeof (NcsiRmiiControlPktHeader_t)) /***************************************************************************** FwTestCmdPayload_t Structure definition for most basic UMP cmd Payload Write command is not bounded. Read command is bounded to 128 bytes, or 32 dwords. That fits in with existing statistics command response payload size, and handles existing testing needs. *****************************************************************************/ typedef struct FwTestCmdPayload { u32_t OperationType; #define NCSI_TEST_READ 0x0 // read N register dwords starting at address provided (word count, address ) #define NCSI_TEST_WRITE 0x1 // write N words starting at address provided with Value provided (word count, address, value) #define NCSI_TEST_READ_FW_STATE 0x2 // read and return internal fw state word #define NCSI_TEST_SAVE_SET_OS_PRES_FLAG 0x3 // canned functional meaning #define NCSI_TEST_RESTORE_OS_PRES_FLAG 0x4 // canned functional meaning #define NCSI_TEST_SAVE_SET_EXCEED_LOW_POWER_FLAG 0x5 // canned functional meaning #define NCSI_TEST_RESTORE_EXCEED_LOW_POWER_FLAG 0x6 // canned functional meaning union { struct { u32_t Address; u32_t WordCount; } Read; struct { u32_t Address; u32_t WordCount; u32_t Value; } Write; } OperationParameters; } FwTestCmdPayload_t; // type definitions for Dual Media Support typedef enum PhyPrioritySel { PHY_PRI_HW_PIN, // HW pin strapping value PHY_PRI_COPPER_FIRST, // Copper priority selection PHY_PRI_XAUI_FIRST, // XAUI priority selection PHY_PRI_COPPER_ONLY, // use copper, ignore XAUI priority PHY_PRI_XAUI_ONLY // use XAUI, ignore copper priority }PhyPrioritySel_t; /***************************************************************************** SetDualMediaParametersPayload_t Structure definitions for Dual Media support *****************************************************************************/ #define NCSI_CMD_SET_PHY_PRIORITY_RSP_PAYLOAD_VERSION 0 typedef struct SetDualMediaParametersPayload #if defined (BIG_ENDIAN) { u8_t Reserved[3]; u8_t PhyPrioritySelection; } SetDualMediaParametersPayload_t; #elif defined (LITTLE_ENDIAN) { u8_t PhyPrioritySelection; u8_t Reserved[3]; } SetDualMediaParametersPayload_t; #endif // ENDIAN typedef struct NcsiOemGetDualMediaParametersPayload #if defined (BIG_ENDIAN) { u16_t Reserved; u8_t PhySelection; u8_t PhyPrioritySelection; } NcsiOemGetDualMediaParametersPayload_t; #elif defined (LITTLE_ENDIAN) { u8_t PhyPrioritySelection; u8_t PhySelection; u16_t Reserved; } NcsiOemGetDualMediaParametersPayload_t; #endif // ENDIAN #define NCSI_CMD_SET_MAC_OEM_CMD_PAYLOAD_VERSION 0 typedef struct BrcmOemCmdRspHeader { #if defined (BIG_ENDIAN) u8_t PayloadVersion; u8_t CommandType; #define BRCM_OEM_SET_ALT_HOST_MAC_ADDRESS_CMD 0x00 #define BRCM_OEM_GET_NCSI_PARAMETERS_CMD 0x01 #define BRCM_OEM_NCSI_TEST_CMD 0x02 #define BRCM_OEM_SET_PHY_PRIORITY_CMD 0x03 #define BRCM_OEM_GET_PHY_PRIORITY_CMD 0x04 u16_t PayloadLength; u32_t Reserved; #elif defined (LITTLE_ENDIAN) u16_t PayloadLength; u8_t CommandType; #define BRCM_OEM_SET_ALT_HOST_MAC_ADDRESS_CMD 0x00 #define BRCM_OEM_GET_NCSI_PARAMETERS_CMD 0x01 #define BRCM_OEM_NCSI_TEST_CMD 0x02 #define BRCM_OEM_SET_PHY_PRIORITY_CMD 0x03 #define BRCM_OEM_GET_PHY_PRIORITY_CMD 0x04 u8_t PayloadVersion; u32_t Reserved; #endif // ENDIAN } BrcmOemCmdRspHeader_t; typedef struct ModifyHostMacAddrCmdPayload #if defined (BIG_ENDIAN) { u8_t Res; u8_t Flags; #define NCSI_OEM_CMD_SET_ALT_HOST_MAC_ADDR_FLAG_FIELD_ENABLE_MAC_ADDR 0x01 #define NCSI_OEM_CMD_SET_ALT_HOST_MAC_ADDR_FLAG_FIELD_ISCSI_MAC_ADDR_SELECT 0x02 u16_t MacHigh; u16_t MacMiddle; u16_t MacLow; } ModifyHostMacAddrCmdPayload_t; #elif defined (LITTLE_ENDIAN) { u16_t MacHigh; u8_t Flags; #define NCSI_OEM_CMD_SET_ALT_HOST_MAC_ADDR_FLAG_FIELD_ENABLE_MAC_ADDR 0x01 #define NCSI_OEM_CMD_SET_ALT_HOST_MAC_ADDR_FLAG_FIELD_ISCSI_MAC_ADDR_SELECT 0x02 u8_t Res; u16_t MacLow; u16_t MacMiddle; } ModifyHostMacAddrCmdPayload_t; #endif // ENDIAN typedef union BrcmOemCmdPayload { ModifyHostMacAddrCmdPayload_t ModifyHostMacAddrCmd; // BRCM_OEM_SET_ALT_HOST_MAC_ADDRESS_CMD FwTestCmdPayload_t NsciTestCmd; // BRCM_OEM_NCSI_TEST_CMD SetDualMediaParametersPayload_t SetDualMediaParametersCmd; // BRCM_OEM_SET_PHY_PRIORITY_CMD } BrcmOemCmdPayload_t; /* OEM command ID */ #define DELL_OEM_GET_INVENTORY_CMD 0x00 #define DELL_OEM_GET_EXTENDED_CAPABILITIES_CMD 0x01 #define DELL_OEM_GET_PARTITION_INFORMATION_CMD 0x02 #define DELL_OEM_GET_FCOE_CAPABILITIES_CMD 0x03 #define DELL_OEM_GET_VIRTUAL_LINK_CMD 0x04 #define DELL_OEM_GET_LAN_STATISTICS_CMD 0x05 #define DELL_OEM_GET_FCOE_STATISTICS_CMD 0x06 #define DELL_OEM_SET_ADDR_CMD 0x07 #define DELL_OEM_GET_ADDR_CMD 0x08 #define DELL_OEM_SET_LICENSE_CMD 0x09 #define DELL_OEM_GET_LICENSE_CMD 0x0A #define DELL_OEM_SET_PASSTHRU_CONTROL_CMD 0x0B #define DELL_OEM_GET_PASSTHRU_CONTROL_CMD 0x0C #define DELL_OEM_SET_PARTITION_TX_BANDWIDTH_CMD 0x0D #define DELL_OEM_GET_PARTITION_TX_BANDWIDTH_CMD 0x0E #define DELL_OEM_SET_MC_IP_ADDRESS_CMD 0x0F #define DELL_OEM_GET_TEAMING_INFORMATION_CMD 0x10 #define DELL_OEM_ENABLE_PORTS_CMD 0x11 #define DELL_OEM_DISABLE_PORTS_CMD 0x12 #define DELL_OEM_GET_TEMPERATURE_CMD 0x13 #define DELL_OEM_SET_LINK_TUNING_CMD 0x14 #define DELL_OEM_ENABLE_OUTOFBOX_WOL_CMD 0x15 #define DELL_OEM_DISABLE_OUTOFBOX_WOL_CMD 0x16 #define DELL_OEM_GET_SUPP_PAYLOAD_VERSION_CMD 0x1A #define DELL_OEM_GET_OS_DRIVER_VERSION_CMD 0x1C #define DELL_OEM_GET_ISCSI_BOOT_INITIATOR_CONFIG_CMD 0x1D #define DELL_OEM_SET_ISCSI_BOOT_INITIATOR_CONFIG_CMD 0x1E #define DELL_OEM_GET_ISCSI_BOOT_TARGET_CONFIG_CMD 0x1F #define DELL_OEM_SET_ISCSI_BOOT_TARGET_CONFIG_CMD 0x20 #define DELL_OEM_GET_FCOE_BOOT_TARGET_CONFIG_CMD 0x21 #define DELL_OEM_SET_FCOE_BOOT_TARGET_CONFIG_CMD 0x22 #define DELL_OEM_NVRAM_COMMIT_CMD 0x23 #define DELL_OEM_NVRAM_COMMIT_STATUS_CMD 0x24 /* ManufacturerId IANA */ #define NCSI_QLOGIC_IANA (0x113D) #define NCSI_DELL_IANA (0x2A2) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x00 Get Inventory Used to get the inventory information for the Ethernet Controller 0x00 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #define DELL_OEM_PAYLOAD_V1 (1<<1) #define DELL_OEM_PAYLOAD_V2 (1<<2) typedef struct DellDfltCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u16_t Pad; #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t Pad; u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // ENDIAN }DellDfltCmd_t; typedef struct DellDfltCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u16_t Pad; #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t Pad; u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // endian } DellDfltCmdRspData_t; typedef DellDfltCmd_t DellGetInventoryCmd_t; typedef struct DellGetInventoryCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u16_t MediaType; #define MEDIA_BASE_T 0x0001 // 0 Base-T 0b = Base-T is not supported. 1b = Base-T is supported. #define MEDIA_BASE_KR 0x0002 // 1 Base-KR 0b = Base-KR is not supported. 1b = Base-KR is supported. #define MEDIA_BASE_KX 0x0004 // 2 Base-KX 0b = Base-KX is not supported. 1b = Base-KX is supported. #define MEDIA_BASE_KX4 0x0008 // 3 Base-KX4 0b = Base-KX4 is not supported.1b = Base-KX4 is supported. #define MEDIA_SR 0x0010 // 4 SR 0b = SR is not supported. 1b = SR is supported. #define MEDIA_SFP 0x0020 // 5 SFP 0b = SFP is not supported. 1b = SFP is supported. #define MEDIA_SFP_PLUS 0x0040 // 6 SFP+ 0b = SFP+ is not supported. 1b = SFP+ is supported. #define MEDIA_DCA 0x0080 // 7 DCA 0b = DCA is not supported. 1b = DCA is supported. #define MEDIA_RESERVED 0xFF00 // 8-15 Reserved u32_t FamilyFWVer; #define FW_VER_MAJOR_MASK 0xFF000000 #define FW_VER_MINOR_MASK 0x00FF0000 #define FW_VER_BUILD_MASK 0x0000FF00 #define FW_VER_SUB_BUILD_MASK 0x000000FF u32_t FamilyDrvVer; #define DRV_FW_VER_MAJOR_MASK 0xFF000000 #define DRV_FW_VER_MINOR_MASK 0x00FF0000 #define DRV_FW_VER_BUILD_MASK 0x0000FF00 #define DRV_FW_VER_SUB_BUILD_MASK 0x000000FF u8_t FirstInventoryLength; u8_t FirstInventoryType; #define INVENTORY_TYPE_DEVICE 0x0 // = Device Name #define INVENTORY_TYPE_VENDOR 0x1 // = Vendor Name // 0x2-0xFF = Reserved u8_t InventoryNameBuf[]; #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t MediaType; #define MEDIA_BASE_T 0x0001 // 0 Base-T 0b = Base-T is not supported. 1b = Base-T is supported. #define MEDIA_BASE_KR 0x0002 // 1 Base-KR 0b = Base-KR is not supported. 1b = Base-KR is supported. #define MEDIA_BASE_KX 0x0004 // 2 Base-KX 0b = Base-KX is not supported. 1b = Base-KX is supported. #define MEDIA_BASE_KX4 0x0008 // 3 Base-KX4 0b = Base-KX4 is not supported.1b = Base-KX4 is supported. #define MEDIA_SR 0x0010 // 4 SR 0b = SR is not supported. 1b = SR is supported. #define MEDIA_SFP 0x0020 // 5 SFP 0b = SFP is not supported. 1b = SFP is supported. #define MEDIA_SFP_PLUS 0x0040 // 6 SFP+ 0b = SFP+ is not supported. 1b = SFP+ is supported. #define MEDIA_DCA 0x0080 // 7 DCA 0b = DCA is not supported. 1b = DCA is supported. #define MEDIA_RESERVED 0xFF00 // 8-15 Reserved u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; u32_t FamilyFWVer; #define FW_VER_MAJOR_MASK 0xFF000000 #define FW_VER_MINOR_MASK 0x00FF0000 #define FW_VER_BUILD_MASK 0x0000FF00 #define FW_VER_SUB_BUILD_MASK 0x000000FF u32_t FamilyDrvVer; #define DRV_FW_VER_MAJOR_MASK 0xFF000000 #define DRV_FW_VER_MINOR_MASK 0x00FF0000 #define DRV_FW_VER_BUILD_MASK 0x0000FF00 #define DRV_FW_VER_SUB_BUILD_MASK 0x000000FF u8_t FirstInventoryNameBuf[2]; u8_t FirstInventoryLength; u8_t FirstInventoryType; #define INVENTORY_TYPE_DEVICE 0x0 // = Device Name #define INVENTORY_TYPE_VENDOR 0x1 // = Vendor Name // 0x2-0xFF = Reserved u8_t InventoryNameBuf[]; #endif // endian } DellGetInventoryCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x01 Get Extended Capabilities Used to get the feature capabilities of a channel. 0x01 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellGetExtendedCapabilitiesCmd_t; typedef struct DellGetExtendedCapabilitiesCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u16_t CapabilitiesHiWord; // 16-17 Reserved #define CAP_PXE_SUPPORT_SUPPORT (1<< (18-16)) // 18 PXE 0b = PXE is not supported. 1b = PXE is supported. #define CAP_ISCSI_BOOT_SUPPORT (1<< (19-16)) // 19 iSCSI Boot (iBFT or HBA) 0b = iSCSI Boot is not supported. 1b = iSCSI Boot is supported. #define CAP_FCOE_BOOT_SUPPORT (1<< (20-16)) // 20 FCoE Boot 0b = FCoE Boot is not supported. 1b = FCoE Boot is supported. #define CAP_STORAGE_BOOT_M_PROVISIONING (1<< (21-16)) // 20 Storage Boot Parameter Provisioning 0b = not supported. 1b = is supported. // 22-23 Reserved #define CAP_NIC_PARTITIONING_SUPPORT (1<< (24-16)) // 24 NIC Partitioning 0b = NIC Partitioning is not supported. 1b = NIC Partitioning is supported. #define CAP_SRIOV_SUPPORT (1<< (25-16)) // 25 SR-IOV 0b = SR-IOV is not supported. 1b = SR-IOV is supported. #define CAP_DELL_LICENSE_MGR_SUPPORT (1<< (26-16)) // 26 Dell License Manager 0b = Dell License Manager is not supported 1b = Dell License Manager is supported #define CAP_IPSEC_OFFLOAD_SUPPORT (1<< (27-16)) // 27 IPSec Offload 0b = IPSec Offload is not supported 1b = IPSec Offload is supported #define CAP_MACSEC_SUPPORT (1<< (28-16)) // 28 MACSec 0b = MACSec is not supported 1b = MACSec is supported #define CAP_RDMA_SUPPORT (1<< (29-16)) // 29 RDMA 0b = RDMA is not supported 1b = RDMA is supported // 30-31 Reserved u16_t CapabilitiesLoWord; #define CAP_VIRTUAL_ADDRESSING_SUPPORT 0x0001 // 0 Virtual Addressing 0b = Virtual Addressing is not supported. 1b = Virtual Addressing is supported. #define CAP_LINK_TUNING_SUPPORT 0x0002 // 1 Link Tuning 0b = Link Tuning is not supported. 1b = Link Tuning is supported. #define CAP_REMOTEPHY_SUPPORT 0x0004 // 2 RemotePHY 0b = RemotePHY is not supported 1b = RemotePHY is supported #define CAP_OPTION_ROM_PRESENT_SUPPORT 0x0008 // 3 Option ROM Present 0b = OPROM is not present 1b = OPROM is present #define CAP_UEFI_SUPPORT 0x0010 // 4 uEFI 0b = uEFI is not supported 1b = uEFI is supported #define CAP_WOL_SUPPORT 0x0020 // 5 WakeOnLAN 0b = WakeOnLAN is not supported. 1b = WakeOnLAN is supported. #define CAP_NETWORK_MGMT_PASS_THRU_SUPPORT 0x0040 // 6 Network Management pass through 0b = Network Management pass through is not supported. 1b = Network Management pass through is supported. #define CAP_OS_BMC_PASS_THRU_SUPPORT 0x0080 // 7 OS-BMC pass through 0b = OS-BMC pass through is not supported. 1b = OS-BMC pass through is supported. #define CAP_EEE_SUPPORT 0x0100 // 8 Energy Efficient Ethernet 0b = EEE is not supported. 1b = EEE is supported. #define CAP_ON_CHIP_THERMAL_SENSOR_SUPPORT 0x0200 // 9 On chip thermal sensor 0b = On chip thermal sensor is supported. 1b = On chip thermal sensor is not supported. // 10-11 Reserved #define CAP_TCP_OFFLOAD_SUPPORT 0x1000 // 12 TCP Offload 0b = TCP Offload is not supported. 1b = TCP Offload is supported. #define CAP_ISCSI_OFFLOAD_SUPPORT 0x2000 // 13 iSCSI Offload 0b = iSCSI Offload is not supported. 1b = iSCSI Offload is supported. #define CAP_FCOE_SUPPORT 0x4000 // 14 Fibre Channel over Ethernet 0b = Fibre Channel over Ethernet is not supported. 1b = Fibre Channel over Ethernet is supported. // 15 Reserved u8_t Reserved; u8_t DCB_Capabilities; #define DCB_CAP_ETS_SUPPORT 0x0001 // 0 Enhanced Transmission Selection (ETS) 0b = ETS is not supported. 1b = ETS is supported. #define DCB_CAP_PFC_SUPPORT 0x0002 // 1 Priority Flow Control (PFC) 0b = PFC is not supported. 1b = PFC is supported. #define DCB_CAP_CN_SUPPORT 0x0004 // 2 Congestion Notification (CN) 0b = CN is not supported. 1b = CN is supported. #define DCB_CAP_DCBX_SUPPORT 0x0008 // 3 DCB Exchange Protocol (DCBXP) 0b = DCBXP is not supported. 1b = DCBXP is supported. // 4-7 Reserved u8_t NP_Capabilities; #define NP_CAP_WOL 0x01 // 0 WakeOnLan 0b = WakeOnLan is not supported. 1b = WakeOnLan is supported. #define NP_CAP_VIRTUAL_LINK_CTRL 0x02 // 1 Virtual Link Control 0b = Virtual Link Control is not supported. 1b = Virtual Link Control is supported. #define NP_CAP_RX_FLOW_CTRL 0x04 // 2 Receive Flow Control 0b = Receive Flow Control is not supported. 1b = Receive Flow Control is supported #define NP_CAP_TX_FLOW_CTRL 0x08 // 3 Transmit Flow Control 0b = Transmit Flow Control is not supported.1b = Transmit Flow Control is supported #define NP_CAP_TX_BW_CTRL_MAX 0x10 // 4 Transmit Bandwidth Control Maximum 0b = TX Bandwidth Control Maximum is not supported. 1b = TX Bandwidth Control Maximum is supported. #define NP_CAP_TX_BW_CTRL_MIN 0x20 // 5 Transmit Bandwidth Control Minimum 0b = TX Bandwidth Control Minimum is not supported. 1b = TX Bandwidth Control Minimum is supported. // 6-7 Reserved u8_t E_Switch_Capabilities; #define E_SWITCH_CAP_VEB 0x0001 // 0 VEB 0b = VEB is not supported. 1b = VEB is supported. #define E_SWITCH_CAP_BIT1 0x0002 // 1 Reserved #define E_SWITCH_CAP_BIT2 0x0004 // 2 Reserved #define E_SWITCH_CAP_BPE 0x0008 // 3 BPE 0b = BPE is not supported. 1b = BPE is supported. #define E_SWITCH_CAP_OPEN_FLOW 0x0010 // 4 Open Flow 0b = Open Flow is not supported. 1b = Open Flow is supported. // 5-7 Reserved u8_t PF_num; // Number of PCI Physical functions u8_t VF_num; // Number of PCI Virtual functions #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t CapabilitiesHiWord; // 16-17 Reserved #define CAP_PXE_SUPPORT_SUPPORT (1<< (18-16)) // 18 PXE 0b = PXE is not supported. 1b = PXE is supported. #define CAP_ISCSI_BOOT_SUPPORT (1<< (19-16)) // 19 iSCSI Boot (iBFT or HBA) 0b = iSCSI Boot is not supported. 1b = iSCSI Boot is supported. #define CAP_FCOE_BOOT_SUPPORT (1<< (20-16)) // 20 FCoE Boot 0b = FCoE Boot is not supported. 1b = FCoE Boot is supported. #define CAP_STORAGE_BOOT_M_PROVISIONING (1<< (21-16)) // 20 Storage Boot Parameter Provisioning 0b = not supported. 1b = is supported. // 22-23 Reserved #define CAP_NIC_PARTITIONING_SUPPORT (1<< (24-16)) // 24 NIC Partitioning 0b = NIC Partitioning is not supported. 1b = NIC Partitioning is supported. #define CAP_SRIOV_SUPPORT (1<< (25-16)) // 25 SR-IOV 0b = SR-IOV is not supported. 1b = SR-IOV is supported. #define CAP_DELL_LICENSE_MGR_SUPPORT (1<< (26-16)) // 26 Dell License Manager 0b = Dell License Manager is not supported 1b = Dell License Manager is supported #define CAP_IPSEC_OFFLOAD_SUPPORT (1<< (27-16)) // 27 IPSec Offload 0b = IPSec Offload is not supported 1b = IPSec Offload is supported #define CAP_MACSEC_SUPPORT (1<< (28-16)) // 28 MACSec 0b = MACSec is not supported 1b = MACSec is supported #define CAP_RDMA_SUPPORT (1<< (29-16)) // 29 RDMA 0b = RDMA is not supported 1b = RDMA is supported u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; // 30-31 Reserved u8_t DCB_Capabilities; #define DCB_CAP_ETS_SUPPORT 0x0001 // 0 Enhanced Transmission Selection (ETS) 0b = ETS is not supported. 1b = ETS is supported. #define DCB_CAP_PFC_SUPPORT 0x0002 // 1 Priority Flow Control (PFC) 0b = PFC is not supported. 1b = PFC is supported. #define DCB_CAP_CN_SUPPORT 0x0004 // 2 Congestion Notification (CN) 0b = CN is not supported. 1b = CN is supported. #define DCB_CAP_DCBX_SUPPORT 0x0008 // 3 DCB Exchange Protocol (DCBXP) 0b = DCBXP is not supported. 1b = DCBXP is supported. // 4-7 Reserved u8_t Reserved; u16_t CapabilitiesLoWord; #define CAP_VIRTUAL_ADDRESSING_SUPPORT 0x0001 // 0 Virtual Addressing 0b = Virtual Addressing is not supported. 1b = Virtual Addressing is supported. #define CAP_LINK_TUNING_SUPPORT 0x0002 // 1 Link Tuning 0b = Link Tuning is not supported. 1b = Link Tuning is supported. #define CAP_REMOTEPHY_SUPPORT 0x0004 // 2 RemotePHY 0b = RemotePHY is not supported 1b = RemotePHY is supported #define CAP_OPTION_ROM_PRESENT_SUPPORT 0x0008 // 3 Option ROM Present 0b = OPROM is not present 1b = OPROM is present #define CAP_UEFI_SUPPORT 0x0010 // 4 uEFI 0b = uEFI is not supported 1b = uEFI is supported #define CAP_WOL_SUPPORT 0x0020 // 5 WakeOnLAN 0b = WakeOnLAN is not supported. 1b = WakeOnLAN is supported. #define CAP_NETWORK_MGMT_PASS_THRU_SUPPORT 0x0040 // 6 Network Management pass through 0b = Network Management pass through is not supported. 1b = Network Management pass through is supported. #define CAP_OS_BMC_PASS_THRU_SUPPORT 0x0080 // 7 OS-BMC pass through 0b = OS-BMC pass through is not supported. 1b = OS-BMC pass through is supported. #define CAP_EEE_SUPPORT 0x0100 // 8 Energy Efficient Ethernet 0b = EEE is not supported. 1b = EEE is supported. #define CAP_ON_CHIP_THERMAL_SENSOR_SUPPORT 0x0200 // 9 On chip thermal sensor 0b = On chip thermal sensor is supported. 1b = On chip thermal sensor is not supported. // 10-11 Reserved #define CAP_TCP_OFFLOAD_SUPPORT 0x1000 // 12 TCP Offload 0b = TCP Offload is not supported. 1b = TCP Offload is supported. #define CAP_ISCSI_OFFLOAD_SUPPORT 0x2000 // 13 iSCSI Offload 0b = iSCSI Offload is not supported. 1b = iSCSI Offload is supported. #define CAP_FCOE_SUPPORT 0x4000 // 14 Fibre Channel over Ethernet 0b = Fibre Channel over Ethernet is not supported. 1b = Fibre Channel over Ethernet is supported. // 15 Reserved u8_t VF_num; // Number of PCI Virtual functions u8_t PF_num; // Number of PCI Physical functions u8_t E_Switch_Capabilities; #define E_SWITCH_CAP_VEB 0x0001 // 0 VEB 0b = VEB is not supported. 1b = VEB is supported. // 1 Reserved // 2 Reserved #define E_SWITCH_CAP_BPE 0x0008 // 3 BPE 0b = BPE is not supported. 1b = BPE is supported. #define E_SWITCH_CAP_OPEN_FLOW 0x0010 // 4 Open Flow 0b = Open Flow is not supported. 1b = Open Flow is supported. // 5-7 Reserved u8_t NP_Capabilities; #define NP_CAP_WOL 0x01 // 0 WakeOnLan 0b = WakeOnLan is not supported. 1b = WakeOnLan is supported. #define NP_CAP_VIRTUAL_LINK_CTRL 0x02 // 1 Virtual Link Control 0b = Virtual Link Control is not supported. 1b = Virtual Link Control is supported. #define NP_CAP_RX_FLOW_CTRL 0x04 // 2 Receive Flow Control 0b = Receive Flow Control is not supported. 1b = Receive Flow Control is supported #define NP_CAP_TX_FLOW_CTRL 0x08 // 3 Transmit Flow Control 0b = Transmit Flow Control is not supported.1b = Transmit Flow Control is supported #define NP_CAP_TX_BW_CTRL_MAX 0x10 // 4 Transmit Bandwidth Control Maximum 0b = TX Bandwidth Control Maximum is not supported. 1b = TX Bandwidth Control Maximum is supported. #define NP_CAP_TX_BW_CTRL_MIN 0x20 // 5 Transmit Bandwidth Control Minimum 0b = TX Bandwidth Control Minimum is not supported. 1b = TX Bandwidth Control Minimum is supported. // 6-7 Reserved #endif // endian } DellGetExtendedCapabilitiesCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x02 Get Partition Information Used to get NIC Partition information of a channel. 0x02 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellGetPartitionInfoCmd_t; typedef struct DellGetPartitionInfoCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t Enabled_PF_num; // Number of PCI Physical Functions Enabled u8_t PartitionId; // Partition ID #1 u16_t PartitionStatus; // Partition Status #define PARTITION_STATUS_PERSONALITIES_NUM_MASK 0x07 // 0..2 Number of personalities configured Number of personalities configured on the partition. #define PARTITION_STATUS_LAN 0x08 // 3 LAN 0b = LAN is not configured 1b = LAN is configured #define PARTITION_STATUS_ISOE 0x10 // 4 iSOE (Stateful) 0b = iSOE is not configured 1b = iSOE is configured iSOE = iSCSI Offload Engine #define PARTITION_STATUS_FCOE 0x20 // 5 FCoE (Stateful) 0b = FCoE is not configured 1b = FCoE is configured FCoE = Fibre Channel Over Ethernet // 6-15 Reserved u8_t FirstPartitionInterfaceLength; u8_t FirstPartitionInterfaceType; #define PARTITION_INTERFACE_LAN 0x0 // 0x0 = LAN #define PARTITION_INTERFACE_ISCSI 0x1 // 0x1 = iSCSI #define PARTITION_INTERFACE_FCOE 0x2 // 0x2 = FCoE // 0x3-0xFF = Reserved u8_t InterfaceBuf[4*2*44]; // worst case scenario == 4 pf * 2 personalities * 44 bytes/personality #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PartitionId; // Partition ID #1 u8_t Enabled_PF_num; // Number of PCI Physical Functions Enabled u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; // 30-31 Reserved u16_t PartitionStatus; // Partition Status #define PARTITION_STATUS_PERSONALITIES_NUM_MASK 0x07 // 0..2 Number of personalities configured Number of personalities configured on the partition. #define PARTITION_STATUS_LAN 0x08 // 3 LAN 0b = LAN is not configured 1b = LAN is configured #define PARTITION_STATUS_ISOE 0x10 // 4 iSOE (Stateful) 0b = iSOE is not configured 1b = iSOE is configured iSOE = iSCSI Offload Engine #define PARTITION_STATUS_FCOE 0x20 // 5 FCoE (Stateful) 0b = FCoE is not configured 1b = FCoE is configured FCoE = Fibre Channel Over Ethernet // 6-15 Reserved u8_t FirstPartitionInterfaceType; #define PARTITION_INTERFACE_LAN 0x0 // 0x0 = LAN #define PARTITION_INTERFACE_ISCSI 0x1 // 0x1 = iSCSI #define PARTITION_INTERFACE_FCOE 0x2 // 0x2 = FCoE // 0x3-0xFF = Reserved u8_t FirstPartitionInterfaceLength; u8_t InterfaceBuf[4*2*44]; // worst case scenario == 4 pf * 2 personalities * 44 bytes/personality #endif // endian } DellGetPartitionInfoCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x03 Get FCoE Capabilities Used to get FCoE Capabilities of a channel. 0x03 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellGetFcoeCapabilitiesCmd_t; typedef struct DellGetFcoeCapabilitiesCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t Reserved; // Reserved u8_t FcoeFeatureSettings; // FCoE Feature Settings #define FCOE_FEATURE_FCOE_SUPPORT 0x0001 // 0 FCoE Support 0b = Stateless Offload 1b = Stateful Offload // 7..1 Reserved u16_t MaxIoPerConnection; // Maximum number of I/Os per connection u16_t MaxLoginsPerPort; // Maximum number of Logins per port u16_t MaxExchanges; // Maximum number of exchanges u16_t MaxNPIV_WWN_PerPort; // Maximum NPIV WWN per port u16_t MaxSupportedTargets; // Maximum number of targets supported u16_t MaxOutstandingCmds; // Maximum number of outstanding commands across all connections #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t FcoeFeatureSettings; // FCoE Feature Settings #define FCOE_FEATURE_FCOE_SUPPORT 0x0001 // 0 FCoE Support 0b = Stateless Offload 1b = Stateful Offload // 7..1 Reserved u8_t Reserved; // Reserved u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; u16_t MaxLoginsPerPort; // Maximum number of Logins per port u16_t MaxIoPerConnection; // Maximum number of I/Os per connection u16_t MaxNPIV_WWN_PerPort; // Maximum NPIV WWN per port u16_t MaxExchanges; // Maximum number of exchanges u16_t MaxOutstandingCmds; // Maximum number of outstanding commands across all connections u16_t MaxSupportedTargets; // Maximum number of targets supported #endif // endian } DellGetFcoeCapabilitiesCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x04 Get Virtual Link Used to get virtual link status of a partition enabled in a specific channel. 0x04 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellGetVirtualLinkCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t PartitionId; u8_t Pad; #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Pad; u8_t PartitionId; u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // ENDIAN }DellCmdPartition_t; typedef DellCmdPartition_t DellGetVirtualLinkCmd_t; typedef struct DellGetVirtualLinkCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t PartitionId; u8_t Status; #define VIRTUAL_LINK_STATUS (0x1 << 0) // 0 Virtual Link 0b = Virtual Link is up 1b = Virtual Link is down #define LAN_HOST_DRV_STATE_MASK (0X3 << 1) // 2..1 LAN Host driver state #define LAN_HOST_DRV_NOT_IMPLEMENTED (0x0 << 1) // 0x0 = LAN Host driver state feature is not implemented. #define LAN_HOST_DRV_NOT_OPERATIONAL (0x1 << 1) // 0x1 = LAN Host driver state is not operational #define LAN_HOST_DRV_OPERATIONAL (0x2 << 1) // 0x2 = LAN Host driver state is operational // 0x3 = Reserved #define ISOE_HOST_DRV_STATE_MASK (0x3 << 3) // 4..3 iSOE Host driver state #define ISOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 3) // 0x0 = iSOE Host driver state feature is not implemented. #define ISOE_HOST_DRV_NOT_OPERATIONAL (0x1 << 3) // 0x1 = iSOE Host driver state is not operational #define ISOE_HOST_DRV_OPERATIONAL (0x2 << 3) // 0x2 = iSOE Host driver state is operational // 0x3 = Reserved #define FCOE_HOST_DRV_STATE_MASK (0x3 << 5) // 6..5 FCoE Host driver state #define FCOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 5) // 0x0 = FCoE Host driver state feature is not implemented. #define FCOE_HOST_DRV_NOT_OPERATIONAL (0x1 << 5) // 0x1 = FCoE Host driver state is not operational #define FCOE_HOST_DRV_OPERATIONAL (0x2 << 5) // 0x2 = FCoE Host driver state is operational // 0x3 = Reserved // 7 Reserved #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Status; #define VIRTUAL_LINK_STATUS (0x1 << 0) // 0 Virtual Link 0b = Virtual Link is up 1b = Virtual Link is down #define LAN_HOST_DRV_STATE_MASK (0X3 << 1) // 2..1 LAN Host driver state #define LAN_HOST_DRV_NOT_IMPLEMENTED (0x0 << 1) // 0x0 = LAN Host driver state feature is not implemented. #define LAN_HOST_DRV_NOT_OPERATIONAL (0x1 << 1) // 0x1 = LAN Host driver state is not operational #define LAN_HOST_DRV_OPERATIONAL (0x2 << 1) // 0x2 = LAN Host driver state is operational // 0x3 = Reserved #define ISOE_HOST_DRV_STATE_MASK (0x3 << 3) // 4..3 iSOE Host driver state #define ISOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 3) // 0x0 = iSOE Host driver state feature is not implemented. #define ISOE_HOST_DRV_NOT_OPERATIONAL (0x1 << 3) // 0x1 = iSOE Host driver state is not operational #define ISOE_HOST_DRV_OPERATIONAL (0x2 << 3) // 0x2 = iSOE Host driver state is operational // 0x3 = Reserved #define FCOE_HOST_DRV_STATE_MASK (0x3 << 5) // 6..5 FCoE Host driver state #define FCOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 5) // 0x0 = FCoE Host driver state feature is not implemented. #define FCOE_HOST_DRV_NOT_OPERATIONAL (0x1 << 5) // 0x1 = FCoE Host driver state is not operational #define FCOE_HOST_DRV_OPERATIONAL (0x2 << 5) // 0x2 = FCoE Host driver state is operational // 0x3 = Reserved // 7 Reserved u8_t PartitionId; u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // endian } DellGetVirtualLinkCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x05 Get LAN Statistics Used to get LAN statistics of a partition enabled in a specific channel. 0x05 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellCmdPartition_t DellGetLanStatisticsCmd_t; typedef struct DellGetLanStatisticsCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t PartitionId; // Partition ID u8_t CountersClearedFromLastRead; // Counters Cleared from Last Read #define TOTAL_UNICAST_PKT_RCVD_CLEARED 0x01 // 0 Total Unicast Packets Received 0b = Not Cleared 1b = Cleared #define TOTAL_UNICAST_PKT_XMIT_CLEARED 0x02 // 1 Total Unicast Packets Transmitted 0b = Not Cleared 1b = Cleared #define FCS_ERRORS_CLEARED 0x04 // 2 FCS Receive Errors 0b = Not Cleared 1b = Cleared // 7:3 Reserved u32_t TotalUnicastPktsRcvdHi; // 64-bit Total Unicast Packets Received u32_t TotalUnicastPktsRcvdLo; // 64-bit Total Unicast Packets Received u32_t TotalUnicastPktsXmitHi; // 64-bit Total Unicast Packets Transmitted u32_t TotalUnicastPktsXmitLo; // 64-bit Total Unicast Packets Transmitted u32_t FCS_Errors; // FCS Receive Errors #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t CountersClearedFromLastRead; // Counters Cleared from Last Read #define TOTAL_UNICAST_PKT_RCVD_CLEARED 0x01 // 0 Total Unicast Packets Received 0b = Not Cleared 1b = Cleared #define TOTAL_UNICAST_PKT_XMIT_CLEARED 0x02 // 1 Total Unicast Packets Transmitted 0b = Not Cleared 1b = Cleared #define FCS_ERRORS_CLEARED 0x04 // 2 FCS Receive Errors 0b = Not Cleared 1b = Cleared // 7:3 Reserved u8_t PartitionId; // Partition ID u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; u32_t TotalUnicastPktsRcvdHi; // 64-bit Total Unicast Packets Received u32_t TotalUnicastPktsRcvdLo; // 64-bit Total Unicast Packets Received u32_t TotalUnicastPktsXmitHi; // 64-bit Total Unicast Packets Transmitted u32_t TotalUnicastPktsXmitLo; // 64-bit Total Unicast Packets Transmitted u32_t FCS_Errors; // FCS Receive Errors #endif // endian } DellGetLanStatisticsCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x06 Get FCoE Statistics Used to get FCoE statistics of a partition enabled in a specific channel. 0x06 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellCmdPartition_t DellGetFcoeStatisticsCmd_t; typedef struct DellFcoeStat { u32_t TotalFcoePktsRcvdHi; // 64-bit Total FCoE Packets Received u32_t TotalFcoePktsRcvdLo; // 64-bit Total FCoE Packets Received u32_t TotalFcoePktsXmitHi; // 64-bit Total FCoE Packets Transmitted u32_t TotalFcoePktsXmitLo; // 64-bit Total FCoE Packets Transmitted u32_t FCS_Errors; // FCS Receive Errors u32_t FC_ErrCnt; // FC CRC Error Count u32_t FIP_LoginFailureCnt; // FIP Login Failure Count }DellFcoeStat_t; typedef struct DellGetFcoeStatisticsCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t PartitionId; // Partition ID u8_t CountersClearedFromLastRead; // Counters Cleared from Last Read #define TOTAL_UNICAST_PKT_RCVD_CLEARED 0x01 // 0 Total FCoE Packets Received 0b = Not Cleared 1b = Cleared #define TOTAL_UNICAST_PKT_XMIT_CLEARED 0x02 // 1 Total FCoE Packets Transmitted 0b = Not Cleared 1b = Cleared #define FCS_ERRORS_CLEARED 0x04 // 2 FCS Receive Errors 0b = Not Cleared 1b = Cleared #define FC_CRC_ERR_CNT_CLEARED 0x08 // 3 FC CRC Error Count 0b = Not Cleared 1b = Cleared #define FIP_LOGIN_FAILURE_CNT_CLEARED 0x10 // 4 FIP Login Failure Count 0b = Not Cleared 1b = Cleared // 7:5 Reserved DellFcoeStat_t stat; #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t CountersClearedFromLastRead; // Counters Cleared from Last Read #define TOTAL_UNICAST_PKT_RCVD_CLEARED 0x01 // 0 Total FCoE Packets Received 0b = Not Cleared 1b = Cleared #define TOTAL_UNICAST_PKT_XMIT_CLEARED 0x02 // 1 Total FCoE Packets Transmitted 0b = Not Cleared 1b = Cleared #define FCS_ERRORS_CLEARED 0x04 // 2 FCS Receive Errors 0b = Not Cleared 1b = Cleared #define FC_CRC_ERR_CNT_CLEARED 0x08 // 3 FC CRC Error Count 0b = Not Cleared 1b = Cleared #define FIP_LOGIN_FAILURE_CNT_CLEARED 0x10 // 4 FIP Login Failure Count 0b = Not Cleared 1b = Cleared // 7:5 Reserved u8_t PartitionId; // Partition ID u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; DellFcoeStat_t stat; #endif // endian } DellGetFcoeStatisticsCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x07 Set Address Used to program virtual addresses of a partition enabled in a specific channel. 0x07 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellSetAddrCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t AddrLength; #define MAC_ADDR_LENGTH_MAX 8 u8_t AddrType; // Field to define type of address that follows // 0x0 = Reserved // 0x1 = LAN // 0x2 = iSCSI // 0x3 = WWN // 0x4 = FCoE-FIP // 0x5 = IB GUID // 0x6 = LAN/iSCSI // 0x7 = LAN/FCoE-FIP // 0x8 = iSCSI/FCoE-FIP // 0x9-0xFF = Reserved #define MAC_ADDR_TYPE_RESERVED 0x0 #define MAC_ADDR_TYPE_LAN 0x1 #define MAC_ADDR_TYPE_ISCSI 0x2 #define MAC_ADDR_TYPE_WWN 0x3 #define MAC_ADDR_TYPE_FCOE_FIP 0x4 #define MAC_ADDR_TYPE_IB GUID 0x5 #define MAC_ADDR_TYPE_MAX 0x6 u8_t AddrBuf[MAC_ADDR_LENGTH_MAX]; #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t AddrLength; #define MAC_ADDR_LENGTH_MAX 8 u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; u8_t AddrBufTemp[3]; // the rest of TLV data up to 16 bytes u8_t AddrType; // The MAC Addr Type // Field to define type of address that follows // 0x0 = Reserved // 0x1 = LAN // 0x2 = iSCSI // 0x3 = WWN // 0x4 = FCoE-FIP // 0x5 = IB GUID // 0x6 = LAN/iSCSI // 0x7 = LAN/FCoE-FIP // 0x8 = iSCSI/FCoE-FIP // 0x9-0xFF = Reserved #define MAC_ADDR_TYPE_RESERVED 0x0 #define MAC_ADDR_TYPE_LAN 0x1 #define MAC_ADDR_TYPE_ISCSI 0x2 #define MAC_ADDR_TYPE_WWN 0x3 #define MAC_ADDR_TYPE_FCOE_FIP 0x4 #define MAC_ADDR_TYPE_IB GUID 0x5 #define MAC_ADDR_TYPE_MAX 0x6 u8_t AddrBuf[MAC_ADDR_LENGTH_MAX-3]; #endif // ENDIAN }DellSetAddrCmd_t; typedef struct DellRspsPartition { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t Reserved; #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Reserved; u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // endian } DellRspsPartition_t; typedef DellRspsPartition_t DellSetAddrCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x08 Get Address Used to read virtual and permanent addresses of a partition enabled in a specific channel. 0x08 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellGetAddrCmd { #if defined (BIG_ENDIAN) u32_t anufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t AddrVer; // The MAC Addr Type // bit 0 MAC Source 0b = Permanent MAC Address // 1b = Active MAC Address #define MAC_ADDR_VER_MAC_SOURCE_MASK 0x1 #define MAC_ADDR_VER_MAC_SOURCE_PERMANENT 0x0 #define MAC_ADDR_VER_MAC_SOURCE_VIRTUAL 0x1 #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t AddrVer; // The MAC Addr Type // bit 0 MAC Source 0b = Permanent MAC Address // 1b = Active MAC Address #define MAC_ADDR_VER_MAC_SOURCE_MASK 0x1 #define MAC_ADDR_VER_MAC_SOURCE_PERMANENT 0x0 #define MAC_ADDR_VER_MAC_SOURCE_VIRTUAL 0x1 u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t CommandType; /* OEM command ID */ u8_t PayloadVersion; #endif // ENDIAN }DellGetAddrCmd_t; typedef struct DellGetAddrCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t FirstAddrLength; #define MAC_ADDR_LENGTH_MAX 8 u8_t FirstAddrType; // Field to define type of address that follows // 0x0 = Reserved // 0x1 = LAN // 0x2 = iSCSI // 0x3 = WWN // 0x4 = FCoE-FIP // 0x5 = IB GUID // 0x6 = LAN/iSCSI // 0x7 = LAN/FCoE-FIP // 0x8 = iSCSI/FCoE-FIP // 0x9-0xFF = Reserved #define MAC_ADDR_TYPE_RESERVED 0x0 #define MAC_ADDR_TYPE_LAN 0x1 #define MAC_ADDR_TYPE_ISCSI 0x2 #define MAC_ADDR_TYPE_WWN 0x3 #define MAC_ADDR_TYPE_FCOE_FIP 0x4 #define MAC_ADDR_TYPE_IB GUID 0x5 #define MAC_ADDR_TYPE_MAX 0x6 u8_t AddrBuf[5*(MAC_ADDR_LENGTH_MAX + 2)]; // In the future, we might have up to 5 addresses for each PF #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t FirstAddrLength; #define MAC_ADDR_LENGTH_MAX 8 u8_t PartitionId; // The Partition ID field indicates the PCI identity of the partition #define NP_DEVICE_ID_MASK 0x18 #define NP_DEVICE_ID_MASK_SHIFT 3 #define NP_FUNC_ID_MASK 0x7 #define NP_FUNC_ID_MASK_SHIFT 0 u8_t CommandType; // OEM command ID u8_t PayloadVersion; u8_t AddrBufTemp[3]; u8_t FirstAddrType; // Field to define type of address that follows // 0x0 = Reserved // 0x1 = LAN // 0x2 = iSCSI // 0x3 = WWN // 0x4 = FCoE-FIP // 0x5 = IB GUID // 0x6 = LAN/iSCSI // 0x7 = LAN/FCoE-FIP // 0x8 = iSCSI/FCoE-FIP // 0x9-0xFF = Reserved #define MAC_ADDR_TYPE_RESERVED 0x0 #define MAC_ADDR_TYPE_LAN 0x1 #define MAC_ADDR_TYPE_ISCSI 0x2 #define MAC_ADDR_TYPE_WWN 0x3 #define MAC_ADDR_TYPE_FCOE_FIP 0x4 #define MAC_ADDR_TYPE_IB GUID 0x5 #define MAC_ADDR_TYPE_MAX 0x6 u8_t AddrBuf[5*(MAC_ADDR_LENGTH_MAX + 2)-3]; #endif // endian } DellGetAddrCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x09 Set License Used to program license for licensable features of Ethernet Controller. 0x09 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellSetLicenseCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u16_t Reserved; u32_t FEB; // Feature Enablement Bitmap (FEB) #define FEB_ISOE 1 // 0 iSOE 0b = Disable the License for iSOE 1b = Enable the License for iSOE #define FEB_FCOE 2 // 1 FCoE 0b = Disable the License for FCoE 1b = Enable the License for FCoE // 2-31 Reserved u8_t EPO[24]; // EntitlementID Plus Object (EPO) // EntitlementID Plus object field is a 24 byte ASCII string // defined by the Dell license manager. Ethernet Controllers // shall store the information when provided by the Management Controller. #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t Reserved; u8_t CommandType; // OEM command ID u8_t PayloadVersion; u32_t FEB; // Feature Enablement Bitmap (FEB) #define FEB_ISOE 1 // 0 iSOE 0b = Disable the License for iSOE 1b = Enable the License for iSOE #define FEB_FCOE 2 // 1 FCoE 0b = Disable the License for FCoE 1b = Enable the License for FCoE // 2-31 Reserved u8_t EPO[24]; // EntitlementID Plus Object (EPO) // EntitlementID Plus object field is a 24 byte ASCII string // defined by the Dell license manager. Ethernet Controllers // shall store the information when provided by the Management Controller. #endif // ENDIAN }DellSetLicenseCmd_t; typedef struct DellSetLicenseCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u16_t Reserved; u32_t EFB; // Enabled Features Bitmap Field #define EFB_ISOE 1 // 0 iSOE 0b = Disable the License for iSOE 1b = Enable the License for iSOE #define EFB_FCOE 2 // 1 FCoE 0b = Disable the License for FCoE 1b = Enable the License for FCoE // 2-31 Reserved 2-31 Reserved #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t Reserved; u8_t CommandType; // OEM command ID u8_t PayloadVersion; u32_t EFB; // Enabled Features Bitmap Field #define EFB_ISOE 1 // 0 iSOE 0b = Disable the License for iSOE 1b = Enable the License for iSOE #define EFB_FCOE 2 // 1 FCoE 0b = Disable the License for FCoE 1b = Enable the License for FCoE #endif // endian } DellSetLicenseCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0A Get License Used to read licensable features information of the Ethernet Controller. 0x0A (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellGetLicenseCmd_t; typedef struct DellGetLicenseCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t StorageType; // Storage Type #define LICENSE_PERSISTENT 1 // 0 Storage Type 0b = License is persistent 1b = License is not persistent // 1-7 Reserved u8_t Reserved; // Reserved u32_t EFB; // Enabled Features Bitmap (EFB) #define EFB_iSOE (1) // 0 iSOE 0b = iSOE license is disabled 1b = iSOE license is enabled #define EFB_FCoE (2) // 1 FCoE 0b = FCoE license is disabled 1b = FCoE license is enabled // 2-31 Reserved // u32_t FCB; // Feature Capability Bitmap (FCB) #define FCB_iSOE (1) // 0 iSOE 0b = Not capable of licensing iSOE 1b = Capable of licensing iSOE #define FCB_FCoE (2) // 1 FCoE 0b = Not capable of licensing FCoE 1b = Capable of licensing FCoE // 2-31 Reserved u8_t UID[16]; // Unique Identifier (UID) // The Unique Identifier field is a 16 byte ASCII string defined to uniquely identify the Ethernet Controller. It is generated using the permanent MAC address of PCI physical function 0 of the Ethernet Controller. The least 12 bytes is the permanent LAN MAC address of the PCI Physical function 0 and most significant 4 bytes is padded with zeroes. UID shall be all zeros if the Ethernet Controller cannot provide it. // Example: "00000019D2485C12" for MAC address 00:19:D2:48:5C:12 u8_t EPO[24]; // EntitlementID Plus Object (EPO) // EntitlementID Plus object field is a 24 byte string defined by the Dell license manager. Ethernet Controllers shall store the information when provided by the Management Controller. EPO shall be all zeroes if not provided by the Management Controller. #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Reserved; // Reserved u8_t StorageType; // Storage Type #define LICENSE_PERSISTENT 1 // 0 Storage Type 0b = License is persistent 1b = License is not persistent // 1-7 Reserved u8_t CommandType; // OEM command ID u8_t PayloadVersion; u32_t EFB; // Enabled Features Bitmap (EFB) #define EFB_iSOE (1) // 0 iSOE 0b = iSOE license is disabled 1b = iSOE license is enabled #define EFB_FCoE (2) // 1 FCoE 0b = FCoE license is disabled 1b = FCoE license is enabled // 2-31 Reserved // u32_t FCB; // Feature Capability Bitmap (FCB) #define FCB_iSOE (1) // 0 iSOE 0b = Not capable of licensing iSOE 1b = Capable of licensing iSOE #define FCB_FCoE (2) // 1 FCoE 0b = Not capable of licensing FCoE 1b = Capable of licensing FCoE // 2-31 Reserved u8_t UID[16]; // Unique Identifier (UID) // The Unique Identifier field is a 16 byte ASCII string defined to uniquely identify the Ethernet Controller. It is generated using the permanent MAC address of PCI physical function 0 of the Ethernet Controller. The least 12 bytes is the permanent LAN MAC address of the PCI Physical function 0 and most significant 4 bytes is padded with zeroes. UID shall be all zeros if the Ethernet Controller cannot provide it. // Example: "00000019D2485C12" for MAC address 00:19:D2:48:5C:12 u8_t EPO[24]; // EntitlementID Plus Object (EPO) // EntitlementID Plus object field is a 24 byte string defined by the Dell license manager. Ethernet Controllers shall store the information when provided by the Management Controller. EPO shall be all zeroes if not provided by the Management Controller. #endif // endian } DellGetLicenseCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0B Set Passthru Control Used to enable/disable different passthru data paths in the Controller. 0x0B (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellSetPassthruCtrlCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PassthruType; // Passthru Type #define PASSTHRU_ENABLE 1 // 0 Status 0b = Disable 1b = Enable #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t Pad; // Pad (0x00) #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Pad; // Pad (0x00) u8_t PassthruType; // Passthru Type #define PASSTHRU_ENABLE 1 // 0 Status 0b = Disable 1b = Enable #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t CommandType; // OEM command ID u8_t PayloadVersion; #endif // ENDIAN }DellSetPassthruCtrlCmd_t; typedef struct DellRspsDefault { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u16_t Pad; // Pad (0x00) #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u16_t Pad; // Pad (0x00) u8_t CommandType; // OEM command ID u8_t PayloadVersion; #endif // endian } DellRspsDefault_t; typedef DellRspsDefault_t DellSetPassthruCtrlCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0C Get Passthru Control Used to read current status of different passthru data paths in the Controller 0x0C (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellGetPassthruCtrlCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PassthruType; // Passthru Type // 0 Reserved #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t Pad; // Pad (0x00) #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Pad; // Pad (0x00) u8_t PassthruType; // Passthru Type // 0 Reserved #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t CommandType; // OEM command ID u8_t PayloadVersion; #endif // ENDIAN }DellGetPassthruCtrlCmd_t; typedef struct DellGetPassthruCtrlCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PassthruType; // Passthru Type #define PASSTHRU_ENABLE 1 // 0 Status 0b = Disable 1b = Enable #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t Pad; // Pad (0x00) #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Pad; // Pad (0x00) u8_t PassthruType; // Passthru Type #define PASSTHRU_ENABLE 1 // 0 Status 0b = Disable 1b = Enable #define PASSTHRU_MASK (1<<1) // 7..1 Type #define OS_BMC_PASSTHRU (0<<1) // 0x00 = OS-BMC Passthru #define NETW_BMC_PASSTHRU (1<<1) // 0x01 = Network-BMC Passthru // 0x02-0x7F = Reserved u8_t CommandType; // OEM command ID u8_t PayloadVersion; #endif // endian } DellGetPassthruCtrlCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0D Set Partition TX Bandwidth Used to configure bandwidth of a partition enabled on a specific channel. 0x0D (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellSetPartitionTxBandwidthCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; // Partition ID u8_t MinBandwidth; // Minimum Bandwidth value ranges from 0 to 100 u8_t MaxBandwidth; // Maximum Bandwidth value ranges from 0 to 100 u8_t Pad[3]; // Pad #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t MinBandwidth; // Minimum Bandwidth value ranges from 0 to 100 u8_t PartitionId; // Partition ID u8_t CommandType; // OEM command ID u8_t PayloadVersion; u8_t Pad[3]; // Pad u8_t MaxBandwidth; // Maximum Bandwidth value ranges from 0 to 100 #endif // ENDIAN }DellSetPartitionTxBandwidthCmd_t; typedef DellRspsPartition_t DellSetPartitionTxBandwidthCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0E Get Partition TX Bandwidth Used to read bandwidth of a partition enabled on a specific channel. 0x0E (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellCmdPartition_t DellGetPartitionTxBandwidthCmd_t; typedef struct DellGetPartitionTxBandwidthCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; // Partition ID u8_t MinBandwidth; // Minimum Bandwidth value ranges from 0 to 100 u8_t MaxBandwidth; // Maximum Bandwidth value ranges from 0 to 100 u8_t Pad[3]; // Pad #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t MinBandwidth; // Minimum Bandwidth value ranges from 0 to 100 u8_t PartitionId; // Partition ID u8_t CommandType; // OEM command ID u8_t PayloadVersion; u8_t Pad[3]; // Pad u8_t MaxBandwidth; // Maximum Bandwidth value ranges from 0 to 100 #endif // endian } DellGetPartitionTxBandwidthCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x0F Set MC IP Address Used to program the IP address of the Management Controller. 0x0F (Optional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // The Set MC IP Address command allows the Management controller to provide // its own IP address to the Ethernet Controller for OS-BMC operations. This // IP address must be programmed before the OS-BMC feature is enabled. // Type-Length and IP addresses fields are repeated if the Management // Controller is to be configured to work in both IPv4 and IPV6 network // environments. // // The Set MC IP Address Command is addressed to the package, rather than // to a particular channel (that is, the command is sent with a Channel ID // where the Package ID subfield matches the ID of the intended package and // the Internal Channel ID subfield is set to 0x1F). typedef struct DellSetMcIpAddrCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; //* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t AddrType; // 7:0 IP Address Type Field to define type of address that follows #define ADDR_TYPE_IPv4 0 // 0x0 = IPv4 #define ADDR_TYPE_IPv6 1 // 0x1 = IPv6 // 0x2-0xFF = Reserved u8_t Length; // 15:8 IP Address Length The length indicates the number of bytes used to represent the IP Address. u8_t Addr[16]; // IP Address shall be provided in hexadecimal and // the least significant byte of the IP Address // field should carry the first octet of the address. #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t Length; // 15:8 IP Address Length The length indicates the number of bytes used to represent the IP Address. u8_t AddrType; // 7:0 IP Address Type Field to define type of address that follows #define ADDR_TYPE_IPv4 0 // 0x0 = IPv4 #define ADDR_TYPE_IPv6 1 // 0x1 = IPv6 // 0x2-0xFF = Reserved u8_t CommandType; // OEM command ID u8_t PayloadVersion; u8_t Addr[16]; // IP Address shall be provided in hexadecimal and // the least significant byte of the IP Address // field should carry the first octet of the address. #endif // ENDIAN }DellSetMcIpAddrCmd_t; typedef DellRspsDefault_t DellSetMcIpAddrCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x10 Get Teaming Information Used to read Network teaming information of a partition in a specific channel. 0x10 (Optional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellCmdPartition_t DellGetTeamingInfoCmd_t; typedef struct DellGetTeamingInfoCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t PartitionId; u8_t TeamingInfo; // Team Information #define TEAMING_ENABLED 1 // 0 Network Teaming Status 0b = Network Teaming is not enabled 1b = Network Teaming is enabled #define TEAMING_ID_MASK (0x7F << 1) // 7:1 Team ID Team ID represents the ID of the team of which the network interface on a partition is one of the members. The value ranges from 0x00 - 0x7F. u8_t TeamLength; // 15..8 Team Length: Value indicates the length of the string to represent the name of the Team type. Ex: IEEE 802.3ad u8_t TeamType; // 7..0 Team Type #define TEAM_TYPE_UNKNOWNR 0x0 // 0x0 = Unknown #define TEAM_TYPE_FAILOVER 0x1 // 0x1 = Failover #define TEAM_TYPE_LOAD_BALANCE 0x2 // 0x2 = Load Balance #define TEAM_TYPE_LINK_AGGREGATION 0x3 // 0x3 = Link Aggregation // 0x4-0xFF = Reserved u8_t TeamName[16]; #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t TeamingInfo; // Team Information u8_t PartitionId; u8_t CommandType; // OEM command ID u8_t PayloadVersion; #define TEAMING_ENABLED 1 // 0 Network Teaming Status 0b = Network Teaming is not enabled 1b = Network Teaming is enabled #define TEAMING_ID_MASK (0x7F << 1) // 7:1 Team ID Team ID represents the ID of the team of which the network interface on a partition is one of the members. The value ranges from 0x00 - 0x7F. u8_t TeamNameExtra[2]; u8_t TeamType; // 7..0 Team Type #define TEAM_TYPE_UNKNOWNR 0x0 // 0x0 = Unknown #define TEAM_TYPE_FAILOVER 0x1 // 0x1 = Failover #define TEAM_TYPE_LOAD_BALANCE 0x2 // 0x2 = Load Balance #define TEAM_TYPE_LINK_AGGREGATION 0x3 // 0x3 = Link Aggregation // 0x4-0xFF = Reserved u8_t TeamLength; // 15..8 Team Length: Value indicates the length of the string to represent the name of the Team type. Ex: IEEE 802.3ad u8_t TeamName[16-2]; #endif // endian } DellGetTeamingInfoCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x11 Enable Ports Used to enable physical ports of the Ethernet Controller. 0x11 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellEnablePortsCmd_t; typedef DellRspsDefault_t DellEnablePortsCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x12 Disable Ports Used to disable physical ports of the Ethernet Controller. 0x12 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellDisablePortsCmd_t; typedef DellRspsDefault_t DellDisablePortsCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x13 Get Temperature Used to read on-chip temperature values of the Ethernet Controller. 0x13 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellGetTempCmd_t; typedef struct DellGetTempCmdRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t MaxTemp; // Maximum temperature in degrees Celsius u8_t CurTemp; // Current temperature in degrees Celsius #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t CurTemp; // Current temperature in degrees Celsius u8_t MaxTemp; // Maximum temperature in degrees Celsius u8_t CommandType; // OEM command ID u8_t PayloadVersion; #endif // endian } DellGetTempCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x14 Set Link Tuning Used to configure Link Tuning parameters of a specific channel. 0x14 (Conditional) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct DellSetLinkTuningCmd { #if defined (BIG_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; // OEM command ID u8_t LinkTuning[8]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification u16_t Pad; // Pad #elif defined (LITTLE_ENDIAN) u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t LinkTuning_first[2]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification u8_t CommandType; // OEM command ID u8_t PayloadVersion; u8_t LinkTuning[4]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification u16_t Pad; // Pad u8_t LinkTuning_last[2]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification #endif // ENDIAN }DellSetLinkTuningCmd_t; typedef DellRspsDefault_t DellSetLinkTuningCmdRspData_t; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 0x15 Enable OutOfBox WOL Used to enable OutOfBox WOL on a specific channel. 0x15 (Mandatory) // 0x16 Disable OutOfBox WOL Used to disable OutOfBox WOL on a specific channel. 0x16 (Mandatory) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef DellDfltCmd_t DellEnableDisableOutOfBoxWolCmd_t; typedef DellRspsDefault_t DellEnableDisableOutOfBoxWolCmdRspData_t; /*MAX_TLV_COMMAND_SIZE :(i.e. GetiSCSIBootTargetConfig) connectTgt 2+8 =10 (“Disabled”) TgtIpAddress 2+39=41 (IPv6 max size is 39) TgtTcpPort 2+5=7 (2^16 so 5 digits) TgtBootLun 2+3=5 (max support is 256) TgtIscsiName 2+128=130 TgtChapId 2+128=130 TgtChapPwd 2+16=18 TgtIpVer 2+4= 6 (“IPv6”) Total 347 *2 = 694 bytes (for 1st and 2nd target) just for TLVs */ #define MAX_TLV_COMMAND_SIZE (694) /* // 0x1A Get Supported Payload Version - Used to indicate Payload Versions supported by controller (Mandatory) // 0x1C Get iSCSI Offload Statistics - Used to get vendor version ID of the OS driver currently running on the // partition(or Port) (Mandatory) // 0x1D Get iSCSI Boot Initiator Config Command - query the channel (partition) for the iSCSI Boot Initiator settings // configured on the channel (Mandatory) // 0x1E Set iSCSI Boot Initiator Config Command - send to the channel (partition) the iSCSI Boot Initiator settings // to be used by the channel (Mandatory) // 0x1F Get iSCSI Boot Target Config Command - query the channel for the iSCSI Boot Target configuration settings of // the port or partition (Mandatory) // 0x20 Set iSCSI Boot Target Config Command - send to the channel (partition) the iSCSI Boot Target settings to be // used by the channel (Mandatory) // 0x21 Get FC/FCoE Boot Target Config Command - query the channel for the FC/FCoE Boot Target configuration settings // of the port or partition (Mandatory) // 0x22 Set FC/FCoE Boot Target Config Command - send to the channel (partition) the FC/FCoE Boot Target settings to // be used by the channel (Mandatory) // 0x23 NVRAM Commit Command - instructs the Ethernet or FC Controller to write attribute settings held in temporary // storage to the controller’s NVRAM (Mandatory) // 0x24 NVRAM Commit Status Command - send to the channel (partition) the iSCSI Boot Target settings to be used by // the channel (Mandatory) */ typedef struct { u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; u8_t PartitionId; u8_t NumOfTLVs; /*This is a place holder for the Maximum size in bytesof this command with all TLV's present*/ u8_t buf[MAX_TLV_COMMAND_SIZE]; } DellOemCmdPartitionTLV_t; typedef DellDfltCmd_t DellGetSupportedVerCmd_t; typedef DellCmdPartition_t DellGetOsDriverVerCmd_t; typedef DellCmdPartition_t DellGetiScsiInitiatorConfCmd_t; typedef DellOemCmdPartitionTLV_t DellSetiScsiInitiatorConfCmd_t; typedef DellCmdPartition_t DellGetiScsiTargetConfCmd_t; typedef DellOemCmdPartitionTLV_t DellSetiScsiTargetConfCmd_t; typedef DellCmdPartition_t DellGetFcoeTargetConfCmd_t; typedef DellOemCmdPartitionTLV_t DellSetFcoeTargetConfCmd_t; typedef DellDfltCmd_t DellCommitNvramCmd_t; typedef DellDfltCmd_t DellGetCommitNvramStatusCmd_t; typedef union DellOemCmdPayload { // Dell OEM NCSI commands DellGetInventoryCmd_t GetInventoryCmd; // DELL_OEM_GET_INVENTORY_CMD DellGetExtendedCapabilitiesCmd_t GetExtendedCapabilitiesCmd; // DELL_OEM_GET_EXTENDED_CAPABILITIES_CMD DellGetPartitionInfoCmd_t GetPartitionInfoCmd; // DELL_OEM_GET_PARTITION_INFORMATION_CMD DellGetFcoeCapabilitiesCmd_t GetFcoeCapabilitiesCmd; // DELL_OEM_GET_FCOE_CAPABILITIES_CMD DellGetVirtualLinkCmd_t GetVirtualLinkCmd; // DELL_OEM_GET_VIRTUAL_LINK_CMD DellGetLanStatisticsCmd_t GetLanStatisticsCmd; // DELL_OEM_GET_LAN_STATISTICS_CMD DellGetFcoeStatisticsCmd_t GetFcoeStatisticsCmd; // DELL_OEM_GET_FCOE_STATISTICS_CMD DellSetAddrCmd_t SetAddrCmd; // DELL_OEM_SET_ADDR_CMD DellGetAddrCmd_t GetAddrCmd; // DELL_OEM_GET_ADDR_CMD DellSetLicenseCmd_t SetLicenseCmd; // DELL_OEM_SET_LICENSE_CMD DellGetLicenseCmd_t GetLicenseCmd; // DELL_OEM_GET_LICENSE_CMD DellSetPassthruCtrlCmd_t SetPassthruCtrlCmd; // DELL_OEM_SET_PASSTHRU_CONTROL_CMD DellGetPassthruCtrlCmd_t GetPassthruCtrlCmd; // DELL_OEM_GET_PASSTHRU_CONTROL_CMD DellSetPartitionTxBandwidthCmd_t SetPartitionTxBandwidthCmd; // DELL_OEM_SET_PARTITIONCmd_tX_BANDWIDTH_CMD DellGetPartitionTxBandwidthCmd_t GetPartitionTxBandwidthCmd; // DELL_OEM_GET_PARTITIONCmd_tX_BANDWIDTH_CMD DellSetMcIpAddrCmd_t SetMcIpAddrCmd; // DELL_OEM_SET_MC_IP_ADDRESS_CMD DellGetTeamingInfoCmd_t GetTeamingInfoCmd; // DELL_OEM_GETCmd_tEAMING_INFORMATION_CMD DellEnablePortsCmd_t EnablePortsCmd; // DELL_OEM_ENABLE_PORTS_CMD DellDisablePortsCmd_t DisablePortsCmd; // DELL_OEM_DISABLE_PORTS_CMD DellGetTempCmd_t GetTempCmd; // DELL_OEM_GET_TEMPERATURE_CMD DellSetLinkTuningCmd_t SetLinkTuningCmd; // DELL_OEM_SET_LINKTUNING_CMD DellEnableDisableOutOfBoxWolCmd_t EnableDisableOutOfBoxWolCmd; // DELL_OEM_ENABLE_OUTOFBOX_WOL_CMD and DELL_OEM_DISABLE_OUTOFBOX_WOL_CMD DellGetSupportedVerCmd_t GetSupportedVerCmd; // DELL_OEM_GET_SUPP_PAYLOAD_VERSION_CMD DellGetOsDriverVerCmd_t GetOsDriverVerCmd; // DELL_OEM_GET_OS_DRIVER_VERSION_CMD DellGetiScsiInitiatorConfCmd_t GetiScsiInitiatorConfCmd; // DELL_OEM_GET_ISCSI_BOOT_INITIATOR_CONFIG_CMD DellSetiScsiInitiatorConfCmd_t SetiScsiInitiatorConfCmd; // DELL_OEM_SET_ISCSI_BOOT_INITIATOR_CONFIG_CMD DellGetiScsiTargetConfCmd_t GetiScsiTargetConfCmd; // DELL_OEM_GET_ISCSI_BOOT_TARGET_CONFIG_CMD DellSetiScsiTargetConfCmd_t SetiScsiTargetConfCmd; // DELL_OEM_SET_ISCSI_BOOT_TARGET_CONFIG_CMD DellGetFcoeTargetConfCmd_t GetFcoeTargetConfCmd; // DELL_OEM_GET_FCOE_BOOT_TARGET_CONFIG_CMD DellSetFcoeTargetConfCmd_t SetFcoeTargetConfCmd; // DELL_OEM_SET_FCOE_BOOT_TARGET_CONFIG_CMD DellCommitNvramCmd_t CommitNvramCmd; // DELL_OEM_NVRAM_COMMIT_CMD DellGetCommitNvramStatusCmd_t GetCommitNvramStatusCmd; // DELL_OEM_NVRAM_COMMIT_STATUS_CMD } DellOemCmdPayload_t; typedef struct BrcmOemVendorData { BrcmOemCmdRspHeader_t BrcmOemCmdRspHeader; BrcmOemCmdPayload_t OemPayload; } BrcmOemVendorData_t; typedef struct NcsiCmdOemCmdPayload { u32_t ManufacturerId; /* ManufacturerId IANA */ BrcmOemVendorData_t VendorData; } NcsiCmdOemCmdPayload_t; /***************************************************************************** NcsiCmdSelectPackageCmdPayload_t this structure definition is for the select package cmd Payload. *****************************************************************************/ typedef struct NcsiCmdSelectPackageCmdPayload { u32_t DisableHwArbitration; #define HW_ARBITRATION_MASK 0x1 #define HW_ARBITRATION_ENABLE 0x0 #define HW_ARBITRATION_DISABLE 0x1 } NcsiCmdSelectPackageCmdPayload_t; /***************************************************************************** NcsiCmdEnableMulticastPacketFilteringCmdPayload_t this structure definition is for the cmd Payload. *****************************************************************************/ typedef struct NcsiCmdEnableMulticastPacketFilteringCmdPayload { u32_t Setting; #define NCSI_CMD_MULTICAST_PACKET_PASSTHRU_SETTING_MASK 7 #define NCSI_CMD_MULTICAST_PACKET_PASSTHRU_SETTING_IPV6_NEIGHBOR_ADV 1 #define NCSI_CMD_MULTICAST_PACKET_PASSTHRU_SETTING_IPV6_ROUTER_ADV 2 #define NCSI_CMD_MULTICAST_PACKET_PASSTHRU_SETTING_DHCPV6 4 } NcsiCmdEnableMulticastPacketFilteringCmdPayload_t; /***************************************************************************** NcsiCmdSetNcsiFlowControlCmdPayload_t this structure definition is for the set ncsi flowcontrol cmd Payload. *****************************************************************************/ typedef struct NcsiCmdSetNcsiFlowControlCmdPayload { u32_t Setting; #define NCSI_CMD_NCSI_FLOW_CONTROL_SETTING_ENABLE 3 #define NCSI_CMD_NCSI_FLOW_CONTROL_SETTING_DISABLE 0 } NcsiCmdSetNcsiFlowControlCmdPayload_t; /***************************************************************************** NcsiCmdEnableVlanCmdPayload_t this structure definition is for the set ncsi flowcontrol cmd Payload. *****************************************************************************/ typedef struct NcsiCmdEnableVlanCmdPayload { u32_t Setting; #define NCSI_CMD_ENABLE_VLAN_SETTING_VLAN_TAG_MODE 1 #define NCSI_CMD_ENABLE_VLAN_SETTING_MIXED_MODE 2 #define NCSI_CMD_ENABLE_VLAN_SETTING_PROM_VLAN_MODE 3 } NcsiCmdEnableVlanCmdPayload_t; /***************************************************************************** NcsiCmdSetVlanCmdPayload_t this structure definition is for the enable VLAN cmd Payload. *****************************************************************************/ typedef struct NcsiCmdSetVlanCmdPayload #if defined (BIG_ENDIAN) { u16_t Reserved0; u16_t VlanTag; u16_t Reserved1; u8_t FilterSelector; u8_t Enable; } NcsiCmdSetVlanCmdPayload_t; #elif defined (LITTLE_ENDIAN) { u16_t VlanTag; u16_t Reserved0; u8_t Enable; u8_t FilterSelector; u16_t Reserved1; } NcsiCmdSetVlanCmdPayload_t; #endif // ENDIAN /***************************************************************************** NcsiCmdEnableAenCmdPayload_t this structure definition is for the enable aen cmd Payload. *****************************************************************************/ typedef struct NcsiCmdEnableAenCmdPayload #if defined (BIG_ENDIAN) { u8_t Reserved[3]; u8_t AenMcId; u32_t AenControl; #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_LINK_CHANGED_AEN 0x1 #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_RESET_OCCURRED_AEN 0x2 #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_OS_CHANGED_AEN 0x4 } NcsiCmdEnableAenCmdPayload_t; #elif defined (LITTLE_ENDIAN) { u8_t AenMcId; u8_t Reserved[3]; u32_t AenControl; #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_LINK_CHANGED_AEN 0x1 #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_RESET_OCCURRED_AEN 0x2 #define NCSI_CMD_ENABLE_AEN_CMD_PAYLOAD_ENABLE_OS_CHANGED_AEN 0x4 } NcsiCmdEnableAenCmdPayload_t; #endif // ENDIAN /***************************************************************************** NcsiCmdSetMacAddrCmdPayload_t this structure definition is for the set MAC addr command Payload *****************************************************************************/ typedef struct NcsiCmdSetMacAddrCmdPayload #if defined (BIG_ENDIAN) { u16_t MacAddrHigh; u16_t MacAddrLowHigh; u16_t MacAddrLowLow; u8_t MacAddrNum; u8_t AddrTypeEnable; // bits 7..5=address type, bits 4..1=reserved, bit 0=address enable #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_ENABLE 0x01 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_MASK 0xE0 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_UNICAST 0x00 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_MULTICAST 0x20 } NcsiCmdSetMacAddrCmdPayload_t; #elif defined (LITTLE_ENDIAN) { u16_t MacAddrLowHigh; u16_t MacAddrHigh; u8_t AddrTypeEnable; // bits 7..5=address type, bits 4..1=reserved, bit 0=address enable u8_t MacAddrNum; u16_t MacAddrLowLow; #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_ENABLE 0x01 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_MASK 0xE0 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_UNICAST 0x00 #define NCSI_CMD_SET_MAC_ADDR_CMD_ADDR_TYPE_MULTICAST 0x20 } NcsiCmdSetMacAddrCmdPayload_t; #endif // ENDIAN /***************************************************************************** NcsiCmdSetLinkCmdPayload_t this structure definition is for the set link command Payload *****************************************************************************/ typedef struct NcsiCmdSetLinkCmdPayload { u32_t LinkSettings; u32_t OemLinkSettings; } NcsiCmdSetLinkCmdPayload_t; /***************************************************************************** NcsiCmdDisableResetChannelCmdPayload_t this structure definition is for the reset channel command Payload *****************************************************************************/ typedef struct NcsiCmdDisableResetChannelCmdPayload { u32_t Reserved; } NcsiCmdDisableResetChannelCmdPayload_t; /***************************************************************************** NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t this structure definition is for the set link command Payload *****************************************************************************/ typedef struct NcsiCmdEnableBroadcastPacketFilteringCmdPayload { u32_t FilterSettings; #define NCSI_CMD_ENABLE_BROADCAST_PKT_PASSTHROUGH_ARP 1 #define NCSI_CMD_ENABLE_BROADCAST_PKT_PASSTHROUGH_DHCP_CLIENT 2 #define NCSI_CMD_ENABLE_BROADCAST_PKT_PASSTHROUGH_DHCP_SERVER 4 #define NCSI_CMD_ENABLE_BROADCAST_PKT_PASSTHROUGH_NETBIOS 8 } NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t; typedef NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t *pNcsiCmdEnableBroadcastPacketFilteringCmdPayload_t; /***************************************************************************** NcsiCmdPayload_t this union definition combines the various response Payload definitions into a single reference. *****************************************************************************/ typedef union NcsiCmdPayload { NcsiCmdDisableResetChannelCmdPayload_t ResetChannelCmdPayload; NcsiCmdDisableResetChannelCmdPayload_t DisableChannelCmdPayload; NcsiCmdSetMacAddrCmdPayload_t SetMacAddrPayload; NcsiCmdSetVlanCmdPayload_t SetVlanPayload; NcsiCmdSetLinkCmdPayload_t SetLinkPayload; NcsiCmdEnableAenCmdPayload_t EnableAenPayload; NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t EnableBroadcastFilterPayload; NcsiCmdSelectPackageCmdPayload_t SelectPackagePayload; NcsiCmdSetNcsiFlowControlCmdPayload_t SetFlowControlPayload; NcsiCmdEnableVlanCmdPayload_t EnableVlanPayload; NcsiCmdEnableMulticastPacketFilteringCmdPayload_t EnableMulticastFilterPayload; NcsiCmdOemCmdPayload_t OemCmdPayload; DellOemCmdPayload_t DellOemCmdPayload; } NcsiCmdPayload_t; #define NCSI_CMD_DISABLE_RESET_CHANNEL_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdDisableResetChannelCmdPayload_t)) #define UMPCMDPUB_SET_VLAN_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdSetVlanCmdPayload_t)) #define UMPCMDPUB_SET_MAC_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdSetMacAddrCmdPayload_t)) #define UMPCMDPUB_CLR_MAC_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdClearMacAddrCmdPayload_t)) #define UMPCMDPUB_SET_LINK_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdSetLinkCmdPayload_t)) #define UMPCMDPUB_CMD_PAYLOAD_SIZE (sizeof (NcsiCmdPayload_t)) #define UC_32_BIT_ALIGN(X) ((4 - (X & 3)) & 3) /***************************************************************************** NcsiRmiiCmdPkt_t this structure definition is for the the UMP command frame. IMD command frames are received from iLO over the UMP interface, and are either processed locally for configuration and control, or are forwarded for transmission at the primary ethernet port. *****************************************************************************/ typedef struct NcsiCmdPkt { NcsiRmiiControlPktHeader_t Header; NcsiCmdPayload_t Payload; } NcsiRmiiCmdPkt_t; typedef NcsiRmiiCmdPkt_t *pNcsiRmiiCmdPkt_t; #define UC_MAX_CMD_FRAME_SIZE sizeof(NcsiRmiiCmdPkt_t) /***************************************************************************** OemDefaultReturnData_t Structure definition for data portion of most basic response Payload *****************************************************************************/ typedef struct NcsiCmdRspStatus #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ #define NCSI_CMD_RSP_CODE_CMD_COMPLETED_OK 0 #define NCSI_CMD_RSP_CODE_CMD_FAILED 1 #define NCSI_CMD_RSP_CODE_CMD_UNAVAILABLE 2 #define NCSI_CMD_RSP_CODE_CMD_UNSUPPORTED 3 u16_t ReasonCode; /* ids reasons for rsp */ #define NCSI_CMD_RSN_CODE_NO_ERROR 0 #define NCSI_CMD_RSN_CODE_INTERFACE_INIT_REQUIRED 1 #define NCSI_CMD_RSN_CODE_PARAMETER_INVALID_OUT_OF_RANGE 2 #define NCSI_CMD_RSN_CODE_CHANNEL_NOT_READY 3 #define NCSI_CMD_RSN_CODE_PACKAGE_NOT_READY 4 #define NCSI_CMD_RSN_CODE_INVALID_PAYLOAD_LENGTH 5 #define NCSI_CMD_RSN_CODE_VLAN_TAG_OF_0_IS_INVALID ((NCSI_CMD_TYPE_SET_VLAN_FILTERS << 8) + 7) #define NCSI_CMD_RSN_CODE_MAC_ADDR_OF_0_IS_INVALID ((NCSI_CMD_TYPE_SET_MAC_ADDRESS << 8) + 8) #define NCSI_CMD_RSN_CODE_ASYNCH_FC_NOT_SUPPORTED ((NCSI_CMD_TYPE_SET_NCSI_FLOW_CONTROL << 8) + 9) #define NCSI_CMD_OEM_GENERIC_RSN_CODE_OS_CONFLICT 0x80 #define NCSI_CMD_OEM_GENERIC_RSN_CODE_OEM_PAYLOAD_VER_ERR 0x81 // 0x1 Set Link Host OS/ Driver Conflict Returned when the Set Link command is received // when the Host NC driver is operational // 0x2 Set Link Media Conflict Returned when Set Link command parameters conflict // with the media type (for example, Fiber Media) // 0x3 Set Link Parameter Conflict Returned when Set Link parameters conflict with each // other (for example, 1000 Mbps HD with copper media) // 0x4 Set Link Power Mode Conflict Returned when Set Link parameters conflict with // current low-power levels by exceeding capability // 0x5 Set Link Speed Conflict Returned when Set Link parameters attempt to force // more than one speed at the same time // 0x6 Link Command Failed-Hardware Access Error // Returned when PHY R/W access fails to complete // normally while executing the Set Link or Get Link Status command #define NCSI_CMD_RSN_CODE_SET_LINK_HOST_CONFLICT 1 #define NCSI_CMD_RSN_CODE_SET_LINK_MEDIA_CONFLICT 2 #define NCSI_CMD_RSN_CODE_SET_LINK_PARAMETER_CONFLICT 3 #define NCSI_CMD_RSN_CODE_SET_LINK_POWER_MODE_CONFLICT 4 #define NCSI_CMD_RSN_CODE_SET_LINK_SPEED_CONFLICT 5 #define NCSI_CMD_RSN_CODE_SET_LINK_HW_ACCESS_ERR 6 // Dell OEM Set Mac Command-specific Reason Code // 0x8000 NIC Partitioning not enabled Returned when the NIC Partitioning feature is not enabled. // 0x8001 Partition ID not enabled Returned when the individual partition is not enabled. // 0x8002 Partition ID not associated Returned when the Partition ID is not one of the partitions enumerated on the channel. // 0x8003 System reboot required Returned when the command can be executed only at system power up or when no operating system is present or driver is loaded. // 0x8004 Invalid Length The length of a Type-Length field in the Command is incorrect. // 0x8005 Information not available Returned when the controller is not able to provide the requested information. // 0x8006 Unsupported Address type Returned when the SetAddress command failed because the specified Address Type in the command is not supported. // 0x8007 Unsupported Passthru type Returned when the Set Passthru Control or Get Passthru Control command failed because the specified Passthru Type in the command is not supported. // 0x8008 Reached maximum number of allowed ports Returned when OutOfBox WOL is already configured on the maximum number of ports per channel or Device (may be implementation dependent) // 0x8009 System reboot required for the changes to be effective Returned when the command was executed successfully (Response code = 0) but a driver unload or system reboot is required in order for the changes to become effective. #define NCSI_CMD_OEM_DELL_RSN_CODE_NP_NOT_ENABLED 0x8000 #define NCSI_CMD_OEM_DELL_RSN_CODE_PARTITION_ID_NOT_ENABLED 0x8001 #define NCSI_CMD_OEM_DELL_RSN_CODE_PARTITION_ID_NOT_ASSOCIATED 0x8002 #define NCSI_CMD_OEM_DELL_RSN_CODE_REBOOT_REQUIRED 0x8003 #define NCSI_CMD_OEM_DELL_RSN_CODE_INVALID_LENGTH 0x8004 #define NCSI_CMD_OEM_DELL_RSN_CODE_INFO_NOT_AVAILABLE 0x8005 #define NCSI_CMD_OEM_DELL_RSN_CODE_UNSUPPORTED_ADDR_TYPE 0x8006 #define NCSI_CMD_OEM_DELL_RSN_CODE_UNSUPPORTED_PASSTHRU_TYPE 0x8007 #define NCSI_CMD_OEM_DELL_RSN_CODE_MAX_ALLOW_PORTS_REACHED 0x8008 #define NCSI_CMD_OEM_DELL_RSN_CODE_SYS_REBOOT_REQUIRED 0x8009 #define NCSI_CMD_OEM_DELL_UNSUPPORTED_PAYLOAD_VERSION 0x800a #define NCSI_CMD_OEM_DELL_HOST_DRIVER_NOT_LOADED 0x800b #define NCSI_CMD_OEM_DELL_LINK_CMD_FAILED_HW_ACCESS_ERR 0x800c #define NCSI_CMD_OEM_DELL_INTERNAL_STORAGE_EXCEEDED 0x800d #define NCSI_CMD_OEM_DELL_NVRAM_WRITE_FAILURE 0x800e #define NCSI_CMD_OEM_DELL_NVRAM_WRITE_PENDING 0x800f #define NCSI_CMD_RSN_CODE_UNK_CMD_TYPE 0x7FFF #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_TYPE_MASK 0xFF00 #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_ERR_MASK 0x00FF #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_MAC_ADDR_INIT_ERR ((NCSI_CMD_TYPE_ENABLE_CHANNEL_EGRESS_TX << 8) + 0x80) #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_VLAN_TAG_INIT_ERR ((NCSI_CMD_TYPE_ENABLE_VLAN << 8) + 0x81) } NcsiCmdRspStatus_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #define NCSI_CMD_RSP_CODE_CMD_UNSUPPORTED 3 #define NCSI_CMD_RSP_CODE_CMD_UNAVAILABLE 2 #define NCSI_CMD_RSP_CODE_CMD_FAILED 1 #define NCSI_CMD_RSP_CODE_CMD_COMPLETED_OK 0 #define NCSI_CMD_RSN_CODE_NO_ERROR 0 #define NCSI_CMD_RSN_CODE_INTERFACE_INIT_REQUIRED 1 #define NCSI_CMD_RSN_CODE_PARAMETER_INVALID_OUT_OF_RANGE 2 #define NCSI_CMD_RSN_CODE_CHANNEL_NOT_READY 3 #define NCSI_CMD_RSN_CODE_PACKAGE_NOT_READY 4 #define NCSI_CMD_RSN_CODE_INVALID_PAYLOAD_LENGTH 5 #define NCSI_CMD_RSN_CODE_VLAN_TAG_OF_0_IS_INVALID ((NCSI_CMD_TYPE_SET_VLAN_FILTERS << 8) + 7) #define NCSI_CMD_RSN_CODE_MAC_ADDR_OF_0_IS_INVALID ((NCSI_CMD_TYPE_SET_MAC_ADDRESS << 8) + 8) #define NCSI_CMD_RSN_CODE_ASYNCH_FC_NOT_SUPPORTED ((NCSI_CMD_TYPE_SET_NCSI_FLOW_CONTROL << 8) + 9) #define NCSI_CMD_OEM_GENERIC_RSN_CODE_OS_CONFLICT 0x80 #define NCSI_CMD_OEM_GENERIC_RSN_CODE_OEM_PAYLOAD_VER_ERR 0x81 /* Dell OEM Set Mac Command-specific Reason Code 0x8000 NIC Partitioning not enabled Returned when the NIC Partitioning feature is not enabled. 0x8001 Partition ID not enabled Returned when the individual partition is not enabled. 0x8002 Partition ID not associated Returned when the Partition ID is not one of the partitions enumerated on the channel. 0x8003 System reboot required Returned when the command can be executed only at system power up or when no operating system is present or driver is loaded. 0x8004 Invalid Length The length of a Type-Length field in the Command is incorrect. 0x8005 Information not available Returned when the controller is not able to provide the requested information. 0x8006 Unsupported Address type Returned when the SetAddress command failed because the specified Address Type in the command is not supported. 0x8007 Unsupported Passthru type Returned when the Set Passthru Control or Get Passthru Control command failed because the specified Passthru Type in the command is not supported. 0x8008 Reached maximum number of allowed ports Returned when OutOfBox WOL is already configured on the maximum number of ports per channel or Device (may be implementation dependent) 0x8009 System reboot required for the changes to be effective Returned when the command was executed successfully (Response code = 0) but a driver unload or system reboot is required in order for the changes to become effective. 0x800A Returned when the Ethernet or FC controller does not support the Payload Version specified in the incoming OEM command. Note: This Reason code does not apply to the Get Supported Payload Version command 0x800B Returned when the command is unable to be successfully executed because there is no OS driver loaded 0x800D Returned when there is insufficient storage to store parameters to be written to NVRAM 0x800E Returned when there is a failure in the NVRAM write operation 0x800F Returned when the NVRAM write operation is not complete */ #define NCSI_CMD_OEM_DELL_RSN_CODE_NP_NOT_ENABLED 0x8000 #define NCSI_CMD_OEM_DELL_RSN_CODE_PARTITION_ID_NOT_ENABLED 0x8001 #define NCSI_CMD_OEM_DELL_RSN_CODE_PARTITION_ID_NOT_ASSOCIATED 0x8002 #define NCSI_CMD_OEM_DELL_RSN_CODE_REBOOT_REQUIRED 0x8003 #define NCSI_CMD_OEM_DELL_RSN_CODE_INVALID_LENGTH 0x8004 #define NCSI_CMD_OEM_DELL_RSN_CODE_INFO_NOT_AVAILABLE 0x8005 #define NCSI_CMD_OEM_DELL_RSN_CODE_UNSUPPORTED_ADDR_TYPE 0x8006 #define NCSI_CMD_OEM_DELL_RSN_CODE_UNSUPPORTED_PASSTHRU_TYPE 0x8007 #define NCSI_CMD_OEM_DELL_RSN_CODE_MAX_ALLOW_PORTS_REACHED 0x8008 #define NCSI_CMD_OEM_DELL_RSN_CODE_SYS_REBOOT_REQUIRED 0x8009 #define NCSI_CMD_OEM_DELL_UNSUPPORTED_PAYLOAD_VERSION 0x800A #define NCSI_CMD_OEM_DELL_HOST_DRIVER_NOT_LOADED 0x800B #define NCSI_CMD_OEM_DELL_INTERNAL_STORAGE_EXCEEDED 0x800D #define NCSI_CMD_OEM_DELL_NVRAM_WRITE_FAILURE 0x800E #define NCSI_CMD_OEM_DELL_NVRAM_WRITE_PENDING 0x800F #define NCSI_CMD_RSN_CODE_UNK_CMD_TYPE 0x7FFF #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_TYPE_MASK 0xFF00 #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_ERR_MASK 0x00FF #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_MAC_ADDR_INIT_ERR ((NCSI_CMD_TYPE_ENABLE_CHANNEL_EGRESS_TX << 8) + 0x80) #define NCSI_CMD_OEM_SPECIFIC_RSN_CODE_VLAN_TAG_INIT_ERR ((NCSI_CMD_TYPE_ENABLE_VLAN << 8) + 0x81) } NcsiCmdRspStatus_t; #endif // ENDIAN typedef struct OemDefaultReturnData { BrcmOemCmdRspHeader_t BrcmOemCmdRspHeader; } OemDefaultReturnData_t; /***************************************************************************** NcsiDefaultOemCmdRspData_t this structure definition is for the data fields of the rsp frm Payload returned in response to the OEM cmd. *****************************************************************************/ typedef struct NcsiDefaultOemCmdRspData #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ OemDefaultReturnData_t ReturnData; } NcsiDefaultOemCmdRspData_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ OemDefaultReturnData_t ReturnData; } NcsiDefaultOemCmdRspData_t; #endif // ENDIAN typedef struct OemTestReturnData { BrcmOemCmdRspHeader_t BrcmOemCmdRspHeader; u32_t OemPayload[33]; } OemTestReturnData_t; /***************************************************************************** NcsiCmdNcsiTestReadCmdRspData_t this structure definition is for the data fields of the rsp frm Payload returned in response to the NCSI Test OEM cmd. *****************************************************************************/ typedef struct NcsiCmdNcsiTestReadCmdRspData #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t ManufacturerId; /* ManufacturerId IANA */ OemTestReturnData_t ReturnData; } NcsiCmdNcsiTestReadCmdRspData_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t ManufacturerId; /* ManufacturerId IANA */ OemTestReturnData_t ReturnData; } NcsiCmdNcsiTestReadCmdRspData_t; #endif // ENDIAN typedef struct NcsiOemGetNcsiParametersPayload #if defined (BIG_ENDIAN) { u32_t NcsiFwVersionNumber; u32_t BootcodeVersionNumber; u32_t PxeBootVersionNumber; u32_t IScsiBootVersionNumber; u32_t OemLinkSettings; u16_t HostMacAddrHigh; u16_t HostMacAddrMiddle; u16_t HostMacAddrLow; u16_t HostVirtualL2MacAddrHigh; u16_t HostVirtualL2MacAddrMiddle; u16_t HostVirtualL2MacAddrLow; u16_t HostIscsiMacAddrHigh; u16_t HostIscsiMacAddrMiddle; u16_t HostIscsiMacAddrLow; u16_t HostVirtualIscsiMacAddrHigh; u16_t HostVirtualIscsiMacAddrMiddle; u16_t HostVirtualIscsiMacAddrLow; // UmpMacAddr_t HostMacAddr; // UmpMacAddr_t HostVirtualL2MacAddr; // UmpMacAddr_t HostIscsiMacAddr; // UmpMacAddr_t HostVirtualIscsiMacAddr; }NcsiOemGetNcsiParametersPayload_t; #elif defined (LITTLE_ENDIAN) { u32_t NcsiFwVersionNumber; u32_t BootcodeVersionNumber; u32_t PxeBootVersionNumber; u32_t IScsiBootVersionNumber; u32_t OemLinkSettings; u16_t HostMacAddrMiddle; u16_t HostMacAddrHigh; u16_t HostVirtualL2MacAddrHigh; u16_t HostMacAddrLow; u16_t HostVirtualL2MacAddrLow; u16_t HostVirtualL2MacAddrMiddle; u16_t HostIscsiMacAddrMiddle; u16_t HostIscsiMacAddrHigh; u16_t HostVirtualIscsiMacAddrHigh; u16_t HostIscsiMacAddrLow; u16_t HostVirtualIscsiMacAddrLow; u16_t HostVirtualIscsiMacAddrMiddle; // UmpMacAddr_t HostMacAddr; // UmpMacAddr_t HostVirtualL2MacAddr; // UmpMacAddr_t HostIscsiMacAddr; // UmpMacAddr_t HostVirtualIscsiMacAddr; } NcsiOemGetNcsiParametersPayload_t; #endif // ENDIAN #define NCSI_CMD_GET_NCSI_PARAM_RSP_PAYLOAD_VERSION 0 typedef struct NcsiOemGetNcsiParametersReturnData { BrcmOemCmdRspHeader_t BrcmOemCmdRspHeader; NcsiOemGetNcsiParametersPayload_t OemPayload; } NcsiOemGetNcsiParametersReturnData_t; #define NCSI_CMD_GET_PHY_PRIORITY_RSP_PAYLOAD_VERSION 0 typedef struct NcsiOemGetDualMediaParametersReturnData { BrcmOemCmdRspHeader_t BrcmOemCmdRspHeader; NcsiOemGetDualMediaParametersPayload_t OemPayload; } NcsiOemGetDualMediaParametersReturnData_t; /***************************************************************************** NcsiOemGetNcsiParametersRspData_t this structure definition is for the data fields of the rsp frm Payload returned in response to the OEM cmds. *****************************************************************************/ typedef struct NcsiOemGetNcsiParametersRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t ManufacturerId; /* ManufacturerId IANA */ NcsiOemGetNcsiParametersReturnData_t ReturnData; } NcsiOemGetNcsiParametersRspData_t; /***************************************************************************** NcsiOemGetDualMediaParametersRspData_t this structure definition is for the data fields of the rsp frm Payload returned in response to the OEM cmds. *****************************************************************************/ typedef struct NcsiOemGetDualMediaParametersRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t ManufacturerId; /* ManufacturerId IANA */ NcsiOemGetDualMediaParametersReturnData_t ReturnData; } NcsiOemGetDualMediaParametersRspData_t; /***************************************************************************** NcsiCmdGetParametersRspData_t this structure definition is for the data fields of the rsp frm Payload returned in response to the get parameters ump cmd. *****************************************************************************/ typedef struct NcsiCmdGetParametersRspData #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u8_t MacAddrCount; u8_t Reserved0[2]; u8_t MacAddrFlags; u8_t VlanTagCount; u8_t Reserved1; u16_t VlanTagFlags; u32_t LinkSettings; u32_t BroadcastFilterSettings; u32_t ConfigurationFlags; u8_t VlanMode; u8_t FcEnable; u16_t Reserved2; u32_t AenControl; NcsiMacAddr_t Mac[NCSI_MAC_ADDRESS_MAX]; u16_t VlanTag[NCSI_VLAN_TAG_COUNT]; }NcsiCmdGetParametersRspData_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u8_t MacAddrFlags; u8_t Reserved0[2]; u8_t MacAddrCount; u16_t VlanTagFlags; u8_t Reserved1; u8_t VlanTagCount; u32_t LinkSettings; u32_t BroadcastFilterSettings; u32_t ConfigurationFlags; u16_t Reserved2; u8_t FcEnable; u8_t VlanMode; u32_t AenControl; NcsiMacAddr_t Mac[NCSI_MAC_ADDRESS_MAX]; u16_t VlanTag[NCSI_VLAN_TAG_COUNT]; } NcsiCmdGetParametersRspData_t; #endif // endian /***************************************************************************** *****************************************************************************/ typedef struct NcsiCmdGetCapabilitiesRspData #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ u32_t Flags; #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_HW_ARBITRATION 0x01 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_OS_AWARENESS 0x02 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_TX_FLOWCONTROL 0x04 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_RX_FLOWCONTROL 0x08 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_MULTICAST_SUPPORT 0x10 u32_t BroadcastFiltering; u32_t MulticastFiltering; u32_t IngressBuffering; u32_t AenControl; u8_t VlanFilterCount; u8_t MixedMacFilterCount; u8_t MulticastFilterCount; u8_t UnicastFilterCount; u16_t Reserved0; u8_t VlanModes; #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_VLAN_ONLY 0x01 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_VLAN_NON_VLAN 0x02 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_PROMISCUOUS_VLAN 0x04 u8_t ChannelCount; } NcsiCmdGetCapabilitiesRspData_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ u32_t Flags; #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_HW_ARBITRATION 0x01 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_OS_AWARENESS 0x02 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_TX_FLOWCONTROL 0x04 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_RX_FLOWCONTROL 0x08 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_CAPABILITY_FLAG_MULTICAST_SUPPORT 0x10 u32_t BroadcastFiltering; u32_t MulticastFiltering; u32_t IngressBuffering; u32_t AenControl; u8_t UnicastFilterCount; u8_t MulticastFilterCount; u8_t MixedMacFilterCount; u8_t VlanFilterCount; u8_t ChannelCount; u8_t VlanModes; #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_PROMISCUOUS_VLAN 0x04 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_VLAN_NON_VLAN 0x02 #define NCSI_CMD_GET_CAPABILITY_RSP_PAYLOAD_VLAN_MODE_VLAN_ONLY 0x01 u16_t Reserved0; } NcsiCmdGetCapabilitiesRspData_t; #endif // endian /***************************************************************************** NcsiCmdGetLinkStatusRspData_t this structure definition is for the data field portion of the response Payload returned when processing the get link status ump cmd. *****************************************************************************/ typedef struct NcsiCmdGetLinkStatusRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t LinkState; #define LINK_STATUS_LINK_MASK (1<<0) #define LINK_STATUS_LINK_ENABLED (1<<0) #define LINK_STATUS_LINK_SPEED_DUPLEX_NO_HCD (0<<0) #define LINK_STATUS_LINK_SPEED_AND_DUPLEX_MASK (0xF<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_10BASE_T_HD (1<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_10BASE_T_FD (2<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_100BASE_TX_HD (3<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_100BASE_TX_FD (5<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_1000BASE_T_FD (7<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_UMP_2_5GB_HD (8<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_UMP_2_5GB_FD (9<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_UMP_10GBASE_T (10<<1) #define LINK_STATUS_LINK_SPEED_DUPLEX_NCSI_10GBASE_T (8<<1) #define LINK_STATUS_AUTO_NEG_ENABLED (1<<5) #define LINK_STATUS_AUTO_NEG_COMPLETE (1<<6) #define LINK_STATUS_PARALLEL_DETECTION (1<<7) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_PAUSE_FC_CAPABLE (1<<8) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_1000BASE_T_FD (1<<9) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_1000BASE_T_HD (1<<10) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_100BASE_TX_FD (1<<12) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_100BASE_TX_HD (1<<13) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_10BASE_T_FD (1<<14) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_SPEED_DUPLEX_10BASE_T_HD (1<<15) #define LINK_STATUS_TX_FC_ENABLED (1<<16) #define LINK_STATUS_RX_FC_ENABLED (1<<17) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_FC_1000X_MASK (3<<18) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_FC_1000X_NO_PAUSE (0<<18) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_FC_1000X_SYM_PAUSE (1<<18) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_FC_1000X_ASYM_PAUSE_TO_PARTNER (2<<18) #define LINK_STATUS_LINK_PARTNER_ADVERTIZED_FC_1000X_SYM_ASYM_PAUSE_TO_PARTNER (3<<18) #define LINK_STATUS_SERDES_FLAG (1<<20) #define LINK_STATUS_OEM_LINK_SPEED_VALID_FLAG (1<<21) u32_t OtherIndications; u32_t OemLinkSpeed; #define LINK_STATUS_LINK_SPEED_DUPLEX_NCSI_2_5GB_HD (1<<0) #define LINK_STATUS_LINK_SPEED_DUPLEX_NCSI_2_5GB_FD (1<<1) } NcsiCmdGetLinkStatusRspData_t; /***************************************************************************** NcsiCmdGetNcsiStatisticsRspData_t this structure defines the data field portion of the response Payload returned when processing the get ncsi statistics cmd. *****************************************************************************/ typedef struct NcsiCmdGetNcsiStatisticsRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t CommandPktsRx; // ncsi cmds rx and processed u32_t TotalCommandPktsDropped; // total ncsi cmds dropped u32_t CommandPktsDroppedTypeError; // ncsi cmds dropped for type error u32_t CommandPktsDroppedCsError; // ncsi cmds dropped for checksum error u32_t TotalControlPktsRx; // total ncsi cmds rx, processed + dropped u32_t TotalControlPktsTx; // total ncsi pkts sent, AEN + rsp u32_t TotalAensSent; // } NcsiCmdGetNcsiStatisticsRspData_t; typedef NcsiCmdGetNcsiStatisticsRspData_t *pNcsiCmdGetNcsiStatisticsRspData_t; /***************************************************************************** NcsiCmdGetNcsiPassThruStatisticsRspData_t this structure defines the data field portion of the response Payload returned when processing the get ncsi pass through statistics cmd. *****************************************************************************/ typedef struct NcsiCmdGetNcsiPassThruStatisticsRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t TotalEgressPktsHigh; u32_t TotalEgressPktsLow; u32_t TotalEgressPktsDropped; u32_t EgressPktsDroppedChannelStateError; u32_t EgressPktsDroppedUndersizedError; u32_t EgressPktsDroppedOversizedError; u32_t TotalIngressPkts; u32_t TotalIngressPktsDropped; u32_t IngressPktsDroppedChannelStateError; u32_t IngressPktsDroppedUndersizedError; u32_t IngressPktsDroppedOversizedError; } NcsiCmdGetNcsiPassThruStatisticsRspData_t; typedef NcsiCmdGetNcsiPassThruStatisticsRspData_t *pNcsiCmdGetNcsiPassThruStatisticsRspData_t; typedef struct NcsiNicEmacStats { u32_t TotalBytesRx_High; u32_t TotalBytesRx_Low; u32_t TotalBytesTx_High; u32_t TotalBytesTx_Low; u32_t TotalUnicastPktsRx_High; u32_t TotalUnicastPktsRx_Low; u32_t TotalMulticastPktsRx_High; u32_t TotalMulticastPktsRx_Low; u32_t TotalBroadcastPktsRx_High; u32_t TotalBroadcastPktsRx_Low; u32_t TotalUnicastPktsTx_High; u32_t TotalUnicastPktsTx_Low; u32_t TotalMulticastPktsTx_High; u32_t TotalMulticastPktsTx_Low; u32_t TotalBroadcastPktsTx_High; u32_t TotalBroadcastPktsTx_Low; u32_t CrcRxErrors; u32_t AlignmentErrors; u32_t FalseCarrierDetects; u32_t RuntPktsRx; u32_t JabberPktsRx; u32_t PauseXonFramesRx; u32_t PauseXoffFramesRx; u32_t PauseXonFramesTx; u32_t PauseXoffFramesTx; u32_t SingleCollisionTxFrames; u32_t MultipleCollisionTxFrames; u32_t LateCollisionFrames; u32_t ExcessiveCollisionFrames; u32_t ControlFramesRx; u32_t FramesRx64Byte; u32_t FramesRx65_127Bytes; u32_t FramesRx128_255Bytes; u32_t FramesRx256_511Bytes; u32_t FramesRx512_1023Bytes; u32_t FramesRx1024_1522Bytes; u32_t FramesRx1523_9022Bytes; u32_t FramesTx64Byte; u32_t FramesTx65_127Bytes; u32_t FramesTx128_255Bytes; u32_t FramesTx256_511Bytes; u32_t FramesTx512_1023Bytes; u32_t FramesTx1024_1522Bytes; u32_t FramesTx1523_9022Bytes; u32_t ValidBytesRx_High; u32_t ValidBytesRx_Low; u32_t ErrorRuntPktsRx; u32_t ErrorJabberPktsRx; } NcsiNicEmacStats_t; typedef NcsiNicEmacStats_t *pNcsiNicEmacStats_t; /***************************************************************************** NcsiCmdGetPortStatisticsRspData_t this structure defines the data field portion of the response Payload returned when processing the get ump i/f statistics ump cmd. *****************************************************************************/ typedef struct NcsiCmdGetPortStatisticsRspData { #if defined (BIG_ENDIAN) u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ #elif defined (LITTLE_ENDIAN) u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ #endif // endian u32_t CountersClearedHigh; u32_t CountersClearedLow; NcsiNicEmacStats_t Stats; } NcsiCmdGetPortStatisticsRspData_t; typedef NcsiCmdGetPortStatisticsRspData_t *pNcsiCmdGetPortStatisticsRspData_t; /***************************************************************************** NcsiCmdGetControllerVerIdRspData_t this structure definition is for the data fields of the response Payload returned used processing the get bcm version ID ump cmd. *****************************************************************************/ #define GET_NIC_VER_ID_SIZE_OF_FW_NAME 12 typedef struct NcsiCmdGetControllerVerIdRspData #if defined (BIG_ENDIAN) { u16_t ResponseCode; /* ids outcome of cmd */ u16_t ReasonCode; /* ids reasons for rsp */ NcsiVersion_t NcsiVersion; u8_t FirmwareName[GET_NIC_VER_ID_SIZE_OF_FW_NAME]; u32_t FirmwareRev; u16_t PciDeviceId; u16_t PciVendorId; u16_t PciSubsystemId; u16_t PciSubsystemVendorId; u32_t ManufacturerId; /* ManufacturerId IANA */ } NcsiCmdGetControllerVerIdRspData_t; #elif defined (LITTLE_ENDIAN) { u16_t ReasonCode; /* ids reasons for rsp */ u16_t ResponseCode; /* ids outcome of cmd */ NcsiVersion_t NcsiVersion; /* u8_t Major; u8_t Reserved0; u8_t Alpha1; u8_t Update; u8_t Minor; */ u8_t FirmwareName[12]; u8_t Alpha2; u8_t Reserved2; u8_t Reserved1; u32_t FirmwareRev; u16_t PciVendorId; u16_t PciDeviceId; u16_t PciSubsystemVendorId; u16_t PciSubsystemId; u32_t ManufacturerId; /* ManufacturerId IANA */ } NcsiCmdGetControllerVerIdRspData_t; #endif // endian #define NCSI_CMD_SIZEOF_DEFAULT_RSP_DATA (sizeof (NcsiCmdRspStatus_t)) #define NCSI_CMD_SIZEOF_GET_PARAMS_RSP_DATA (sizeof (NcsiCmdGetParametersRspData_t)) #define NCSI_CMD_SIZEOF_GET_LINK_STATUS_RSP_DATA (sizeof (NcsiCmdGetLinkStatusRspData_t)) #define NCSI_CMD_SIZEOF_GET_STATS_RSP_DATA (sizeof (NcsiCmdGetPortStatisticsRspData_t)) #define NCSI_CMD_SIZEOF_GET_CNTLR_VER_ID_RSP_DATA (sizeof (NcsiCmdGetControllerVerIdRspData_t)) #define NCSI_CMD_SIZEOF_GET_NCSI_STATS_RSP_DATA (sizeof (NcsiCmdGetNcsiStatisticsRspData_t)) #define NCSI_CMD_SIZEOF_GET_CAPABILITY_RSP_DATA (sizeof (NcsiCmdGetCapabilitiesRspData_t)) #define NCSI_CMD_SIZEOF_GET_NCSI_PASSTHRU_STATS_RSP_DATA (sizeof (NcsiCmdGetNcsiPassThruStatisticsRspData_t)) #define NCSI_CMD_SIZEOF_DEFAULT_OEM_CMD_RSP_DATA (sizeof (NcsiDefaultOemCmdRspData_t)) #define NCSI_CMD_SIZEOF_DEFAULT_DELL_OEM_CMD_RSP_DATA (sizeof(DellDfltCmdRspData_t)) // response/reason code, Manufacture ID, payload ver, Cmd ID, .. ) #define NCSI_CMD_SIZEOF_GET_NCSI_PARAMETERS_RSP_DATA (sizeof (NcsiOemGetNcsiParametersRspData_t)) #define NCSI_CMD_SIZEOF_NCSI_TEST_READ_CMD_RSP_DATA (sizeof (NcsiCmdNcsiTestReadCmdRspData_t)) #define NCSI_CMD_SIZEOF_GET_PHY_PRIORITY_CMD_RSP_DATA (sizeof (NcsiOemGetDualMediaParametersRspData_t)) /***************************************************************************** NcsiCmdDefaultRspPayload_t Structure definition for most basic UMP response Payload *****************************************************************************/ typedef struct NcsiCmdDefaultRspPayload { NcsiCmdRspStatus_t Data; u32_t ChecksumCompensation; } NcsiCmdDefaultRspPayload_t; typedef NcsiCmdDefaultRspPayload_t *pNcsiCmdDefaultRspPayload_t; /***************************************************************************** NcsiDefaultOemCmdRspPayload_t this structure defines the response Payload returned after processing the Oem cmd. *****************************************************************************/ typedef struct NcsiDefaultOemCmdRspPayload { NcsiDefaultOemCmdRspData_t Data; u32_t ChecksumCompensation; } NcsiDefaultOemCmdRspPayload_t; typedef NcsiDefaultOemCmdRspPayload_t *pNcsiDefaultOemCmdRspPayload_t; /***************************************************************************** NcsiOemGetNcsiParametersRspPayload_t this structure defines the response Payload returned after processing the Oem cmd. *****************************************************************************/ typedef struct NcsiOemGetNcsiParametersRspPayload { NcsiOemGetNcsiParametersRspData_t Data; u32_t ChecksumCompensation; } NcsiOemGetNcsiParametersRspPayload_t; typedef NcsiOemGetNcsiParametersRspPayload_t *pNcsiOemGetNcsiParametersRspPayload_t; /***************************************************************************** NcsiOemGetDualMediaParametersRspPayload_t this structure defines the response Payload returned after processing the Oem cmd. *****************************************************************************/ typedef struct NcsiOemGetDualMediaParametersRspPayload { NcsiOemGetDualMediaParametersRspData_t Data; u32_t ChecksumCompensation; } NcsiOemGetDualMediaParametersRspPayload_t; typedef NcsiOemGetDualMediaParametersRspPayload_t *pNcsiOemGetDualMediaParametersRspPayload_t; typedef struct { u16_t ResponseCode; u16_t ReasonCode; u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; /* OEM command ID */ u16_t SupportedVersons; u32_t Reserved; } DellRspsGetSupportedVer_t; typedef struct { u16_t ResponseCode; u16_t ReasonCode; u32_t ManufacturerId; /* ManufacturerId IANA */ u8_t PayloadVersion; u8_t CommandType; u8_t PartitionId; u8_t NumOfTLVs; u8_t buf[MAX_TLV_COMMAND_SIZE]; /*This is a place holder for the Maximum size in bytesof this command with all TLV's present*/ } DellRspsPartitionTLV_t; #define DELLOEMRSP_PARTITION_TLV_BASE_SIZE 12 //exclude pad & chksum // TLV type definition for Get OS Driver Version Command #define OSVER_TYPE_LAN 0 #define OSVER_TYPE_ISCSI 1 #define OSVER_TYPE_FCOE 2 #define OSVER_TYPE_RDMA 3 #define OSVER_TYPE_FC 4 // TLV type definition for Set/Get iSCSI Boot Initiator Config Command //v4 v6 size #define ISCSI_INITIATOR_TYPE_ADDR 0 #define ISCSI_INITIATOR_TYPE_ADDR_V4 1 #define ISCSI_INITIATOR_TYPE_ADDR_V6 2 #define ISCSI_INITIATOR_TYPE_SUBNET 3 #define ISCSI_INITIATOR_TYPE_SUBNET_PREFIX 4 #define ISCSI_INITIATOR_TYPE_GATEWAY 5 #define ISCSI_INITIATOR_TYPE_GATEWAY_V4 6 #define ISCSI_INITIATOR_TYPE_GATEWAY_V6 7 #define ISCSI_INITIATOR_TYPE_PRIMARY_DNS 8 #define ISCSI_INITIATOR_TYPE_PRIMARY_DNS_V4 9 #define ISCSI_INITIATOR_TYPE_PRIMARY_DNS_V6 0xa #define ISCSI_INITIATOR_TYPE_SECOND_DNS 0xb #define ISCSI_INITIATOR_TYPE_SECOND_DNS_V4 0xc #define ISCSI_INITIATOR_TYPE_SECOND_DNS_V6 0xd #define ISCSI_INITIATOR_TYPE_NAME 0xe #define ISCSI_INITIATOR_TYPE_CHAP_ID 0xf #define ISCSI_INITIATOR_TYPE_CHAP_PSWD 0x10 #define ISCSI_INITIATOR_TYPE_IP_VER 0x11 #define ISCSI_INITIATOR_TYPE_MAX ISCSI_INITIATOR_TYPE_IP_VER #define ISCSI_INITIATOR_TYPE_SUPPORTED_V4_MASK ((1<