]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[MTHCA-KMDF] updates after rename from pcidrv.c & public.h
authorstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 11 Mar 2008 20:57:40 +0000 (20:57 +0000)
committerstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 11 Mar 2008 20:57:40 +0000 (20:57 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@988 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/IBFD/hw/mthca/kmdf/mthca_kmdf.c
branches/IBFD/hw/mthca/kmdf/mthca_public.h

index 53d05f591c0fb3bea23c4a12c8f8d152f728eed5..39b35c73059b56ef22d60718455bbfc91dfb3a7b 100644 (file)
@@ -40,7 +40,7 @@ Copyright (c) Microsoft Corporation.  All rights reserved.
 \r
 Module Name:\r
 \r
-    PciDrv.c\r
+    mthca_kmdf.c\r
 \r
 Abstract:\r
 \r
@@ -56,26 +56,48 @@ Environment:
 --*/\r
 \r
 #include "hca_driver.h"\r
-#include "pcidrv.h"\r
-#include "trace.h"\r
-\r
-#include <ntstrsafe.h>\r
 #include <ntintsafe.h>\r
 #include <initguid.h>\r
 \r
-#include "public.h"\r
+#include "mthca_public.h"\r
+\r
+DRIVER_INITIALIZE      DriverEntry;\r
+DRIVER_UNLOAD          hca_drv_unload;\r
+\r
+// hca_driver.c - previous DriverEntry()\r
+NTSTATUS\r
+HcaEntry (\r
+       IN      PDRIVER_OBJECT  p_driver_obj,\r
+       IN      PUNICODE_STRING p_registry_path );\r
+\r
+void\r
+hca_drv_unload( IN     PDRIVER_OBJECT  p_driver_obj );\r
+\r
+NTSTATUS\r
+HcaWmiRegistration( WDFDEVICE  Device );\r
+\r
+NTSTATUS\r
+HcaAllocSWResources(PFDO_DATA fdoData);\r
+\r
+NTSTATUS\r
+HcaFreeSWResources(PFDO_DATA fdoData);\r
+\r
+VOID\r
+HcaEvtDeviceSelfManagedIoCleanup( IN  WDFDEVICE Device );\r
+\r
+NTSTATUS\r
+HcaEvtDeviceSelfManagedIoSuspend( IN  WDFDEVICE Device );\r
 \r
-DRIVER_INITIALIZE DriverEntry;\r
+NTSTATUS\r
+HcaEvtDeviceD0ExitPreInterruptsDisabled(\r
+    IN WDFDEVICE                               Device,\r
+    IN WDF_POWER_DEVICE_STATE  TargetState );\r
 \r
 NTSTATUS\r
-HcaEntry(\r
-       IN                              PDRIVER_OBJECT                          p_driver_obj,\r
-       IN                              PUNICODE_STRING                         p_registry_path );\r
+HcaEvtDeviceD0EntryPostInterruptsEnabled(\r
+    IN WDFDEVICE                               Device,\r
+    IN WDF_POWER_DEVICE_STATE  PreviousState );\r
 \r
-NTSTATUS HcaAllocateSoftwareResources(PFDO_DATA fdoData);\r
-NTSTATUS HcaFreeSoftwareResources(PFDO_DATA fdoData);\r
-VOID HcaEvtDeviceSelfManagedIoCleanup( IN  WDFDEVICE Device );\r
-NTSTATUS HcaEvtDeviceSelfManagedIoSuspend( IN  WDFDEVICE Device );\r
 \r
 #if defined(EVENT_TRACING)\r
 //\r
@@ -107,9 +129,10 @@ NTSTATUS HcaEvtDeviceSelfManagedIoSuspend( IN  WDFDEVICE Device );
 #pragma alloc_text (PAGE, HcaEvtDeviceWakeArmSx)\r
 #pragma alloc_text (PAGE, HcaSetPowerPolicy)\r
 #pragma alloc_text (PAGE, HcaReadFdoRegistryKeyValue)\r
+#pragma alloc_text (PAGE, HcaEvtDeviceD0ExitPreInterruptsDisabled)\r
+#pragma alloc_text (PAGE, HcaEvtDeviceD0EntryPostInterruptsEnabled)\r
 #endif\r
 \r
-\r
 #define PARAMATER_NAME_LEN 80\r
 \r
 __inline\r
@@ -119,7 +142,8 @@ IsPoMgmtSupported(
    )\r
 {\r
 #if 1\r
-        return TRUE;\r
+       UNREFERENCED_PARAMETER(FdoData);\r
+       return TRUE;\r
 #else\r
     if (FdoData->RevsionID  >= E100_82559_A_STEP\r
          /*&& FdoData->RevsionID <= E100_82559_C_STEP*/)\r
@@ -164,7 +188,7 @@ DriverEntry (
     WDF_DRIVER_CONFIG      config;\r
     WDF_OBJECT_ATTRIBUTES  attrib;\r
     WDFDRIVER              driver;\r
-//    PDRIVER_CONTEXT        driverContext;\r
+    PDRIVER_CONTEXT        driverContext;\r
 \r
     //\r
     // Initialize WPP Tracing\r
@@ -217,8 +241,9 @@ DriverEntry (
         return status;\r
     }\r
 \r
-#if 0\r
     driverContext = GetDriverContext(driver);\r
+       driverContext->DrvObj = DriverObject; // for DeviceAdd\r
+#if 0\r
     //\r
     // Create a driver wide lookside list used for allocating memory  for the\r
     // MP_RFD structure for all device instances (if there are multiple present).\r
@@ -272,11 +297,12 @@ HcaEvtDeviceAdd(
     WDF_OBJECT_ATTRIBUTES           fdoAttributes;\r
     WDFDEVICE                       device;\r
     PFDO_DATA                       fdoData = NULL;\r
+    PDRIVER_CONTEXT                                    DriverContext;\r
 \r
     PAGED_CODE();\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "-->HcaEvtDeviceAdd routine. Driver: 0x%p\n", Driver);\r
+                "-->%s() Driver: 0x%p\n", __FUNCTION__, Driver);\r
 \r
     //\r
     // I/O type is Buffered by default. If required to use something else,\r
@@ -447,16 +473,18 @@ HcaEvtDeviceAdd(
                 WdfDeviceWdmGetAttachedDevice(device),\r
                 fdoData);\r
 \r
-       status = hca_add_device( WdfDriverWdmGetDriverObject(device), // DRIVER OBJ\r
-                                        WdfDeviceWdmGetPhysicalDevice(device), // PDO\r
-                                        WdfDeviceWdmGetAttachedDevice(device) );// DEV OBJ\r
+       DriverContext = GetDriverContext(Driver);\r
+\r
+       status = hca_add_device( DriverContext->DrvObj,\r
+                                                        WdfDeviceWdmGetPhysicalDevice(device),\r
+                                                        WdfDeviceWdmGetAttachedDevice(device) );\r
     //\r
     // Initialize the device extension and allocate all the software resources\r
     //\r
-    status = HcaAllocateSoftwareResources(fdoData);\r
+    status = HcaAllocSWResources(fdoData);\r
     if (!NT_SUCCESS (status)){\r
         TraceEvents(TRACE_LEVEL_ERROR, DBG_PNP,\r
-                    "HcaAllocateSoftwareResources failed: %!STATUS!\n",\r
+                    "HcaAllocSWResources failed: %!STATUS!\n",\r
                     status);\r
         return status;\r
     }\r
@@ -494,7 +522,7 @@ HcaEvtDeviceAdd(
 \r
     status = HcaWmiRegistration(device);\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- HcaEvtDeviceAdd  \n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- %s  \n",__FUNCTION__);\r
 \r
     return status;\r
 }\r
@@ -535,19 +563,14 @@ Return Value:
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
                 "--> HcaEvtDeviceContextCleanup\n");\r
 \r
-    status = HcaFreeSoftwareResources(fdoData);\r
+    status = HcaFreeSWResources(fdoData);\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
                 "<-- HcaEvtDeviceContextCleanup\n");\r
 \r
 }\r
 \r
