 /************************************************************************
*                                                                       *
*               INTEL CORPORATION PROPRIETARY INFORMATION               *
*  This software is supplied under the terms of a license agreement or  *
*  nondisclosure agreement with Intel Corporation and may not be copied *
*  or disclosed except in accordance with the terms of that agreement.   *
*  Copyright (c) 2008-2010 Intel Corporation. All Rights Reserved.       *
*                                                                       *
************************************************************************/
/***********************************************************************\
*
* NAME:	Ncs2ICr.mof	
* 
* DESCRIPTION: Master MOF file with class definitions for the 
*			   Intel PRO Network Adapters WMI Provider (802.3 schema).
*
* PREREQUISITE: Ncs2Cm.mof 
*
* NOTE:	This file generates language neutral MOF for IntelNCS2 namespace.
*		This file also generates ENU language specific MFL. 
*
\***********************************************************************/

#pragma namespace ("\\\\.\\Root\\IntelNCS2")

instance of __Win32Provider as $P
{
    Name    = "Ncs2" ;
    ClsId   = "{AF7799A5-A3E7-455C-92B5-8F9D7C127B15}" ;
	Pure = FALSE;
	ImpersonationLevel = 3;
    PerUserInitialization = TRUE;
    UnloadTimeout = "00000000000500.000000:000";
};    

instance of __MethodProviderRegistration
{
    Provider = $P;
};

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsPut = TRUE;
    SupportsGet = TRUE;
    SupportsDelete = TRUE;
    SupportsEnumeration = TRUE;
	QuerySupportLevels = { "WQL:UnarySelect" };
};


// ============================================================================
// Ethernet Adapter Base Class
// ============================================================================
[Abstract, Description("IANet_EthernetAdapter abstract base class objectifies "
"the general network characteristics of the Intel NIC. In this class, "
"the lower level networking properties are presented. Note that only the "
"network relationships are in this class. The controller characteristics "
"are presented separately."): Amended,  LOCALE(0x409)
]
class IANet_EthernetAdapter : CIM_EthernetAdapter
{
	[Override("NetworkAddresses"), MaxLen (64), 
	Description (
	"An array of strings indicating the network addresses for an adapter."):ToSubclass Amended,
	ArrayType ("Indexed"),
	MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.3"}:ToSubclass,
	ModelCorrespondence {"IANet_EthernetAdapter.NetworkAddressDescription"}:ToSubclass
	]
    string NetworkAddresses[];
    		

	[ Description (
	"MiniPortName represents the Win32 kernel mode service name of the adapter."):ToSubclass Amended
	]
	string MiniPortName;

	[Description (
	"MiniPortInstance distinguishes a network device from other devices of "
	"the same type on a machine. It is a unique string without any "
	"path-separator characters that contains serial-number information, "
	"if supported by the underlying bus, or some kind of location "
	"information. The format of the string is bus specific. "
	"It is persistent across system boots."):ToSubclass Amended
	]
	string MiniPortInstance;	
	 
};






// ============================================================================
// Physical Ethernet Adapter Class
// ============================================================================
[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
Description("IANet_PhysicalEthernetAdapter concrete class objectifies "
"the general network characteristics of the Intel NIC. In this class, "
"the lower level networking properties are presented. Note that only the "
"network relationships are in this class. The controller characteristics "
"are presented separately."):Amended,  LOCALE(0x409)
]
class IANet_PhysicalEthernetAdapter : IANet_EthernetAdapter
{

[Description (
		 "PartNumber is the NIC's PBA manufacturing part number"):Amended
	]
   string PartNumber;

    [Description (
		 "SanMacAddress is the MAC address assigned by the SAN server"):Amended
	]
    string SanMacAddress;

	[Description ("This setting has been deprecated and is no longer supported"):Amended,
		 ValueMap{"0" }:Amended,
		 Values {"This setting has been deprecated and is no longer supported"}:Amended]
    	uint16 PHYDevice;

	[Description ("This setting has been deprecated and is no longer supported"):Amended]
    	string OtherPhyDevice;
	
	[Description (
	"Bus Type indicates the bus type"):Amended,
	ValueMap{"0","1","2","3","4","5","6","7"}:Amended,
	Values {"Unknown","ISA","EISA","PCMCIA","CardBus","PCI","PCI-X","PCI Express"}:Amended
	]
	uint16 BusType;
	
	[Description (
	"Negotiated Link Width specifies the negotiated link width of the bus"):Amended,
	ValueMap{"0","1","2","4","8"}:Amended,
	Values{"Unknown","x1","x2","x4","x8"}:Amended
	]
	uint16 NegotiatedLinkWidth;
	
	[Description (
	"PortNumber indicates the port number on PCIe Quad port adapters"):Amended,
	ValueMap{"0","1","2","3"}:Amended,
	Values{"A","B","C","D"}:Amended
	]
	uint16 PortNumber;
	
	[Description (
	"MediaType indicates the media which interfaces to this phy"):Amended,
	ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9","10","11","12"}:Amended,
	Values {"Unknown", "Copper", "Fiber", "Phone Line", "CX4 Copper", "SFP+ Direct Attach", "SR Fiber", "LR Fiber", "KX/KX4 Backplane", "SerDes","Backplane","XAUI","SFP+ Active Direct Attach"} : Amended
	]
    	uint16 MediaType;

