From 306d43e32b998b20b698be4a9e6c4b6d13116085 Mon Sep 17 00:00:00 2001 From: aestrin Date: Tue, 10 Oct 2006 12:54:26 +0000 Subject: [PATCH] reschedule hearbeat messages if other control Queue send is not completed, typo in INF file git-svn-id: svn://openib.tc.cornell.edu/gen1@517 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/ulp/inic/kernel/netvnic.inf | 4 ++-- trunk/ulp/inic/kernel/vnic_debug.h | 4 ++-- trunk/ulp/inic/kernel/vnic_driver.c | 2 +- trunk/ulp/inic/kernel/vnic_viport.c | 19 +++++++++++++++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/trunk/ulp/inic/kernel/netvnic.inf b/trunk/ulp/inic/kernel/netvnic.inf index a4f72d39..803fdee8 100644 --- a/trunk/ulp/inic/kernel/netvnic.inf +++ b/trunk/ulp/inic/kernel/netvnic.inf @@ -6,7 +6,7 @@ Signature="$Windows NT$" Class=Net ClassGUID={4d36e972-e325-11ce-bfc1-08002be10318} Provider=%Inf_Provider% -DriverVer=01/12/2006,3.0.0039.0 +DriverVer=10/09/2006,3.2.0047.0 [ControlFlags] ExcludeFromSelect = IBA\V00066aP00000030 @@ -80,7 +80,7 @@ AddService = vnic,%SPSVCINST_ASSOCSERVICE%,VNIC.ServiceInstall,VNIC.EventLogInst vnic.sys [VNIC.AddReg] -HKR, Ndi, Service, 0, "ipoib" +HKR, Ndi, Service, 0, "vnic" HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" diff --git a/trunk/ulp/inic/kernel/vnic_debug.h b/trunk/ulp/inic/kernel/vnic_debug.h index 62e7f1d4..ea1dad75 100644 --- a/trunk/ulp/inic/kernel/vnic_debug.h +++ b/trunk/ulp/inic/kernel/vnic_debug.h @@ -66,8 +66,8 @@ extern uint32_t g_vnic_dbg_lvl; #define VNIC_DBG_ERROR CL_DBG_ERROR #define VNIC_DBG_ALL CL_DBG_ALL -#define VNIC_DEBUG_FLAGS ( VNIC_DBG_ERROR /*| VNIC_DBG_WARN | VNIC_DBG_INFO | VNIC_DBG_FUNC | VNIC_DBG_OID | VNIC_DBG_VIPORT | VNIC_DBG_CTRL | VNIC_DBG_DATA */) - +//#define VNIC_DEBUG_FLAGS ( VNIC_DBG_ERROR | VNIC_DBG_WARN | VNIC_DBG_INFO | VNIC_DBG_FUNC | VNIC_DBG_OID | VNIC_DBG_VIPORT | VNIC_DBG_CTRL | VNIC_DBG_DATA | VNIC_DBG_IB) +#define VNIC_DEBUG_FLAGS ( VNIC_DBG_ERROR | VNIC_DBG_WARN | VNIC_DBG_INFO ) /* Enter and exit macros automatically add VNIC_DBG_FUNC bit */ #define VNIC_ENTER( lvl ) \ CL_ENTER( (lvl | VNIC_DBG_FUNC), g_vnic_dbg_lvl ) diff --git a/trunk/ulp/inic/kernel/vnic_driver.c b/trunk/ulp/inic/kernel/vnic_driver.c index 67ecbb9a..7dd33353 100644 --- a/trunk/ulp/inic/kernel/vnic_driver.c +++ b/trunk/ulp/inic/kernel/vnic_driver.c @@ -1233,7 +1233,7 @@ vnic_reset( UNREFERENCED_PARAMETER( adapter_context ); VNIC_EXIT( VNIC_DBG_INIT ); - return NDIS_STATUS_NOT_RESETTABLE; + return NDIS_STATUS_SUCCESS; } diff --git a/trunk/ulp/inic/kernel/vnic_viport.c b/trunk/ulp/inic/kernel/vnic_viport.c index 388f6859..02be3cfb 100644 --- a/trunk/ulp/inic/kernel/vnic_viport.c +++ b/trunk/ulp/inic/kernel/vnic_viport.c @@ -654,8 +654,15 @@ viport_timeout( if( p_viport && p_viport->data.connected ) { // TODO: What about send failure? - control_heartbeatReq( &p_viport->control, - p_viport->port_config.hbTimeout ); + if( !p_viport->control.reqOutstanding ) + { + control_heartbeatReq( &p_viport->control, + p_viport->port_config.hbTimeout ); + } + else + { /* send WQE is taken, send heartbeat later */ + viport_timer( p_viport, p_viport->port_config.hbInterval ); + } } } @@ -923,6 +930,12 @@ _viport_process_query( if( !InterlockedCompareExchange( &p_viport->updates, 0, 0 ) ) { VNIC_TRACE_EXIT( VNIC_DBG_VIPORT, ("No updates.\n") ); + /* now can restart heartbeats */ + if( !p_viport->timerActive && + p_viport->port_config.hbInterval ) + { + viport_timer( p_viport, p_viport->port_config.hbInterval ); + } return NDIS_STATUS_SUCCESS; } @@ -935,6 +948,8 @@ _viport_process_query( { status = NDIS_STATUS_PENDING; } + /* stop heartbeat timer to serve another query */ + viport_timerStop( p_viport ); // Handle update bits one at a time. if( p_viport->updates & NEED_ADDRESS_CONFIG ) -- 2.41.0