; Mellanox Technologies InfiniBand HCAs.
; Copyright 2008 Mellanox Technologies all Rights Reserved.

[Version]
Signature="$WINDOWS NT$"
Class=Net
ClassGUID   = {4d36e972-e325-11ce-bfc1-08002be10318}


Provider=%MTL%
; must be synchronized with bus\drv.c
DriverVer=02/14/2010,2.1.0.5593
CatalogFile=mlx4_bus.cat


;*****************************************
; Destination directory section
;*****************************************

[DestinationDirs]
DefaultDestDir = 12
Wdf_CoInstaller_CopyFiles = 11


;*****************************************
; Class Install section
;*****************************************

[ClassInstall32]
AddReg=ClassAddReg

[ClassAddReg]
HKR,,,,"Mellanox ConnectX Adapters"
HKR,,Icon,,-5
HKR,,SilentInstall,,1


;*****************************************
; Device Install section
;*****************************************

[SourceDisksNames.x86]
1=%DiskId%,,,""

[SourceDisksNames.amd64]
1=%DiskId%,,,""

[SourceDisksNames.ia64]
1=%DiskId%,,,""

[SourceDisksFiles.x86]
mlx4_bus.sys = 1,,
wdfcoinstaller01007.dll = 1,,

[SourceDisksFiles.amd64]
mlx4_bus.sys = 1,,
wdfcoinstaller01007.dll = 1,,

[SourceDisksFiles.ia64]
mlx4_bus.sys = 1,,
wdfcoinstaller01007.dll = 1,,

;*****************************************
; Mlx4Bus  Install Section
;*****************************************

[Manufacturer]
%MTL% = MLX4BUS.DeviceSection,ntx86,ntamd64,ntia64

[MLX4BUS.DeviceSection]
; empty since we don't support W9x/Me

[MLX4BUS.DeviceSection.ntx86]
%MT25408.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6340
%MT25418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_634A
%MT25448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6368
%MT25458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6372
%MT26418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6732
%MT26488.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6778
%MT26428.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_673c
%MT26438.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6746
%MT26448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6750
%MT26458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_675A
%MT26468.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6764
%MT26478.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_676E
%MT04097.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1001
%MT04098.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1002
%MT04099.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1003
%MT04100.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1004
%MT00401.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_0191

[MLX4BUS.DeviceSection.ntamd64]
%MT25408.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6340
%MT25418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_634A
%MT25448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6368
%MT25458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6372
%MT26418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6732
%MT26488.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6778
%MT26428.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_673c
%MT26438.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6746
%MT26448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6750
%MT26458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_675A
%MT26468.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6764
%MT26478.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_676E
%MT04097.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1001
%MT04098.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1002
%MT04099.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1003
%MT04100.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1004
%MT00401.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_0191

[MLX4BUS.DeviceSection.ntia64]
%MT25408.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6340
%MT25418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_634A
%MT25448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6368
%MT25458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6372
%MT26418.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6732
%MT26488.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6778
%MT26428.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_673c
%MT26438.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6746
%MT26448.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6750
%MT26458.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_675A
%MT26468.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_6764
%MT26478.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_676E
%MT04097.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1001
%MT04098.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1002
%MT04099.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1003
%MT04100.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_1004
%MT00401.DeviceDesc%=MLX4BUS.DDInstall, PCI\VEN_15B3&DEV_0191

[MLX4BUS.DDInstall.ntx86.hw]
AddReg = MLX4BUS.HwReg

[MLX4BUS.DDInstall.ntamd64.hw]
AddReg = MLX4BUS.HwReg

[MLX4BUS.DDInstall.ntia64.hw]
AddReg = MLX4BUS.HwReg

[MLX4BUS.HwReg]
HKR,"Interrupt Management",,0x00000010
HKR,"Interrupt Management\MessageSignaledInterruptProperties",,0x00000010

; MSI-X support
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MSISupported,0x00010001,1
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MessageNumberLimit,0x00010001,18
HKR,"Interrupt Management\Affinity Policy",,0x00000010

; AssignmentSetOverride - processors KAFFINITY mask  
HKR,"Interrupt Management\Affinity Policy",AssignmentSetOverride,0x00000001,0x0

; IrqPolicyMachineDefault (0) - use default policy for the computer
; IrqPolicyAllCloseProcessors (1) - connect interrupts to all processors of the near NUMA node
; IrqPolicyOneCloseProcessor (2) - connect interrupts to one processor
; IrqPolicyAllProcessorsInMachine (3) - connect interrupts to all processors in the machine
; IrqPolicySpecifiedProcessors (4) - connects interrupts according to AssignmentSetOverride
; IrqPolicySpreadMessagesAcrossAllProcessors (5) - assign different message-based interrupts to different processors
HKR,"Interrupt Management\Affinity Policy",DevicePolicy,0x00010001,0x5

