From: aestrin Date: Wed, 1 Nov 2006 19:45:01 +0000 (+0000) Subject: [VNIC] fixed x64 platform failure for parameters read. Wrong handler was used for... X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=25e0b9815a26147d102030570616afeeb80192ba;p=~shefty%2Frdma-win.git [VNIC] fixed x64 platform failure for parameters read. Wrong handler was used for Ndis*Configuration() calls. Set dereg_pnp sync. git-svn-id: svn://openib.tc.cornell.edu/gen1@535 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/ulp/inic/kernel/vnic_adapter.c b/trunk/ulp/inic/kernel/vnic_adapter.c index 87d98dc5..8dc77b79 100644 --- a/trunk/ulp/inic/kernel/vnic_adapter.c +++ b/trunk/ulp/inic/kernel/vnic_adapter.c @@ -87,6 +87,7 @@ _vnic_viport_free( ib_api_status_t vnic_create_adapter( IN NDIS_HANDLE h_handle, + IN NDIS_HANDLE wrapper_config_context, OUT vnic_adapter_t** const pp_adapter) { NDIS_STATUS status; @@ -108,7 +109,7 @@ vnic_create_adapter( NdisAllocateSpinLock( &p_adapter->lock ); - status = vnic_get_adapter_params( h_handle, &p_adapter->params ); + status = vnic_get_adapter_params( wrapper_config_context, &p_adapter->params ); if ( status != NDIS_STATUS_SUCCESS ) { @@ -179,7 +180,7 @@ vnic_destroy_adapter( if( p_adapter->h_pnp ) { ib_status = - p_adapter->ifc.dereg_pnp( p_adapter->h_pnp, NULL ); + p_adapter->ifc.dereg_pnp( p_adapter->h_pnp, ib_sync_destroy ); } vnic_viport_cleanup( p_adapter ); @@ -401,13 +402,13 @@ _vnic_params_sanity_check(vnic_params_t *p_params) } NDIS_STATUS vnic_get_adapter_params( - IN NDIS_HANDLE h_handle, + IN NDIS_HANDLE wrapper_config_context, OUT vnic_params_t* const p_params ) { NDIS_STATUS status; NDIS_HANDLE h_config; NDIS_CONFIGURATION_PARAMETER *p_reg_prm; - //NDIS_STRING keyword; + NDIS_STRING keyword; VNIC_ENTER( VNIC_DBG_ADAPTER ); @@ -416,7 +417,7 @@ vnic_get_adapter_params( /* prepare params for default initialization */ cl_memset( p_params, 0xff, sizeof (vnic_params_t) ); - NdisOpenConfiguration( &status, &h_config, h_handle ); + NdisOpenConfiguration( &status, &h_config, wrapper_config_context ); if( status != NDIS_STATUS_SUCCESS ) { VNIC_TRACE_EXIT( VNIC_DBG_ERROR, @@ -427,136 +428,136 @@ vnic_get_adapter_params( status = NDIS_STATUS_FAILURE; p_reg_prm = NULL; - //RtlInitUnicodeString( &keyword, L"DebugFlags" ); + RtlInitUnicodeString( &keyword, L"DebugFlags" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); - //if( status == NDIS_STATUS_SUCCESS ) - // g_vnic_dbg_lvl = p_reg_prm->ParameterData.IntegerData; + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + if( status == NDIS_STATUS_SUCCESS ) + g_vnic_dbg_lvl = p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinMtu" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinMtu" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinMtu = ( status != NDIS_STATUS_SUCCESS ) ? MIN_MTU: p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxMtu" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxMtu" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxMtu =( status != NDIS_STATUS_SUCCESS )? MAX_MTU: p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"UseRxCsum" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"UseRxCsum" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->UseRxCsum = ( status != NDIS_STATUS_SUCCESS ) ? TRUE : ( p_reg_prm->ParameterData.IntegerData )? TRUE : FALSE; - //RtlInitUnicodeString( &keyword, L"UseTxCsum" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"UseTxCsum" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); /* turn it on by default, if not present */ p_params->UseTxCsum = ( status != NDIS_STATUS_SUCCESS ) ? TRUE : ( p_reg_prm->ParameterData.IntegerData )? TRUE : FALSE; - //RtlInitUnicodeString( &keyword, L"MinEiocUpdateSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinEiocUpdateSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinEiocUpdateSz = ( status != NDIS_STATUS_SUCCESS ) ? MIN_EIOC_UPDATE_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxEiocUpdateSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxEiocUpdateSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxEiocUpdateSz = ( status != NDIS_STATUS_SUCCESS ) ? MAX_EIOC_UPDATE_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinHostUpdateSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinHostUpdateSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinHostUpdateSz = ( status != NDIS_STATUS_SUCCESS ) ? MIN_HOST_UPDATE_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxHostUpdateSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxHostUpdateSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxHostUpdateSz = ( status != NDIS_STATUS_SUCCESS ) ? MAX_HOST_UPDATE_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinHostKickBytes" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinHostKickBytes" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinHostKickBytes = ( status != NDIS_STATUS_SUCCESS ) ? MIN_HOST_KICK_BYTES : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxHostKickBytes" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxHostKickBytes" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxHostKickBytes = ( status != NDIS_STATUS_SUCCESS ) ? MAX_HOST_KICK_BYTES : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinHostKickEntries" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinHostKickEntries" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinHostKickEntries = ( status != NDIS_STATUS_SUCCESS ) ? MIN_HOST_KICK_ENTRIES : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxHostKickEntries" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxHostKickEntries" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxHostKickEntries = ( status != NDIS_STATUS_SUCCESS ) ? MAX_HOST_KICK_ENTRIES : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinHostKickTimeout" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinHostKickTimeout" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinHostKickTimeout = ( status != NDIS_STATUS_SUCCESS ) ? MIN_HOST_KICK_TIMEOUT : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxHostKickTimeout" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxHostKickTimeout" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxHostKickTimeout = ( status != NDIS_STATUS_SUCCESS ) ? MAX_HOST_KICK_TIMEOUT : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinEiocPoolSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinEiocPoolSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinEiocPoolSz = ( status != NDIS_STATUS_SUCCESS ) ? MIN_EIOC_POOL_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MaxEiocPoolSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MaxEiocPoolSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MaxEiocPoolSz = ( status != NDIS_STATUS_SUCCESS ) ? MAX_EIOC_POOL_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"MinHostPoolSz" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"MinHostPoolSz" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->MinHostPoolSz = ( status != NDIS_STATUS_SUCCESS ) ? MIN_HOST_POOL_SZ : p_reg_prm->ParameterData.IntegerData; - //RtlInitUnicodeString( &keyword, L"HostRecvPoolEntries" ); - //NdisReadConfiguration( - // &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); + RtlInitUnicodeString( &keyword, L"HostRecvPoolEntries" ); + NdisReadConfiguration( + &status, &p_reg_prm, h_config, &keyword, NdisParameterInteger ); p_params->HostRecvPoolEntries = ( status != NDIS_STATUS_SUCCESS ) ? HOST_RECV_POOL_ENTRIES : p_reg_prm->ParameterData.IntegerData; diff --git a/trunk/ulp/inic/kernel/vnic_adapter.h b/trunk/ulp/inic/kernel/vnic_adapter.h index 16b13793..09068dd2 100644 --- a/trunk/ulp/inic/kernel/vnic_adapter.h +++ b/trunk/ulp/inic/kernel/vnic_adapter.h @@ -168,6 +168,7 @@ typedef struct _vnic_adapter { ib_api_status_t vnic_create_adapter( IN NDIS_HANDLE h_handle, + IN NDIS_HANDLE wrapper_config_context, OUT vnic_adapter_t** const pp_adapter); void diff --git a/trunk/ulp/inic/kernel/vnic_driver.c b/trunk/ulp/inic/kernel/vnic_driver.c index 8ea0aad8..6b29df49 100644 --- a/trunk/ulp/inic/kernel/vnic_driver.c +++ b/trunk/ulp/inic/kernel/vnic_driver.c @@ -216,7 +216,6 @@ vnic_initialize( #endif UNUSED_PARAM( p_open_status ); - UNUSED_PARAM( wrapper_config_context ); /* Search for our medium */ for( medium_index = 0; medium_index < medium_array_size; ++medium_index ) @@ -235,7 +234,7 @@ vnic_initialize( *p_selected_medium_index = medium_index; /* Create the adapter */ - ib_status = vnic_create_adapter( h_handle, &p_adapter ); + ib_status = vnic_create_adapter( h_handle, wrapper_config_context, &p_adapter ); if( ib_status != IB_SUCCESS ) { VNIC_TRACE_EXIT( VNIC_DBG_ERROR,