[Openib-windows] RE: [PATCH] reregister\cl_vecto\reg_svc
Fab Tillier
ftillier at silverstorm.com
Thu Sep 15 15:07:02 PDT 2005
Here's my patch to handle SM change/client reregister in IPoIB. It eliminates
the unneeded changes in your patch.
Comments?
Thanks,
- Fab
Signed-off-by: Fab Tillier (ftillier at silverstorm.com)
Signed-off-by: Yossi Leybovich (sleybo at mellanox.co.il)
Index: ulp/ipoib/kernel/ipoib_adapter.c
===================================================================
--- ulp/ipoib/kernel/ipoib_adapter.c (revision 64)
+++ ulp/ipoib/kernel/ipoib_adapter.c (working copy)
@@ -500,6 +500,9 @@
return IB_NOT_DONE;
}
+ IPOIB_TRACE( IPOIB_DBG_INFO,
+ ("p_pnp_rec->pnp_event = 0x%x\n",p_pnp_rec->pnp_event));
+
switch( p_pnp_rec->pnp_event )
{
case IB_PNP_PORT_ADD:
@@ -606,15 +609,16 @@
status = IB_SUCCESS;
break;
+ default:
+ IPOIB_TRACE( IPOIB_DBG_INFO,
+ ("IPOIB: Received unhandled PnP event 0x%x\n",
+ p_pnp_rec->pnp_event) );
+ /* Fall through. */
case IB_PNP_PKEY_CHANGE:
case IB_PNP_SM_CHANGE:
case IB_PNP_GID_CHANGE:
case IB_PNP_LID_CHANGE:
- /* TODO: Refresh all multicast group memberships in case the SM changed.
*/
- IPOIB_TRACE( IPOIB_DBG_INFO,
- ("IPOIB: Received unhandled PnP event %d\n",
- p_pnp_rec->pnp_event) );
- default:
+ p_adapter->hung = TRUE;
status = IB_SUCCESS;
break;
}
Index: ulp/ipoib/kernel/ipoib_endpoint.c
===================================================================
--- ulp/ipoib/kernel/ipoib_endpoint.c (revision 64)
+++ ulp/ipoib/kernel/ipoib_endpoint.c (working copy)
@@ -196,7 +196,7 @@
}
cl_obj_unlock( p_obj );
- IPOIB_EXIT( IPOIB_DBG_INIT );
+ IPOIB_EXIT( IPOIB_DBG_ENDPT );
}
Index: ulp/ipoib/kernel/ipoib_endpoint.h
===================================================================
--- ulp/ipoib/kernel/ipoib_endpoint.h (revision 64)
+++ ulp/ipoib/kernel/ipoib_endpoint.h (working copy)
@@ -148,7 +148,7 @@
{
IPOIB_ENTER( IPOIB_DBG_ENDPT );
cl_obj_deref( &p_endpt->obj );
- IPOIB_EXIT( IPOIB_DBG_INIT );
+ IPOIB_EXIT( IPOIB_DBG_ENDPT );
}
Index: ulp/ipoib/kernel/ipoib_driver.c
===================================================================
--- ulp/ipoib/kernel/ipoib_driver.c (revision 64)
+++ ulp/ipoib/kernel/ipoib_driver.c (working copy)
@@ -2103,6 +2103,8 @@
cl_memcpy( &ib_service.svc_rec.service_data8[ATS_IPV4_OFFSET],
p_addr_item->address.as_bytes, IPV4_ADDR_SIZE );
+ /* Take a reference for each service request. */
+ cl_obj_ref(&p_adapter->obj);
ib_status = p_adapter->p_ifc->reg_svc(
p_adapter->h_al, &ib_service, &p_addr_item->p_reg->h_reg_svc );
if( ib_status != IB_SUCCESS )
@@ -2134,6 +2136,7 @@
p_adapter->p_ifc->get_err_str( ib_status )) );
p_adapter->hung = TRUE;
}
+ cl_obj_deref(&p_adapter->obj);
cl_free( p_addr_item->p_reg );
p_addr_item->p_reg = NULL;
}
@@ -2223,6 +2226,7 @@
}
cl_obj_unlock( &p_reg->p_adapter->obj );
+ cl_obj_deref(&p_reg->p_adapter->obj);
IPOIB_EXIT( IPOIB_DBG_OID );
}
More information about the ofw
mailing list