On 06/07/2015 02:22, Steve Wise wrote:
> +int rdma_device_access_flags(struct ib_pd *pd, int roles, int attrs)
> +{
> +     int access_flags = attrs;
> +
> +     if (roles & RDMA_MRR_RECV)
> +             access_flags |= IB_ACCESS_LOCAL_WRITE;
> +
> +     if (roles & RDMA_MRR_WRITE_DEST)
> +             access_flags |= IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE;
> +
> +     if (roles & RDMA_MRR_READ_DEST) {
> +             access_flags |= IB_ACCESS_LOCAL_WRITE;
> +             if (rdma_protocol_iwarp(pd->device,
> +                                     rdma_start_port(pd->device)))
> +                     access_flags |= IB_ACCESS_REMOTE_WRITE;
> +     }
> +
> +     if (roles & RDMA_MRR_READ_SOURCE)
> +             access_flags |= IB_ACCESS_REMOTE_READ;
> +
> +     if (roles & RDMA_MRR_ATOMIC_DEST)
> +             access_flags |= IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_ATOMIC;

I think you need LOCAL_WRITE for ATOMIC_SOURCE in order to receive the
results of the atomic operation.

> +
> +     if (roles & RDMA_MRR_MW_BIND)
> +             access_flags |= IB_ACCESS_MW_BIND;
> +
> +     return access_flags;
> +}
> +EXPORT_SYMBOL(rdma_device_access_flags);

--
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