diff C3 C:/Documents and Settings/scsmith/Local Settings/Temp/bus_port_mgr.c-revBASE.svn002.tmp.c C:/Documents and Settings/scsmith/My Documents/openIB-windows/SVN/gen1/branches/WOF2-0/trunk/core/bus/kernel/bus_port_mgr.c
*** C:/Documents and Settings/scsmith/Local Settings/Temp/bus_port_mgr.c-revBASE.svn002.tmp.c	Mon Sep 15 10:38:55 2008
--- C:/Documents and Settings/scsmith/My Documents/openIB-windows/SVN/gen1/branches/WOF2-0/trunk/core/bus/kernel/bus_port_mgr.c	Mon Sep 15 10:39:21 2008
***************
*** 363,377 ****
  	CL_ASSERT( p_obj );
  	p_bfi = get_bfi_by_obj(BFI_PORT_MGR_OBJ, p_obj);
  	if (p_bfi == NULL) {
! 		BUS_PRINT(BUS_DBG_PNP, ("%s() failed to find p_bfi by obj %p?\n",
! 			__FUNCTION__,p_obj));
  		return;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s(%s) obj %p port_mgr %p port_mgr_obj %p\n",
! 			__FUNCTION__,p_bfi->whoami,p_obj,gp_port_mgr,
! 			p_bfi->p_port_mgr_obj) );
  
  	CL_ASSERT( (void*)p_bfi->p_port_mgr == (void*)p_bfi->p_port_mgr_obj );
  	CL_ASSERT( gp_port_mgr == PARENT_STRUCT( p_obj, port_mgr_t, obj ) );
--- 363,375 ----
  	CL_ASSERT( p_obj );
  	p_bfi = get_bfi_by_obj(BFI_PORT_MGR_OBJ, p_obj);
  	if (p_bfi == NULL) {
! 		BUS_PRINT(BUS_DBG_PNP, ("Failed to find p_bfi by obj %p?\n", p_obj));
  		return;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s obj %p port_mgr %p port_mgr_obj %p\n",
! 			p_bfi->whoami,p_obj,gp_port_mgr, p_bfi->p_port_mgr_obj) );
  
  	CL_ASSERT( (void*)p_bfi->p_port_mgr == (void*)p_bfi->p_port_mgr_obj );
  	CL_ASSERT( gp_port_mgr == PARENT_STRUCT( p_obj, port_mgr_t, obj ) );
