[ofw] [PATCH] IPoIB_NDIS6_CM - initialize p_endpt->p_ifc once and early.

Tzachi Dar tzachid at mellanox.co.il
Tue Sep 28 09:05:20 PDT 2010


The endpoints are really internal ipoib structures that windows does not know anything about.
Each endpoint is in the port lists and cannot move from one port to another. As a result this checkin seems fine by me.

Thanks
Tzachi 

> -----Original Message-----
> From: ofw-bounces at lists.openfabrics.org [mailto:ofw-
> bounces at lists.openfabrics.org] On Behalf Of Smith, Stan
> Sent: Monday, September 27, 2010 9:08 PM
> To: Alex Naslednikov
> Cc: ofw at lists.openfabrics.org
> Subject: Re: [ofw] [PATCH] IPoIB_NDIS6_CM - initialize p_endpt->p_ifc
> once and early.
> 
> Alex Naslednikov wrote:
> > Hello Stan,
> > Some questions and remarks.
> > 1. Have you tested it when we have 2 adapters within the same subnet
> ?
> > What will happen when one adapters suddenly goes down and NDIS
> > decides to send the NBL via the second one ?
> > I suppose that in that case adapter interface should be set
> > dynamically, while preserving all other fields.
> 
> Good question, I have not tested multiple HCAs.
> I suspect that if IBAL (aka ibbus) is giving out IBAL interface vectors
> which contain different IF routine addresses then we have a much larger
> problem to deal with.  :-)
> 
> Point being, the IBAL interface routine addresses will be the same
> between any adapter.
> HCA interface pointers are a different subject; IBAL is the acting
> agent for all HCAs w.r.t. IPoIB.
> 
> I'm not really understanding your concerns w.r.t. IPoIB adapter going
> down and NDIS choosing a different adapter?
> The 2nd adapter initialization and operational state are independent of
> any other IPoIB adapter.
> 
> Technically the IBAL IF pointer should not really be an adapter element
> but more of a global driver element that is set @ IPoIB DriverEntry and
> cleared @ driver unload; independent of how many adapters come or go.
> I suspect placing the IBAL IF pointer in the adapter struct was an
> easy/convenient place for it to land long ago.
> 
> W.r.t. NDIS and switching adapters on the fly, the IBAL IF routine
> pointers will be the same.
> NDIS makes the Adapter choice far above IPoIB driver and will choose
> only an 'enabled' IPoIB which will have a different endpoint struct
> (based on Ethernet MAC and each port will have a different MAC).
> 
> >
> > 2. This flow should be same for IPoIB and IPoIB_NDIS6_CM trees.
> 
> Yes - final patch should be applied to both src trees.
> 
> >
> > XaleX
> >
> > -----Original Message-----
> > From: Smith, Stan [mailto:stan.smith at intel.com]
> > Sent: Thursday, September 23, 2010 7:14 PM
> > To: Alex Naslednikov
> > Cc: ofw at lists.openfabrics.org
> > Subject: [PATCH] IPoIB_NDIS6_CM - initialize p_endpt->p_ifc once and
> > early.
> >
> >
> > Initialize the endpoint pointer to IBAL interfaces 'p_endpt->p_ifc'
> > only once during endpoint creation so the pointer field is valid for
> > the life of the endpoint. Tested in winOFED 2.3 RC3 validation (svr
> > 2008:x86 & x64); no observed problems.
> >
> > signed-off-by: stan smith <stan.smith at intel.com>
> >
> > --- A/ulp/ipoib_NDIS6_CM/kernel/ipoib_endpoint.cpp      Thu Sep 23
> > 10:04:26 2010 +++ B/ulp/ipoib_NDIS6_CM/kernel/ipoib_endpoint.cpp
> > Thu Sep 23 10:03:57 2010 @@ -179,6 +179,7 @@
> >         p_endpt->dgid = *p_dgid;
> >         p_endpt->dlid = dlid;
> >         p_endpt->qpn = qpn;
> > +       p_endpt->p_ifc = p_port->p_adapter->p_ifc;
> >
> >         IPOIB_EXIT( IPOIB_DBG_ENDPT );
> >         return p_endpt;
> >
> >
> > --- A/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp  Thu Sep 23 10:05:12
> > 2010 +++ B/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp  Thu Sep 23
> > 10:03:23 2010 @@ -6808,7 +6808,6 @@
> >         }
> >         /* set reference to transport to be used while is not
> >         attached to the port */ p_endpt->is_mcast_listener = TRUE;
> > -       p_endpt->p_ifc = p_port->p_adapter->p_ifc;
> >         status = ipoib_endpt_set_mcast( p_endpt,
> >
> >
> > p_port->ib_mgr.h_pd, p_port->port_num, @@ -7954,7 +7953,6 @@
> >         }
> >
> >         p_endpt = PARENT_STRUCT( p_item, ipoib_endpt_t, gid_item );
> > -       p_endpt->p_ifc = p_port->p_adapter->p_ifc;
> >
> >         /* Setup the endpoint for use. */
> >         status = ipoib_endpt_set_mcast( p_endpt,
> 
> _______________________________________________
> ofw mailing list
> ofw at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw



More information about the ofw mailing list