[ofa-general] Re: [PATCH v2] opensm: set IS_SM bit during opensm init

Sasha Khapyorsky sashak at voltaire.com
Thu Mar 12 09:23:11 PDT 2009


On 16:15 Thu 12 Mar     , Eli Dorfman (Voltaire) wrote:
> 
> diff --git a/opensm/opensm/osm_opensm.c b/opensm/opensm/osm_opensm.c
> index 7de2e5b..cfe6474 100644
> --- a/opensm/opensm/osm_opensm.c
> +++ b/opensm/opensm/osm_opensm.c
> @@ -475,6 +475,11 @@ osm_opensm_bind(IN osm_opensm_t * const p_osm, IN const ib_net64_t guid)
>  		goto Exit;
>  #endif				/* ENABLE_OSM_PERF_MGR */
>  
> +	/* setting IS_SM in capability mask */
> +	OSM_LOG(&p_osm->log, OSM_LOG_INFO, "Setting IS_SM on port 0x%016" PRIx64 "\n",
> +			cl_ntoh64(guid));
> +	osm_vendor_set_sm(p_osm->sm.mad_ctrl.h_bind, TRUE);

This looks correct fix for me. Let's wait day or two for potential
another comments.

> @@ -139,16 +115,7 @@ __osm_pi_rcv_process_endport(IN osm_sm_t * sm,
>  		}
>  	}
>  
> -	if (port_guid == sm->p_subn->sm_port_guid) {
> -		/*
> -		   We received the PortInfo for our own port.
> -		 */
> -		if (!(p_pi->capability_mask & IB_PORT_CAP_IS_SM))
> -			/*
> -			   Set the IS_SM bit to indicate our port hosts an SM.
> -			 */
> -			__osm_pi_rcv_set_sm(sm, p_physp);
> -	} else {
> +	if (port_guid != sm->p_subn->sm_port_guid) {
>  		p_sm_tbl = &sm->p_subn->sm_guid_tbl;
>  		if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {

Just thought unrelated to this patch. In the past I started to think
about redoing sm_guid_tbl so that it will keep our SM as well, for first
look it should simplify some flows and SA SMinfoRecord processing. Was
interrupted by something else then...

Sasha



More information about the general mailing list