[ofw] [PATCH] opensm/libvendor-ibal - Support OSMV_QUERY_MULTIPATH_REC queries

Smith, Stan stan.smith at intel.com
Fri May 21 12:42:40 PDT 2010


Done in svn.commit 2806

Smith, Stan wrote:
> Support OSMV_QUERY_MULTIPATH_REC queries.
>
> signed-off-by: stan smith <stan.smith at intel.com>
>
> --- a/ulp/opensm/user/libvendor/osm_vendor_mlx_sa.c   Thu May 20
> 14:58:29 2010 +++ b/ulp/opensm/user/libvendor/osm_vendor_mlx_sa.c     Thu
> May 20 14:41:42 2010 @@ -827,6 +827,46 @@
>               sa_mad_data.p_attr = p_user_query->p_attr;
>               break;
>
> +#ifdef DUAL_SIDED_RMPP
> +     case OSMV_QUERY_MULTIPATH_REC:
> +             OSM_LOG(p_log, OSM_LOG_DEBUG, "DBG:001 MULTIPATH_REC\n");
> +             /* Validate sgid/dgid counts against SA client limit */
> +             p_mpr_req = (osmv_multipath_req_t *) p_query_req->p_query_input;
> +             if (p_mpr_req->sgid_count + p_mpr_req->dgid_count >
> +                 IB_MULTIPATH_MAX_GIDS) {
> +                     OSM_LOG(p_log, OSM_LOG_ERROR, "DBG:001 MULTIPATH_REC "
> +                             "SGID count %d DGID count %d max count %d\n",
> +                             p_mpr_req->sgid_count, p_mpr_req->dgid_count,
> +                             IB_MULTIPATH_MAX_GIDS);
> +                     CL_ASSERT(0);
> +                     return IB_ERROR;
> +             }
> +             memset(&u.multipath_rec, 0, sizeof(ib_multipath_rec_t));
> +             sa_mad_data.method = IB_MAD_METHOD_GETMULTI;
> +             sa_mad_data.attr_id = IB_MAD_ATTR_MULTIPATH_RECORD;
> +             sa_mad_data.attr_offset =
> +                 ib_get_attr_offset(sizeof(ib_multipath_rec_t));
> +             sa_mad_data.p_attr = &u.multipath_rec;
> +             sa_mad_data.comp_mask = p_mpr_req->comp_mask;
> +             u.multipath_rec.num_path = p_mpr_req->num_path;
> +             if (p_mpr_req->reversible)
> +                     u.multipath_rec.num_path |= 0x80;
> +             else
> +                     u.multipath_rec.num_path &= ~0x80;
> +             u.multipath_rec.pkey = p_mpr_req->pkey;
> +             ib_multipath_rec_set_sl(&u.multipath_rec, p_mpr_req->sl);
> +             ib_multipath_rec_set_qos_class(&u.multipath_rec, 0);
> +             u.multipath_rec.independence = p_mpr_req->independence;
> +             u.multipath_rec.sgid_count = p_mpr_req->sgid_count;
> +             u.multipath_rec.dgid_count = p_mpr_req->dgid_count;
> +             j = 0;
> +             for (i = 0; i < p_mpr_req->sgid_count; i++, j++)
> +                     u.multipath_rec.gids[j] = p_mpr_req->gids[j];
> +             for (i = 0; i < p_mpr_req->dgid_count; i++, j++)
> +                     u.multipath_rec.gids[j] = p_mpr_req->gids[j];
> +             break;
> +#endif
> +
>       default:
>               osm_log(p_log, OSM_LOG_ERROR,
>                       "osmv_query_sa DBG:001 %s", "UNKNOWN\n");




More information about the ofw mailing list