; IrqArbPriorityUndefined (0) - no interrupt priority policy. 
; IrqArbPriorityLow (1) - device can tolerate low IRQL
; IrqArbPriorityNormal (2) - device expects normal interrupt latencies
; IrqArbPriorityHigh (3) - device requires the lowest possible interrupt latency
HKR,"Interrupt Management\Affinity Policy",DevicePriority,0x00010001,0x3

[MLX4BUS.DDInstall.ntx86]
CopyFiles = MLX4BUS.CopyFiles
AddReg    = MLX4BUS.SoftwareReg
Characteristics = 0x4 ;NCF_PHYSICAL
BusType = 5; PCIBus


[MLX4BUS.DDInstall.ntamd64]
CopyFiles = MLX4BUS.CopyFiles
AddReg    = MLX4BUS.SoftwareReg
Characteristics = 0x4 ;NCF_PHYSICAL
BusType = 5; PCIBus


[MLX4BUS.DDInstall.ntia64]
CopyFiles = MLX4BUS.CopyFiles
AddReg    = MLX4BUS.SoftwareReg
Characteristics = 0x4 ;NCF_PHYSICAL
BusType = 5; PCIBus


[MLX4BUS.DDInstall.ntx86.Services]
AddService = mlx4_bus,%SPSVCINST_ASSOCSERVICE%,MLX4BUS.ServiceInstall,MLX4BUS.EventLog

[MLX4BUS.DDInstall.ntamd64.Services]
AddService = mlx4_bus,%SPSVCINST_ASSOCSERVICE%,MLX4BUS.ServiceInstall,MLX4BUS.EventLog

[MLX4BUS.DDInstall.ntia64.Services]
AddService = mlx4_bus,%SPSVCINST_ASSOCSERVICE%,MLX4BUS.ServiceInstall,MLX4BUS.EventLog

[MLX4BUS.CopyFiles]
mlx4_bus.sys


;*****************************************
; Service Install section
;*****************************************

[MLX4BUS.ServiceInstall]
DisplayName     = %MLX4BUS.ServiceDesc%
ServiceType     = %SERVICE_KERNEL_DRIVER%
StartType       = %SERVICE_BOOT_START%
ErrorControl    = %SERVICE_ERROR_NORMAL%
ServiceBinary   = %12%\mlx4_bus.sys
LoadOrderGroup  = NDIS
AddReg          = MLX4BUS.ParamsReg

[MLX4BUS.EventLog]
AddReg = MLX4BUS.AddEventLogReg

[MLX4BUS.AddEventLogReg]
HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\mlx4_bus.sys"
HKR, , TypesSupported,   0x00010001, 7

[MLX4BUS.SoftwareReg]
HKR,"Parameters","PortType",%REG_SZ%,"ib,ib"

[MLX4BUS.ParamsReg]
HKR,,DeviceCharacteristics,0x10001,0x0100         ; Use same security checks on relative opens
HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)"      ; Allow generic-all access to Built-in administrators and Local system 
HKR,"Parameters","DebugLevel",%REG_DWORD%,0x00000003
HKR,"Parameters","DebugFlags",%REG_DWORD%,0x0000ffff
HKR,"Parameters","LogNumQp",%REG_DWORD%,0x00000011
HKR,"Parameters","LogNumRdmaRc",%REG_DWORD%,0x00000004
HKR,"Parameters","LogNumSrq",%REG_DWORD%,0x00000010
HKR,"Parameters","LogNumCq",%REG_DWORD%,0x00000010
HKR,"Parameters","LogNumMcg",%REG_DWORD%,0x0000000D
HKR,"Parameters","LogNumMpt",%REG_DWORD%,0x00000012
HKR,"Parameters","LogNumMtt",%REG_DWORD%,0x00000014
HKR,"Parameters","EnableQoS",%REG_DWORD%,0x00000000
HKR,"Parameters","BlockMcastLoopBack",%REG_DWORD%,0x00000000
HKR,"Parameters","InterruptFromFirstPacket",%REG_DWORD%,0x00000001

HKR,"Parameters","NumMac",%REG_DWORD%,0x00000000
HKR,"Parameters","NumVlan",%REG_DWORD%,0x00000000
HKR,"Parameters","UsePrio",%REG_DWORD%,0x00000000
HKR,"Parameters","NumFcExch",%REG_DWORD%,0x00000000



HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e21-93C0-192F4801BBFF","Flags",%REG_DWORD%,0xffff
HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e21-93C0-192F4801BBFF","Level",%REG_DWORD%,0x3

;*****************************************
; WDF Coinstaller installation section
;*****************************************