-NTSTATUS\r
-HcaEvtDevicePrepareHardware (\r
-    WDFDEVICE      Device,\r
-    WDFCMRESLIST   Resources,\r
-    WDFCMRESLIST   ResourcesTranslated\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -577,6 +600,12 @@ Return Value:
     WDF status code\r
 \r
 --*/\r
+\r
+NTSTATUS\r
+HcaEvtDevicePrepareHardware (\r
+    WDFDEVICE      Device,\r
+    WDFCMRESLIST   Resources,\r
+    WDFCMRESLIST   ResourcesTranslated )\r
 {\r
     NTSTATUS     status = STATUS_SUCCESS;\r
     PFDO_DATA    fdoData = NULL;\r
@@ -606,11 +635,7 @@ Return Value:
 \r
 }\r
 \r
-NTSTATUS\r
-HcaEvtDeviceReleaseHardware(\r
-    IN  WDFDEVICE    Device,\r
-    IN  WDFCMRESLIST ResourcesTranslated\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -638,6 +663,11 @@ Return Value:
     NTSTATUS - Failures will be logged, but not acted on.\r
 \r
 --*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceReleaseHardware(\r
+    IN  WDFDEVICE    Device,\r
+    IN  WDFCMRESLIST ResourcesTranslated )\r
 {\r
     PFDO_DATA  fdoData = NULL;\r
 \r
@@ -663,11 +693,7 @@ Return Value:
     return STATUS_SUCCESS;\r
 }\r
 \r
-NTSTATUS\r
-HcaEvtDeviceD0Entry(\r
-    IN  WDFDEVICE Device,\r
-    IN  WDF_POWER_DEVICE_STATE PreviousState\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -703,6 +729,11 @@ Return Value:
     NTSTATUS\r
 \r
 --*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceD0Entry(\r
+    IN  WDFDEVICE Device,\r
+    IN  WDF_POWER_DEVICE_STATE PreviousState )\r
 {\r
     PFDO_DATA               fdoData;\r
 \r
@@ -725,7 +756,6 @@ Return Value:
 #endif\r
     }\r
 \r
-\r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_POWER, "<--HcaEvtDeviceD0Entry\n");\r
 \r
     return STATUS_SUCCESS;\r
@@ -835,10 +865,7 @@ Return Value:
     return STATUS_SUCCESS;\r
 }\r
 \r
-NTSTATUS\r
-HcaEvtDeviceSelfManagedIoInit(\r
-    IN  WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -846,15 +873,16 @@ Routine Description:
     HcaEvtDeviceSelfManagedIoInit is called by the Framework when the device\r
     enters the D0 state.  Its job is to start any I/O-related actions that the\r
     Framework isn't managing.  This might include releasing queues that are not\r
-    power-managed, that is, the Framework is not automatically holding and releasing\r
-    them across PnP/Power transitions. (The default behavior for WDFQUEUE is\r
-    auto-managed, so most queues don't need to be dealt with here.)  This might\r
-    also include setting up non-queue-based actions.\r
+    power-managed, that is, the Framework is not automatically holding and\r
+       releasing them across PnP/Power transitions. (The default behavior for\r
+       WDFQUEUE is auto-managed, so most queues don't need to be dealt with here.)\r
+        This might also include setting up non-queue-based actions.\r
 \r
     If you allow the Framework to manage most or all of your queues, then when\r
     you build a driver from this sample, you can probably delete this function.\r
 \r
-    In this driver, the SelfManagedIo callbacks are used to implement a watchdog timer.\r
+    In this driver, the SelfManagedIo callbacks are used to implement a\r
+       watchdog timer.\r
 \r
     This function is not marked pagable because this function is in the\r
     device power up path. When a function is marked pagable and the code\r
@@ -871,14 +899,16 @@ Return Value:
     NTSTATUS - Failures will result in the device stack being torn down.\r
 \r
 --*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceSelfManagedIoInit( IN  WDFDEVICE Device )\r
 {\r
     PFDO_DATA           fdoData = NULL;\r
-    NTSTATUS            status;\r
+    NTSTATUS            status=STATUS_SUCCESS;\r
 //    WDF_TIMER_CONFIG    wdfTimerConfig;\r
 //    WDF_OBJECT_ATTRIBUTES timerAttributes;\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceSelfManagedIoInit\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
 \r
     fdoData = FdoGetData(Device);\r
 \r
@@ -907,7 +937,7 @@ Return Value:
 #endif\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceSelfManagedIoInit\n");\r
+                "<-- %s() ret %x\n", __FUNCTION__, status);\r
 \r
     return status;\r
 }\r
@@ -1054,14 +1084,6 @@ HcaEvtDeviceSelfManagedIoCleanup( IN  WDFDEVICE Device )
 }\r
 \r
 \r
-VOID\r
-HcaEvtIoDeviceControl(\r
-    IN WDFQUEUE    Queue,\r
-    IN WDFREQUEST  Request,\r
-    IN size_t      OutputBufferLength,\r
-    IN size_t      InputBufferLength,\r
-    IN ULONG       IoControlCode\r
-    )\r
 /*++\r
 \r
 Routine Description:\r
@@ -1087,8 +1109,16 @@ Return Value:
     VOID\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtIoDeviceControl(\r
+    IN WDFQUEUE    Queue,\r
+    IN WDFREQUEST  Request,\r
+    IN size_t      OutputBufferLength,\r
+    IN size_t      InputBufferLength,\r
+    IN ULONG       IoControlCode )\r
 {\r
-    NTSTATUS                status= STATUS_SUCCESS;\r
+    //NTSTATUS                status= STATUS_SUCCESS;\r
     PFDO_DATA               fdoData = NULL;\r
     WDFDEVICE               hDevice;\r
     WDF_REQUEST_PARAMETERS  params;\r
@@ -1153,8 +1183,6 @@ Return Value:
             WdfRequestComplete(Request, STATUS_INVALID_DEVICE_REQUEST);\r
             break;\r
     }\r
-\r
-    return status;\r
 }\r
 \r
 \r
@@ -1187,13 +1215,12 @@ Return Value:
 NTSTATUS\r
 HcaEvtDeviceWakeArmS0( IN WDFDEVICE Device )\r
 {\r
-    NTSTATUS status;\r
-    PFDO_DATA           fdoData;\r
+    NTSTATUS   status=STATUS_SUCCESS;\r
+    PFDO_DATA  fdoData;\r
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeArmS0\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
 \r
     fdoData = FdoGetData(Device);\r
 \r
@@ -1205,15 +1232,12 @@ HcaEvtDeviceWakeArmS0( IN WDFDEVICE Device )
 #endif\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeArmS0 %x\n", status);\r
+                "<-- %s() %x\n", __FUNCTION__, status);\r
 \r
     return status;\r
 }\r
 \r
-NTSTATUS\r
-HcaEvtDeviceWakeArmSx(\r
-    IN WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1242,14 +1266,16 @@ Return Value:
     while the system is in Sx.\r
 \r
 --*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceWakeArmSx( IN WDFDEVICE Device )\r
 {\r
-    NTSTATUS   status;\r
+    NTSTATUS   status=STATUS_SUCCESS;\r
     PFDO_DATA  fdoData;\r
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeArmSx\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
 \r
     fdoData = FdoGetData(Device);\r
     //\r
@@ -1260,15 +1286,12 @@ Return Value:
 #endif\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeArmSx %x\n", status);\r
+                "<-- %s() ret %x\n", __FUNCTION__, status);\r
 \r
     return status;\r
 }\r
 \r
-VOID\r
-HcaEvtDeviceWakeDisarmS0(\r
-    IN WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1286,14 +1309,16 @@ Return Value:
     VOID.\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtDeviceWakeDisarmS0( IN WDFDEVICE Device )\r
 {\r
-    NTSTATUS status;\r
-    PFDO_DATA           fdoData;\r
+    NTSTATUS   status=STATUS_SUCCESS;\r
+    PFDO_DATA  fdoData;\r
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeDisarmS0\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s\n", __FUNCTION__);\r
 \r
     fdoData = FdoGetData(Device);\r
 #if 0\r
@@ -1301,15 +1326,10 @@ Return Value:
 #endif\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeDisarmS0 %x\n", status);\r
-\r
-    return ;\r
+                "<-- %s %x\n", __FUNCTION__, status);\r
 }\r
 \r
-VOID\r
-HcaEvtDeviceWakeDisarmSx(\r
-    IN WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1337,14 +1357,16 @@ Return Value:
     VOID\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtDeviceWakeDisarmSx( IN WDFDEVICE Device )\r
 {\r
-    NTSTATUS   status;\r
+    NTSTATUS   status=STATUS_SUCCESS;\r
     PFDO_DATA  fdoData;\r
 \r
     UNREFERENCED_PARAMETER(Device);\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeDisarmSx\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s\n", __FUNCTION__);\r
 \r
     fdoData = FdoGetData(Device);\r
 #if 0\r
@@ -1352,15 +1374,10 @@ Return Value:
 #endif\r
 \r
     TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeDisarmSx %x\n", status);\r
-\r
-    return;\r
+                               "<-- %s %x\n", __FUNCTION__, status);\r
 }\r
 \r
-VOID\r
-HcaEvtDeviceWakeTriggeredS0(\r
-    IN WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1379,23 +1396,21 @@ Return Value:
     VOID\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtDeviceWakeTriggeredS0( IN WDFDEVICE Device )\r
 {\r
     UNREFERENCED_PARAMETER(Device);\r
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeTriggeredS0\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s\n", __FUNCTION__);\r
 \r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeTriggeredS0\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- %s\n", __FUNCTION__);\r
 }\r
 \r
-VOID\r
-HcaEvtDeviceWakeTriggeredSx(\r
-    IN WDFDEVICE Device\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1424,22 +1439,24 @@ Return Value:
     VOID\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtDeviceWakeTriggeredSx( IN WDFDEVICE Device )\r
 {\r
     UNREFERENCED_PARAMETER(Device);\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaEvtDeviceWakeTriggeredSx");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s", __FUNCTION__);\r
 \r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaEvtDeviceWakeTriggeredSx");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- %s", __FUNCTION__);\r
 \r
     return;\r
 }\r
 \r
 \r
 /*++\r
-                                         Routine Description:\r
+\r
+Routine Description:\r
 \r
     This routine is used to queue workitems so that the callback\r
     functions can be executed at PASSIVE_LEVEL in the conext of\r
@@ -1500,12 +1517,6 @@ HcaQueuePassiveLevelCallback(
 }\r
 \r
 \r
-BOOLEAN\r
-HcaReadRegistryValue(\r
-    __in  PFDO_DATA   FdoData,\r
-    __in  PWCHAR      Name,\r
-    __out PULONG      Value\r
-    )\r
 /*++\r
 \r
 Routine Description:\r
@@ -1526,18 +1537,21 @@ Return Value:
    FALSE if not present/error in reading registry\r
 \r
 --*/\r
+\r
+BOOLEAN\r
+HcaReadRegistryValue(\r
+    __in  PFDO_DATA   FdoData,\r
+    __in  PWCHAR      Name,\r
+    __out PULONG      Value )\r
 {\r
     WDFKEY      hKey = NULL;\r
     NTSTATUS    status;\r
     BOOLEAN     retValue = FALSE;\r
     UNICODE_STRING  valueName;\r
 \r
-\r
-\r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT,\r
-                "-->HcaReadRegistryValue \n");\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT, "--> %s()\n", __FUNCTION__);\r
 \r
     *Value = 0;\r
 \r
@@ -1563,17 +1577,12 @@ Return Value:
     }\r
 \r
     TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT,\r