	[Description ("This setting has been deprecated and is no longer supported."):Amended]
   	string OtherMediaType;

		[ Description (
		"The Controller ID identifies the Ethernet controller that the adapter uses. "
		"Adapters with different DeviceIDs can have the same Controller ID"):Amended,
		ValueMap{
			"0", 
			"1", "3", "6", "7", "8", "11", "13", "20", "30", "31", "40", "50", "51", "52", "60", "62", "63",
			"65537", "65538", "65539", "65540", "65541", "65542", "65543", "65544", "65545", "65546", "65547", "65548", "65549", "65550", "65551", "65552", "65553", 
			"131073",
			"196609", "196610"
			}:Amended,
			Values {"Unknown", 

				/* 1 -> 63 */
				"Intel 82542 Controller",
				"Intel 82543 Controller",
				"Intel 82544 Controller",
				"Intel 82540 Controller",
				"Intel 82545 Controller",
				"Intel 82541 Controller",
				"Intel 82547 Controller",
				"Intel 82571 Controller",
				"Intel 82573 Controller",
				"Intel 82574 Controller",
				"Intel ESB2LAN Controller",
				"Intel ICH8 Controller",
				"Intel ICH9 Controller",
				"Intel ICH10 Controller",
				"Intel 82575 Controller",
				"Intel 82576 Controller",
				"Intel ADORAM_VIRTUAL Controller",
								
				/* 65537 -> 65553 */
				"Intel D100_A_STEP Controller",
				"Intel D100_B_STEP Controller",
				"Intel D100_C_STEP Controller",
				"Intel D101_A_STEP Controller",
				"Intel D101_B0_STEP Controller",
				"Intel D101M_A_STEP Controller",
				"Intel D101S_A_STEP Controller",
				"Intel D102_A_STEP Controller",
				"Intel D102_B_STEP Controller",
				"Intel D102_C_STEP Controller",
				"Intel D102_D_STEP Controller",
				"Intel D102_E_STEP Controller",
				"Intel D102_F_STEP Controller",
				"Intel 82562_G Controller",
				"Intel 82562_GZ Controller",
				"Intel 82562_GX_GT Controller",
				"Intel 82562 Controller",
				
				/* 131073 */			
				"Intel 82597 EX Controller",
								
				/* 196609 -> 196610 */
				"Intel 82598 Controller",
				"Intel 82599 Controller"
				
				
			}:Amended
		]
	uint32 ControllerID;



[Description (
 	"Adapter status specifies the current status of the adapter."):Amended,
	Bitmap{"1", "2", "4", "16", "32", "1024", "2048"}:Amended,
	Bitvalues {"Installed", "DriverLoaded", "HardwareMissing", 
    "HasDiag", "HasLink", "HasTCOEnabled", "DeviceError"}:Amended,
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.AdapterStatus"}
	]
    uint32 AdapterStatus;

[Override ("Capabilities"), Description (
	"Lists the capabilities of the device."):Amended, 
	ArrayType ("Indexed"),
	Values {
	/* 0 */ "Unknown", "Other", "AlertOnLan", "WakeOnLan", 
	/* 4 */ "Adapter Fault Tolerance", "Adaptive Load Balancing", 
	/* 6 */ "IPSec Offload", "ASF",
	/* 8 */  "Feature Not Supported", "Static Link Aggregation",
	/* 10 */ "IEEE 802.3ad Dynamic Link Aggregation", "Checksum Offload",
	/* 12 */ "Switch Fault Tolerance", "Feature Not Supported", "Feature Not Supported",
	/* 15 */ "Feature Not Supported", "Feature Not Supported", "Feature Not Supported",
	/* 18 */ "Feature Not Supported", "Feature Not Supported",
	/* 20 */ "Feature Not Supported", "Feature Not Supported",
	/* 22 */ "Feature Not Supported", "Feature Not Supported",	
	/* 24 */ "Feature Not Supported",
	/* 25 */ "Feature Not Supported", "Feature Not Supported",
	/* 27 */ "Feature Not Supported", "Feature Not Supported",
	/* 29 */ "TCO Capability", "Wake Up Capabilities", "IP Checksum Offload",
	/* 32 */ "10 Mbps", "100 Mbps", "1000 Mbps", "10000 Mbps",
	/* 36 */ "Teaming", "VLAN", "IEEE VLAN", "ISL VLAN", "Feature Not Supported",
	/* 41 */ "Identify Adapter Support", "Cable Test Support", "Diagnostic Support",
	/* 44 */ "Flash support", "ICH Support", "Usage Server", "Vendor Intel", "Feature Not Supported",
	/* 49 */ "Feature Not Supported", "PowerManagement Support", "Feature Not Supported",
	/* 52 */ "MFO", "Pass Through", "Quad-Port Support", "Dedicated MAC Address",
	/* 56 */ "Jumbo Frame Support","Feature Not Supported","Signal Quality Test", 
	/* 59 */ "Cable Offline Test", "Adapter is LOM", "Scalable Networking Pack Capability", 
	/* 62 */ "CB Platform Capability",
	/* 63 */ "iSCSI Capability",
	/* 64 */ "LinkSec Capability",
	/* 65 */ "DCB Capability",
	/* 66 */ "FCOE Capability","KX Module Capability",
	/* 68 */ "Virtual Machines Load Balancing"
	} : Amended, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.CapabilityDescriptions"}
	]
    uint16 Capabilities[];

[Override ("CapabilityDescriptions"), Description (
	"An array of free-form strings providing more detailed "
	"explanations for any of the Physical Ethernet Adapter features "
	"indicated in the Capabilities array. Note, each entry of "
	"this array is related to the entry in the Capabilities "
	"array that is located at the same index."):Amended, 
	ArrayType ("Indexed"), 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.Capabilities"}
	]
    string CapabilityDescriptions[];

[ Description (
	"Hardware status specifies the current status of the hardware"):Amended,
	Values {"Unknown", "Ready", "Initializing", "Reset", 
	"Closing", "Not Ready" }: Amended
	]
	uint32 HardwareStatus;

[Description (
	"This setting has been deprecated and is no longer supported."):Amended,
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilityIDs"}
	]
	uint16 OtherEnabledCapabilityIDs[];

