]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[IBBUS] g_stat: added threads for handling SET POWER IRP.
authorTzachi Dar <tzachid@mellanox.co.il>
Wed, 1 Sep 2010 12:19:31 +0000 (12:19 +0000)
committerTzachi Dar <tzachid@mellanox.co.il>
Wed, 1 Sep 2010 12:19:31 +0000 (12:19 +0000)
Signed off by: leonid

git-svn-id: svn://openib.tc.cornell.edu/gen1@2884 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

trunk/core/bus/kernel/bus_pnp.c
trunk/core/bus/kernel/bus_stat.h

index 5b283fc624783db72cd4cb7097dc733d026d8851..87647fcaef7520f3162e595cf8436bfb7f101ead 100644 (file)
@@ -1334,6 +1334,12 @@ __device_power_up_completion_workItem(
        BUS_PRINT( BUS_DBG_POWER, \r
                ("***** re-register CA, IRQL %d\n", KeGetCurrentIrql()));\r
 \r
+       // stat\r
+       if ( p_ext->p_stat ) {\r
+               p_ext->p_stat->thread[BUS_ST_THREAD_POWER_UP].p_thread = KeGetCurrentThread();\r
+               memcpy( p_ext->p_stat->thread[BUS_ST_THREAD_POWER_UP].thread_name, "PowerUp", 8 );\r
+       }\r
+       \r
        status = __register_ca( p_dev_obj );\r
        if( !NT_SUCCESS( status ) ) {\r
                BUS_PRINT( BUS_DBG_POWER, \r
@@ -1353,6 +1359,11 @@ __device_power_up_completion_workItem(
                ("Power increased to: device %d, system %d.\n",\r
                (int)p_ext->device_power_state, (int)p_ext->system_power_state));\r
 \r
+       if ( p_ext->p_stat ) {\r
+               p_ext->p_stat->thread[BUS_ST_THREAD_POWER_UP].p_thread = NULL;\r
+               *p_ext->p_stat->thread[BUS_ST_THREAD_POWER_UP].thread_name = '\0';\r
+       }\r
+       \r
        goto exit;\r
 \r
 err_fdo_start:\r
@@ -1435,6 +1446,12 @@ static NTSTATUS __device_power_down_workItem_completion(
        PoStartNextPowerIrp( p_irp );\r
        IoReleaseRemoveLock( &p_ext->cl_ext.remove_lock, p_irp );\r
 \r
+       // stat\r
+       if ( p_ext->p_stat ) {\r
+               p_ext->p_stat->thread[BUS_ST_THREAD_POWER_DOWN].p_thread = NULL;\r
+               *p_ext->p_stat->thread[BUS_ST_THREAD_POWER_DOWN].thread_name = '\0';\r
+       }\r
+\r
        BUS_EXIT( BUS_DBG_POWER );\r
        return STATUS_SUCCESS;\r
 }\r
@@ -1474,6 +1491,12 @@ __device_power_down_workItem(
        BUS_PRINT( BUS_DBG_POWER, \r
                ("***** deregister CA \n"));\r
 \r
+       // stat\r
+       if ( p_ext->p_stat ) {\r
+               p_ext->p_stat->thread[BUS_ST_THREAD_POWER_DOWN].p_thread = KeGetCurrentThread();\r
+               memcpy( p_ext->p_stat->thread[BUS_ST_THREAD_POWER_DOWN].thread_name, "PowerDown", 10 );\r
+       }\r
+       \r
        __deregister_ca( p_dev_obj );\r
 \r
        IoCopyCurrentIrpStackLocationToNext( p_irp );\r
index b79317724fd00bc18f65c8188129b5b345118d5d..374a257218dab29f2246ef5822d2ff165ab73687 100644 (file)
@@ -23,6 +23,7 @@ Notes:
 //\r
 \r
 #define BUS_ST_MAX_DEVICES                     8\r
+#define BUS_ST_MAX_THREADS                     4\r
 \r
 //\r
 // enums\r
@@ -38,12 +39,21 @@ typedef struct _bus_fdo_ext         bus_fdo_ext_t;
 typedef struct _bus_globals            bus_globals_t;\r
 typedef struct _al_mgr                 al_mgr_t;\r
 \r
+#define BUS_ST_THREAD_POWER_DOWN       0\r
+#define BUS_ST_THREAD_POWER_UP         1\r
 \r
+typedef struct _BUS_ST_THREAD\r
+{\r
+       PKTHREAD                        p_thread;\r
+       char                            thread_name[16];\r
+       \r
+} BUS_ST_THREAD, *PBUS_ST_THREAD;\r
 \r
 typedef struct _BUS_ST_DEVICE\r
 {\r
        boolean_t                       valid;\r
        bus_fdo_ext_t           *p_fdo;\r
+       BUS_ST_THREAD           thread[BUS_ST_MAX_THREADS];\r
        \r
 } BUS_ST_DEVICE, *PBUS_ST_DEVICE;\r
 \r