-                "<--HcaReadRegistryValue %ws %d \n", Name, *Value);\r
+                "<-- %s() %ws %d \n", __FUNCTION__, Name, *Value);\r
 \r
     return retValue;\r
 }\r
 \r
-BOOLEAN\r
-HcaWriteRegistryValue(\r
-    __in PFDO_DATA  FdoData,\r
-    __in PWCHAR     Name,\r
-    __in ULONG      Value\r
-    )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -1590,6 +1599,12 @@ Return Value:
    FALSE - otherwise\r
 \r
 --*/\r
+\r
+BOOLEAN\r
+HcaWriteRegistryValue(\r
+    __in PFDO_DATA  FdoData,\r
+    __in PWCHAR     Name,\r
+    __in ULONG      Value )\r
 {\r
     WDFKEY          hKey = NULL;\r
     NTSTATUS        status;\r
@@ -1599,8 +1614,7 @@ Return Value:
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT,\r
-                "Entered HcaWriteRegistryValue\n");\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT, "--> %s()\n", __FUNCTION__);\r
 \r
     //\r
     // write the value out to the registry\r
@@ -1626,18 +1640,13 @@ Return Value:
         WdfRegistryClose(hKey);\r
     }\r
 \r
-    return retValue;\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INIT,\r
+                               "<-- ret %s() %s\n", __FUNCTION__, (retValue ? "True":"False"));\r
 \r
