[openib-general] [PATCH] osm: fix num of blocks of GUIDInfo GetTable query
Hal Rosenstock
halr at voltaire.com
Sat Jun 10 11:11:21 PDT 2006
Hi Eitan,
On Sat, 2006-06-10 at 13:12, Eitan Zahavi wrote:
> Hal Rosenstock wrote:
> > Hi Eitan,
> >
> > On Thu, 2006-06-08 at 07:24, Eitan Zahavi wrote:
> >
> >>Hi Hal
> >>
> >>I'm working on passing osmtest check. Found a bug in the new
> >>GUIDInfoRecord query: If you had a physical port with zero guid_cap
> >>the code would loop on blocks 0..255 instead of trying the next port.
> >
> >
> > OK; that's definitely a problem.
> >
> >
> >>I am still looking for why we might have a guid_cap == 0 on some
> >>ports.
> >
> >
> > PortInfo:GuidCap is not used for switch external ports.
> >
> >
> >>This patch resolves this new problem. osmtest passes on some arbitrary
> >>networks.
> >>
> >>Eitan
> >>
> >>Signed-off-by: Eitan Zahavi <eitan at mellanox.co.il>
> >>
> >>Index: opensm/osm_sa_guidinfo_record.c
> >>===================================================================
> >>--- opensm/osm_sa_guidinfo_record.c (revision 7703)
> >>+++ opensm/osm_sa_guidinfo_record.c (working copy)
> >>@@ -255,6 +255,10 @@ __osm_sa_gir_create_gir(
> >> continue;
> >>
> >> p_pi = osm_physp_get_port_info_ptr( p_physp );
> >>+
> >>+ if ( p_pi->guid_cap == 0 )
> >>+ continue;
> >>+
> >
> >
> > I think the right fix is to detect switch external ports and use the
> > VLCap from port 0 rather than from the switch external port (unless that
> > concept is broken in which case it should return 0 records).
> I think switch external ports do not have any PortGUID assigned to them since
> they are not "end port" (i.e. addressable).
Right; that's what I said earlier in a different way (PortGUID is not
used for switch external ports).
> So I think this patch is good enough.
I think its better (an improvement) but not a complete fix for this
issue.
> What if a port reports guid_cap == 0?
Is that legal ? Shouldn't any port where GUIDCap is valid have a non
zero GUIDCap ? On any port where GUIDCap is not used (e.g. invalid), it
should be ignored.
> (I understand it is illegal for addressable port
> but for the SM it is probably better not to assume all ports are legal...)
That's my point on what a complete fix for this would include.
-- Hal
> EZ
> >
> > -- Hal
> >
> >
> >> num_blocks = p_pi->guid_cap / 8;
> >> if ( p_pi->guid_cap % 8 )
> >> num_blocks++;
> >>
>
More information about the general
mailing list