[MLX4BUS.DDInstall.ntx86.CoInstallers]
AddReg=Wdf_CoInstaller_AddReg
CopyFiles=Wdf_CoInstaller_CopyFiles

[MLX4BUS.DDInstall.ntamd64.CoInstallers]
AddReg=Wdf_CoInstaller_AddReg
CopyFiles=Wdf_CoInstaller_CopyFiles

[MLX4BUS.DDInstall.ntia64.CoInstallers]
AddReg=Wdf_CoInstaller_AddReg
CopyFiles=Wdf_CoInstaller_CopyFiles

[Wdf_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01007.dll,WdfCoInstaller"

[Wdf_CoInstaller_CopyFiles]
wdfcoinstaller01007.dll

[MLX4BUS.DDInstall.ntx86.Wdf]
KmdfService = mlx4_bus, mlx4_bus_wdfsect

[MLX4BUS.DDInstall.ntamd64.Wdf]
KmdfService = mlx4_bus, mlx4_bus_wdfsect

[MLX4BUS.DDInstall.ntia64.Wdf]
KmdfService = mlx4_bus, mlx4_bus_wdfsect

[mlx4_bus_wdfsect]
KmdfLibraryVersion = 1.7


;*****************************************
; Strings
;*****************************************

[Strings]
MTL="Mellanox Technologies Ltd."
MLX4BUS.ServiceDesc = "Mellanox ConnectX Bus Enumerator"
; VPI
MT25408.DeviceDesc="Mellanox ConnectX VPI (MT25408) - IB SDR / 10GigE Network Adapter"
MT25418.DeviceDesc="Mellanox ConnectX VPI (MT25418) - PCIe 2.0 2.5GT/s, IB DDR / 10GigE Network Adapter"
MT26418.DeviceDesc="Mellanox ConnectX VPI (MT26418) - PCIe 2.0 5GT/s, IB DDR / 10GigE Network Adapter"
MT26488.DeviceDesc="Mellanox ConnectX VPI (MT26488) - PCIe 2.0 5GT/s, IB DDR / 10GigE Network Adapter"
MT26428.DeviceDesc="Mellanox ConnectX VPI (MT26428) - PCIe 2.0 5GT/s, IB QDR / 10GigE Network Adapter"
MT26438.DeviceDesc="Mellanox ConnectX VPI (MT26438) - PCIe 2.0 5GT/s, IB QDR / 10GigE Network Adapter"
MT04097.DeviceDesc="Mellanox ConnectX VPI (MT04097) - PCIe 2.0 5GT/s, IB QDR / 10GigE Network Adapter"
MT04098.DeviceDesc="Mellanox ConnectX VPI (MT04098) - PCIe 2.0 5GT/s, IB QDR / 10GigE Network Adapter"
MT04099.DeviceDesc="Mellanox ConnectX VPI (MT04099) - PCIe 3.0 5GT/s, IB QDR / 10GigE Network Adapter"
MT04100.DeviceDesc="Mellanox ConnectX VPI (MT04100) - PCIe 3.0 5GT/s, IB QDR / 10GigE Network Adapter"
; EN
MT25448.DeviceDesc="Mellanox ConnectX EN (MT25448) - PCIe 2.0 2.5GT/s, 10GigE Ethernet Adapter"
MT25458.DeviceDesc="Mellanox ConnectX EN (MT25458) - PCIe 2.0 2.5GT/s, 10GigE 10GBaseT Ethernet Adapter"
MT26448.DeviceDesc="Mellanox ConnectX EN (MT26448) - PCIe 2.0 5GT/s, 10GigE Ethernet Adapter"
MT26458.DeviceDesc="Mellanox ConnectX EN (MT26458) - PCIe 2.0 5GT/s, 10GigE 10GBaseT Ethernet Adapter"
MT26468.DeviceDesc="Mellanox ConnectX EN (MT26468) - PCIe 2.0 5GT/s, 10GigE Ethernet Adapter"
MT26478.DeviceDesc="Mellanox ConnectX EN (MT26478) - PCIe 2.0 5GT/s, 40GigE Ethernet Adapter"
; Burner
MT00401.DeviceDesc="Mellanox ConnectX (MT00401) - Network Adapter in Flash Recovery Mode"
DiskId = "Mellanox Mlx4 Bus installation disk"
SPSVCINST_NULL = 0x0
SPSVCINST_ASSOCSERVICE = 0x00000002
SERVICE_KERNEL_DRIVER  = 1
SERVICE_BOOT_START     = 0
SERVICE_DEMAND_START   = 3
SERVICE_ERROR_NORMAL   = 1
REG_DWORD              = 0x00010001
REG_MULTI_SZ_APPEND    = 0x00010008
REG_SZ                 = 0x00000000