+    return retValue;\r
 }\r
 \r
-#define PARAMATER_NAME_LEN 80\r
 \r
-BOOLEAN\r
-HcaReadFdoRegistryKeyValue(\r
-    __in  PWDFDEVICE_INIT  DeviceInit,\r
-    __in  PWCHAR           Name,\r
-    __out PULONG           Value\r
-    )\r
 /*++\r
 \r
 Routine Description:\r
@@ -1658,6 +1667,12 @@ Return Value:
    FALSE if not present/error in reading registry\r
 \r
 --*/\r
+\r
+BOOLEAN\r
+HcaReadFdoRegistryKeyValue(\r
+    __in  PWDFDEVICE_INIT  DeviceInit,\r
+    __in  PWCHAR           Name,\r
+    __out PULONG           Value )\r
 {\r
     WDFKEY      hKey = NULL;\r
     NTSTATUS    status;\r
@@ -1666,8 +1681,7 @@ Return Value:
 \r
     PAGED_CODE();\r
 \r
-    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP,\r
-                "-->HcaReadFdoRegistryKeyValue\n");\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
 \r
     *Value = 0;\r
 \r
@@ -1693,16 +1707,12 @@ Return Value:
     }\r
 \r
     TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP,\r
-                "<--HcaReadFdoRegistryKeyValue %ws %d \n",\r
-                Name, *Value);\r
+                "<-- %s() %ws %d \n", __FUNCTION__, Name, *Value);\r
 \r
     return retValue;\r
 }\r
 \r
