ncsi_cmds.h revision d14abf155341d55053c76eeec58b787a456b753b
/****************************************************************************
* 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
* 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
* 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
{
/*****************************************************************************
NcsiRmiiControlPktHeader_t
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)
{
#define NCSI_ETHER_TYPE_ID (0x88F8)
#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_OEM (0x50)
#define NCSI_CMD_RESPONSE_BIT (0x80)
#define NCSI_CMD_CHANNEL_ID_MASK 0x1F
#define NCSI_CMD_PACKAGE_ID_MASK 0xE0
#elif defined (LITTLE_ENDIAN)
{
#define NCSI_ETHER_TYPE_ID (0x88F8)
#define NCSI_CMD_PACKAGE_ID_MASK 0xE0
#define NCSI_CMD_CHANNEL_ID_MASK 0x1F
#define NCSI_CMD_RESPONSE_BIT (0x80)
#define NCSI_CMD_TYPE_OEM (0x50)
#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)
}
#endif // ENDIAN
#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
{
#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)
union {
struct {
} Read;
struct {
} Write;
// 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
/*****************************************************************************
SetDualMediaParametersPayload_t
Structure definitions for Dual Media support
*****************************************************************************/
typedef struct SetDualMediaParametersPayload
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
typedef struct NcsiOemGetDualMediaParametersPayload
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
#define NCSI_CMD_SET_MAC_OEM_CMD_PAYLOAD_VERSION 0
typedef struct BrcmOemCmdRspHeader
{
#if defined (BIG_ENDIAN)
#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
#elif defined (LITTLE_ENDIAN)
#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
#endif // ENDIAN
typedef struct ModifyHostMacAddrCmdPayload
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
typedef union BrcmOemCmdPayload
{
/* 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)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellDfltCmd
{
#if defined (BIG_ENDIAN)
#elif defined (LITTLE_ENDIAN)
#endif // ENDIAN
typedef struct DellDfltCmdRspData
{
#if defined (BIG_ENDIAN)
#elif defined (LITTLE_ENDIAN)
#endif // endian
typedef DellDfltCmd_t DellGetInventoryCmd_t;
typedef struct DellGetInventoryCmdRspData
{
#if defined (BIG_ENDIAN)
#define MEDIA_BASE_KX4 0x0008 // 3 Base-KX4 0b = Base-KX4 is not supported.1b = Base-KX4 is supported.
#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
#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
// 0x2-0xFF = Reserved
#elif defined (LITTLE_ENDIAN)
#define MEDIA_BASE_KX4 0x0008 // 3 Base-KX4 0b = Base-KX4 is not supported.1b = Base-KX4 is supported.
#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
#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
// 0x2-0xFF = Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x01 Get Extended Capabilities Used to get the feature capabilities of a channel. 0x01 (Mandatory)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellGetExtendedCapabilitiesCmdRspData
{
#if defined (BIG_ENDIAN)
// 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
// 30-31 Reserved
#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_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
#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
#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
#define E_SWITCH_CAP_OPEN_FLOW 0x0010 // 4 Open Flow 0b = Open Flow is not supported. 1b = Open Flow is supported.
// 5-7 Reserved
#elif defined (LITTLE_ENDIAN)
// 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
// 30-31 Reserved
#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
#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_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
// 1 Reserved
// 2 Reserved
#define E_SWITCH_CAP_OPEN_FLOW 0x0010 // 4 Open Flow 0b = Open Flow is not supported. 1b = Open Flow is supported.
// 5-7 Reserved
#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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
#define PARTITION_STATUS_PERSONALITIES_NUM_MASK 0x07 // 0..2 Number of personalities configured Number of personalities configured on the partition.
#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
// 0x3-0xFF = Reserved
#elif defined (LITTLE_ENDIAN)
// 30-31 Reserved
#define PARTITION_STATUS_PERSONALITIES_NUM_MASK 0x07 // 0..2 Number of personalities configured Number of personalities configured on the partition.
#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
// 0x3-0xFF = Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x03 Get FCoE Capabilities Used to get FCoE Capabilities of a channel. 0x03 (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellGetFcoeCapabilitiesCmdRspData
{
#if defined (BIG_ENDIAN)
#define FCOE_FEATURE_FCOE_SUPPORT 0x0001 // 0 FCoE Support 0b = Stateless Offload 1b = Stateful Offload
// 7..1 Reserved
#elif defined (LITTLE_ENDIAN)
#define FCOE_FEATURE_FCOE_SUPPORT 0x0001 // 0 FCoE Support 0b = Stateless Offload 1b = Stateful Offload
// 7..1 Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
#elif defined (LITTLE_ENDIAN)
#endif // ENDIAN
typedef struct DellGetVirtualLinkCmdRspData
{
#if defined (BIG_ENDIAN)
#define VIRTUAL_LINK_STATUS (0x1 << 0) // 0 Virtual Link 0b = Virtual Link is up 1b = Virtual Link is down
#define LAN_HOST_DRV_NOT_IMPLEMENTED (0x0 << 1) // 0x0 = LAN Host driver state feature is not implemented.
// 0x3 = Reserved
#define ISOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 3) // 0x0 = iSOE Host driver state feature is not implemented.
// 0x3 = Reserved
#define FCOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 5) // 0x0 = FCoE Host driver state feature is not implemented.
// 0x3 = Reserved
// 7 Reserved
#elif defined (LITTLE_ENDIAN)
#define VIRTUAL_LINK_STATUS (0x1 << 0) // 0 Virtual Link 0b = Virtual Link is up 1b = Virtual Link is down
#define LAN_HOST_DRV_NOT_IMPLEMENTED (0x0 << 1) // 0x0 = LAN Host driver state feature is not implemented.
// 0x3 = Reserved
#define ISOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 3) // 0x0 = iSOE Host driver state feature is not implemented.
// 0x3 = Reserved
#define FCOE_HOST_DRV_NOT_IMPLEMENTED (0x0 << 5) // 0x0 = FCoE Host driver state feature is not implemented.
// 0x3 = Reserved
// 7 Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x05 Get LAN Statistics Used to get LAN statistics of a partition enabled in a specific channel. 0x05 (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellGetLanStatisticsCmdRspData
{
#if defined (BIG_ENDIAN)
#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
// 7:3 Reserved
#elif defined (LITTLE_ENDIAN)
#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
// 7:3 Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x06 Get FCoE Statistics Used to get FCoE statistics of a partition enabled in a specific channel. 0x06 (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellFcoeStat
{
typedef struct DellGetFcoeStatisticsCmdRspData
{
#if defined (BIG_ENDIAN)
#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 FIP_LOGIN_FAILURE_CNT_CLEARED 0x10 // 4 FIP Login Failure Count 0b = Not Cleared 1b = Cleared
// 7:5 Reserved
#elif defined (LITTLE_ENDIAN)
#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 FIP_LOGIN_FAILURE_CNT_CLEARED 0x10 // 4 FIP Login Failure Count 0b = Not Cleared 1b = Cleared
// 7:5 Reserved
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// OEM command ID
// 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
#define MAC_ADDR_LENGTH_MAX 8
// Field to define type of address that follows
// 0x0 = Reserved
// 0x1 = LAN
// 0x2 = iSCSI
// 0x3 = WWN
// 0x4 = FCoE-FIP
// 0x5 = IB GUID
// 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_MAX 0x6
#elif defined (LITTLE_ENDIAN)
#define MAC_ADDR_LENGTH_MAX 8
// 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
// 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
// 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_MAX 0x6
#endif // ENDIAN
typedef struct DellRspsPartition
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 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
#elif defined (LITTLE_ENDIAN)
// 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
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// 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
// 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)
// 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
// 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
#endif // ENDIAN
typedef struct DellGetAddrCmdRspData
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 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
#define MAC_ADDR_LENGTH_MAX 8
// Field to define type of address that follows
// 0x0 = Reserved
// 0x1 = LAN
// 0x2 = iSCSI
// 0x3 = WWN
// 0x4 = FCoE-FIP
// 0x5 = IB GUID
// 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_MAX 0x6
// In the future, we might have up to 5 addresses for each PF
#elif defined (LITTLE_ENDIAN)
#define MAC_ADDR_LENGTH_MAX 8
// 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
// OEM command ID
// Field to define type of address that follows
// 0x0 = Reserved
// 0x1 = LAN
// 0x2 = iSCSI
// 0x3 = WWN
// 0x4 = FCoE-FIP
// 0x5 = IB GUID
// 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_MAX 0x6
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x09 Set License Used to program license for licensable features of Ethernet Controller. 0x09 (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellSetLicenseCmd
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 2-31 Reserved
// 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)
// OEM command ID
// 2-31 Reserved
// 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
typedef struct DellSetLicenseCmdRspData
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 2-31 Reserved 2-31 Reserved
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// OEM command ID
#define LICENSE_PERSISTENT 1 // 0 Storage Type 0b = License is persistent 1b = License is not persistent
// 1-7 Reserved
// 2-31 Reserved
//
// 2-31 Reserved
// 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
// 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)
#define LICENSE_PERSISTENT 1 // 0 Storage Type 0b = License is persistent 1b = License is not persistent
// 1-7 Reserved
// OEM command ID
// 2-31 Reserved
//
// 2-31 Reserved
// 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
// 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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x0B Set Passthru Control Used to enable/disable different passthru data paths in the Controller. 0x0B (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellSetPassthruCtrlCmd
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 0x02-0x7F = Reserved
#elif defined (LITTLE_ENDIAN)
// 0x02-0x7F = Reserved
// OEM command ID
#endif // ENDIAN
typedef struct DellRspsDefault
{
#if defined (BIG_ENDIAN)
// OEM command ID
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// OEM command ID
// 0 Reserved
// 0x02-0x7F = Reserved
#elif defined (LITTLE_ENDIAN)
// 0 Reserved
// 0x02-0x7F = Reserved
// OEM command ID
#endif // ENDIAN
typedef struct DellGetPassthruCtrlCmdRspData
{
#if defined (BIG_ENDIAN)
// OEM command ID
// 0x02-0x7F = Reserved
#elif defined (LITTLE_ENDIAN)
// 0x02-0x7F = Reserved
// OEM command ID
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// OEM command ID
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#endif // ENDIAN
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x0E Get Partition TX Bandwidth Used to read bandwidth of a partition enabled on a specific channel. 0x0E (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellGetPartitionTxBandwidthCmdRspData
{
#if defined (BIG_ENDIAN)
// OEM command ID
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
// OEM command ID
#define ADDR_TYPE_IPv4 0 // 0x0 = IPv4
// 0x2-0xFF = Reserved
u8_t Length; // 15:8 IP Address Length The length indicates the number of bytes used to represent the IP Address.
// the least significant byte of the IP Address
// field should carry the first octet of the address.
#elif defined (LITTLE_ENDIAN)
u8_t Length; // 15:8 IP Address Length The length indicates the number of bytes used to represent the IP Address.
#define ADDR_TYPE_IPv4 0 // 0x0 = IPv4
// 0x2-0xFF = Reserved
// OEM command ID
// the least significant byte of the IP Address
// field should carry the first octet of the address.
#endif // ENDIAN
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x10 Get Teaming Information Used to read Network teaming information of a partition in a specific channel. 0x10 (Optional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellGetTeamingInfoCmdRspData
{
#if defined (BIG_ENDIAN)
// OEM command ID
#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
// 0x4-0xFF = Reserved
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#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.
// 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
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x11 Enable Ports Used to enable physical ports of the Ethernet Controller. 0x11 (Mandatory)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef DellDfltCmd_t DellEnablePortsCmd_t;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x12 Disable Ports Used to disable physical ports of the Ethernet Controller. 0x12 (Mandatory)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef DellDfltCmd_t DellDisablePortsCmd_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)
// OEM command ID
#elif defined (LITTLE_ENDIAN)
// OEM command ID
#endif // endian
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0x14 Set Link Tuning Used to configure Link Tuning parameters of a specific channel. 0x14 (Conditional)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct DellSetLinkTuningCmd
{
#if defined (BIG_ENDIAN)
// 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
#elif defined (LITTLE_ENDIAN)
u8_t LinkTuning_first[2]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification
// OEM command ID
u8_t LinkTuning[4]; // Link Tuning Data is an 8 byte value defined in accordance with the Link Tuning and FlexAddress Interface Specification
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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*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
{
/*This is a place holder for the Maximum size in bytesof this command with all TLV's present*/
typedef DellDfltCmd_t DellGetSupportedVerCmd_t;
typedef DellDfltCmd_t DellCommitNvramCmd_t;
typedef union DellOemCmdPayload
{
// Dell OEM NCSI commands
DellGetExtendedCapabilitiesCmd_t GetExtendedCapabilitiesCmd; // DELL_OEM_GET_EXTENDED_CAPABILITIES_CMD
DellSetPartitionTxBandwidthCmd_t SetPartitionTxBandwidthCmd; // DELL_OEM_SET_PARTITIONCmd_tX_BANDWIDTH_CMD
DellGetPartitionTxBandwidthCmd_t GetPartitionTxBandwidthCmd; // DELL_OEM_GET_PARTITIONCmd_tX_BANDWIDTH_CMD
DellEnableDisableOutOfBoxWolCmd_t EnableDisableOutOfBoxWolCmd; // DELL_OEM_ENABLE_OUTOFBOX_WOL_CMD and DELL_OEM_DISABLE_OUTOFBOX_WOL_CMD
DellGetiScsiInitiatorConfCmd_t GetiScsiInitiatorConfCmd; // DELL_OEM_GET_ISCSI_BOOT_INITIATOR_CONFIG_CMD
DellSetiScsiInitiatorConfCmd_t SetiScsiInitiatorConfCmd; // DELL_OEM_SET_ISCSI_BOOT_INITIATOR_CONFIG_CMD
typedef struct BrcmOemVendorData
{
typedef struct NcsiCmdOemCmdPayload
{
/*****************************************************************************
NcsiCmdSelectPackageCmdPayload_t
this structure definition is for the select package cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdSelectPackageCmdPayload
{
#define HW_ARBITRATION_MASK 0x1
#define HW_ARBITRATION_ENABLE 0x0
#define HW_ARBITRATION_DISABLE 0x1
/*****************************************************************************
NcsiCmdEnableMulticastPacketFilteringCmdPayload_t
this structure definition is for the cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdEnableMulticastPacketFilteringCmdPayload
{
/*****************************************************************************
NcsiCmdSetNcsiFlowControlCmdPayload_t
this structure definition is for the set ncsi flowcontrol cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdSetNcsiFlowControlCmdPayload
{
/*****************************************************************************
NcsiCmdEnableVlanCmdPayload_t
this structure definition is for the set ncsi flowcontrol cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdEnableVlanCmdPayload
{
#define NCSI_CMD_ENABLE_VLAN_SETTING_MIXED_MODE 2
/*****************************************************************************
NcsiCmdSetVlanCmdPayload_t
this structure definition is for the enable VLAN cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdSetVlanCmdPayload
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
/*****************************************************************************
NcsiCmdEnableAenCmdPayload_t
this structure definition is for the enable aen cmd Payload.
*****************************************************************************/
typedef struct NcsiCmdEnableAenCmdPayload
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
/*****************************************************************************
NcsiCmdSetMacAddrCmdPayload_t
this structure definition is for the set MAC addr command Payload
*****************************************************************************/
typedef struct NcsiCmdSetMacAddrCmdPayload
#if defined (BIG_ENDIAN)
{
#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
#elif defined (LITTLE_ENDIAN)
{
#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
}
#endif // ENDIAN
/*****************************************************************************
NcsiCmdSetLinkCmdPayload_t
this structure definition is for the set link command Payload
*****************************************************************************/
typedef struct NcsiCmdSetLinkCmdPayload
{
/*****************************************************************************
NcsiCmdDisableResetChannelCmdPayload_t
this structure definition is for the reset channel command Payload
*****************************************************************************/
typedef struct NcsiCmdDisableResetChannelCmdPayload
{
/*****************************************************************************
NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t
this structure definition is for the set link command Payload
*****************************************************************************/
typedef struct NcsiCmdEnableBroadcastPacketFilteringCmdPayload
{
typedef NcsiCmdEnableBroadcastPacketFilteringCmdPayload_t *pNcsiCmdEnableBroadcastPacketFilteringCmdPayload_t;
/*****************************************************************************
NcsiCmdPayload_t
this union definition combines the various response Payload definitions
into a single reference.
*****************************************************************************/
typedef union NcsiCmdPayload
{
#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))
/*****************************************************************************
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
{
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)
{
#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
#define NCSI_CMD_RSN_CODE_NO_ERROR 0
#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_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_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)
#elif defined (LITTLE_ENDIAN)
{
#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_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_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)
}
#endif // ENDIAN
typedef struct OemDefaultReturnData
{
/*****************************************************************************
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)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
typedef struct OemTestReturnData
{
/*****************************************************************************
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)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // ENDIAN
typedef struct NcsiOemGetNcsiParametersPayload
#if defined (BIG_ENDIAN)
{
// UmpMacAddr_t HostMacAddr;
// UmpMacAddr_t HostVirtualL2MacAddr;
// UmpMacAddr_t HostIscsiMacAddr;
// UmpMacAddr_t HostVirtualIscsiMacAddr;
#elif defined (LITTLE_ENDIAN)
{
// UmpMacAddr_t HostMacAddr;
// UmpMacAddr_t HostVirtualL2MacAddr;
// UmpMacAddr_t HostIscsiMacAddr;
// UmpMacAddr_t HostVirtualIscsiMacAddr;
}
#endif // ENDIAN
typedef struct NcsiOemGetNcsiParametersReturnData
{
typedef struct NcsiOemGetDualMediaParametersReturnData
{
/*****************************************************************************
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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
/*****************************************************************************
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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
/*****************************************************************************
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)
{
#elif defined (LITTLE_ENDIAN)
{
}
#endif // endian
/*****************************************************************************
*****************************************************************************/
typedef struct NcsiCmdGetCapabilitiesRspData
#if defined (BIG_ENDIAN)
{
#elif defined (LITTLE_ENDIAN)
{
}
#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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
#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_PARTNER_ADVERTIZED_FC_1000X_NO_PAUSE (0<<18)
#define LINK_STATUS_LINK_SPEED_DUPLEX_NCSI_2_5GB_HD (1<<0)
/*****************************************************************************
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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
/*****************************************************************************
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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
typedef struct NcsiNicEmacStats
{
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)
#elif defined (LITTLE_ENDIAN)
#endif // endian
/*****************************************************************************
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)
{
#elif defined (LITTLE_ENDIAN)
{
/* u8_t Major;
u8_t Reserved0;
u8_t Alpha1;
u8_t Update;
u8_t Minor;
*/
}
#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
{
/*****************************************************************************
NcsiDefaultOemCmdRspPayload_t
this structure defines the response Payload returned after processing
the Oem cmd.
*****************************************************************************/
typedef struct NcsiDefaultOemCmdRspPayload
{
/*****************************************************************************
NcsiOemGetNcsiParametersRspPayload_t
this structure defines the response Payload returned after processing
the Oem cmd.
*****************************************************************************/
typedef struct NcsiOemGetNcsiParametersRspPayload
{
/*****************************************************************************
NcsiOemGetDualMediaParametersRspPayload_t
this structure defines the response Payload returned after processing
the Oem cmd.
*****************************************************************************/
typedef struct NcsiOemGetDualMediaParametersRspPayload
{
typedef struct {
typedef struct {
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*/
// 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
//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_SUPPORTED_V4_MASK ((1<<ISCSI_INITIATOR_TYPE_ADDR)|(1<<ISCSI_INITIATOR_TYPE_ADDR_V4)| \
(1<<ISCSI_INITIATOR_TYPE_GATEWAY_V4)| \
(1<<ISCSI_INITIATOR_TYPE_PRIMARY_DNS)| \
(1<<ISCSI_INITIATOR_TYPE_SECOND_DNS)| \
#define ISCSI_INITIATOR_TYPE_SUPPORTED_V6_MASK ((1<<ISCSI_INITIATOR_TYPE_ADDR)|(1<<ISCSI_INITIATOR_TYPE_ADDR_V6)| \
(1<<ISCSI_INITIATOR_TYPE_GATEWAY)| \
(1<<ISCSI_INITIATOR_TYPE_GATEWAY_V6)| \
(1<<ISCSI_INITIATOR_TYPE_PRIMARY_DNS)| \
(1<<ISCSI_INITIATOR_TYPE_SECOND_DNS)| \
#define ISCSI_TARGET_TYPE_CONNECT 0x0
#define ISCSI_TARGET_TYPE_IP_ADDR 0x1
#define ISCSI_TARGET_TYPE_TCP_PORT 0x2
#define ISCSI_TARGET_TYPE_BOOT_LUN 0x3
#define ISCSI_TARGET_TYPE_NAME 0x4
#define ISCSI_TARGET_TYPE_CHAP_ID 0x5
#define ISCSI_TARGET_TYPE_CHAP_PSWD 0x6
#define ISCSI_TARGET_TYPE_IP_VER 0x7
#define ISCSI_TARGET2_TYPE_CONNECT 0x8
#define ISCSI_TARGET2_TYPE_IP_ADDR 0x9
#define ISCSI_TARGET2_TYPE_TCP_PORT 0xa
#define ISCSI_TARGET2_TYPE_BOOT_LUN 0xb
#define ISCSI_TARGET2_TYPE_NAME 0xc
#define ISCSI_TARGET2_TYPE_CHAP_ID 0xd
#define ISCSI_TARGET2_TYPE_CHAP_PSWD 0xe
#define ISCSI_TARGET2_TYPE_IP_VER 0xf
#define FCOE_BOOT_SCAN_SELECTION 0x0
#define FCOE_FIRST_WWPN_TARGET 0x1
#define FCOE_FIRST_BOOT_TARGET_LUN 0x2
#define FCOE_FIRST_FCF_VLAN_ID 0x3
#define FCOE_TGT_BOOT 0x4
#define FCOE_TARGET_TYPE_MAX FCOE_TGT_BOOT
typedef DellRspsDefault_t DellRspsCommitNvram_t;
/*****************************************************************************
NcsiDellOemCmdRspPayload_t
this structure defines the response Payload returned after processing
the Oem cmd.
*****************************************************************************/
typedef struct NcsiDellOemCmdRspPayload
{
union
{
// Dell OEM commands Response Payload
DellGetExtendedCapabilitiesCmdRspData_t GetExtendedCapabilities; // 0x01 DELL_OEM_GET_EXTENDED_CAPABILITIES_CMD
DellSetPartitionTxBandwidthCmdRspData_t SetPartitionTxBandwidth; // 0x0D DELL_OEM_SET_PARTITIONCmd_tX_BANDWIDTH_CMD
DellGetPartitionTxBandwidthCmdRspData_t GetPartitionTxBandwidth; // 0x0E DELL_OEM_GET_PARTITIONCmd_tX_BANDWIDTH_CMD
DellEnableDisableOutOfBoxWolCmdRspData_t EnableDisableOutOfBoxWol; // 0x15 DELL_OEM_ENABLE_OUTOFBOX_WOL_CMD and 0x16 DELL_OEM_DISABLE_OUTOFBOX_WOL_CMD
DellRspsGetiScsiInitiatorConf_t GetiScsiInitiatorConf; // 0x1D DELL_OEM_GET_ISCSI_BOOT_INITIATOR_CONFIG_CMD
DellRspsSetiScsiInitiatorConf_t SetiScsiInitiatorConf; // 0x1E DELL_OEM_SET_ISCSI_BOOT_INITIATOR_CONFIG_CMD
};
/*****************************************************************************
NcsiCmdGetParametersRspPayload_t
this structure defines the response frame Payload returned in response to
the get parameters ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetParametersRspPayload
{
/*****************************************************************************
NcsiCmdNcsiTestReadRspPayload_t
this structure defines the response frame Payload returned in response to
the NCSI Test read cmd.
*****************************************************************************/
typedef struct NcsiCmdNcsiTestReadRspPayload
{
/*****************************************************************************
NcsiCmdGetLinkStatusRspPayload_t
this structure defines the response Payload returned after processing
the get link status ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetLinkStatusRspPayload
{
/*****************************************************************************
NcsiCmdGetCapabilitiesRspPayload_t
this structure defines the response Payload returned after processing
the get link status ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetCapabilitiesRspPayload
{
/*****************************************************************************
NcsiCmdGetPortStatisticsRspPayload_t
this structure definition is for the response Payload used when processing
the get i/f statistics ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetPortStatisticsRspPayload
{
/*****************************************************************************
NcsiCmdGetNcsiStatisticsRspPayload_t
this structure definition is for the response Payload used when processing
the get ump i/f statistics ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetNcsiStatisticsRspPayload
{
/*****************************************************************************
NcsiCmdGetNcsiPassThruStatisticsRspPayload_t
this structure definition is for the response Payload used when processing
the get .
*****************************************************************************/
typedef struct NcsiCmdGetNcsiPassThruStatisticsRspPayload
{
typedef NcsiCmdGetNcsiPassThruStatisticsRspPayload_t *pNcsiCmdGetNcsiPassThruStatisticsRspPayload_t;
/*****************************************************************************
NcsiCmdGetControllerVerIdRspPayload_t
this structure definition is for the response Payload used when processing
the get bcm version ID ump cmd.
*****************************************************************************/
typedef struct NcsiCmdGetControllerVerIdRspPayload
{
/*****************************************************************************
NcsiCmdRspPayload_t
this union definition combines the various response Payload definitions
into a single reference.
*****************************************************************************/
typedef union NcsiCmdRspPayload
{
// Dell OEM commands Response Payload
/*****************************************************************************
NcsiRmiiCmdRspPkt_t
this structure definition is for the command response frame that is sent
back to the IMD for each processed UMP command.
IMD command frames are acknowledged by copying the command frame header
into 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 NcsiRmiiCmdRspPkt
{
typedef NcsiRmiiCmdRspPkt_t *pNcsiRmiiCmdRspPkt_t;
/*****************************************************************************
NcsiCmdDefaultAenData_t
Structure definition for most basic Aen data
*****************************************************************************/
typedef struct NcsiCmdDefaultAenData
{
#define NCSI_CMD_AEN_TYPE_LINK_CHANGED (0)
#define NCSI_CMD_AEN_TYPE_SOFT_RESET (1)
#define NCSI_CMD_AEN_TYPE_OS_CHANGED (2)
/*****************************************************************************
NcsiCmdLinkChangedAenData_t
Structure definition for link changed Aen data
*****************************************************************************/
typedef struct NcsiCmdLinkChangedAenData
{
/*****************************************************************************
NcsiCmdOsChangedAenData_t
Structure definition for os changed Aen data
*****************************************************************************/
typedef struct NcsiCmdOsChangedAenData
{
#define UMPCMDPUB_OS_STATE_CHANGED_AEN_OS_ABSENT 0
#define NCSI_CMD_SIZEOF_DEFAULT_AEN_DATA (sizeof (NcsiCmdDefaultAenData_t))
#define NCSI_CMD_SIZEOF_LINK_CHANGED_AEN_DATA (sizeof (NcsiCmdLinkChangedAenData_t))
#define NCSI_CMD_SIZEOF_OS_CHANGED_AEN_DATA (sizeof (NcsiCmdOsChangedAenData_t))
/*****************************************************************************
NcsiCmdDefaultAenPayload_t
Structure definition for most basic Aen Payload
*****************************************************************************/
typedef struct NcsiCmdDefaultAenPayload
{
/*****************************************************************************
NcsiCmdLinkChangedAenPayload_t
Structure definition for Link changed Aen Payload
*****************************************************************************/
typedef struct NcsiCmdLinkChangedAenPayload
{
/*****************************************************************************
NcsiCmdOsChangedAenPayload_t
Structure definition for os chagned Aen Payload
*****************************************************************************/
typedef struct NcsiCmdOsChangedAenPayload
{
/*****************************************************************************
NcsiCmdAenPayload_t
this union definition combines the various Aen Payload definitions
into a single reference.
*****************************************************************************/
typedef union NcsiCmdAenPayload
{
#define NCSI_CMD_SIZEOF_DEFAULT_AEN_PAYLOAD (sizeof (NcsiCmdDefaultAenPayload_t))
#define NCSI_CMD_SIZEOF_LINK_CHANGED_AEN_PAYLOAD (sizeof (NcsiCmdLinkChangedAenPayload_t))
#define NCSI_CMD_SIZEOF_OS_CHANGED_AEN_PAYLOAD (sizeof (NcsiCmdOsChangedAenPayload_t))
/*****************************************************************************
NcsiCmdAenPacket_t
this structure definition is for the UMP AEN frame that is sent to the BMC
for to report asynchronous events.
*****************************************************************************/
typedef struct NcsiCmdAenPacket
{
typedef NcsiCmdAenPacket_t *pNcsiCmdAenPacket_t;
#endif