On Thu, Oct 22, 2009 at 01:10:09AM -0700, Sean Hefty wrote:

> +static int ucma_set_ib_path(struct ucma_context *ctx,
> +                         struct ib_path_rec_data *path_data, size_t optlen)
> +{
> +     struct ib_sa_path_rec sa_path;
> +     struct rdma_cm_event event;
> +     int ret;
> +
> +     if (optlen != sizeof(*path_data))
> +             return -EINVAL;
> +
> +     if (path_data->flags != IB_PATH_GMP | IB_PATH_PRIMARY |
> +                             IB_PATH_OUTBOUND | IB_PATH_INBOUND)
> +             return -EINVAL;

This should accept an array here, to aid easing in APM support:

if ((optlen % sizeof(*path_data)) != 0) return -EINVAL;

for (; optlen != 0; optlen -= sizeof(*path_data), path_data++)
   if (path_data->flags == (IB_PATH_GMP | IB_PATH_PRIMARY |                     
             
                            IB_PATH_OUTBOUND | IB_PATH_INBOUND))
       break;

if (optlen == 0) return -EINVAL;

Could you do basic APM support right now, exactly with the same
capability as ucm has?

> +enum {
> +     IB_PATH_GMP       = 1,
> +     IB_PATH_PRIMARY   = (1<<1),
> +     IB_PATH_ALTERNATE = (1<<2),
> +     IB_PATH_OUTBOUND  = (1<<3),
> +     IB_PATH_INBOUND   = (1<<4)
> +};

I like the PATH_PRIMARY/PATH_ALTERNATE idea,

But I think IB_PATH_OUTBOUND_REV is still required.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to