-VOID\r
-HcaEvtDriverContextCleanup(\r
-    IN WDFDRIVER Driver\r
-    )\r
+\r
 /*++\r
 Routine Description:\r
 \r
@@ -1717,19 +1727,24 @@ Return Value:
     VOID.\r
 \r
 --*/\r
+\r
+VOID\r
+HcaEvtDriverContextCleanup( IN WDFDRIVER Driver )\r
 {\r
-    UNREFERENCED_PARAMETER(Driver);\r
+       UNREFERENCED_PARAMETER( Driver );\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_INIT,\r
-                    "--> HcaEvtDriverContextCleanup\n");\r
     PAGED_CODE ();\r
 \r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_INIT, "--> %s()\n",__FUNCTION__);\r
+\r
     // Stop WPP Tracing\r
     //\r
     WPP_CLEANUP( WdfDriverWdmGetDriverObject( Driver ) );\r
 \r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_INIT, "<-- %s()\n",__FUNCTION__);\r
 }\r
 \r
+\r
 NTSTATUS\r
 HcaSetPowerPolicy(\r
         IN PFDO_DATA FdoData\r
@@ -1737,10 +1752,9 @@ HcaSetPowerPolicy(
 {\r
     WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;\r
     WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS wakeSettings;\r
-    NTSTATUS    status = STATUS_SUCCESS;\r
+    NTSTATUS status = STATUS_SUCCESS;\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "--> HcaSetPowerPolicy\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
 \r
     PAGED_CODE();\r
 \r
@@ -1769,22 +1783,21 @@ HcaSetPowerPolicy(
         return status;\r
     }\r
 \r
-    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP,\r
-                "<-- HcaSetPowerPolicy\n");\r
+    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- %s()\n", __FUNCTION__);\r
 \r
     return status;\r
 }\r
 \r
-PCHAR\r
-DbgDevicePowerString(\r
-    IN WDF_POWER_DEVICE_STATE Type\r
-    )\r
+\r
 /*++\r
 \r
 Updated Routine Description:\r
     DbgDevicePowerString does not change in this stage of the function driver.\r
 \r
 --*/\r
+\r
+PCHAR\r
+DbgDevicePowerString( IN WDF_POWER_DEVICE_STATE Type )\r
 {\r
     switch (Type)\r
     {\r
@@ -1880,3 +1893,113 @@ TraceEvents    (
 \r
 #endif\r
 \r
+\r
+/*++\r
+\r
+Routine Description:\r
+\r
+    This event is called so that driver can do PASSIVE_LEVEL work before\r
+    the interrupt is disconnected and disabled.\r
+\r
+Arguments:\r
+\r
+    Interrupt - Handle to a Framework interrupt object.\r
+\r
+    AssociatedDevice - Handle to a Framework device object.\r
+\r
+Return Value:\r
+\r
+    STATUS_SUCCESS -  indicates success.\r
+\r
+--*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceD0ExitPreInterruptsDisabled(\r
+    IN WDFDEVICE     Device,\r
+    IN WDF_POWER_DEVICE_STATE TargetState )\r
+{\r
+    PFDO_DATA          fdoData;\r
+\r
+    UNREFERENCED_PARAMETER(TargetState);\r
+\r
+    PAGED_CODE();\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
+\r
+    fdoData = FdoGetData(Device);\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "<-- %s()\n", __FUNCTION__);\r
+\r
+    return STATUS_SUCCESS;\r
+\r
+}\r
+\r
+\r
+/*++\r
+\r
+Routine Description:\r
+\r
+    This event is called so that driver can do PASSIVE_LEVEL work after\r
+    the interrupt is connected and enabled. Here we start the watchdog timer.\r
+    Watch dog timer is used to do the initial link detection during\r
+    start and then used to make sure the device is not stuck for any reason.\r
+\r
+    This function is not marked pageable because this function is in the\r
+    device power up path. When a function is marked pagable and the code\r
+    section is paged out, it will generate a page fault which could impact\r
+    the fast resume behavior because the client driver will have to wait\r
+    until the system drivers can service this page fault.\r
+\r
+Arguments:\r
+\r
+    Interrupt - Handle to a Framework interrupt object.\r
+\r
+    AssociatedDevice - Handle to a Framework device object.\r
+\r
+Return Value:\r
+\r
+   STATUS_SUCCESS -  indicates success.\r
+\r
+--*/\r
+\r
+NTSTATUS\r
+HcaEvtDeviceD0EntryPostInterruptsEnabled(\r
+    IN WDFDEVICE     Device,\r
+    IN WDF_POWER_DEVICE_STATE PreviousState )\r
+{\r
+    PFDO_DATA  fdoData;\r
+\r
+    UNREFERENCED_PARAMETER( PreviousState );\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "--> %s()\n", __FUNCTION__);\r
+\r
+    fdoData = FdoGetData(Device);\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "<-- %s()\n", __FUNCTION__);\r
+\r
+    return STATUS_SUCCESS;\r
+\r
+}\r
+\r
+NTSTATUS\r
+HcaAllocSWResources(PFDO_DATA fdoData)\r
+{\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP,\r
+                               "--> %s() fdoData %p\n", __FUNCTION__, fdoData);\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "<-- %s()\n", __FUNCTION__);\r
+\r
+       return STATUS_SUCCESS;\r
+}\r
+\r
+NTSTATUS\r
+HcaFreeSWResources(PFDO_DATA fdoData)\r
+{\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP,\r
+                               "--> %s() fdoData %p\n", __FUNCTION__, fdoData);\r
+\r
+    TraceEvents(TRACE_LEVEL_VERBOSE, DBG_PNP, "<-- %s()\n", __FUNCTION__);\r
+\r
+       return STATUS_SUCCESS;\r
+}\r
+\r
index 061f4163c49878af4d2d8c6d02539302ef64d978..5449153e46bb3bf3fd0aa57478b396f20a7c06c5 100644 (file)
@@ -8,7 +8,7 @@
 \r
 Module Name:\r
 \r
-    public.h\r
+    mthca_public.h\r
 \r
 Abstract:\r
 \r
@@ -36,13 +36,13 @@ DEFINE_GUID (GUID_DEVINTERFACE_RDMA_IO,
 // Define a WMI GUID to get toaster device info.\r
 //\r
 \r
-DEFINE_GUID (PCIDRV_WMI_STD_DATA_GUID,\r
+DEFINE_GUID (MTHCA_WMI_STD_DATA_GUID,\r
     0x20e35e40, 0x7179, 0x4f89, 0xa2, 0x8c, 0x12, 0xed, 0x5a, 0x3c, 0xaa, 0xa5);\r
 \r
 // {20E35E40-7179-4f89-A28C-12ED5A3CAAA5}\r
 \r
 //\r
-// GUID definition are required to be outside of header inclusion pragma to avoid\r
-// error during precompiled headers.\r
+// GUID definition are required to be outside of header inclusion pragma to\r
+// avoid errors during precompiled headers.\r
 //\r
 \r