[openib-general] Re: [PATCH] OpenSM - check port capabilities to create MC group

Sasha Khapyorsky sashak at voltaire.com
Sun Mar 5 04:55:09 PST 2006


Hello Yael,

On 11:26 Sun 05 Mar     , Yael Kalka wrote:
> 
> After checking in Sasha's patch regarding the port capabilities for
> joining MC group, and doing some testing here, we've noticed the
> following problem:
> Currently, when requesting to create MC group with MTU(rate) selector
> 1 (meaning less than rate specified), the MC group is created with
> MTU(rate) requested - 1. This is without checking the MTU(rate) of the
> port requesting the creation of the multicast group. 
> This means that if, for example, port with MTU=2 sends a request for
> MC group creation with MTU selector=1 and MTU=5, Opensm will try to
> create a MC group with MTU=4, and fail, since the port capabilities
> are not realizable.
> The following patch adds creation of the MC group with MTU(rate) that
> also takes into account the MTU(rate) of the port requesting the creation.

The idea looks reasonable for me. Some note about patch however (below).

> @@ -1092,10 +1097,17 @@ __mgrp_request_is_realizable(
>        }
>        break;
>      case 1: /* Less than MTU specified */
> -      /* if the requested MTU is not already the minimal we just
> -         use one lower */
> +      /* if the requested MTU is not already the minimal, then we will
> +         use the smaller of the two:
> +         a. one lower then the required
> +         b. the mtu of the requesting port
> +         If the p_pi is NULL - this means there is no requestor port, then
> +         just use mtu one lower then the required. */
>        if ( mtu_required > 1 )
>        {
> +        if (p_pi && ib_port_info_get_mtu_cap(p_pi) < (mtu_required - 1))
> +          p_mcm_rec->mtu = ib_port_info_get_mtu_cap(p_pi);
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Does this will overwrite mtu_sel bits in p_mcm_rec->mtu?

> @@ -1161,10 +1173,18 @@ __mgrp_request_is_realizable(
>        }
>        break;
>      case 1: /* Less than RATE specified */
> -      /* if the requested RATE is not already the minimal we just
> -         use one lower */
> +      /* if the requested RATE is not already the minimal, then we will
> +         use the smaller of the two:
> +         a. one lower then the required
> +         b. the rate of the requesting port
> +         If the p_pi is NULL - this means there is no requestor port, then
> +         just use rate one lower then the required. */
> +      
>        if ( rate_required > 2 )
>        {
> +        if (p_pi && ib_port_info_compute_rate(p_pi) < (rate_required - 1))
> +          p_mcm_rec->rate = ib_port_info_compute_rate(p_pi);

Ditto.

Thanks,
Sasha.



More information about the general mailing list