Linux/qlgcProvider.mof

#pragma locale ("en_US")
#pragma include ("qualifiers.mof")
#pragma include ("qualifiers_optional.mof")
 
class QLGC_ManagedLocalHost
{
    [key]
    uint32 HostHandle;
 
    boolean IsAdmin;
        [Description (
        "OperatingSystem" ),
        ValueMap { "0", "1"},
        Values { "Windows", "Linux"} ]
    uint16 OperatingSystem;
        [Description (
        "Architecture" ),
        ValueMap { "0", "1", "2", "3", "4"},
        Values { "X86", "X86_64", "IA64", "PPC", "PPCLE"} ]
    uint16 Architecture;
     
    // Common for both Linux and windows
    uint32 MajorVersion;
    uint32 MinorVersion;
    uint32 ProductType;
    string osVersion;
     
    //Only for Windows
    uint32 BuildNumber;
    uint32 PlatformId;
    uint16 ServicePackMajor;
    uint16 ServicePackMinor;
    uint16 SuiteMask;
 
    string adapterInfo[];//QLGC_Adapter REF adapterInfo;
    uint32 adapterList[];
     
    //Installed Powerkit version (OMI,CIM/ESXi Provider version)
    string ProviderVersion;
     
    uint32 ConnectHost(
         [IN, Description ( "Host Name or Host IP Address." )]
         string RemoteHost,
              
        [IN, Description ( "System Login UserName." )]
             string LoginUserName,
 
        [IN, Description ( "System Login Password." )]
             string Password,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 DisconnectHostHandle(
         [IN, Description ( "Remote Host Handle." )]
         uint32 RemoteHostHandle,
 
         [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 DisconnectHost(
         [IN, Description ( "Host Name or Host IP Address." )]
         string RemoteHost,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
          
    uint32 RefreshHost(
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SetRemoteAgentPassword(
        [IN, Description ( "Remote Host Handle." )]
             uint32 RemoteHostHandle,
                  
        [IN, Description ( "System Login UserName." )]
             string SysLoginUserName,
 
        [IN, Description ( "System Login Password." )]
             string SysPassword,
 
        [IN, Description ( "Old Agent Password." )]
             string OldPassword,
 
        [IN, Description ( "New Agent Password." )]
             string NewPassword,
 
        [IN, Description ( "Verify New Agent Password." )]
             string VerifyPassword,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 RefreshHandle(
        [IN, Description ( "Handle." )]
             uint32 Handle,
              
        [IN, Description ( "uRefreshFlags."
                            "GAM_kAll = 0xFFFFFFFF, "
                            "GAM_kPhyAdapters = 0x00000002, "
                            "GAM_kCfgApi = 0x00000004, "
                            "GAM_kiSCSIDevice = 0x00000008, "
                            "GAM_kISCSITargets = 0x00000010, "
                            "GAM_kISNSServer = 0x00000020, "
                            "GAM_kPhyPorts = 0x00000040, "
                            "GAM_kFunctions = 0x00000080, "
                            "GAM_kResCfg = 0x00000100, "
                            "GAM_kNdisDevices = 0x00000200, "
                            "GAM_kISCSIDevices = 0x00000400, "
                            "GAM_kFCoEDevices = 0x00000800, " )]
             uint32 uRefreshFlags,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 AddiSNSServer(
        [IN, Description ( "ISNS ServerName." )]
             string ISNSServerName,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 RemoveiSNSServer(
        [IN, Description ( "ISNS ServerName." )]
             string ISNSServerName,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 RefreshiSNSServer(
        [IN, Description ( "ISNS ServerName." )]
             string ISNSServerName,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 GetiSNSServers(
             
        [OUT, Description ( "ISNS ServerName." )]
             string ISNSServerName[],
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 AddDiscoveryPortal(
 
        [IN, Description ( "Host Handle." )]
             uint32 iSCSIHandle,
 
        [IN, Description ( "IP Address." )]
             string IPAddress,
 
        [IN, Description ( "PortNumber." )]
             uint16 PortNumber,
 
        [IN, Description ( "AuthType." ),
            ValueMap { "0", "1", "2"},
            Values { "NONE", "CHAP", "MUT_CHAP"}]
             uint8 AuthType,
 
        [IN, Description ( "User Name." )]
             string UserName,
 
        [IN, Description ( "Password." )]
             string Password,
 
        [IN, Description ( "User ID (LinuxOnly)." )]
             string UserIDLinuxOnly,
 
        [IN, Description ( "Password (linuxOnly)." )]
             string PasswordLinuxOnly,
             
        [IN, Description ( "ifaceFileName." )]
             string ifaceFileName,
              
        [IN, Description ( "Iser" )]
             boolean Iser,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 RemoveDiscoveryPortal(
        [IN, Description ( "Discovery Portal Handle." )]
             uint32 DiscoveryPortalHandle,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 AddiSCSIStaticTarget(
        [IN, Description ( "TargetName." )]
             string TargetName,
 
        [IN, Description ( "TargetAlias." )]
             string TargetAlias,
 
        [IN, Description ( "HBAInstanceName." )]
             string HBAInstanceName,
              
        [IN, Description ( "IPAddresses." )]
             string IPAddress,
 
        [IN, Description ( "IfaceName." )]
             string IfaceName,
              
        [IN, Description ( "PortNumbers." )]
             uint32 PortNumber,
 
        [OUT, Description ( "TargetHandle." )]
             uint32 TargetHandle,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 RemoveHostTarget(
        [IN, Description ( "TargetHandle." )]
             uint32 TargetHandle,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 UpgradeAll(
        [IN, Description ( "MBI Image file full Path" )]
             string ImageMBI,
        [OUT, Description ( "Host-Adapter" )]
             string HostAdapter[]);
 
 
    uint32 SaveAllConfigXML(
        [IN, Description ( "Directory Path " )]
             string DirectoryPath,
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
              
};
 
class QLGC_ManagedRemoteHost
{
    [key]
    uint32 HostHandle;
 
    boolean IsAdmin;
        [Description (
        "OperatingSystem" ),
        ValueMap { "0", "1"},
        Values { "Windows", "Linux"} ]
    uint16 OperatingSystem;
        [Description (
        "Architecture" ),
        ValueMap { "0", "1", "2", "3", "4"},
        Values { "X86", "X86_64", "IA64", "PPC", "PPCLE"} ]
    uint16 Architecture;
     
    // Common for both Linux and windows
    uint32 MajorVersion;
    uint32 MinorVersion;
    uint32 ProductType;
    string osVersion;
     
    //Only for Windows
    uint32 BuildNumber;
    uint32 PlatformId;
    uint16 ServicePackMajor;
    uint16 ServicePackMinor;
    uint16 SuiteMask;
     
    string IPAddress;
     
    string adapterInfo[];//QLGC_Adapter REF adapterInfo;
    uint32 adapterList[];
};
 
class QLGC_Adapter {
 
    string Description;
    string Title;
    string Manufacturer;
    string Serialnumber;
    [key]
    uint32 HostHandle;
 
    [key]
    uint32 AdapterHandle;
     
    string ASICVersion;
    string BackupMACAddress;
     
    uint32 UniqueId;
    uint32 VendorID;
    uint32 DeviceID;
    uint32 SubsystemVendorID;
    uint32 SubsystemID;
    uint32 SlotNumber;
        [Description (
        "BusType" ),
        ValueMap { "0", "1", "2", "3", "4", "5"},
        Values { "Unknown", "Unsupported", "PCI", "PCMCIA", "1394", "USB"} ]
    uint32 BusType;
        [Description (
        "BusMode" ),
        ValueMap { "0", "1", "2", "3"},
        Values { "Unknown", "PCI", "PCIX", "PCIE"} ]
    uint32 BusMode;
        [Description (
        "PCIESpeed" ),
        ValueMap { "0", "1", "2", "3"},
        Values { "SpeedUnknown", "Speed25", "Speed50", "Speed75"} ]
    uint32 PCIESpeed;
        [Description (
        "BusWidth" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
        Values { "Unknown", "32bit", "64bit", "PCIE_1x", "PCIE_2x", "PCIE_4x", "PCIE_8x", "PCIE_12x", "PCIE_16x", "PCIE_32x"} ]
    uint32 BusWidth;
        [Description (
        "Adapter Type" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6"},
        Values { "NON_QLOGIC_NIC", "RESERVED_1", "RESERVED_2", "UNKNOWN_NIC", "BRCM5706", "BRCM57710", "BRCM579XX"} ]
    uint32 Type;
    uint32 ChipRevID;
    uint32 InternalRAMSize;
    uint32 BARSize;
    uint32 MemBaseLow2;
    uint32 MemBaseHigh2;
    uint32 MBAVendorFlags;
    uint32 ISCSIBootFlags;
    uint32 NVRAMSize;
     
        [Description (
        "Temperature in Celsius" ) ]
     uint32 Temperature;
 
    uint32 InterruptInfo_IntType;
    uint32 InterruptInfo_IntPin;
    uint32 InterruptInfo_IntLine;
    uint32 InterruptInfo_MsiVersion;
    uint32 InterruptInfo_NumOfEnabledMsgs;
    uint32 InterruptInfo_NumOfCapableMsgs;
     
    uint32 portList[];
 
    string portInfo[];//QLGC_PortInfo REF portInfo;
    string vpdInfo; //QLGC_VPDInfo REF vpdInfo;
    string firmwareInfo; //QLGC_FirmwareInfo REF firmwareInfo;
     
    uint32 SaveVLANConfig(
 
        [IN, Description ( "XML file path" )]
             string VLANConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage[]);
              
    uint32 SetVLANConfig(
 
        [IN, Description ( "XML file path" )]
             string VLANConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SaveAdapterAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string AdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SetAdapterAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string AdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SaveSRIOVConfig(
 
        [IN, Description ( "XML file path" )]
             string SRIOVConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SetSRIOVConfig(
 
        [IN, Description ( "XML file path" )]
             string SRIOVConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SaveAdapterMdumpToFile(
 
        [IN, Description ( "Mdump file path" )]
             string MdumpFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
                           
};
 
class QLGC_AdapterAdvancedParameter {
    [key]
    uint32 AdapterHandle;
    [key]
    string Name;
 
    string Description;
    [Write]
    string StrCurrentValue;
    string StrDefaultValue;
     
    uint64 Base;
    uint32 Min;
    uint32 Max;
    uint32 Step;
        [Write]
    uint32 CurrentValue;
    uint32 DefaultValue;
        [Write]
    uint32 EnumCurrentValue;
    uint32 EnumDefaultValue;
     [ Description (
        "Type" ),
        ValueMap { "0", "1", "2"},
        Values { "IntParam", "EnumParam", "StringParam" } ]
    uint8 Type;
     
    uint32 Value[];
    string ValueDescription[];
 
};
 
class QLGC_VPDInfo {
    [key]
    uint32 AdapterHandle;
 
    string tag[];
    string value[];
 
};
 
class QLGC_FirmwareInfo {
    [key]
    uint32 AdapterHandle;
    string FirmwareVersion[];
        [Description (
        "Firmware Type" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
        "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28"},
        Values { "BootCode", "BootCode2", "PXE", "ISCSI", "UMP", "IPMI",
        "NCSI", "ASF", "DASH", "TSTORM", "CSTORM", "XSTORM", "USTORM", "FCoE",
        "FCode", "EFI_X86", "EFI_IPF", "EFI_EBC", "EFI_X64", "MFW", "SMASH", "MGMT_NA", "CCM", "MBI", "External_PHY",
        "INIT_HW", "MFG_Kit_Version", "MFG_Kit_Time", "PLDM" } ]
    uint32 FirmwareType[];
 
};
 
class QLGC_PortInfo {
 
    string Description;
    string Title;
     
    [key]
    uint32 UniqueId;
 
    uint32 AdapterHandle;
     
    uint32 BusNumber;
    uint32 DeviceNumber;
    uint32 NoOfFunctions;
    uint32 DuplexSetting;
    uint32 LinkSpeed;
     [Description (
        "LinkStatus" ),
        ValueMap { "0", "1"},
        Values { "LinkDown", "LinkUp" } ]
    uint32 LinkState;
      [Description (
        "PhysicalMediaType" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8"},
        Values { "Unknown", "UTP", "BNC", "AUI", "FIBER", "SERDES", "SERDES_SGMII", "XGXS", "XGXS_SGMII"} ]
    uint32 PhysicalMediaType;
      [Description (
        "HWCfgPhyMediaType" ),
        ValueMap { "0", "1", "2", "3" },
        Values { "Unknown", "Copper", "Fiber", "Backplane"} ]
    uint32 HWCfgPhyMediaType;
    uint32 PortNumber;
    uint32 Revision;
    uint32 UINumber;
    uint32 IRQ;
      [Description (
        "LineSpeed" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
        Values { "QLMAPI_LM_LINE_SPEED_UNKNOWN", "QLMAPI_LM_LINE_SPEED_10MBPS", "QLMAPI_LM_LINE_SPEED_100MBPS",
        "QLMAPI_LM_LINE_SPEED_1000MBPS", "QLMAPI_LM_LINE_SPEED_2500MBPS", "QLMAPI_LM_LINE_SPEED_10GBPS", "QLMAPI_LM_LINE_SPEED_20GBPS",
        "QLMAPI_LM_LINE_SPEED_25GBPS", "QLMAPI_LM_LINE_SPEED_40GBPS","QLMAPI_LM_LINE_SPEED_50GBPS", "QLMAPI_LM_LINE_SPEED_100GBPS"} ]
    uint32 LineSpeed;
    string DMIData[];
     
    string stats;//QLGC_PortStats
    string lldpInfo;// QLGC_PortLLDPInfo
    string dcbxInfo;//QLGC_PhysicalPortDCBXInfo
    string transceiverInfo;//QLGC_TransceiverInfo
     
      [Description (
        "SmartANMode" ),
        ValueMap { "0", "1","100"},
        Values { "Disabled", "Enabled", "NA"} ]
    uint32 SmartANMode;
    [Description (
        "NVMSpeed" ),
        ValueMap { "0", "1","2","4","5","6","7","100","4294967295"},
        Values { "AutoNeg", "1G","10G","25G","40G","50G","100G","NA","Unknown"} ]
    uint32 NVMSpeed;
     
    [Description (
        "FECANMode" ),
        ValueMap { "0", "1","2","3","4","5","6","98","99","100"},
        Values { "None", "10G_Firecode", "25G_Firecode","10G_And_25G_Firecode","25G_RS","25G_Firecode_and_RS","ALL","Enabled","Disabled","NA"} ]
    uint32 FECANmode;
     
    [Description (
        "FECForcedMode" ),
        ValueMap { "0", "1","2","7","100"},
        Values { "None", "Firecode", "RS","Auto","NA"} ]
    uint32 FECForcedMode;
     
    uint32 FunctionList[];
    string functions[];//QLGC_Function REF functions;
    string DCBXBufferData;
    uint32 SpeedCapability;
    uint32 SysLockdownCap;
    uint32 SysLockdownState;
    uint32 PortShutMode;
     
};
 
class QLGC_PhyPortBootConfig {
     
    [key]
    uint32 UniqueId;
 
        [Write, Description (
        "BootProtocol" ),
        ValueMap { "0", "1", "2", "3", "4", "5"},
        Values { "BOOT_BMAPI_MBA_BOOT_PROT_NONE", "BOOT_BMAPI_MBA_BOOT_PROT_PXE", "BOOT_BMAPI_MBA_BOOT_PROT_RPL",
        "BOOT_BMAPI_MBA_BOOT_PROT_BOOTP", "BOOT_BMAPI_MBA_BOOT_PROT_ISCSI", "BOOT_BMAPI_MBA_BOOT_PROT_FCOE"} ]
    uint32 BootProtocol;
     
        [Write, Description (
        "BootStrapType" ),
        ValueMap { "0", "1", "2", "3"},
        Values { "BOOT_BMAPI_MBA_BOOTSTRAP_AUTO", "BOOT_BMAPI_MBA_BOOTSTRAP_BBS", "BOOT_BMAPI_MBA_BOOTSTRAP_INT18H",
        "BOOT_BMAPI_MBA_BOOTSTRAP_INT19H"} ]
    uint32 BootStrapType;
        [Write, Description ("in seconds (0-15)" ) ]
    uint32 BannerTimeout;
        [Write, Description ("false for Ctrl-S, true for Ctrl-B" ) ]
    uint32 HotKey;
        [Write, Description (
        "LinkSpeed" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10","11", "12", "13", "14"},
        Values { "BOOT_BMAPI_MBA_SPEED_AUTO", "BOOT_BMAPI_MBA_SPEED_10H", "BOOT_BMAPI_MBA_SPEED_10F",
        "BOOT_BMAPI_MBA_SPEED_100H", "BOOT_BMAPI_MBA_SPEED_100F", "BOOT_BMAPI_MBA_SPEED_1000H", "BOOT_BMAPI_MBA_SPEED_1000F",
        "BOOT_BMAPI_MBA_SPEED_2_5G", "BOOT_BMAPI_MBA_SPEED_10G_CX4","BOOT_BMAPI_MBA_SPEED_20G","BOOT_BMAPI_MBA_SPEED_25G","BOOT_BMAPI_MBA_SPEED_40G",
        "BOOT_BMAPI_MBA_SPEED_50G","BOOT_BMAPI_MBA_SPEED_100G", "SmartAN(TM)"} ]
    uint32 LinkSpeed;
        [Write]
    uint32 VLANID;
        [Write]
    uint32 BootRetryCount;
    uint32 Valid;
 
    [Write]
    boolean BannerEnabled;
        [Write]
    boolean OptionROM;
        [Write]
    boolean PrebootWakeOnLAN;
        [Write]
    boolean VLANMode;
    boolean PreventFCoE;
    boolean PreventISCSI;
     
    uint32 SavePhyPortMBABootConfig(
 
        [IN, Description ( "XML file path" )]
             string MBABootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SetPhyPortMBABootConfig(
 
        [IN, Description ( "XML file path" )]
             string MBABootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_PhyPortLLDPConfig {
    [key]
    uint32 PortID;
 
    Boolean IsCurrent;
 
        [Write]
    uint32 MsgTxInterval;
        [Write]
    uint32 MsgTxHold;
        [Write]
    uint32 MsgFastTx;
        [Write]
    uint32 TxCreditMax;
        [Write]
    uint32 TxFast;
    uint32 Valid;
        [Write]
    boolean OverwriteSettings;
};
 
class QLGC_PhysicalPortDCBXCfg {
 
    [key]
    uint32 UniqueId;
 
    Boolean IsCurrent;
   
        [Write]
    uint32 AdminPriorityApp_AppId[];
        [Write]
    uint32 AdminPriorityApp_Valid[];
        [Write]
    uint32 AdminPriorityApp_Priority[];
        [Write]
    uint32 AdminPriorityApp_TrafficType[];
 
        [Write]
    uint8 AdminConfigurationBwPercentage[];
        [Write]
    uint8 AdminConfigurationEtsPg[];
        [Write]
    uint8 AdminRecommendationBwPercentage[];
        [Write]
    uint8 AdminRecommendationEtsPg[];
     
        [Write]
    uint32 AdminDcbxVersion;
        [Write]
    uint32 AdminPfcBitmap;
        [Write]
    uint32 AdminDefaultPriority;
        [Write]
    uint32 Valid;
 
         [Write, Description ( "#define GAM_DCBX_CURRENT_STATE_IS_SYNC GAM_BIT_0"
                "#define GAM_PFC_IS_CURRENTLY_OPERATIONAL GAM_BIT_1"
                "#define GAM_ETS_IS_CURRENTLY_OPERATIONAL GAM_BIT_2"
                "#define GAM_PRIORITY_TAGGING_IS_CURRENTLY_OPERATIONAL GAM_BIT_3"
                "#define GAM_DRIVER_CONFIGURED_BY_OS_QOS GAM_BIT_4"
                "#define GAM_DRIVER_CONFIGURED_BY_OS_QOS_TO_WILLING GAM_BIT_5." )]
    uint32 DCBCurrentOperStateBitmap;
 
        [Write]
    boolean OverwriteSettings;
        [Write]
    boolean DcbEnable;
        [Write]
    boolean AdminDcbxEnable;
        [Write]
    boolean AdminEtsEnable;
        [Write]
    boolean AdminEtsConfigurationTxEnable;
        [Write]
    boolean AdminEtsRecommendationTxEnable;
        [Write]
    boolean AdminEtsWilling;
        [Write]
    boolean AdminEtsRecoValid;
        [Write]
    boolean AdminPfcEnable;
        [Write]
    boolean AdminPfcTxEnable;
        [Write]
    boolean AdminPfcWilling;
        [Write]
    boolean AdminTcSupportedTxEnable;
        [Write]
    boolean AdminApplicationPriorityTxEnable;
        [Write]
    boolean AdminAppPriorityWilling;
 
};
 
class QLGC_PortStats {
    [key]
    uint32 PortID;
 
    uint64 DCBXFramesSent;
    uint64 DCBXFramesReceived;
    uint64 PFCFramesSent;
    uint64 PFCFramesReceived;
 
};
 
class QLGC_PortLLDPInfo {
    [key]
    uint32 PortHandle;
    string RemoteChassisID;
    string RemotePortID;
     
        [Description (
        "AdminStatus" ),
        ValueMap { "1", "2", "3", "4"},
        Values { "QLMAPI_LLDP_TX_ONLY", "QLMAPI_LLDP_RX_ONLY", "QLMAPI_LLDP_TX_RX", "QLMAPI_LLDP_DISABLED"} ]
    uint32 AdminStatus;
     
    uint32 LocalChassisID[];
    uint32 LocalPortID[];
};
 
class QLGC_PhysicalPortDCBXInfo {
    [key]
    uint32 PortID;
 
    uint32 LocalPriorityAppTable_AppId[];
    uint32 LocalPriorityAppTable_Valid[];
    uint32 LocalPriorityAppTable_Priority[];
    uint32 LocalPriorityAppTable_TrafficType[];
     
    uint32 RemotePriorityAppTable_AppId[];
    uint32 RemotePriorityAppTable_Valid[];
    uint32 RemotePriorityAppTable_Priority[];
    uint32 RemotePriorityAppTable_TrafficType[];
     
    uint8 RemoteConfigBwPercentage[];
    uint8 RemoteConfigEtsPg[];
    uint8 RemoteRecommendationBwPercentage[];
    uint8 RemoteRecommendationEtsPg[];
    uint8 LocalConfigBwPercentage[];
    uint8 LocalConfigEtsPg[];
 
 
    uint32 LocalTcSupported;
    uint32 LocalPfcCaps;
    uint32 RemoteTcSupported;
    uint32 RemotePfcCap;
    uint32 RemotePfcBitmap;
    uint32 LocalPfcBitmap;
    uint32 DCBRetrieveMethod;
 
    boolean LocalEtsEnable;
    boolean LocalPfcEnable;
    boolean RemoteEtsWilling;
    boolean RemoteEtsRecoValid;
    boolean RemotePfcWilling;
    boolean RemoteAppPriorityWilling;
    boolean PfcMismatch;
    boolean PriorityAppMismatch;
 
};
 
class QLGC_TransceiverInfo {
    [key]
    uint32 PortID;
    string vendor;
    string model;
    string serialNumber;
    string revision;
    string mfgDate;
};
 
class QLGC_Function {
    [key]
    uint32 UniqueId;
 
    string InstanceId;
    string Description;
    string Title;
    string DriverVersion;
    string DriverDate;
    string DriverName;
    string MemoryAddress;
 
    string permanentMAC;
    string iSCSIMACAddr;
    string FCoEMACAddr;
 
    string FCoENodeWWN;
    string FCoEPortWWN;
        [Write]
    Boolean SRIOVEnabled;
        [Write]
    uint32 NumOfVF;
 
 
    uint32 BusNo;
    uint32 DeviceNo;
    uint32 FunctionNo;
    uint32 InterruptRequest;
    uint32 MsiVersion;
    uint32 MFMode;
     [Description (
        "LinkStatus" ),
        ValueMap { "0", "1"},
        Values { "LinkDown", "LinkUp" } ]
    uint32 LinkState;
    uint32 DriverInterfaceVersionMajor;
    uint32 DriverInterfaceVersionMinor;
    uint32 DrvBuildVerNum;
     
        [Description ( "SupportedFlags"
            "GAM_DRV_RSS_ENABLED 0x00000004 // 1 if driver is doing RSS, 0 if not"
            "GAM_DRV_BOOT_INTF 0x00000008 // 1 if the interface is a boot interface"
            "GAM_DRV_ISCSI_BOOT_INTF GAM_DRV_BOOT_INTF"
            "GAM_REMOTE_PHY_CAPABLE 0x00000010 // 1 if the interface capable of remote PHY"
            "GAM_REMOTE_PHY_ACTIVE 0x00000020 // 1 if the interface is using remote PHY"
            "// Determine which MFW is currently ruinning in NX2"
            "GAM_MFW_RUN_UNKNOWN 0x00000000"
            "GAM_MFW_RUN_IPMI 0x00000040"
            "GAM_MFW_RUN_UMP 0x00000080"
            "GAM_MFW_RUN_NCSI 0x000000c0"
            "GAM_MFW_RUN_NONE 0x000001c0"
            "GAM_MFW_RUN_MASK 0x000001c0"
            "GAM_REMOTE_PHY_MODULE_PRESENT 0x00000200 // 1 if the remote PHY module is present"
            "GAM_DRV_ISCSI_BOOT_HBA 0x00000400 // 1 if the interface ISCSI boot from HBA, applicable only for BRCM iSCSI boot"
            "GAM_DRV_ISCSI_BOOT_NDIS 0x00000800 // 1 if the interface ISCSI boot from NDIS, applicable only for BRCM iSCSI boot"
            "GAM_EXT_PHY 0x00001000 // 1 if the port is using external PHY, applicable only for 57710 family"
            "GAM_WOL_NO_VAUX 0x00002000 // 1 if the port does not have Vaux power to support WOL, applicable only for 5706 family"
            "GAM_DRV_FCOE_BOOT_HBA 0x00004000 // 1 if the interface ISCSI boot from HBA, applicable only for BRCM FCoE boot"
            "GAM_VBD_NO_L4 0x40000000 // 1 if it is VBD but no L4 support."
            "GAM_EXT_INFO_VALID 0x80000000 // 1 if 'intr_info' is valid"
            "GAM_DRV_RSS_ENABLED 0x00000004 // 1 if driver is doing RSS, 0 if not"
            "GAM_DRV_BOOT_INTF 0x00000008 // 1 if the interface is a boot interface"
            "GAM_DRV_ISCSI_BOOT_INTF GAM_DRV_BOOT_INTF"
            "GAM_REMOTE_PHY_CAPABLE 0x00000010 // 1 if the interface capable of remote PHY"
            "GAM_REMOTE_PHY_ACTIVE 0x00000020 // 1 if the interface is using remote PHY"
            "// Determine which MFW is currently ruinning in NX2"
            "GAM_MFW_RUN_UNKNOWN 0x00000000"
            "GAM_MFW_RUN_IPMI 0x00000040"
            "GAM_MFW_RUN_UMP 0x00000080"
            "GAM_MFW_RUN_NCSI 0x000000c0"
            "GAM_MFW_RUN_NONE 0x000001c0"
            "GAM_MFW_RUN_MASK 0x000001c0"
            "GAM_REMOTE_PHY_MODULE_PRESENT 0x00000200 // 1 if the remote PHY module is present"
            "GAM_DRV_ISCSI_BOOT_HBA 0x00000400 // 1 if the interface ISCSI boot from HBA, applicable only for BRCM iSCSI boot"
            "GAM_DRV_ISCSI_BOOT_NDIS 0x00000800 // 1 if the interface ISCSI boot from NDIS, applicable only for BRCM iSCSI boot"
            "GAM_EXT_PHY 0x00001000 // 1 if the port is using external PHY, applicable only for 57710 family"
            "GAM_WOL_NO_VAUX 0x00002000 // 1 if the port does not have Vaux power to support WOL, applicable only for 5706 family"
            "GAM_DRV_FCOE_BOOT_HBA 0x00004000 // 1 if the interface ISCSI boot from HBA, applicable only for BRCM FCoE boot"
            "GAM_VBD_NO_L4 0x40000000 // 1 if it is VBD but no L4 support."
            "GAM_EXT_INFO_VALID 0x80000000 // 1 if 'intr_info' is valid")]
    uint32 SupportedFlags;
    uint32 FlowCtrl;
     
        [Description (
                    "// External PHY configuration "
                "GAM_EXT_PHY_XGXS_EXT_PHY_ADDR_MASK 0x000000ff "
                "GAM_EXT_PHY_XGXS_EXT_PHY_ADDR_SHIFT 0 "
                " "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_MASK 0x0000ff00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_SHIFT 8 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_DIRECT 0x00000000 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8071 0x00000100 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8072 0x00000200 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8073 0x00000300 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8705 0x00000400 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8706 0x00000500 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8726 0x00000600 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8481 0x00000700 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_SFX7101 0x00000800 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8727 0x00000900 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8727_NOC 0x00000a00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM84823 0x00000b00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM54640 0x00000c00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM84833 0x00000d00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM54618SE 0x00000e00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM8722 0x00000f00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM54616 0x00001000 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_BCM84834 0x00001100 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_DIRECT_WC 0x0000fc00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_FAILURE 0x0000fd00 "
                "GAM_EXT_PHY_XGXS_EXT_PHY_TYPE_NOT_CONN 0x0000ff00 "
                " "
                "GAM_EXT_PHY_SERDES_EXT_PHY_ADDR_MASK 0x00ff0000 "
                "GAM_EXT_PHY_SERDES_EXT_PHY_ADDR_SHIFT 16 "
                " "
                "GAM_EXT_PHY_SERDES_EXT_PHY_TYPE_MASK 0xff000000 "
                "GAM_EXT_PHY_SERDES_EXT_PHY_TYPE_SHIFT 24 "
                "GAM_EXT_PHY_SERDES_EXT_PHY_TYPE_DIRECT 0x00000000 "
                "GAM_EXT_PHY_SERDES_EXT_PHY_TYPE_BCM5482 0x01000000 "
                "GAM_EXT_PHY_SERDES_EXT_PHY_TYPE_NOT_CONN 0xff000000")]
    uint32 ExtPhyConfig;
    uint32 ExtPhyConfig2;
    uint32 PhyLinkSpeedMBPS;
    uint32 MaxPhyPorts;
 
        [Description (
                        "PortDefaultConfig // Available only for NX2 10G devices."
                "GAM_PORT_HW_CFG_NET_SERDES_IF_MASK 0x0F000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_SHIFT 24 "
                "GAM_PORT_HW_CFG_NET_SERDES_IF_SGMII 0x00000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_XFI 0x01000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_SFI 0x02000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_KR 0x03000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_DXGXS 0x04000000"
                "GAM_PORT_HW_CFG_NET_SERDES_IF_KR2 0x05000000")]
    uint32 PortDefaultConfig;
 
        [Description (
                "// Available only for NX2 10G devices."
                "#define GAM_DEV_VIRT_CAPS_VF_DEVICE BIT_0 // 0 - PF device; 1 - VF device "
                "#define GAM_DEV_VIRT_CAPS_PF_SRIOV_CAPABLE BIT_1 // If PF: 0 - no SRIOV; 1 - SRIOV capable "
                "#define GAM_DEV_VIRT_CAPS_PF_SRIOV_HW_SUPPORT BIT_2 // If PF is SRIOV capable: "
                                                                              "// 0 - SRIOV is not involved/configured; "
                                                                              "// 1 - configured for SRIOV, SRIOV extended capability is exposed in PCI configuration space"
                "#define GAM_DEV_VIRT_CAPS_PF_SRIOV_OS_SUPPORT BIT_3 // If PF device involves SRIOV: "
                                                                              "// 0 - OS does not support SRIOV (at does not involve SRIOV for this PF) "
                                                                              "// 1 - OS provides SRIOV support for this PF, so PF is ready for SRIOV switch functionality" )]
    uint32 VirtualizationCaps;
 
        [Description (
                "Available only for NX2 10G devices. "
                "For BMAPI_DEV_VIRT_CAPS_PF_SRIOV_HW_SUPPORT: Max number of VFs exposed "
                "by SRIOV extended capability in PCI configuration space. "
                "For BMAPI_DEV_VIRT_CAPS_VF_DEVICE: type of HOST OS/hyervisor: "
                "0: Windows8 (SW VF/PF interface) "
                "1: VMware/Linux (HW/FW VF/PF interface" )]
    uint32 VirtualizationProps;
     
        [Description ( "SupportedTests" ),
            ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
            Values { "CONTROL_REGISTERS_TEST", "MII_REGISTERS_TEST", "INTERNAL_MEMORY_TEST",
            "EEPROM_TEST", "INTERRUPT_TEST", "LOOPBACK_MAC_TEST", "LOOPBACK_PHYSICAL_TEST",
            "CPU_TEST", "LED_TEST", "ISCSI_PING_TEST", "CABLE_TEST", "NIC_NW_TEST" }]
    uint16 SupportedTests[];
    uint16 SupportedTestCount;
 
    boolean DriverLoaded;
    boolean IsResourceReadOnly;
 
    string resCfgParams;//QLGC_ResourceConfigParams
 
    uint32 nicList[];
    string nicFunctions[]; //QLGC_NicFunction REF nicFunctions;
    uint32 FCoEList[];
    string fcoeFunctions[]; //QLGC_FCoEFunction REF fcoeFunctions;
    uint32 iSCSIList[];
    string iscsiFunctions[];//QLGC_IscsiFunction REF iscsiFunctions;
 
    string params;//QLGC_FunctionParameter REF params;
     
    string stats;//QLGC_FCoEStats REF stats;
    string bootConfig[];// QLGC_FCoEBootConfigInfo REF bootConfig;
     
    uint32 RunFuncDiagnostic(
        [IN, Description ( "Diagnostic Type." ),
            ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "10"},
            Values { "CONTROL_REGISTERS_TEST", "MII_REGISTERS_TEST", "INTERNAL_MEMORY_TEST",
            "EEPROM_TEST", "INTERRUPT_TEST", "LOOPBACK_MAC_TEST", "LOOPBACK_PHYSICAL_TEST",
            "CPU_TEST", "LED_TEST", "CABLE_TEST" }]
             uint32 DiagTests[],
             
        [IN, Description ( "BlinkDuration." )]
             uint32 BlinkDuration,
              
        [IN, Description ( "Number of iterations." )]
             uint32 Number_of_iterations,
              
        [OUT, Description ( "Number of tests passed in the order of CONTROL_REGISTERS_TEST, MII_REGISTERS_TEST, INTERNAL_MEMORY_TEST, "
            "EEPROM_TEST, INTERRUPT_TEST, LOOPBACK_MAC_TEST, LOOPBACK_PHYSICAL_TEST, CPU_TEST, LED_TEST" )]
             uint32 DiagStatus[],
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 UpgradeFW(
        [IN, Description (
        "Firmware Type- Currently Supported MBI" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
        "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"},
        Values { "BootCode", "BootCode2", "PXE", "ISCSI", "UMP", "IPMI",
        "NCSI", "ASF", "DASH", "TSTORM", "CSTORM", "XSTORM", "USTORM", "FCoE",
        "FCode", "EFI_X86", "EFI_IPF", "EFI_EBC", "EFI_X64", "MFW", "SMASH", "MGMT_NA", "CCM", "MBI"} ]
        uint32 FirmwareType,
 
        [IN, Description ( "Reset" )]
                     boolean Reset,
 
            [IN, Description ( "Force Upgrade" )]
                     boolean Force,
 
        [IN, Description ( "Firmware Image File Path" )]
             string ImageFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 GetCustomDiagnosticData(
 
        [IN, Description ( "Diagnostic Data File Path" )]
             string DiagDataFilePath,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
};
 
class QLGC_ResourceConfigParams
{
    [key]
    uint32 FunctionHandle;
    [key]
    uint32 AdapterHandle;
    uint32 ToeLicensedConnections;
    uint32 ToeReservedConnections;
    uint32 ToeMaxConnections;
    uint32 ToeConnectionLimit;
    uint32 IscsiLicensedConnections;
    uint32 IscsiReservedConnections;
    uint32 IscsiMaxConnections;
    uint32 IscsiPendingTask;
    uint32 FcoeLicensedConnections;
    uint32 FcoeMaxConnections;
    uint32 FcoePendingTask;
    uint32 FcoePendingTaskSession;
    uint32 RdmaLicensedConnections;
    uint32 RdmaReservedConnections;
    uint32 RdmaMaxConnections;
    uint32 IserLicensedConnections;
    uint32 IserReservedConnections;
    uint32 MemoryConsumption;
      
     [Description (
        "StorageEnum" ),
        ValueMap { "0", "1", "2"},
        Values { "GAM_RES_CFG_NVM_ENUM_NONE", "GAM_RES_CFG_NVM_ENUM_FCOE", "GAM_RES_CFG_NVM_ENUM_ISCSI" } ]
    uint32 StorageEnum;
 
    [Write]
    boolean ToeRssPossible;
    [Write]
    boolean EnableToeRSS;
    [Write]
    boolean EnableNDIS;
    [Write]
    boolean EnableTOEChimney;
    [Write]
    boolean EnableISCSI;
    [Write]
    boolean EnableFCOE;
    [Write]
    boolean EnableRDMA;
    boolean FirstComeFirstServedDisabled;
    [Write]
    boolean ConfigToeIpv6;
    [Write]
    boolean ConfigIscsiIpv6;
    [Write]
    boolean PreventFCoE;
    [Write]
    boolean PreventISCSI;
 
};
 
class QLGC_PortAdavancedParameter {
    [key]
    uint32 PortHandle;
    [key]
    string Name;
 
    string Description;
    [Write]
    string StrCurrentValue;
    string StrDefaultValue;
     
    uint64 Base;
    uint32 Min;
    uint32 Max;
    uint32 Step;
        [Write]
    uint32 CurrentValue;
    uint32 DefaultValue;
        [Write]
    uint32 EnumCurrentValue;
    uint32 EnumDefaultValue;
     [ Description (
        "Type" ),
        ValueMap { "0", "1", "2"},
        Values { "IntParam", "EnumParam", "StringParam" } ]
    uint8 Type;
     
    uint32 Value[];
    string ValueDescription[];
 
    uint32 SavePortAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string PortAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SetPortAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string PortAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_ndisAdvancedParameter {
    [key]
    uint32 ndisHandle;
    [key]
    string Name;
 
    string Description;
    [Write]
    string StrCurrentValue;
    string StrDefaultValue;
     
    uint64 Base;
    uint32 Min;
    uint32 Max;
    uint32 Step;
        [Write]
    uint32 CurrentValue;
    uint32 DefaultValue;
        [Write]
    uint32 EnumCurrentValue;
    uint32 EnumDefaultValue;
     [ Description (
        "Type" ),
        ValueMap { "0", "1", "2"},
        Values { "IntParam", "EnumParam", "StringParam" } ]
    uint8 Type;
     
    uint32 Value[];
    string ValueDescription[];
     
    uint32 GetEnumParamValuesDesc(
        [IN, Description ( "Name" )]
         string Name,
              
        [OUT, Description ( "Value" )]
             uint32 Value[],
             
        [OUT, Description ( "ValueDescription" )]
             string ValueDescription[],
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
     
};
 
class QLGC_FunctionParameter {
    [key]
    uint32 FunctionHandle;
    [key]
    string Name;
 
    string Description;
    [Write]
    string StrCurrentValue;
    string StrDefaultValue;
     
    uint64 Base;
    uint32 Min;
    uint32 Max;
    uint32 Step;
        [Write]
    uint32 CurrentValue;
    uint32 DefaultValue;
        [Write]
    uint32 EnumCurrentValue;
    uint32 EnumDefaultValue;
     [ Description (
        "Type" ),
        ValueMap { "0", "1", "2"},
        Values { "IntParam", "EnumParam", "StringParam" } ]
    uint8 Type;
     
    string valueDescription; //QLGC_ParameterValueDescription
     
    uint32 SaveFunctionAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string FunctionAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 SetFunctionAdvancedParameters(
 
        [IN, Description ( "XML file path" )]
             string FunctionAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_ParameterValueDescription
{
 
    uint32 Value[];
    string ValueDescription[];
    [key]
    uint32 FunctionHandle;
    [key]
    string Name;
 
};
 
class QLGC_FCoEFunction {
 
    [key]
    uint32 FCoEHandle;
 
    string InstanceId;
    string Description;
    string Title;
    string FriendlyName;
 
    string DriverVersion;
    string DriverDate;
    string DriverName;
 
    string macAddress;
    string wwnn;
    string wwpn;
 
    Uint32 UniqueId;
    Uint32 VLANID;
    Uint32 MTU;
     [Description (
        "FCFSelectionMethod" ),
        ValueMap { "0", "1"},
        Values { "BACS_FCF_SELECT_FIRST", "BACS_FCF_SELECT_PRIORITY" } ]
    Uint32 FCFSelectionMethod;
 
    boolean DriverLoaded;
    boolean UseFIP;
 
    Uint32 VNPortList[];
    string vnPorts[]; //QLGC_VNPort REF vnPorts;
 
    uint32 CreateVirtualPort(
        [IN, Description ( "WWPN." )]
         string WWPN,
              
        [IN, Description ( "WWNN." )]
         string WWNN,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 DeleteVirtualPort(
        [IN, Description ( "WWPN." )]
         string WWPN,
              
        [IN, Description ( "WWNN." )]
         string WWNN,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
 
class QLGC_FCoEStats {
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 FCoEHandle;
     
    [key]
    uint32 HostHandle;
     
    uint64 RxFCoEFrames;
    uint64 RxFCoEBytes;
    uint64 RxFCPFrames;
    uint64 TxFCoEFrames;
    uint64 TxFCoEBytes;
    uint64 TxFCPFrames;
    uint64 FCoEDropedFrames;
    uint64 SequencesDropped;
    uint64 FCCRCErrorFrames;
    uint64 WrongFCoEVersionFrames;
    uint64 EOFAFrames;
    uint64 MissingFrames;
    uint64 SequenceTimeouts;
 
    /** driver stats */
    uint64 ReadRequests;
    uint64 WriteRequests;
    uint64 ControlRequests;
    uint64 ReadMegabytes;
    uint64 WriteMegabytes;
    uint64 FIPVlanNegotiations;
    uint64 FIPFabricDiscoveries;
    uint64 FLOGICount;
    uint64 FDISCCount;
    uint64 ULPTOVExpirations;
    uint64 RECExpirations;
    uint64 ABTSCount;
    uint64 SRRCount;
    uint64 ResetLUNCount;
    uint64 ResetTargetCount;
    uint64 SessionLevelRecoveryCount;
 
    /** Added for Linux */
    uint64 LinkFailures;
};
 
 
class QLGC_VNPort
{
 
    string FPMAMacAddress;
    string FCFMacAddress;
    [key]
    uint32 VNPortHandle;
    [key]
    uint32 FCoEHandle;
    [key]
    uint32 HostHandle;
         
    string FabricName;
    string FCFNodeWWN;
    string FCFPortWWN;
    string WWPN;
    string WWNN;
    string ParentWWPN;
 
    uint64 Speed;
    uint32 PortFCID;
    uint32 FCMap;
    uint32 LinkKeepaliveInterval;
    uint32 FabricVLAN;
    uint32 FabricPriority;
     [Description (
        "PortType" ),
        ValueMap { "0", "1"},
        Values { "NPORT", "NPIVPORT" } ]
    uint32 PortType;
 
    uint32 TargetList[];
    string targets[]; //QLGC_QLTarget REF targets;
 
 
};
 
class QLGC_FCoEBootConfigInfo
{
    [key]
    uint32 FCoEHandle;
     
    [key]
    uint32 FunctionHandle;
    [key]
    uint32 HostHandle;
    [Write]
    uint16 FIPVLAN;
    [Write]
    boolean FIPVLANDiscovery;
    [Write]
    boolean TargetAsFirstHDD;
    [Write]
    boolean HBAMode;
     
     [Write,Description (
        "BootToFCoETarget" ),
        ValueMap { "0", "1", "2", "3", "4"},
        Values { "BOOT_PROTOCOL_NONE", "BOOT_PROTOCOL_FCoE", "BOOT_TO_FCoE_TARGET_ENABLED", "BOOT_TO_FCoE_TARGET_DISABLED", "BOOT_TO_FCoE_TARGET_ONE_TIME" } ]
    uint8 BootToFCoETarget;
    [Write]
    uint8 LinkUpDelay;
    [Write]
    uint8 LUNBusyRetryCount;
    [Write]
    uint8 FabricDiscoveryTimeout;
     [Write,Description (
        "AuthenticationMode" ),
        ValueMap { "0", "1", "2"},
        Values { "None", "Unidirectional Diffie-Hellman CHAP", "Bidirectional Diffie-Hellman CHAP" } ]
    uint8 AuthenticationMode;
    [Write]
    uint8 FIPPriority;
 
    [Write]
    string bootSourceInfo_wwpn[];
    [Write]
    uint16 bootSourceInfo_LUN[];
    [Write]
    boolean bootSourceInfo_Enabled[];
     
    uint32 SaveFCoEBootConfig(
 
        [IN, Description ( "XML file path" )]
             string FCoEBootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
   uint32 SetFCoEBootConfig(
 
        [IN, Description ( "XML file path" )]
             string FCoEBootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_QLTarget {
 
    [key]
    uint32 VNPortHandle;
 
    [key]
    uint32 Target;
     
    [key]
    uint32 HostHandle;
    string Id;
    string ProductId;
    string VendorId;
    string ProductRevision;
 
    string NodeName;
    string PortName;
 
      [Description (
        "Type" ),
        ValueMap { "0", "1", "2", "3", "4", "5"},
        Values { "StaticTarget", "ISNSDiscovered", "SendTargetDiscovered", "PersistTarget", "OtherTarget", "HBADiscovered"} ]
    uint32 Type; /**< refers to eQL_TargetType? */
    uint32 FCID; /**< 3 byte FCID, ex. 12:AB:55 stored as 0x0012AB55 */
    uint32 SCSIBusNumber;
    uint32 SCSITargetNumber;
    uint32 NumberLUNs;
    uint32 UniqueId;
 
    boolean PersistencyFlag;
    uint32 LunList[];
    string luns[]; //QLGC_QLUN REF luns;
 
};
 
class QLGC_QLUN {
    [key]
    uint32 Target;
    [key]
    uint32 UniqueId;
    [key]
    uint32 HostHandle;
    string DeviceName;
    string ProductId;
    string VendorId;
    string ProductRevision;
 
    uint64 Capacity;
    uint32 SCSIUnitNumber;
      [Description (
        "DeviceType" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"},
        Values { "DIRECT_ACCESS_BLOCK_DEVICE", "SEQUENTIAL_ACCESS_DEVICE", "PRINTER_DEVICE", "PROCESSOR_DEVICE",
        "WRITE_ONCE_DEVICE", "CD_DVD_DEVICE", "SCANNER_DEVICE", "OPTICAL_MEMORY_DEVICE", "MEDIUM_CHANGER_DEVICE",
        "COMMUNICATIONS_DEVICE", "INVALID_DEVICE_1", "INVALID_DEVICE_2", "STORAGE_ARRAY_CONTROLLER_DEVICE", "ENCLOSURE_SERVICES_DEVICE",
        "SIMPLIFIED_DIRECT_ACCESS_DEVICE", "OPTICAL_CARD_DEVICE", "BRIDGE_CONTROLLER_DEVICE", "OBJECT_BASED_STORAGE_DEVICE"} ]
    uint32 DeviceType;
 
};
 
class QLGC_IscsiFunction {
 
 
    string InstanceId;
    string Description;
    string Title;
    string InitiatorName;
    string DriverVersion;
    string DriverDate;
    string DriverName;
               
    string MACAddress;
    [key]
    uint32 UniqueId;
    [key]
    uint32 FunctionHandle;
    [key]
    uint32 HostHandle;
 
    uint32 MTU;
    uint32 VLANID;
 
    boolean ProcessRouterAdvertisements;
    boolean IPv4EnableDHCP;
    boolean IPv6EnableDHCP;
 
    boolean DriverLoaded;
 
    //QLGC_IscsiStats REF stats;
    uint32 LoginAcceptRsps;
    uint32 LoginOtherFailRsps;
    uint32 LoginRedirectRsps;
    uint32 LoginAuthFailRsps;
    uint32 LoginAuthenticateFails;
    uint32 LoginNegotiateFails;
    uint32 LogoutNormals;
    uint32 LogoutOtherCodes;
    uint32 LoginFailures;
    uint32 SessionDigestErrorCount;
    uint32 SessionConnectionTimeoutErrorCount;
    uint32 SessionFormatErrorCount;
    uint32 SessionFailureCount;
    uint32 OffloadTCPConnections;
 
    string IPv4Address;//QLGC_IscsiIpv4Addresses
    string IPv6Address;//QLGC_IscsiIpAddresses
     
    string StaticIPv4Address[];
    string StaticIPv4SubnetMask[];
    string StaticIPv4DefaultGateway[];
    string StaticIPv6Address[];
    string StaticIPv6DefaultGateway[];
    uint32 StaticIPv6PrefixLength[];
     
    uint32 PortalList[];
    string portals[]; //QLGC_IscsiPortalInfo REF portals;
   
    string sessions[]; //QLGC_IscsiSessionInfo REF sessions;
    uint32 sessionList[];
     
    uint32 LoginToTarget(
        [IN, Description ( "iSCSITargetPortalHandle." )]
             uint32 iSCSITargetPortalHandle,
 
        [IN, Description ( "AuthType." ),
            ValueMap { "0", "1", "2"},
            Values { "NONE", "CHAP", "MUT_CHAP"}]
             uint32 AuthType,
 
        [IN, Description ( "ChapUsername." )]
             string ChapUsername,
 
        [IN, Description ( "ChapPassword." )]
             string ChapPassword,
 
        [IN, Description ( "InitiatorUsername." )]
             string InitiatorUsername,
 
        [IN, Description ( "InitiatorSecret." )]
             string InitiatorSecret,
 
        [IN, Description ( "ifaceFileName." )]
             string ifaceFileName,
 
        [IN, Description ( "UseHeaderDigest." )]
             boolean UseHeaderDigest,
 
        [IN, Description ( "UseDataDigest." )]
             boolean UseDataDigest,
 
        [IN, Description ( "Persist." )]
             boolean Persist,
 
        [IN, Description ( "EnableMPIO." )]
             boolean EnableMPIO,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 Logout(
          
        [IN, Description ( "iSCSISessionHandle." )]
             uint32 iSCSISessionHandle,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 RuniSCSIDiagnostic(
         
        [IN, Description ( "IP Address." )]
             string IPAddress,
              
        [OUT, Description ( "DiagStatus " )]
             uint32 DiagStatus,
              
        [IN, Description ( "IPV4/IPV6, 0/1" )]
             uint32 IPType,
              
        [IN, Description ( "ifaceFileName." )]
            string ifaceFileName,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
     
    uint32 Create_Or_Modify_ifaceFile(
          
        [IN, Description ( "VLANID." )]
             uint32 VLANID,
              
        [IN, Description ( "MTU." )]
             uint32 MTU,
              
        [IN, Description ( "IfaceNum." )]
             uint32 IfaceNum,
              
        [IN, Description (
            "IPCategory" ),
            ValueMap { "0", "1", "2"},
            Values { "GAM_kUNSPECIFIED", "GAM_kDHCP", "GAM_kSTATIC" } ]
            uint32 IPCategory,
             
        [IN,Description (
            "ModifiedState" ),
            ValueMap { "0", "1", "2", "3"},
            Values { "GAM_kNotUpdated", "GAM_kUpdated", "GAM_kCreated", "GAM_kDeleted" } ]
            uint32 ModifiedState,
             
        [IN, Description ( "ifaceFileName." )]
             string ifaceFileName,
              
        [IN, Description ( "InitiatorName." )]
             string InitiatorName,
              
        [IN, Description ( "IPv4Address." )]
             string IPv4Address,
              
        [IN, Description ( "IPv4SubnetMask." )]
             string IPv4SubnetMask,
              
        [IN, Description ( "IPv4DefaultGateway." )]
             string IPv4DefaultGateway,
              
        [IN, Description ( "isIPv4." )]
             boolean isIPv4,
              
        [IN, Description ( "IPv6Address." )]
             string IPv6Address,
              
        [IN, Description ( "IPv6PrefixLength ." )]
             uint32 IPv6PrefixLength ,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SaveIscsiFunctionConfig (
 
        [IN, Description ( "XML file path" )]
             string IscsiFunctionConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SetIscsiFunctionConfig (
 
        [IN, Description ( "XML file path" )]
             string IscsiFunctionConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_IscsiNegotiationInfo {
   
    [key]
    uint32 UniqueId;
     
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 HostHandle;
 
    uint32 MaxOutstandingR2T;
    uint32 FirstBurstLength;
    uint32 MaxBurstLength;
    uint32 ErrorRecoveryLevel;
    uint32 DefaultTimeToWait;
    uint32 DefaultTimeToRetain;
    uint32 MaxConnections;
 
 
    boolean InitialR2T;
    boolean ImmediateData;
    boolean DataSequenceInOrder;
    boolean DataPDUInOrder;
 
};
 
class QLGC_IscsiBootCfg {
      
    [key]
    uint32 UniqueId;
     
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 HostHandle;
    [Write]
    string IscsiBootSourceInfo_Name[];
    [Write]
    string IscsiBootSourceInfo_ChapID[];
    [Write]
    string IscsiBootSourceInfo_ChapSecret[];
    [Write]
    string IscsiBootSourceInfo_Address[];
    [Write]
    uint32 IscsiBootSourceInfo_iTCPPort[];
    [Write]
    uint32 IscsiBootSourceInfo_iLUN[];
 
    [Write]
    boolean bEnabled[];
 
    [Write]
    string IPDNS1;
    [Write]
    string IPDNS2;
    [Write]
    string InitiatorName;
    [Write]
    string ChapID;
    [Write]
    string ChapSecret;
    [Write]
    string DHCPVendorID;
   
    [Write]
    string ipAddress;
    [Write]
    string ipSubnetMask;
    [Write]
    string ipGateway;
  
    [Write]
    boolean ChapAuthentication;
    [Write]
    boolean UseDHCPForInitiator;
    [Write]
    boolean UseDHCPForTargetInfo;
    [Write, Description ( "Boot To IscsiTarget" ),
            ValueMap { "0", "1", "2"},
            Values { "Disabled", "Enabled", "One Time Disabled" }]
    uint32 BootToIscsiTarget;
    [Write]
    boolean UseTCPTimestamp;
    [Write]
    boolean TargetAsFirstHDD;
    [Write]
    boolean HBAMode;
    [Write]
    boolean MPIOUseIndependentTargetPortal;
    [Write]
    boolean MPIOUseIndependentTargetName;
 
    [Write, Description ( "IPMode" ),
            ValueMap { "1", "2"},
            Values { "IPv4", "IPv6" }]
    uint32 IPMode;
    [Write]
    uint32 LinkUpDelay;
    [Write]
    uint32 LUNBusyRetryCount;
     
       // E4 specific
    uint16 DHCPRequestTimeout;
    uint16 TargetLoginTimeout;
    uint16 VLANID;
    [Write, Description ( "Boot Mode" ),
            ValueMap { "0", "1"},
            Values { "Non-Offload", "Offload" }]
    uint32 BootMode;
    [Write, Description ( "Address Redirect" ),
            ValueMap { "0", "1"},
            Values { "Disabled", "Enabled" }]
    uint32 AddressRedirect;
     
    [Write, Description ( "IPv4 Fallback" ),
            ValueMap { "0", "1"},
            Values { "Disabled", "Enabled" }]
    uint32 IPv4Fallback;
     
    uint32 SaveIscsiBootConfig(
 
        [IN, Description ( "XML file path" )]
             string IscsiBootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SetIscsiBootConfig(
 
        [IN, Description ( "XML file path" )]
             string IscsiBootConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_FCoEGeneralConfig
{
    [key]
    uint32 UniqueId;
     
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 HostHandle;
    [Write]
    uint32 LinkDownTimeout;
    [Write]
    uint32 PortDownTimeout;
 
    uint32 SaveFCoEGeneralConfig(
 
        [IN, Description ( "XML file path" )]
             string FCoEGeneralConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SetFCoEGeneralConfig(
 
        [IN, Description ( "XML file path" )]
             string FCoEGeneralConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_IscsiSessionInfo
{
    [key]
    uint32 SessionHandle;
     
    [key]
    uint32 iSCSIHandle;
               
       [key]
    uint32 HostHandle;
    string TargetName;
 
 
    uint64 SessionID;
    uint64 SessionID2;
    uint32 TSIH;
    uint32 SCSIBusNumber;
    uint32 SCSITargetNumber;
    uint32 Handle;
    uint32 MaxOutstandingR2T;
    uint32 MaxUnsolicitedFirstDataBurstLength;
    uint32 MaxDataBurstLength;
    uint32 DefaultTimeToWait;
    uint32 DefaultTimeToRetain;
    uint32 ErrorRecoveryLevel;
 
 
    boolean Connected;
    boolean InitialR2T;
    boolean ImmediateData;
    boolean DataSequenceInOrder;
    boolean DataPDUInOrder;
     
    // InitiatorPortal;
 
    string InitiatorPortal_HBAInstanceName;
    string InitiatorPortal_IPv4Str;
 
    uint32 InitiatorPortal_PortNumber;
    uint32 InitiatorPortal_InitiatorPort;
     
    string InitiatorPortal_ipv6;
    boolean InitiatorPortal_bIsIPv4;
 
     
    // Target portal;
 
    string TargetPortal_HBAInstanceName;
    string TargetPortal_IPv4Str;
 
    uint32 TargetPortal_PortNumber;
    uint32 TargetPortal_InitiatorPort;
     
    string TargetPortal_ipv6;
    boolean TargetPortal_bIsIPv4;
 
    //QLGC_IscsiSessionStats REF sessionStats;
    string SessionName;
    uint64 sessionStats_SessionId;
    uint64 BytesSent;
    uint64 BytesReceived;
    uint64 PDUCommandsSent;
    uint64 PDUResponsesReceived;
    uint64 DigestErrors;
    uint64 ConnectionTimeoutErrors;
    uint64 FormatErrors;
    string connections[]; //QLGC_IscsiConnection1 REF connections;
    uint32 connectionList[];
 
};
 
class QLGC_IscsiConnection1
{
    [key]
    uint32 SessionHandle;
    uint64 ConnectionID;
      [key]
    uint32 Handle;
      [key]
    uint32 HostHandle;
 
     [Description (
        "AuthType" ),
        ValueMap { "0", "1", "2"},
        Values { "none", "CHAP", "MUT_CHAP" } ]
    uint32 AuthType;
    uint32 MaxReceiveDataSegmentLength;
    uint32 MaxTransmitDataSegmentLength;
     [Description (
        "HeaderDigest" ),
        ValueMap { "0", "1"},
        Values { "none", "crc32c" } ]
    uint8 HeaderDigest;
     [Description (
        "DataDigest" ),
        ValueMap { "0", "1"},
        Values { "none", "crc32c" } ]
    uint8 DataDigest;
    boolean ActiveiSCSIVersion;
 
};
 
class QLGC_IscsiPortalInfo
{
 
    [key,Description (
        "PortalType" ),
        ValueMap { "0", "1", "2"},
        Values { "ISCSIPortal", "ISCSIDiscoveryPortal", "TargetPortal" } ]
    uint32 PortalType; //Discovery portal or Initiator Portal or Target Portal
    string HBAInstanceName;
    string IPv4Str;
    string IPv6Str;
    [key]
    uint32 iSCSIHandle;
    [key]
    uint32 UniqueId;
      [key]
    uint32 HostHandle;
    uint32 PortNumber;
    uint32 InitiatorPort;
    
    boolean IsIPv4;
     
    uint32 TargetList[];
    string devices[];//QLGC_iSCSIQLTarget REF devices;
      
};
 
class QLGC_iSCSIQLTarget {
 
    string TargetIQNName;
    [key]
    uint32 PortalHandle;
    [key]
    uint32 Target;
      [key]
    uint32 HostHandle;
    string Id;
    string ProductId;
    string VendorId;
    string ProductRevision;
 
      [Description (
        "Type" ),
        ValueMap { "0", "1", "2", "3", "4", "5"},
        Values { "StaticTarget", "ISNSDiscovered", "SendTargetDiscovered", "PersistTarget", "OtherTarget", "HBADiscovered"} ]
    uint32 Type; /**< refers to eQL_TargetType? */
    uint32 SCSIBusNumber;
    uint32 SCSITargetNumber;
    uint32 NumberLUNs;
    uint32 UniqueId;
          [Description (
        "TargetType" ),
        ValueMap { "0", "1" },
        Values { "iSCSITarget", "HostiscsiTarget"} ]
    uint32 TargetType;
    boolean Connected;
     
    boolean PersistencyFlag;
     
    uint32 LunList[];
    string luns[]; //QLGC_iSCSIQLUN REF luns;
 
};
 
class QLGC_iSCSIQLUN {
    [key]
    uint32 Target;
    [key]
    uint32 UniqueId;
      [key]
    uint32 HostHandle;
    string DeviceName;
    string ProductId;
    string VendorId;
    string ProductRevision;
 
    uint64 Capacity;
    uint32 SCSIUnitNumber;
      [Description (
        "DeviceType" ),
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"},
        Values { "DIRECT_ACCESS_BLOCK_DEVICE", "SEQUENTIAL_ACCESS_DEVICE", "PRINTER_DEVICE", "PROCESSOR_DEVICE",
        "WRITE_ONCE_DEVICE", "CD_DVD_DEVICE", "SCANNER_DEVICE", "OPTICAL_MEMORY_DEVICE", "MEDIUM_CHANGER_DEVICE",
        "COMMUNICATIONS_DEVICE", "INVALID_DEVICE_1", "INVALID_DEVICE_2", "STORAGE_ARRAY_CONTROLLER_DEVICE", "ENCLOSURE_SERVICES_DEVICE",
        "SIMPLIFIED_DIRECT_ACCESS_DEVICE", "OPTICAL_CARD_DEVICE", "BRIDGE_CONTROLLER_DEVICE", "OBJECT_BASED_STORAGE_DEVICE"} ]
    uint32 DeviceType;
 
};
 
class QLGC_IscsiIpv4Addresses {
   
    [key]
    uint32 iSCSIHandle;
    string IPv4Str[];
    string DefaultGateway[];
    string SubnetMask[];
 
 
    uint32 EnableDHCP[];
     
    [Description (
      "GAM_ISCSI_IPV4_ADDR_INIT 0x0001"
      "GAM_ISCSI_IPV4_ADDR_VALID 0x0002"
      "GAM_ISCSI_IPV6_HBA_BOOT 0x0010" ) ]
    uint32 Flags[];
 
};
 
class QLGC_IscsiIpAddresses {
  
    [key]
    uint32 iSCSIHandle;
    uint32 UseLinkLocalAddress[];
        [Description (
      "GAM_ISCSI_IPV6_ADDR_INIT 0x0001 "
      "GAM_ISCSI_IPV6_ADDR_VALID 0x0002 "
      "GAM_ISCSI_IPV6_GTW_VALID 0x0004 "
      "GAM_ISCSI_IPV6_MASK_VALID 0x0008 "
      "GAM_ISCSI_IPV6_HBA_BOOT 0x0010" ) ]
    uint32 Flags[];
    uint32 EnableDHCP[];
    uint32 FlowInfo[];
    uint32 ScopeId[];
 
    string ipAddress[];
    string defaultGateway[];
    string subnetMask[];
 
};
 
class QLGC_IfaceFileInfo {
     
    [key]
    uint32 Handle; // Host or iSCSI handle
 
    uint32 VLANID;
    uint32 MTU;
    uint32 IfaceNum;
     [Description (
        "IPCategory" ),
        ValueMap { "0", "1", "2"},
        Values { "GAM_kUNSPECIFIED", "GAM_kDHCP", "GAM_kSTATIC" } ]
    uint32 IPCategory;
     
     [Description (
        "ModifiedState" ),
        ValueMap { "0", "1", "2", "3"},
        Values { "GAM_kNotUpdated", "GAM_kUpdated", "GAM_kCreated", "GAM_kDeleted" } ]
    uint32 ModifiedState;
    [key]
    string ifaceFileName;
    string InitiatorName;
    string IPv4Address;
    string IPv4SubnetMask;
    string IPv4DefaultGateway;
 
    boolean isIPv4;
 
    string Address;
    string DefaultGateway;
    uint32 PrefixLength;
              
};
 
class QLGC_NicFunction {
 
    string InstanceId;
    string Description;
    string Title;
    string DriverVersion;
    string DriverDate;
    string DriverName;
     
    string TeamName;
    string VlanName;
    string SubnetMask;
    string DefaultGateway;
 
    string MacAddress;
    string PermanentMacAddr;
    string IPv4Addr[];
    string IPv6Addr[];
 
    [key]
    uint32 FunctionHandle;
    [key]
    uint32 UniqueId;
    [key]
    uint32 HostHandle;
    uint64 MaxSpeed;
        [Description ( "// bit flags for NDIS_R_INFO.OffloadCapabilities"
                       "#define OFFLOAD_CAP_TOE 0x0001"
                       "#define OFFLOAD_CAP_LSO 0x0002"
                       "#define OFFLOAD_CAP_CO 0x0004"
                       "#define OFFLOAD_CAP_RSS 0x0008") ]
    uint32 OffloadCapabilities;
    uint32 MTU;
     [Description (
        "LinkStatus" ),
        ValueMap { "0", "1"},
        Values { "LinkDown", "LinkUp" } ]
    uint32 LinkState;
     [Description (
        "TeamMemberType" ),
        ValueMap { "0", "1"},
        Values { "LoadBalancing", "StandBy" } ]
    uint32 TeamMemberType;
     [Description (
        "TeamMemberState" ),
        ValueMap { "0", "1", "2"},
        Values { "GAM_TEAM_MEMBER_STATE_NOT_APPLICABLE", "GAM_TEAM_MEMBER_STATE_ACTIVE", "GAM_TEAM_MEMBER_STATE_NOT_ACTIVE" } ]
    uint32 TeamMemberState;
    uint32 VLANID;
    uint32 DuplexMode;
        [Description (
      "GAM_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000 "
      "GAM_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000 "
      "GAM_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000 "
      "GAM_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100 "
      "GAM_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200 "
      "GAM_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400 "
      "GAM_RSS_HASHFUNCTIONTOEPLITZ 0x00000001" ) ]
    uint32 RSSCaps;
    uint32 LineSpeedKbps;
 
 
    boolean DriverLoaded;
    boolean IsTOESupported;
 
    //QLGC_NICStats
    uint64 PacketsTransmitted;
    uint64 PacketsReceived;
    uint64 TotalTransmitError;
    uint64 TotalReceiveError;
    uint64 DirectedFramesTransmitted;
    uint64 MulticastFramesTransmitted;
    uint64 BroadcastFramesTransmitted;
    uint64 DirectedFramesReceived;
    uint64 MulticastFramesReceived;
    uint64 BroadcastFramesReceived;
    uint64 SingleCollisionFrames;
    uint64 MultipleCollisionFrames;
    uint64 DeferredTransmissions;
    uint64 LateCollisions;
    uint64 ExcessiveCollisions;
    uint64 CarrierSenseErrors;
    uint64 OffloadTCPConnections;
     
    uint32 RunNdisDiagnostic(
             
        [IN, Description ( "IP Address." )]
             string IPAddress,
              
        [OUT, Description ( "DiagStatus " )]
             uint32 DiagStatus,
              
        [IN, Description ( "IPV4/IPV6." )]
             uint32 IPType,
 
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
              
    uint32 SaveNdisAdvancedParameter(
 
        [IN, Description ( "XML file path" )]
             string NdisAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
 
    uint32 SetNdisAdvancedParameter(
 
        [IN, Description ( "XML file path" )]
             string NdisAdvancedParametersXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_NicPartFunctionConfig {
 
    [key]
    uint32 AdapterHandle;
     
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 PortNumber;
 
    [key]
    uint32 FunctionNumber;
    [Write]
    string netMAC;
    [Write]
    string iSCSIMAC;
    [Write]
    string fcoeMAC;
 
    [Write]
    string fcoeWWNN;
    [Write]
    string fcoeWWPN;
    
    [Write,Description (
        "PART_FUNC_CFG_ENABLED 0x00000001"
        "// By default, all functions will have NDIS enumerated."
        "PART_FUNC_CFG_ETH 0x00000002 // enumerate NDIS"
        "// By default, function 0 and 1 will iSCSI enumerated."
        "// No more than 2 iSCSI can be enumerated per physical port."
        "PART_FUNC_CFG_ISCSI 0x00000004 // enumerate iSCSI"
        "// No more than 2 FCoE can be enumerated per physical port."
        "PART_FUNC_CFG_FCOE 0x00000008 // enumerate FCoE"
        "PART_FUNC_CFG_ROCE 0x00000010 // enumerate RoCE"
        "PART_FUNC_CFG_IWARP 0x00000020 // enumerate iWARP"
        "// pause on host ring"
        "PART_FUNC_CFG_PAUSE_ON_HOST_RING 0x00000080" ) ]
    uint32 flags;
     
        [Description (
        "FUNC_ENABLE 0x01"
        "PROTOCOL_ETHERNET 0x02"
        "PROTOCOL_ISCSI 0x04"
        "PROTOCOL_FCOE 0x08"
        "PROTOCOL_ROCE 0x010"
        "PROTOCOL_IWARP 0x020" ) ]
    uint32 func_cap;
 
    uint32 MinBW;
    uint32 MaxBW;
    [Write]
    uint32 PFAllocation;
};
 
class QLGC_NicPartPortConfig {
   
    [key]
    uint32 AdapterHandle;
     
    [key]
    uint32 FunctionHandle;
     
    [key]
    uint32 PortNumber;
     [Description (
        "FlowControl" ),
        ValueMap { "0", "1", "2", "3", "4"},
        Values { "GAM_PART_PORT_FC_AUTO", "GAM_PART_PORT_FC_TX", "GAM_PART_PORT_FC_RX", "GAM_PART_PORT_FC_BOTH", "GAM_PART_PORT_FC_NONE" } ]
    uint32 FlowControl;
     
     [Description ( "GAM_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1"
                    "GAM_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2"
                    "GAM_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4"
                    "GAM_DEFAULT_ENABLED_PROTOCOLS_ROCE 0x8"
                    "GAM_DEFAULT_ENABLED_PROTOCOLS_IWARP 0x10") ]
    uint32 default_mode_protocol;
    [Write]
    uint8 MinBW[];
 
};
 
class QLGC_NicPartConfig {
     
    [key]
    uint32 AdapterHandle;
     
    [key]
    uint32 FunctionHandle;
     
    [Write,Description (
        "Flags" ),
        ValueMap { "0","1", "2", "3", "4"},
        Values { "Disable NPAR", "GAM_NIC_PART_ENABLED", "GAM_NIC_PART1_5_ENABLED", "GAM_NIC_PART2_0_ENABLED", "NPAR_EP_ENABLED" } ]
    uint32 Flags;
    [Write]
    uint32 PreventFCoE;
    [Write]
    uint32 SRIOV;
    [Write]
    uint32 SRIOVSupported;
    [Write]
    uint32 preventISCSI;
     
    uint32 SetNicPartitionCfg(
 
        [IN, Description ( "XML file path" )]
             string NPARConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
              
    uint32 GetNicPartitionCfg(
 
        [IN, Description ( "XML file path" )]
             string NPARConfigXMLFile,
              
        [OUT, Description ( "ResultMessage" )]
             string ResultMessage);
};
 
class QLGC_SRIOVSwitchInfo {
   
    [key]
    uint32 FunctionHandle;
 
    [Description (
        "SwitchType" ),
        ValueMap { "0", "1", "2", "3", "4", "5"},
        Values { "GAM_SRIOV_SWITCH_PF_UNBOUND", "GAM_SRIOV_SWITCH_PF_BOUND_WITH_SRIOV_CAPS",
        "GAM_SRIOV_SWITCH_VF", "GAM_SRIOV_REGULAR_PF", "GAM_SRIOV_VMQ_SWITCH", "GAM_SRIOV_SRIOV_SWITCH" } ]
    uint32 SwitchType;
    uint32 HWAvailableVFs;
    uint32 AvailableVFs;
    uint32 MaxVFChainsPerVF;
    uint32 VFChainsPoolSize;
    uint32 VMQChainsPoolSize;
 
    string switchFriendlyName;
 
};
 
class QLGC_SRIOVSwitchStats {
   
    [key]
    uint32 FunctionHandle;
 
    uint32 SwitchType;
    uint32 ActiveVFs;
    uint32 RejectedVFs;
    uint32 MaliciousVFs;
    uint32 ActiveVMQs;
    uint32 RejectedVMQs;
};
 
 
class QLGC_SriovVFInfo {
     
    [key]
    uint32 FunctionHandle;
 
    uint32 Bus[];
    uint32 Device[];
    uint32 Function[];
    uint32 QPsRequestedByVM[];
    uint32 QPsRequestedByVF[];
    uint32 QPsAllocatedToVF[];
    uint32 QPsNumbersValidator[];
 
    string vmName[];
    string vmFriendlyName[];
    string vportName[];
    string vfVportNicName[];
 
    uint32 vfHeader_RelativeVFId[];
    uint32 vfHeader_VFPortInstance[];
    uint32 vfHeader_ActiveVFChains[];
    uint32 vfHeader_FeaturesFlag[];
 
    uint64 totalSentBytes[];
    uint64 totalSentPkts[];
    uint64 totalRecvBytes[];
    uint64 totalRecvPkts[];
 
};
 
 
class QLGC_LicenseInfo {
 
    [key]
    uint32 FunctionHandle;
    uint32 key_type;
    uint32 dword_length;
    uint32 oem_id;
    uint32 capability;
    uint32 max_toe_conn;
    uint32 max_um_rdma_conn;
    uint32 max_iscsi_init_conn;
    uint32 max_iscsi_trgt_conn;
    uint32 max_iser_init_conn;
    uint32 max_iser_trgt_conn;
    uint32 max_fcoe_init_conn;
    uint32 max_fcoe_trgt_conn;
    uint32 sn;
    uint32 expiration;
};
 
class QLGC_NdisQlgcStatsInfo {
 
    [key]
    uint32 FunctionHandle;
    [key]
    uint32 HostHandle;
     
    uint64 FecMode;
    uint64 FecCoreErrCnt;
    uint64 FecUnCoreErrCnt;
    uint64 FecRsvd;
 
    uint64 Version;
    uint64 EtherStatsFragments;
    uint64 XonPauseFramesReceived;
    uint64 XoffPauseFramesReceived;
    uint64 MacControlFramesReceived;
    uint64 OutXonSent;
    uint64 OutXoffSent;
    uint64 NicNoMoreRxBDs;
    uint64 NicRecvThresholdHit;
    uint64 NicInterrupts;
    uint64 NicAvoidedInterrupts;
    uint64 NicSendThresholdHit;
    uint64 OctetsReceived;
    uint64 OctetsTransmitted;
    uint64 TxLargeSendFrames;
 
    // Available only for 57710 family devices
    uint64 ifInNoBrbBuffer;
    uint64 ifInMBUFDiscards;
    uint32 OffloadTCPConnections;
 
    uint32 AlignmentErrors;
    uint32 FCSErrors;
    uint32 FrameTooLongs;
    uint32 InternalMACTransmitErrors;
 
    uint32 InternalMACReceiveErrors;
    uint32 SingleCollisionFrames;
    uint32 MultipleCollisionFrames;
    uint32 DeferredTransmissions;
    uint32 LateCollisions;
    uint32 ExcessiveCollisions;
    uint32 CarrierSenseErrors;
    uint64 PacketsTransmitted;
    uint64 PacketsReceived;
 
    uint64 ifHCInUcastPkts;
    uint64 ifHCInMulticastPkts;
    uint64 ifHCInBroadcastPkts;
    uint64 xoffStateEntered;
    uint64 etherStatsJabbers;
    uint64 etherStatsUndersizePkts;
 
    //////////////////////////
    // Not available for 5706
    // Not available for 57710
    uint64 inRangeLengthError;
    uint64 outRangeLengthError;
    //////////////////////////
 
    //////////////////////////
    // Not available for 57710
    uint64 etherStatsPkts64Octets;
    uint64 etherStatsPkts65Octetsto127Octets;
    uint64 etherStatsPkts128Octetsto255Octets;
    uint64 etherStatsPkts256Octetsto511Octets;
    uint64 etherStatsPkts512Octetsto1023Octets;
    uint64 etherStatsPkts1024Octetsto1522Octets;
    //////////////////////////
 
    //////////////////////////
    // Not available for 57710
    // Not available for 5706
    uint64 etherStatsPkts1523Octetsto2047Octets;
    uint64 etherStatsPkts2048Octetsto4095Octets;
    uint64 etherStatsPkts4096Octetsto8191Octets;
    uint64 etherStatsPkts8192Octetsto9022Octets;
    //////////////////////////
 
    // Statistics maintained by Transmit MAC.
    uint64 ifHCOutOctets;
    uint64 etherStatsCollisions;
 
    uint64 flowControlDone;
 
    //////////////////////////
    // Not available for 5706
    // Not available for 57710
    uint64 dot3Collided2Times;
    uint64 dot3Collided3Times;
    uint64 dot3Collided4Times;
    uint64 dot3Collided5Times;
    uint64 dot3Collided6Times;
    uint64 dot3Collided7Times;
    uint64 dot3Collided8Times;
    uint64 dot3Collided9Times;
    uint64 dot3Collided10Times;
    uint64 dot3Collided11Times;
    uint64 dot3Collided12Times;
    uint64 dot3Collided13Times;
    uint64 dot3Collided14Times;
    uint64 dot3Collided15Times;
    //////////////////////////
 
    uint64 ifHCOutUcastPkts;
    uint64 ifHCOutMulticastPkts;
    uint64 ifHCOutBroadcastPkts;
 
    uint64 ifOutDiscards;
 
    uint64 ifOutErrors;
 
    uint64 nicDmaWriteQueueFull;
    uint64 nicDmaWriteHighPriQueueFull;
 
 
    //////////////////////////
    // Not available for 5706 VBD
    // Not available for 57710
    uint64 ifInDiscards;
    //////////////////////////
 
    uint64 ifInErrors;
    uint64 nicDmaReadQueueFull;
    uint64 nicDmaReadHighPriQueueFull;
    uint64 nicSendDataCompQueueFull;
    //////////////////////////
 
 
    uint64 nicRingSetSendProdIndex;
    uint64 nicRingStatusUpdate;
};
 
 
class QLGC_LinkDumpInfo {
 
    [key]
     uint32 FunctionHandle;
    [key]
    uint32 HostHandle;
     
    uint64 ChipMode;
    uint64 MFWLinkState;
    uint64 PCSLink;
    uint64 MACFault;
    uint64 RX_SignalDetect;
    uint64 LinkSpeed;
    uint64 Module;
    uint64 FlowControl;
    uint64 AutoNeg;
    uint64 AnLpAdvSpeeds;
    uint64 AnLpAdvFlowControl;
    uint64 TxPreFir;
    uint64 TxMainFir;
    uint64 TxPostFir;
    uint64 RxDfe;
    uint64 LinkChangeCount;
    uint64 LfaCount;
    uint64 LfaState;
    uint64 MfwRawLinkState;
    uint64 FecMode;
    uint64 FecCoreErrCnt;
    uint64 FecUnCoreErrCnt;
     
};
class QLGC_EventData {
    [key]
    uint32 HostHandle;
    [key]
    uint32 EventNumber;
    uint32 Handle;
    uint32 EventType;
};