[openib-general] [PATCH] osm: reviewing osmtest - osmt_multicast.c
Hal Rosenstock
halr at voltaire.com
Wed Oct 11 07:30:42 PDT 2006
On Wed, 2006-10-11 at 06:23, Yevgeny Kliteynik wrote:
> Hi Hal
>
> Fixing a few problems in the multicast test flow,
> plus some cosmetics.
>
> Yevgeny
>
> Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
Thanks. Applied. See question below...
> Index: osmt_multicast.c
> ===================================================================
> --- osmt_multicast.c (revision 9776)
> +++ osmt_multicast.c (working copy)
[snip...]
> @@ -1808,14 +1865,54 @@ osmt_run_mcast_flow( IN osmtest_t * cons
>
> /* o15.0.1.6: */
> /* - Create a new MCG with valid requested MGID. */
> + osmt_init_mc_query_rec(p_osmt, &mc_req_rec);
> + mc_req_rec.mgid = good_mgid;
>
> osm_log( &p_osmt->log, OSM_LOG_INFO,
> "osmt_run_mcast_flow: "
> - "Checking Create given MGID=0x%016" PRIx64 " : "
> + "Checking Create given valid MGID=0x%016" PRIx64 " : "
> + "0x%016" PRIx64 " (o15.0.1.6)...\n",
> + cl_ntoh64(mc_req_rec.mgid.unicast.prefix),
> + cl_ntoh64(mc_req_rec.mgid.unicast.interface_id));
> +
> + /* Before creation, need to check that this group doesn't exist */
> + osm_log( &p_osmt->log, OSM_LOG_INFO,
> + "osmt_run_mcast_flow: "
> + "Verifying that MCGroup with this MGID doesn't exist by trying to Join it (o15.0.1.13)...\n");
> +
> + ib_member_set_join_state(&mc_req_rec, IB_MC_REC_STATE_NON_MEMBER);
> +
> + osm_log( &p_osmt->log, OSM_LOG_ERROR,
> + "osmt_run_mcast_flow: " EXPECTING_ERRORS_START "\n" );
> + status = osmt_send_mcast_request( p_osmt, 1, /* join */
> + &mc_req_rec,
> + comp_mask,
> + &res_sa_mad );
> + osm_log( &p_osmt->log, OSM_LOG_ERROR,
> + "osmt_run_mcast_flow: " EXPECTING_ERRORS_END "\n" );
> +
> + if ((status != IB_REMOTE_ERROR) ||
> + (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID))
> + {
> + osm_log( &p_osmt->log, OSM_LOG_ERROR,
> + "osmt_run_mcast_flow: ERR 0301: "
> + "Tried joining group that shouldn't have existed - got %s/%s\n",
> + ib_get_err_str( status ),
> + ib_get_mad_status_str( (ib_mad_t*)(&res_sa_mad) )
> + );
> + status = IB_ERROR;
> + goto Exit;
> + }
In the event this works, the SA is potentially left with some bad state
because of this. Should the join be removed for this case ?
-- Hal
More information about the general
mailing list