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