Class=Net\r
ClassGUID={4d36e972-e325-11ce-bfc1-08002be10318}\r
Provider=%Inf_Provider%\r
-DriverVer=01/12/2006,3.0.0039.0\r
+DriverVer=10/09/2006,3.2.0047.0\r
\r
[ControlFlags]\r
ExcludeFromSelect = IBA\V00066aP00000030\r
vnic.sys\r
\r
[VNIC.AddReg]\r
-HKR, Ndi, Service, 0, "ipoib"\r
+HKR, Ndi, Service, 0, "vnic"\r
HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"\r
HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"\r
\r
#define VNIC_DBG_ERROR CL_DBG_ERROR\r
#define VNIC_DBG_ALL CL_DBG_ALL\r
\r
-#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 */)\r
-\r
+//#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)\r
+#define VNIC_DEBUG_FLAGS ( VNIC_DBG_ERROR | VNIC_DBG_WARN | VNIC_DBG_INFO )\r
/* Enter and exit macros automatically add VNIC_DBG_FUNC bit */\r
#define VNIC_ENTER( lvl ) \\r
CL_ENTER( (lvl | VNIC_DBG_FUNC), g_vnic_dbg_lvl )\r
UNREFERENCED_PARAMETER( adapter_context );\r
\r
VNIC_EXIT( VNIC_DBG_INIT );\r
- return NDIS_STATUS_NOT_RESETTABLE;\r
+ return NDIS_STATUS_SUCCESS;\r
}\r
\r
\r
if( p_viport && p_viport->data.connected )\r
{\r
// TODO: What about send failure?\r
- control_heartbeatReq( &p_viport->control,\r
- p_viport->port_config.hbTimeout );\r
+ if( !p_viport->control.reqOutstanding )\r
+ {\r
+ control_heartbeatReq( &p_viport->control,\r
+ p_viport->port_config.hbTimeout );\r
+ }\r
+ else\r
+ { /* send WQE is taken, send heartbeat later */\r
+ viport_timer( p_viport, p_viport->port_config.hbInterval );\r
+ }\r
}\r
}\r
\r
if( !InterlockedCompareExchange( &p_viport->updates, 0, 0 ) )\r
{\r
VNIC_TRACE_EXIT( VNIC_DBG_VIPORT, ("No updates.\n") );\r
+ /* now can restart heartbeats */\r
+ if( !p_viport->timerActive &&\r
+ p_viport->port_config.hbInterval )\r
+ {\r
+ viport_timer( p_viport, p_viport->port_config.hbInterval );\r
+ }\r
return NDIS_STATUS_SUCCESS;\r
}\r
\r
{\r
status = NDIS_STATUS_PENDING;\r
}\r
+ /* stop heartbeat timer to serve another query */\r
+ viport_timerStop( p_viport );\r
\r
// Handle update bits one at a time.\r
if( p_viport->updates & NEED_ADDRESS_CONFIG )\r