	[Description ("This setting has been deprecated and is no longer supported."):Amended,
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilities"}
	]
	string OtherEnabledCapabilities[];

	[Description ("This setting has been deprecated and is no longer supported."):Amended,
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilities"}
	]
	string OtherCapabilityDescriptions[];


	[Description (
        "SlotID field of the System Slot structure provides a mechanism to correlate the "
	"physical attributes of the slot to its logical access method."):Amended
	]
   	string SlotID;

	[Description (
	"EEPROMVersion contains the EEPROM version of the device."):Amended
	]
	string EEPROMVersion;

	[Description(
	"Original display name of the adapter. "):Amended]
	string OriginalDisplayName;

	[Description (
	"PCI device Id of the device."):Amended
	]
	string PCIDeviceID ;

    	[Description (
	"GetHbaPath will return the path to the corresponding HBA's instance "
	"in Device Mananger."):Amended, implemented 
	]
	uint32 GetHbaPath( [out] string HbaPath);	

[Description (
	"IdentifyAdapter will flash the light on the adapter for a few "
	"seconds to enable the user to identify it.  This method will only "
	"work for physical adapters."):Amended, implemented 
	]
	uint32 IdentifyAdapter( [in] uint16 nSeconds );	


	[Description (
	"GetPowerUsageOptions detects any optional power usage settings. "
	"For example, power usage for standby, battery operation etc."  
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetPowerUsageOptions"}
	]
	uint32 GetPowerUsageOptions(
	  	[OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 AutoPowerSaveModeEnabled,
		[OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 ReduceSpeedOnPowerDown,
		[OUT,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 SmartPowerDown,
		[OUT,
        ValueMap {"1","2"}: Amended , 
        Values {"Normal Power", "Low Power"}: Amended
	]
		 uint32 SavePowerNowEnabled,
	[OUT,
		 ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 EnhancedASPMPowerSaver,
	[OUT,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "BatteryMode"}: Amended
	] 
		uint32 ACBSMode,
	
	[OUT,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 LinkSpeedBatterySaver,
	[OUT,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 SystemIdlePowerSaver
	);

	[Description (
	"This method can be used to makes changes to the power usage options. "
	"For example, this method could be used to reduce power usage for "
	"standby, battery operation etc. Note power usage settings are "
	"stored and used for every boot."
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetPowerUsageOptions"} 
	]
	uint32 SetPowerUsageOptions(
	 	[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 AutoPowerSaveModeEnabled,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 ReduceSpeedOnPowerDown,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 SmartPowerDown,
		[IN,
        ValueMap {"1","2"}: Amended , 
        Values {"Normal Power", "Low Power"}: Amended
	]
		 uint32 SavePowerNowEnabled,
		[IN,
		 ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 EnhancedASPMPowerSaver,
	[IN,
		 ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "BatteryMode"}: Amended
	]
		 uint32 ACBSMode,		 
	[IN,
		 ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 LinkSpeedBatterySaver,

	[IN,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 SystemIdlePowerSaver

	);	

	[Description (
	"GetWakeOnLanPowerOptions returns WakeOnLan power settings. "
	"For example, information about wakeonlink, wakeonmagicpacket etc.."  
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetWakeOnLanPowerOptions"}
	]
	uint32 GetWakeOnLanPowerOptions(
	  	[OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeFromPowerOff,
		[OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeOnLink,
		[OUT,
        ValueMap {"0","1"} : Amended, 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeOnMagicPacket,
		[OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 WakeOnDirectedPacket,
		 [OUT,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 WakeOnPattern
	);
	[Description (
	"This method can be used to makes changes to the WakeOnLan options. "
	"For example, this method could be used to set options like "
	"wakefromPoweroff, wakeOnlink, WakeOnMagicPacket, WakeOnDirectedPacket etc."
	" Note WakeOnLan settings are stored and used for every boot."
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetWakeOnLanPowerOptions"} 
	]
	uint32 SetWakeOnLanPowerOptions(
	 	[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeFromPowerOff,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeOnLink,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	] 
		uint32 WakeOnMagicPacket,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 WakeOnDirectedPacket,
		[IN,
        ValueMap {"0","1"}: Amended , 
        Values {"Disabled", "Enabled"}: Amended
	]
		 uint32 WakeOnPattern

	);
	[Description (
	"This method is used to makes changes to the Power management"
	"capabilities during DMIX install so that any upgrade scenarios from "
	"earlier releases will have the right options for all the WakeOnLAN"
	" options and DMIX will not have reinterpret them dynamically"
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetPowerMgmtCapabilities"} 
	]
	uint32 SetPowerMgmtCapabilities();
	[Description (
	"This method can be used to check if SetPowerMgmtCapabilities() needs to be called."
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsSetPowerMgmtCapabilitiesReq"} 
	]
	uint32 IsSetPowerMgmtCapabilitiesReq(
	 	[OUT] 
		boolean bIsSetRequired);
	[Description (
	"This method can be used to check if iSCSI is supported by the OS and iSCSI "
	"patch and hotfix are installed."
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsiSCSISupported"} 
	]
	uint32 IsiSCSISupported(
	 	[OUT] 
		boolean bIsiSCSIOS,
		[OUT]
		boolean bIsiSCSIPatch,
		[OUT]
		boolean bIsiSCSIHotFix);		
	
	
	
	[Description 
	(
		"This method can be used to determine if the passed in setting will be changed when the new team is created."
		"Depending on the adapters in the team and which features each supports, the setting may be disabled to "
		"synchronize the setting accross all adapters in the team."
		):Amended, implemented,
		ModelCorrespondence {"IANet_PhysicalEthernetAdapter.ValidateSettingOnNewTeam"}
	]
	uint32 ValidateSettingOnNewTeam
	(
		[IN]    string Adapters[],
		[IN]	string SettingName,
		[OUT]   uint64 ValResult
	);	
	
	[Description 
	(
		"This method will be used during the installation of DMIX to setup the DCE service with the default DCB settings."
		):Amended, implemented,
		ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetupDCB_Defaults"}
	]
	uint32 SetupDCB_Defaults
	(
		[OUT]   uint32 ValResult
	);	
	
	
	[Description (
	"This method can be used to check if iSCSI is enabled on that adapter."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsiSCSIEnabled"} 
	]
	uint32 IsiSCSIEnabled(
	 	[OUT,
        	Values {"0", "1", "2", "3"}: Amended
	]
		
	uint32 iSCSIStatus);
	
	[Description (
	"This method can be used to get the NDIS version"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetNDISVersion"} 
	]
	uint32 GetNDISVersion(
	 	[OUT] 
		uint32 dwMajorVersion,
		[OUT]
		uint32 dwMinorVersion);
		
	[Description (
	"This method can be used check if the fan is running on the adapter.  NOTE:  not all devices support this functionality"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetAdapterFanStatus"} 
	]
	uint32 GetAdapterFanStatus(
		[OUT,
			ValueMap {"0", "1", "2"}: Amended , 
			Values {"Not Supported", "Not Active", "Active"}: Amended
		]
		uint32 dwAdapterFanStatus);
		
	[Description (
	"This method can be used to check if warnings exist on the adapter.  NOTE:  not all devices support this functionality"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetAdapterWarnings"} 
	]
	uint32 GetAdapterWarnings([OUT] UINT64 dwAdapterWarnings);
	
		
	[Description (
	"This method should be called during the installation when the FCOE feature is installed.  FCOE enabled adapter perform better with Jumbo Frames enabled."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.EnableJumboFramesOnFcoeDevices"} 
	]
	uint32 EnableJumboFramesOnFcoeDevices();
	
	
	[Description (
	"This method is only to be called by the DMIX installer during a clean installation of DMIX or with the add or removal of the FCOE feature."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.InitializePerformanceProfilesOnDevices"} 
	]
	uint32 InitializePerformanceProfilesOnDevices
	(
		[IN]    boolean bInitializeValues,
		[OUT]   uint64 ValResult
	);
	
	[ Description (
	"LinkSec status indicates the current status of the LinkSec authentication"):Amended,
	ValueMap {"0","1","2","3","4", "5", "6"}: Amended ,
	Values {"Disabled", "Authenticating", "Authenticated", "Re-Authenticating", 
	"Authentication Failed", "Not Connected", "Not Capable" }: Amended
	]
	uint32 LinksecStatus;
	
	[Description (
	"This method can be used to get the LinkSec parameters used for authentication"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetLinksecParams"} 
	]
	uint32 GetLinksecParams(
		[OUT, 
		 ValueMap {"0", "1", "2","3","4"}: Amended , 
		 Values {"EAP_OUTERNONE", "EAP_TLS", "EAP_TTLS", "EAP_PEAP", "EAP_FAST"}: Amended]
		uint16 OuterEAPType,
		[OUT, 
		 ValueMap {"0", "1", "2","3"}: Amended , 
		 Values {"EAP_INNERNONE", "EAP_TLS_INNER", "EAP_MSCHAPv2", "EAP_GTC"}: Amended]
		uint16 InnerEAPType,
		[OUT]
		string LinksecCredUsername,		
		[OUT]
		string LinksecCredPassword,
		[OUT]
		boolean  bAutoPAC,
		[OUT]
		string PACPath,
		[OUT]
		boolean bMachineCred,
		[OUT]
		uint32 WindowsCreds,	
		[OUT]
		string MachineNameDomainName,
		[OUT, 
		 ValueMap {"1", "2"}: Amended , 
		 Values {"CISCO_SAP", "MACSEC"}: Amended]
		uint16 KeySecType,
		[OUT]
		boolean bRandMACAddress
		);
	
	[Description (
	"This method imports Manual PAC to PAC store"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.ImportManualPAC"} 
	]
	uint32 ImportManualPAC(		
		[IN]
		string PACPath,		
		[IN]
		string PACFilePassword 	
		);
	
	[Description (
	"This method can be used to get the PAC File Contents of a specific PAC file"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetPACFileContents"} 
	]
	uint32 GetPACFileContents(		
		[IN]
		string strPACFile,
		[OUT,
        	ValueMap {"1","2"}: Amended , 
        	Values {"Tunnel PAC", "Machine PAC"}: Amended
		] 
		uint32 PACFileType,		
		[OUT]
		string strPACFileInfo,		
		[OUT]
		string strPACFileAid,
		[OUT]
		string strPACFileAidInfo,
		[OUT]
		string strPACFileIid,	
		[OUT,
        	ValueMap {"0"}: Amended , 
        	Values {"Not Available"}: Amended
		] 
		uint32 PACFileExpiryTime			
		);

	[Description (
	"This method deletes PAC from PAC store"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.DeletePacFile"} 
	]
	uint32 DeletePacFile(		
		[IN]
		string strPACFileDelete		
		);
	
	[Description (
	"This method can be used to set the LinkSec parameters used for authentication"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetLinksecParams"} 
	]
	uint32 SetLinksecParams(
	 	[IN, 
		 ValueMap {"0", "1", "2","3","4"}: Amended , 
		 Values {"EAP_OUTERNONE", "EAP_TLS", "EAP_TTLS", "EAP_PEAP", "EAP_FAST"}: Amended] 
		uint16 OuterEAPType,
		[IN, 
		 ValueMap {"0", "1", "2","3"}: Amended , 
		 Values {"EAP_INNERNONE", "EAP_TLS_INNER", "EAP_MSCHAPv2", "EAP_GTC"}: Amended]
		uint16 InnerEAPType,
		[IN]
		boolean  bCredChanged,
		[IN]
		string LinksecCredUsername,	
		[IN]
		string LinksecCredPassword,
		[IN]
		boolean  bAutoPAC,
		[IN]
		string PACPath,
		[IN]
		boolean bDriverReload,
		[IN]
		uint32	TypeOfCredsChanged,
		[IN]
		uint32 WindowsCreds,
		[IN, 
		 ValueMap {"1", "2"}: Amended , 
		 Values {"CISCO_SAP", "MACSEC"}: Amended]
		uint16 KeySecType,
		[IN]
		boolean bRandMACAddress
		);
	[Description (
	"This method can be used to set the LinkSec manual configuration keys."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetLinksecManualCfgKeys"} 
	]
	uint32 SetLinksecManualCfgKeys(
	 	[IN]
		string strTXSAKey,		 
		[IN] 
		uint16 nTXAssocNum1,
		[IN] 
		uint16 nTXAssocNum2,
		[IN]
		boolean  bIncludeSCIOnTX,
		[IN]
		string strTXSCI,
		[IN]
		string strRXSAKey,
		[IN] 
		uint16 nRXAssocNum1,
		[IN] 
		uint16 nRXAssocNum2,
		[IN]
		string strRXSCI,
		[IN]
		boolean  bUseEncryption,
		[IN]
		boolean bDriverReload
		);
	[Description (
	"This method can be used to get the LinkSec manual configuration keys."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetLinksecManualCfgKeys"} 
	]
	uint32 GetLinksecManualCfgKeys(
	 	[OUT]
		string strTXSAKey,		 
		[OUT] 
		uint16 nTXAssocNum1,
		[OUT] 
		uint16 nTXAssocNum2,
		[OUT]
		boolean  bIncludeSCIOnTX,
		[OUT]
		string strTXSCI,
		[OUT]
		string strRXSAKey,
		[OUT] 
		uint16 nRXAssocNum1,
		[OUT] 
		uint16 nRXAssocNum2,
		[OUT]
		string strRXSCI,
		[OUT]
		boolean  bUseEncryption
		);

	[Description (
	"This method can be used to get the LinkSec manual PM key."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetLinksecManualPMKeys"} 
	]
	uint32 GetLinksecManualPMKeys(
	 	[OUT]
		string strManualPMKey,
		[OUT]
		boolean bRandMACAddress
		);	
	
	[Description (
	"This method can be used to set the LinkSec manual PM Key."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetLinksecManualPMKeys"} 
	]
	uint32 SetLinksecManualPMKeys(
	 	[IN]
		string strManualPMKey,		
		[IN]
		boolean bDriverReload,
		[IN]
		boolean bRandMACAddress
		);

	[Description (
	"This method can be used to indicate to the DMIX stack of LinkSec install status"

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.LinksecInstallParamChanges"} 
	]
	uint32 LinksecInstallParamChanges(
		[IN]
		uint16 dwParamChanges
		);
	[Description (
	"This method can be used to check if LinksecInstallParamChanges has to be called."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsLinksecInstallParamChangesDone"} 
	]
	uint32 IsLinksecInstallParamChangesDone(
		[OUT]
		boolean  bParamChanges
		);
		[Description (
	"This method can be used to get any stored credentials or default values."

	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetLinksecSavedCreds"} 
	]
	uint32 GetLinksecSavedCreds(
		[out]
		string strUsername,
		[out]
		string strPassword,		
		[out]
		boolean bMachineCred,
		[out]
		string strMachineDomainName
		);
	[Description (
	"This method can be used to get the LinkSec security statistics"
	):Amended, implemented, 
	ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetLinksecSecurityStatsLog"} 
	]
	uint32 GetLinksecSecurityStatsLog(
		[OUT]
		string strSecStats
		);
};

// ============================================================================
// Intel IANetSetting Abstract Base Class
// ============================================================================
		[Abstract, 
		 Description("IANet_Setting objectifies instance related "
		 "driver and network device settings. IANet_Setting is an "
		 "Abstract superclass for a set of concrete classes of different "
		 "types.  This set of classes allows open ended usage of a variable "
		 "number of settings.  These can be different for different adapters, "
		 "teams or VLANs "
		 "and it may not always be possible to predict what parameters will "
		 "be required."):Amended,  LOCALE(0x409)
		]
class IANet_Setting : CIM_Setting
{
		[Key,Description(
		 "ParentId identifies the object that this parameter is for. " 
		 "This is used to ensure that the parameters have unique keys - applications "
		 "should use associations to link settings with managed elements.") : ToSubclass Amended
		]
	string ParentId;

	[Key,Description(
		 "ParentType identifies the type of object that this parameter is for. " 
		 "This can take one of the following values:\n"
		 "		VLAN - for VLAN settings\n"
		 "		NIC - for Adapter settings\n"
		 "		Team - for Team settings\n") :ToSubclass Amended]

	string ParentType;

		[Key,Description(
		 "Caption contains a short name for the parameter that is used to "
		 "uniquely identify the parameter for the user."):ToSubclass Amended]
	string Caption;

		[Description(
		 "Description is a longer string that describes the parameter for the user.")
		 :ToSubclass Amended
		]

     	string Description;

		[Description(
		 "MiniHelp is a help string for this setting."):ToSubclass Amended
		]
	string MiniHelp;

	[Description (
    "Expose level of setting. For example, based on the expose level "
	"management application could determine whether this setting could be "
	"exposed to the user.") : Amended,
		ValueMap{"0", "1"}:ToSubclass Amended,
		Values {"Zero", "One"}:ToSubclass Amended
	]	
	uint32 ExposeLevel;

		[Description(
		 "Writable is true if the setting can be changed and false if the setting "
		 "cannot be changed. If this attribute is NULL then the user needs to do a "
		 "pre-check to see if the setting can be saved."):ToSubclass Amended
		]
	boolean Writable;
	
	[Description(
		 "Some settings require a session to be set. If this is true then this "
		 "setting requires a session. The setting will not be saved until the Apply "
		 "method of IANet_NetService is called."):ToSubclass Amended
		]
	boolean RequiresSession;

	[Description(
		 "Some of the settings are grouped under specific categories."
		 "Grouped is true if the setting is grouped."):ToSubclass Amended
		]
	boolean Grouped;

	[Description(
		 "Some of the settings are grouped under specific categories."
		 "This attribute specifies the Id of the group under which this setting belongs."
		):ToSubclass Amended
		]
	uint16 GroupId;
};


// ============================================================================
// Intel IANet_AdapterSetting Abstract Base Class
// ============================================================================
		[Abstract, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),
		 Description("IANet_AdapterSetting objectifies Adapter instance related "
		 "driver and network device settings. IANet_AdapterSetting is an "
		 "Abstract superclass for a set of concrete classes of different "
		 "types.  This set of classes allows open ended usage of a variable "
		 "number of settings." 
		):Amended,  LOCALE(0x409)
		]
class IANet_AdapterSetting : IANet_Setting
{

};


// ============================================================================
// AdapterSetting Int Class
// ============================================================================

		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
		 Description("IANet_AdapterSettingInt objectifies Adapter related "
		 "driver and network device settings. IANet_AdapterSettingInt " 
		 "specifically handles Integer settings. The following "
		 "constraints are placed on the CurrentValue and default value:\n"
		 "	min <= CurrentValue <= max\n"
		 "	( CurrentValue - base ) is a multiple of step\n"):Amended,  LOCALE(0x409)]
class IANet_AdapterSettingInt : IANet_AdapterSetting
{
		[Description(
		 "Min is the minimum value that the integer can take."):Amended]
	sint64 min;

		[Description(
		 "Max is the maximum value that the integer can take."):Amended]
	sint64 max;

		[Description(
		 "Step is the granularity of the integer value."):Amended]
	sint64 step;

		[Description(
		 "Base is the root from which the integer value may take values. i.e. "
		 " CurrentValue - base is a multiple of step."):Amended]
	uint64 base;

		[Description(
		 "DefaultValue is the initial value of the parameter."):Amended]	
	sint64 DefaultValue;

		[Write, Description(
		 "CurrentValue is the actual value of the parameter - this is the only attribute that "
		 "the user can change."):Amended]	
	sint64 CurrentValue;

		[Description(
		 "Scale is unit of measurement to set or estimate series of marks "
		 "or points at known intervals to measure value of the parameter."):Amended]	
	sint64 Scale;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] uint64 ValResult);
	
};

// ============================================================================
//  Adapter Setting Enum Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
		 Description("IANet_AdapterSettingEnum objectifies Adapter related "
		 "driver and network device settings. IANet_AdapterSettingEnum " 
		 "specifically handles Enumeration settings"):Amended,  LOCALE(0x409)
		]
class IANet_AdapterSettingEnum : IANet_AdapterSetting
{
		[Description(
		 "PossibleValues is an array of the possible values allowed for the enum."):Amended
		]	
	sint64 PossibleValues[];
		
		[Description(
		 "DescriptionMap describes what each value means."):Amended
		]	
	string DescriptionMap[];
		
		[write, Description(
		 "CurrentValue is the current setting for this parameter."):Amended
		]	 
	sint64 CurrentValue;
		
		[Description(
		 "DefaultValue is the initial setting for this value."):Amended
		]
	sint64 DefaultValue;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] uint64 ValResult);
};

// ============================================================================
//  Adapter Setting Slider Class
// ============================================================================
    [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
    Description("IANet_AdapterSettingSlider objectifies Adapter related "
    "driver and network device settings. IANet_AdapterSettingSlider " 
    "specifically handles Slider settings"):Amended,  LOCALE(0x409)
    ]
class IANet_AdapterSettingSlider : IANet_AdapterSetting
{
		[Description(
		 "PossibleValues is an array of all the possible values.  The values "
		 "should be arranged with the first value on the left of the slider and "
		 "the last value on the right. "):Amended
		]
	sint64 PossibleValues[];
		[write, Description(
		 "CurrentValue is the current setting for this parameter."):Amended
		] 
	sint64 CurrentValue;

		[Description(
		 "DefaultValue is the initial setting for this parameter."):Amended
		]
	sint64 DefaultValue;
		
		[Description(
		 "FirstLabel is the label that should be displayed on the left of the slider."):Amended
		]
	string FirstLabel;
		[Description(
		 "LastLabel is the label that should be displayed on the right of the slider."):Amended
		]
	string LastLabel;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] uint64 ValResult);
};

// ============================================================================
//  Adapter Setting Multi Selection Class
// ============================================================================
    [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
    Description("IANet_AdapterSettingMultiSelection objectifies Adapter related "
    "driver and network device settings. IANet_AdapterSettingMultiSelection " 
    "specifically handles Multi Selection settings."):Amended,  LOCALE(0x409)
    ]

class IANet_AdapterSettingMultiSelection : IANet_AdapterSetting
{
		[Description(
		 "PossibleValues is an array of all the possible selections."):Amended
		]
	sint64 PossibleValues[];
		[Description(
		 "DescriptionMap is an array of descriptions of the possible selections."):Amended
		]
	string DescriptionMap[];
		[write, Description(
		 "Current value is a bit-wise OR of the currently chosen options from the "
		 "possible values."):Amended
		] 
	sint64 CurrentValue;

		[write, Description(
		 "Default value is a bit-wise OR of the default options from the "
		 "possible values."):Amended	
		] 
	sint64 DefaultValue;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] uint64 ValResult);
	
};

// ============================================================================
//  Adapter Setting String Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
		 Description("IANet_AdapterSettingString objectifies Adapter related "
		 "driver and network device settings. IANet_AdapterSettingString " 
		 "specifically handles String settings."):Amended,  LOCALE(0x409)
		]
class IANet_AdapterSettingString : IANet_AdapterSetting
{
		[Description("MaxLength is the maximum length of the string."):Amended]
	uint32  MaxLength;

		[write, Description("CurrentString is the current value for the parameter."):Amended] 
	string  CurrentValue;

		[Description("DefaultString is the initial value for the parameter."):Amended]
	string  DefaultValue;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] string CurrentValue, [OUT] uint64 ValResult);
};

// ============================================================================
//  Adapter Setting Multi String Class
// ============================================================================
		[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"),  
		 Description("IANet_AdapterSettingMultiString objectifies Adapter related "
		 "driver and network device settings. IANet_AdapterSettingMultiString " 
		 "specifically handles Multi String settings."):Amended,  LOCALE(0x409)
		]
class IANet_AdapterSettingMultiString : IANet_AdapterSetting
{
		[Description("MaxLength is the maximum length of the string."):Amended]
	uint32  MaxLength;

		[write, Description("CurrentString is the current values for the parameter."):Amended] 
	string  CurrentValues[];

		[Description("DefaultString is the initial value for the parameter."):Amended]
	string  DefaultValue;
	
	[Description (
	"This method is called to check if the change in the setting will have any impact on other settings or to the user's experience."
	):Amended, implemented
	]
	uint32 ValidateSettingModification( [IN] string CurrentValues[], [OUT] uint64 ValResult);
};


// ============================================================================
// IANet_AdapterToSettingAssoc class
// ============================================================================
[   Association, Description("This class associates Intel NICs with their respective settings.")
                :Amended,  LOCALE(0x409),
    Dynamic,
    Provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll")
]
class IANet_AdapterToSettingAssoc  : CIM_ElementSetting
{
   [  Override("Element"),
      Description ("The Adapter to which the Setting object belongs."):Amended
   ]
   IANet_PhysicalEthernetAdapter REF Element = NULL;
   [  Override("Setting"),
      Description ("The Setting belonging to the Adapter."):Amended
   ]
   IANet_AdapterSetting REF Setting = NULL;
};


// ============================================================================
// NetService class
// ============================================================================
// TO BE DECIDED:: The Save Restore functionality, if not at Component Level,
// then Save Restore functionality can be handled in this class. TBD
//=============================================================================
[dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description (
"IANet_NetService is used to manage the interface supported by the provider.  "
"All set operations require a unique Client handle in the context if they are to "
"succeed."):Amended,  LOCALE(0x409)
]
class IANet_NetService: CIM_Service
{
	[Description ("Version of Intel NCS software stack."):Amended]
	string Version;

	[Description ("The BeginApply method creates a new Client handle that can be used for any set operations on the IANet classes."
	   	      "Parameters:\n"
		      "		ClientSetHandle - returns the new Set handle\n"	
		      "Return code:\n"
		      "		0 if operation was successful\n"
		      "		non-zero if operation failed - check extended error status\n"
	):Amended, implemented] 
	uint32 BeginApply([OUT] uint32 ClientSetHandle);

	[Description ("The Apply method commits any changes that the user has made with a Client Set handle. "
		      "After this method is invoked the Client Set Handle is invalidated and a new handle needs to be acquired before the next Set operation"
	    	      "Parameters:\n" 
	              "		ClientSetHandle - Handle with which the set operations were performed\n"
		      "		FollowupAction - caller may be required to do something before changes will take effect.\n"
	              "Return code:\n"
	    	      "		0 if operation was successful\n"
		      "		non-zero if operation failed - check extended error status\n"
	):Amended, implemented]
	uint32 Apply([IN] uint32 ClientSetHandle,
		     [OUT,ValueMap {"0", "1"} :Amended, 
		          Values {"No Action Required", "Reboot"}: Amended] 
      		     uint32 FollowupAction);	

	[Description ("The IsDeviceRLB_Enabled method is used to determine if the miniport passed is a team with RLB enabled or a VLAN on a RLB team."
	):Amended, implemented] 
	uint32 IsDeviceRLB_Enabled([IN] string szDeviceName, [OUT] boolean bRLB_Blocking_VNIC);	

	[Description ("The GetPROSetWarnings method is used to determine if any warnings exist."
	):Amended, implemented] 
	uint32 GetPROSetWarnings([OUT] UINT64 Warnings);	

	
	[Description ("The SynchronizeVmSwitchProtocolSetting method is used to synchronize the *RssOrVmqPreference setting across all base drivers in a team."
	):Amended, implemented] 
	uint32 SynchronizeVmSwitchProtocolSetting([IN] string szDeviceName, [IN] boolean bIsBinding);	

	
	[ArrayType ("Indexed"),
		Values {
			/* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled.  Disable Receive Load Balancing before creating a virtual NIC on this team.", 
			/* 1 */ "Reserved"
		} : Amended]
	uint16 VNIC_RLB_WarningMessage;

    [ArrayType ("Indexed"),
		Values {
			/* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled.  Receive Load Balancing will be disabled if you create a virtual NIC on this team.\n\nDo you want to continue?",
			/* 1 */ "Reserved"
		} : Amended]
	uint16 VNIC_DISABLE_RLB_WarningMessage;

	[ArrayType ("Indexed"),
		Values {
			/* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled.  Receive Load Balancing will be disabled on the team.",
			/* 1 */ "Reserved"
		} : Amended]
	uint16 VNIC_RLB_DIABLED_ON_TEAM_WarningMessage;
    
    
};


// ============================================================================
// Extended Status class
// ============================================================================
[Description (
"IANet_ExtendedStatus is used to return error information back to the "
"caller if something went wrong with an operation."):Amended,  LOCALE(0x409)
]
class IANet_ExtendedStatus : __ExtendedStatus 
{
		[Description (
		 "The code file name in the provider where the error occurred."
		 ):Amended]
	string File;

		[Description (
		 "The line number in the code file where the error occurred."
		 ):Amended]
	uint32 Line;
		[Description (
		 "The ClientSetHandle used in the call that caused the problem."
		 ):Amended]
	uint32 ClientSetHandle;

		[Description (
		 "If a technical rule has failed this array provides several strings "
		 "explaining the reasons for the failure. "
		 ):Amended]
	string RuleFailureReasons[];

};




