From b8f58577f7dea029d405a307ba76ee2bf9390add Mon Sep 17 00:00:00 2001 From: Alex Naslednikov Date: Sun, 14 Nov 2010 10:18:43 +0000 Subject: [PATCH] [IPOIB_NDIS6_CM] This patch fix the situation when init process fails (say, __ib_mgr_init fails) and then ipoib_restart is called. Shutter is shut first time at the end of the init process. Thus, if init will fail, shutter will be never shut, while ipoib_restart will try to alive such shutter. git-svn-id: svn://openib.tc.cornell.edu/gen1@2987 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- .../ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp | 3 ++- .../ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h | 1 + .../ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp | 3 --- trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp | 18 +++++++++++------- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp index 5949453c..ec2cad06 100644 --- a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp +++ b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp @@ -429,7 +429,8 @@ adapter_init( p_adapter->p_ifc->get_err_str( status )) ); return status; } - + + p_adapter->ipoib_state = IPOIB_UNINIT; IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT, ("Shutter Init, state = %d\n", p_adapter->ipoib_state) ); IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_RECV, diff --git a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h index 22a04296..28f1a85b 100644 --- a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h +++ b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h @@ -71,6 +71,7 @@ typedef enum } csum_flag_t; typedef uint32_t ipoib_state_t; +#define IPOIB_UNINIT 0 #define IPOIB_INIT 1 #define IPOIB_PAUSED 2 #define IPOIB_PAUSING 4 diff --git a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp index b887cf24..5f3104f7 100644 --- a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp +++ b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp @@ -1880,9 +1880,6 @@ if(cl_get_time_stamp_sec() < 30) { ("ipoib_create_adapter returned status %d.\n", ib_status ) ); return NDIS_STATUS_FAILURE; } - p_adapter->ipoib_state = IPOIB_INIT; - IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SHUTTER, - ("ipoib_state changed to IPOIB_INIT\n") ); status = SetAttributes(p_adapter, h_adapter); if (status != NDIS_STATUS_SUCCESS) { diff --git a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp index 6c3e0b9d..9d71f7ac 100644 --- a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp +++ b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp @@ -849,15 +849,19 @@ __port_init( V. NDIS calls to ipoib_restart that calls to shutter_alive. Shutter counter is 0 and we can start working */ - if ( p_adapter->ipoib_state == IPOIB_INIT) { - IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_RECV, - ("Shutter shut, state = %d\n", p_adapter->ipoib_state)); + if ( p_adapter->ipoib_state == IPOIB_UNINIT ) + { + p_adapter->ipoib_state = IPOIB_INIT; + IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SHUTTER, + ("Shutter shut, state = %d\n", p_adapter->ipoib_state)); shutter_shut ( &p_adapter->recv_shutter ); + } + else + { + IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SHUTTER, + ("Shutter wasn't shut, state = %d\n", p_adapter->ipoib_state)); } - else { - IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_RECV, - ("*****Shutter wasn't shut, state = %d*****\n", p_adapter->ipoib_state)); - } + IPOIB_EXIT( IPOIB_DBG_INIT ); return IB_SUCCESS; } -- 2.41.0