[ofa-general] Re: infiniband-diags/saquery.c:print_multicast_member_record question

Ira Weiny weiny2 at llnl.gov
Tue Jun 10 11:26:17 PDT 2008


On Tue, 10 Jun 2008 11:16:24 -0700
Hal Rosenstock <hrosenstock at xsigo.com> wrote:

> On Tue, 2008-06-10 at 11:11 -0700, Ira Weiny wrote:
> > On Tue, 10 Jun 2008 10:23:24 -0700
> > Hal Rosenstock <hrosenstock at xsigo.com> wrote:
> > 
> > > On Tue, 2008-06-10 at 09:05 -0700, Ira Weiny wrote:
> > > > Yea, that comment does not make sense.
> > > > 
> > > > I am searching the node records for the node which has the port defined in the
> > > > member record.  The interface ID is simply the port guid, is it not?
> > > > 
> > > > 	uint64_t gid_interface_id = cl_ntoh64( p_mcmr->port_gid.unicast.interface_id );
> > > > 
> > > > I guess the comments should read.
> > > > 
> > > >    /* go through the node records searching for a port guid which matches
> > > >     * this port gid interface id.
> > > >     * This gives us a node description to print.
> > > >     */
> > > > 
> > > > Does that make more sense?
> > > 
> > > The makes more sense but I don't think that the code does what's
> > > intended.
> > 
> > Why do you say that?
> 
> Looks to me like it relies on some node GUID being same as port GUID.
> While that's allowable for one port, it won't always be the case.

In my test system the Node GUID and port GUID are different and this works.  I
am specifically using the port guid out of the NodeInfo struct of the
NodeRecord.  So I should be using the port guid vs port GID ID _only_.

> 
> > Have you found some configuration in which this does not
> > work?
> 
> Yes.

:-(  Sorry, I'm pretty sure this should be ok...

Ira

> 
> -- Hal
> 
> > From the spec pg 905:
> > 
> >    "Note: If a channel adapter or router has multiple ports on the same subnet,
> >    there will be multiple NodeRecords available for that node from SA, one for
> >    each possible PortGUID value of NodeInfo for that node on that subnet."
> > 
> > So each NodeRecord should have a unique port GUID in it.
> > 
> > Or do you think the GID interface ID will not always equal the GUID?  I thought
> > I read that somewhere but perhaps I am wrong.  I don't find it right now.  :-/
> > 
> > Ira
> > 
> > > 
> > > -- Hal
> > > 
> > > > Ira
> > > > 
> > > > On Tue, 10 Jun 2008 07:46:26 -0700
> > > > Hal Rosenstock <hrosenstock at xsigo.com> wrote:
> > > > 
> > > > > Ira,
> > > > > 
> > > > > In saquery.c:print_multicast_member_record, there is the following:
> > > > > 
> > > > >         /* go through and find the node description for this node GID */
> > > > >         for (i = 0; i < result.result_cnt; i++) {
> > > > >                 node_record = osmv_get_query_node_rec(result.p_result_madw, i);
> > > > >                 if (cl_ntoh64(node_record->node_info.port_guid) == gid_interface_id)
> > > > >                         break;
> > > > >         }
> > > > > 
> > > > > I have a question about the intention here:
> > > > > 
> > > > > The comment mentions the node description for this node GID. Is that
> > > > > what is meant or is the intention to get the node description
> > > > > corresponding to the port GUID for each MCMember record ?
> > > > > 
> > > > > -- Hal
> > > > > 
> > > > > 
> > > 
> 



More information about the general mailing list