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

Smith, Stan stan.smith at intel.com
Fri Oct 1 10:20:13 PDT 2010


Tzachi Dar wrote:
> 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

Done in 2952.

>
>> -----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