[openib-general] Re: [PATCH] Opensm - fix LinkRecord get
Hal Rosenstock
halr at voltaire.com
Wed Nov 30 06:19:52 PST 2005
On Wed, 2005-11-30 at 07:35, Yael Kalka wrote:
> Hi Hal,
>
> During some tests I've noticed that in LinkRecord queries there are
> some bugs:
> 1. Trying to ensure the two physical ports are connected comparison
> isn't done correctly.
> 2. When __osm_lr_rcv_get_physp_link is called with physical ports not
> null - there is no check that the value returned is actually different
> than null. As a result we can get several links with the same value.
>
> This patch fixes both issues.
Thanks. Applied.
Some minor comments below.
-- Hal
> Thanks,
> Yael
>
> Signed-off-by: Yael Kalka <yael at mellanox.co.il>
>
> Index: opensm/osm_sa_link_record.c
> ===================================================================
> --- opensm/osm_sa_link_record.c (revision 4231)
> +++ opensm/osm_sa_link_record.c (working copy)
> @@ -235,7 +235,7 @@ __osm_lr_rcv_get_physp_link(
> Ensure the two physp's are actually connected.
> If not, bail out.
> */
> - if( osm_physp_get_remote( p_src_physp ) != p_src_physp )
> + if( osm_physp_get_remote( p_src_physp ) != p_dest_physp )
> goto Exit;
Should there be an error message here ?
> }
> else
> @@ -393,12 +393,16 @@ __osm_lr_rcv_get_port_links(
> {
> p_dest_physp = osm_port_get_phys_ptr( p_dest_port,
> dest_port_num );
> + /* both physical ports should be with data */
> + if (p_src_physp && p_dest_physp)
> + {
> __osm_lr_rcv_get_physp_link( p_rcv, p_lr, p_src_physp,
> p_dest_physp, comp_mask,
> p_list, p_req_physp );
> }
> }
> }
> + }
Formatting was off here (and similarly below)... I fixed it in the
change that was just committed.
> else
> {
> /*
> @@ -412,17 +416,22 @@ __osm_lr_rcv_get_port_links(
> if (port_num < p_src_port->physp_tbl_size)
> {
> p_src_physp = osm_port_get_phys_ptr( p_src_port, port_num );
> + if (p_src_physp)
> + {
> __osm_lr_rcv_get_physp_link( p_rcv, p_lr, p_src_physp,
> NULL, comp_mask, p_list,
> p_req_physp );
> }
> }
> + }
> else
> {
> num_ports = osm_port_get_num_physp( p_src_port );
> for( port_num = 1; port_num < num_ports; port_num++ )
> {
> p_src_physp = osm_port_get_phys_ptr( p_src_port, port_num );
> + if (p_src_physp)
> + {
> __osm_lr_rcv_get_physp_link( p_rcv, p_lr, p_src_physp,
> NULL, comp_mask, p_list,
> p_req_physp );
> @@ -430,6 +439,7 @@ __osm_lr_rcv_get_port_links(
> }
> }
> }
> + }
> else
> {
> if( p_dest_port )
> @@ -446,11 +456,14 @@ __osm_lr_rcv_get_port_links(
> {
> p_dest_physp = osm_port_get_phys_ptr(
> p_dest_port, port_num );
> + if (p_dest_physp)
> + {
> __osm_lr_rcv_get_physp_link( p_rcv, p_lr, NULL,
> p_dest_physp, comp_mask,
> p_list, p_req_physp );
> }
> }
> + }
> else
> {
> num_ports = osm_port_get_num_physp( p_dest_port );
> @@ -458,12 +471,15 @@ __osm_lr_rcv_get_port_links(
> {
> p_dest_physp = osm_port_get_phys_ptr(
> p_dest_port, port_num );
> + if (p_dest_physp)
> + {
> __osm_lr_rcv_get_physp_link( p_rcv, p_lr, NULL,
> p_dest_physp, comp_mask,
> p_list, p_req_physp );
> }
> }
> }
> + }
> else
> {
> /*
>
More information about the general
mailing list