[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