[ofa-general] [PATCH] opensm/osm_sa_(multi)path_record: various fixes

Yevgeny Kliteynik kliteyn at mellanox.co.il
Thu Sep 20 04:43:29 PDT 2007


Looks fine, thanks.

-- Yevgeny

Sasha Khapyorsky wrote:
> Couple of similar fixes for osm_sa_path_record.c and
> osm_sa_multipath_record.c - mostly related to using yet not initialized
> variables.
>
> Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
> ---
>  opensm/opensm/osm_sa_multipath_record.c |   27 ++++++++++++---------------
>  opensm/opensm/osm_sa_path_record.c      |   25 ++++++++++---------------
>  2 files changed, 22 insertions(+), 30 deletions(-)
>
> diff --git a/opensm/opensm/osm_sa_multipath_record.c b/opensm/opensm/osm_sa_multipath_record.c
> index a94a943..efc6a07 100644
> --- a/opensm/opensm/osm_sa_multipath_record.c
> +++ b/opensm/opensm/osm_sa_multipath_record.c
> @@ -226,7 +226,7 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  	const osm_physp_t *p_physp;
>  	const osm_physp_t *p_src_physp;
>  	const osm_physp_t *p_dest_physp;
> -	const osm_prtn_t *p_prtn;
> +	const osm_prtn_t *p_prtn = NULL;
>  	const ib_port_info_t *p_pi;
>  	ib_slvl_table_t *p_slvl_tbl;
>  	ib_api_status_t status = IB_SUCCESS;
> @@ -494,10 +494,6 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  		    && (rate > p_qos_level->rate_limit))
>  			rate = p_qos_level->rate_limit;
>  
> -		if (p_qos_level->pkt_life_set
> -		    && (pkt_life > p_qos_level->pkt_life))
> -			pkt_life = p_qos_level->pkt_life;
> -
>  		if (p_qos_level->sl_set) {
>  			required_sl = p_qos_level->sl;
>  			if (!(valid_sl_mask & (1 << required_sl))) {
> @@ -505,14 +501,6 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  				goto Exit;
>  			}
>  		}
> -
> -		if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
> -			osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
> -				"__osm_mpr_rcv_get_path_parms: "
> -				"MultiPath params with QoS constaraints: "
> -				"min MTU = %u, min rate = %u, "
> -				"packet lifetime = %u, sl = %u\n",
> -				mtu, rate, pkt_life, required_sl);
>  	}
>  
>  	/*
> @@ -608,7 +596,9 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  	   for loopback paths, packetLifeTime shall be zero. */
>  	if (p_src_port == p_dest_port)
>  		pkt_life = 0;	/* loopback */
> -	else if (!(p_qos_level && p_qos_level->pkt_life_set))
> +	else if (p_qos_level && p_qos_level->pkt_life_set)
> +		pkt_life = p_qos_level->pkt_life;
> +	else
>  		pkt_life = OSM_DEFAULT_SUBNET_TIMEOUT;
>  
>  	/* we silently ignore cases where only the PktLife selector is defined */
> @@ -783,13 +773,13 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  					       required_pkey &
>  					       cl_ntoh16((uint16_t) ~ 0x8000));
>  		if (!p_prtn) {
> +			required_sl = OSM_DEFAULT_SL;
>  			/* this may be possible when pkey tables are created somehow in
>  			   previous runs or things are going wrong here */
>  			osm_log(p_rcv->p_log, OSM_LOG_ERROR,
>  				"__osm_mpr_rcv_get_path_parms: ERR 451A: "
>  				"No partition found for PKey 0x%04x - using default SL %d\n",
>  				cl_ntoh16(required_pkey), required_sl);
> -			required_sl = OSM_DEFAULT_SL;
>  		} else
>  			required_sl = p_prtn->sl;
>  
> @@ -825,6 +815,13 @@ __osm_mpr_rcv_get_path_parms(IN osm_mpr_rcv_t * const p_rcv,
>  	p_parms->sl = required_sl;
>  	p_parms->hops = hops;
>  
> +	if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
> +		osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
> +			"__osm_mpr_rcv_get_path_parms: MultiPath params:"
> +			" mtu = %u, rate = %u, packet lifetime = %u,"
> +			" pkey = %u, sl = %u, hops = %u\n", mtu, rate,
> +			pkt_life, cl_ntoh16(required_pkey), required_sl, hops);
> +
>        Exit:
>  	OSM_LOG_EXIT(p_rcv->p_log);
>  	return (status);
> diff --git a/opensm/opensm/osm_sa_path_record.c b/opensm/opensm/osm_sa_path_record.c
> index 5e06f75..3b183d9 100644
> --- a/opensm/opensm/osm_sa_path_record.c
> +++ b/opensm/opensm/osm_sa_path_record.c
> @@ -487,7 +487,6 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  	     osm_qos_policy_get_qos_level_by_pr(p_rcv->p_subn->p_qos_policy,
>  						p_pr, p_src_physp, p_dest_physp,
>  						comp_mask))) {
> -
>  		if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
>  			osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
>  				"__osm_pr_rcv_get_path_parms: "
> @@ -504,10 +503,6 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  		    && (rate > p_qos_level->rate_limit))
>  			rate = p_qos_level->rate_limit;
>  
> -		if (p_qos_level->pkt_life_set
> -		    && (pkt_life > p_qos_level->pkt_life))
> -			pkt_life = p_qos_level->pkt_life;
> -
>  		if (p_qos_level->sl_set) {
>  			sl = p_qos_level->sl;
>  			if (!(valid_sl_mask & (1 << sl))) {
> @@ -515,14 +510,6 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  				goto Exit;
>  			}
>  		}
> -
> -		if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
> -			osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
> -				"__osm_pr_rcv_get_path_parms: "
> -				"Path params with QoS constaraints: "
> -				"min MTU = %u, min rate = %u, "
> -				"packet lifetime = %u, sl = %u\n",
> -				mtu, rate, pkt_life, sl);
>  	}
>  
>  	/*
> @@ -533,7 +520,9 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  	 */
>  	if (p_src_port == p_dest_port)
>  		pkt_life = 0;
> -	else if (!(p_qos_level && p_qos_level->pkt_life_set))
> +	else if (p_qos_level && p_qos_level->pkt_life_set)
> +		pkt_life = p_qos_level->pkt_life;
> +	else
>  		pkt_life = OSM_DEFAULT_SUBNET_TIMEOUT;
>  
>  	/*
> @@ -803,13 +792,13 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  		 * No specific SL in request or in QoS level - use partition SL
>  		 */
>  		if (!p_prtn) {
> +			sl = OSM_DEFAULT_SL;
>  			/* this may be possible when pkey tables are created somehow in
>  			   previous runs or things are going wrong here */
>  			osm_log(p_rcv->p_log, OSM_LOG_ERROR,
>  				"__osm_pr_rcv_get_path_parms: ERR 1F1C: "
>  				"No partition found for PKey 0x%04x - using default SL %d\n",
>  				cl_ntoh16(pkey), sl);
> -			sl = OSM_DEFAULT_SL;
>  		} else
>  			sl = p_prtn->sl;
>  	} else if (p_rcv->p_subn->opt.qos) {
> @@ -843,6 +832,12 @@ __osm_pr_rcv_get_path_parms(IN osm_pr_rcv_t * const p_rcv,
>  	p_parms->pkey = pkey;
>  	p_parms->sl = sl;
>  
> +	if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
> +		osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
> +			"__osm_pr_rcv_get_path_parms: Path params:"
> +			" mtu = %u, rate = %u, packet lifetime = %u,"
> +			" pkey = %u, sl = %u\n",
> +			mtu, rate, pkt_life, cl_ntoh16(pkey), sl);
>        Exit:
>  	OSM_LOG_EXIT(p_rcv->p_log);
>  	return (status);
>   



More information about the general mailing list