***************
*** 405,412 ****
  	CL_ASSERT( p_obj );
  	p_bfi = get_bfi_by_obj(BFI_PORT_MGR_OBJ, p_obj);
  	if (p_bfi == NULL) {
! 		BUS_PRINT(BUS_DBG_PNP, ("%s: unable to get p_bfi for port obj %p?\n",
! 			__FUNCTION__,p_obj));
  		return;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
--- 403,409 ----
  	CL_ASSERT( p_obj );
  	p_bfi = get_bfi_by_obj(BFI_PORT_MGR_OBJ, p_obj);
  	if (p_bfi == NULL) {
! 		BUS_PRINT(BUS_DBG_PNP, ("No p_bfi for port obj %p?\n", p_obj));
  		return;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
***************
*** 416,428 ****
  	}
  	CL_ASSERT( gp_port_mgr == PARENT_STRUCT( p_obj, port_mgr_t, obj ) );
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s(%s) obj %p port_mgr %p port_mgr_obj %p\n",
! 			__FUNCTION__, p_bfi->whoami, p_obj,gp_port_mgr,
  			p_bfi->p_port_mgr_obj) );
  
  	BUS_PRINT( BUS_DBG_PNP,
! 				("%s(%s) Mark all IPoIB PDOs as no longer present\n",
! 				__FUNCTION__, p_bfi->whoami));
  	/*
  	 * Mark all IPoIB PDOs as no longer present.  This will cause them
  	 * to be removed when they process the IRP_MN_REMOVE_DEVICE.
--- 413,424 ----
  	}
  	CL_ASSERT( gp_port_mgr == PARENT_STRUCT( p_obj, port_mgr_t, obj ) );
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s obj %p port_mgr %p port_mgr_obj %p\n",
! 			p_bfi->whoami, p_obj,gp_port_mgr,
  			p_bfi->p_port_mgr_obj) );
  
  	BUS_PRINT( BUS_DBG_PNP,
! 				("%s Mark all IPoIB PDOs no longer present\n", p_bfi->whoami));
  	/*
  	 * Mark all IPoIB PDOs as no longer present.  This will cause them
  	 * to be removed when they process the IRP_MN_REMOVE_DEVICE.
***************
*** 539,546 ****
  		break;
  
  	default:
! 		XBUS_PRINT( BUS_DBG_PNP, ("%s() Unhandled PNP Event %s\n",
! 					__FUNCTION__, ib_get_pnp_event_str(p_pnp_rec->pnp_event) ));
  		break;
  	}
  	BUS_EXIT( BUS_DBG_PNP );
--- 535,542 ----
  		break;
  
  	default:
! 		XBUS_PRINT( BUS_DBG_PNP, ("Unhandled PNP Event %s\n",
! 					ib_get_pnp_event_str(p_pnp_rec->pnp_event) ));
  		break;
  	}
  	BUS_EXIT( BUS_DBG_PNP );
***************
*** 564,588 ****
  
  	BUS_ENTER( BUS_DBG_PNP );
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s() ca_guid %I64x\n",__FUNCTION__,ca_guid));
  
  	/* special case guid == 0 - walk all bus filter instances */
  	if ( ca_guid == 0ULL ) {
  		for(p_bfi=bus_filters; p_bfi < &bus_filters[MAX_BUS_FILTERS]; p_bfi++) {
  			gp_port_mgr = p_bfi->p_port_mgr;
  			if ( !gp_port_mgr )
  				continue;
  			cl_mutex_acquire( &gp_port_mgr->pdo_mutex );
  			status = bus_get_relations( &gp_port_mgr->port_list,
! 										ca_guid,
  										p_irp );
  			cl_mutex_release( &gp_port_mgr->pdo_mutex );
  		}
  
  		p_rel = (DEVICE_RELATIONS*)p_irp->IoStatus.Information;
  		if ( p_rel ) {
! 			BUS_PRINT(BUS_DBG_PNP, ("%s() ca_guid 0 Reports %d\n",
! 						__FUNCTION__,p_rel->Count));
  		}
  		BUS_EXIT( BUS_DBG_PNP );
  		return STATUS_SUCCESS;
--- 560,584 ----
  
  	BUS_ENTER( BUS_DBG_PNP );
  
! 	BUS_PRINT(BUS_DBG_PNP, ("CA_guid %I64x\n",ca_guid));
  
  	/* special case guid == 0 - walk all bus filter instances */
  	if ( ca_guid == 0ULL ) {
+ 		BUS_PRINT(BUS_DBG_PNP, ("CA_guid 0\n"));
  		for(p_bfi=bus_filters; p_bfi < &bus_filters[MAX_BUS_FILTERS]; p_bfi++) {
  			gp_port_mgr = p_bfi->p_port_mgr;
  			if ( !gp_port_mgr )
  				continue;
  			cl_mutex_acquire( &gp_port_mgr->pdo_mutex );
  			status = bus_get_relations( &gp_port_mgr->port_list,
! 										p_bfi->ca_guid,
  										p_irp );
  			cl_mutex_release( &gp_port_mgr->pdo_mutex );
  		}
  
  		p_rel = (DEVICE_RELATIONS*)p_irp->IoStatus.Information;
  		if ( p_rel ) {
! 			BUS_PRINT(BUS_DBG_PNP, ("CA_guid 0 Reports %d\n", p_rel->Count));
  		}
  		BUS_EXIT( BUS_DBG_PNP );
  		return STATUS_SUCCESS;
***************
*** 591,604 ****
  	p_bfi = get_bfi_by_ca_guid(ca_guid);
  	if (p_bfi == NULL) {
  		BUS_PRINT(BUS_DBG_PNP,
! 			("%s() Null *p_bfi from ca_guid %I64x\n",__FUNCTION__,ca_guid));
  		BUS_EXIT( BUS_DBG_PNP );
  		return STATUS_NO_SUCH_DEVICE;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s(%s) for ca_guid %I64x port_mgr %p\n",
! 				__FUNCTION__, p_bfi->whoami, ca_guid, gp_port_mgr) );
  	if (!gp_port_mgr)
  		return STATUS_NO_SUCH_DEVICE;
  
--- 587,600 ----
  	p_bfi = get_bfi_by_ca_guid(ca_guid);
  	if (p_bfi == NULL) {
  		BUS_PRINT(BUS_DBG_PNP,
! 			("Null *p_bfi from ca_guid %I64x\n",ca_guid));
  		BUS_EXIT( BUS_DBG_PNP );
  		return STATUS_NO_SUCH_DEVICE;
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
  
! 	BUS_PRINT(BUS_DBG_PNP, ("%s for ca_guid %I64x port_mgr %p\n",
! 							p_bfi->whoami, ca_guid, gp_port_mgr) );
  	if (!gp_port_mgr)
  		return STATUS_NO_SUCH_DEVICE;
  
***************
*** 780,787 ****
  
  	p_bfi = get_set_bfi_by_ca_guid( p_pnp_rec->p_ca_attr->ca_guid );
  	if ( !p_bfi ) {
! 		BUS_TRACE_EXIT( BUS_DBG_PNP,("%s() NULL p_bfi? ca_guid 0x%I64x\n",
! 								__FUNCTION__, p_pnp_rec->p_ca_attr->ca_guid ) );
  		return IB_ERROR;
  	}
  
--- 776,783 ----
  
  	p_bfi = get_set_bfi_by_ca_guid( p_pnp_rec->p_ca_attr->ca_guid );
  	if ( !p_bfi ) {
! 		BUS_TRACE_EXIT( BUS_DBG_PNP,("NULL p_bfi? ca_guid 0x%I64x\n",
! 								p_pnp_rec->p_ca_attr->ca_guid ) );
  		return IB_ERROR;
  	}
  
***************
*** 793,800 ****
  		if( !p_ctx )
  		{
  			BUS_TRACE_EXIT(BUS_DBG_PNP,
! 					("%s(%s) ca_guid %I64x port(%d) BAD alloc PNP context\n",
! 					__FUNCTION__, p_bfi->whoami, p_bfi->ca_guid, 
  					p_pnp_rec->p_port_attr->port_num));
  			return IB_ERROR;
  		}
--- 789,796 ----
  		if( !p_ctx )
  		{
  			BUS_TRACE_EXIT(BUS_DBG_PNP,
! 					("%s ca_guid %I64x port(%d) BAD alloc PNP context\n",
! 					p_bfi->whoami, p_bfi->ca_guid, 
  					p_pnp_rec->p_port_attr->port_num));
  			return IB_ERROR;
  		}
***************
*** 803,810 ****
  		p_pnp_rec->pnp_rec.context = p_ctx;
  
  		BUS_PRINT(BUS_DBG_PNP,
! 					("%s(%s) ca_guid %I64x port %d ALLOC p_ctx @ %p\n",
! 					__FUNCTION__, p_bfi->whoami, p_bfi->ca_guid, 
  					p_pnp_rec->p_port_attr->port_num,p_ctx));
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
--- 799,806 ----
  		p_pnp_rec->pnp_rec.context = p_ctx;
  
  		BUS_PRINT(BUS_DBG_PNP,
! 					("%s ca_guid %I64x port %d ALLOC p_ctx @ %p\n",
! 					p_bfi->whoami, p_bfi->ca_guid, 
  					p_pnp_rec->p_port_attr->port_num,p_ctx));
  	}
  	gp_port_mgr = p_bfi->p_port_mgr;
***************
*** 1178,1185 ****
  	p_bfi = p_ctx->p_bus_filter;
  	CL_ASSERT( p_bfi );
  
! 	BUS_PRINT(BUS_DBG_PNP,("%s(%s) ca_guid 0x%I64x port_num %d port_mgr %p\n",
! 						__FUNCTION__, p_bfi->whoami, p_bfi->ca_guid,
  						p_ctx->port_num, p_bfi->p_port_mgr));
  
  	/* in the process of device remove, port_mgr has been destroyed.
--- 1174,1181 ----
  	p_bfi = p_ctx->p_bus_filter;
  	CL_ASSERT( p_bfi );
  
! 	BUS_PRINT(BUS_DBG_PNP,("%s ca_guid 0x%I64x port_num %d port_mgr %p\n",
! 						p_bfi->whoami, p_bfi->ca_guid,
  						p_ctx->port_num, p_bfi->p_port_mgr));
  
  	/* in the process of device remove, port_mgr has been destroyed.
***************
*** 1211,1218 ****
  	 */
  	if ( !p_ext->h_ca )
  	{
! 		BUS_TRACE_EXIT( BUS_DBG_PNP, ("%s() %s NULL h_ca? p_ext %p\n",
! 					__FUNCTION__, p_bfi->whoami, p_ext ) );
  		return;
  	}
  
--- 1207,1214 ----
  	 */
  	if ( !p_ext->h_ca )
  	{
! 		BUS_TRACE_EXIT( BUS_DBG_PNP,
! 						("%s NULL h_ca? p_ext %p\n", p_bfi->whoami, p_ext ) );
  		return;
  	}
  
***************
*** 1295,1300 ****
--- 1291,1297 ----
  	p_ext = p_dev_obj->DeviceExtension;
  
  	*p_action = IrpComplete;
+ 
  	if( p_ext->n_ifc_ref )
  	{
  		/*
***************
*** 1309,1315 ****
  		return STATUS_UNSUCCESSFUL;
  	}
  
! 	BUS_EXIT( BUS_DBG_PNP );
  	return STATUS_SUCCESS;
  }
  
--- 1306,1317 ----
  		return STATUS_UNSUCCESSFUL;
  	}
  
! 	CL_ASSERT(p_ext->pdo.p_parent_ext->bus_filter);
! 	BUS_TRACE_EXIT( BUS_DBG_PNP,
! 			("OK IRP_MN_QUERY_REMOVE_DEVICE:\n  %s HCA guid %I64x port %d\n",
! 			p_ext->pdo.p_parent_ext->bus_filter->whoami,
! 			p_ext->pdo.ca_guid, p_ext->n_port ) );
! 
  	return STATUS_SUCCESS;
  }
  
