[openib-general] [PATCH] OpenSM/osm_sa_portinfo_record.c: Support enhanced switchport 0 for LMC > 0
Eitan Zahavi
eitan at mellanox.co.il
Thu Jun 29 12:52:18 PDT 2006
Right !
>
> OpenSM/osm_sa_portinfo_record.c: Support enhanced switch port 0 for
LMC
> > 0
>
> In __osm_sa_pir_create, handle enhanced switch port 0 (and the
> possibility that it's LMC > 0)
>
> Signed-off-by: Hal Rosenstock <halr at voltaire.com>
>
> Index: opensm/osm_sa_portinfo_record.c
> ===================================================================
> --- opensm/osm_sa_portinfo_record.c (revision 8277)
> +++ opensm/osm_sa_portinfo_record.c (working copy)
> @@ -60,6 +60,7 @@
> #include <opensm/osm_sa_portinfo_record.h>
> #include <opensm/osm_port.h>
> #include <opensm/osm_node.h>
> +#include <opensm/osm_switch.h>
> #include <vendor/osm_vendor_api.h>
> #include <opensm/osm_helper.h>
> #include <opensm/osm_pkey.h>
> @@ -197,24 +198,34 @@ __osm_sa_pir_create(
> uint16_t max_lid_ho;
> uint16_t base_lid_ho;
> uint16_t match_lid_ho;
> + osm_physp_t *p_node_physp;
> + osm_switch_t *p_sw;
> + ib_switch_info_t *p_si;
>
> OSM_LOG_ENTER( p_rcv->p_log, __osm_sa_pir_create );
>
> - if(p_physp->p_node->node_info.node_type == IB_NODE_TYPE_SWITCH)
> + if (p_physp->p_node->node_info.node_type == IB_NODE_TYPE_SWITCH)
> {
> - lmc = 0;
> - base_lid_ho = cl_ntoh16(
> - osm_physp_get_base_lid(
> - osm_node_get_physp_ptr(p_physp->p_node, 0))
> - );
> - max_lid_ho = base_lid_ho;
> + p_node_physp = osm_node_get_physp_ptr( p_physp->p_node, 0 );
> + base_lid_ho = cl_ntoh16( osm_physp_get_base_lid( p_node_physp )
);
> + p_sw = osm_get_switch_by_guid( p_rcv->p_subn,
> + osm_physp_get_port_guid( p_node_physp ) );
> + if (!p_sw || !(p_si = osm_switch_get_si_ptr( p_sw )) ||
> + !ib_switch_info_is_enhanced_port0( p_si ))
> + {
> + lmc = 0;
> + }
> + else
> + {
> + lmc = osm_physp_get_lmc( p_node_physp );
> + }
> }
> else
> {
> lmc = osm_physp_get_lmc( p_physp );
> base_lid_ho = cl_ntoh16( osm_physp_get_base_lid( p_physp ) );
> - max_lid_ho = (uint16_t)( base_lid_ho + (1 << lmc) - 1 );
> }
> + max_lid_ho = (uint16_t)( base_lid_ho + (1 << lmc) - 1 );
>
> if( p_ctxt->comp_mask & IB_PIR_COMPMASK_LID )
> {
>
More information about the general
mailing list