> Applications that use this qp type should build the whole packet,
> including link level headers when sending. On the receive side, the
> HW isn't expected to strip any headers. The new qp type designated
> usage is from user-space in Ethernet environments, e.g by applications
> that do TCP/IP offloading. Only processes with the NET_RAW capability
> may open such qp. The name raw packet was selected to resemble the
> similarity to AF_PACKET / SOL_RAW sockets.
>
> Signed-off-by: Or Gerlitz <ogerlitz@xxxxxxxxxxxx>
Reviewed-by: Sean Hefty <sean.hefty@xxxxxxxxx>
> ---
> drivers/infiniband/core/uverbs_cmd.c | 3 +++
> drivers/infiniband/core/verbs.c | 1 +
> include/rdma/ib_verbs.h | 2 +-
> 3 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c
> b/drivers/infiniband/core/uverbs_cmd.c
> index b930da4..8722e96 100644
> --- a/drivers/infiniband/core/uverbs_cmd.c
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -1399,6 +1399,9 @@ ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file,
> if (copy_from_user(&cmd, buf, sizeof cmd))
> return -EFAULT;
>
> + if (cmd.qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW))
> + return -EPERM;
> +
> INIT_UDATA(&udata, buf + sizeof cmd,
> (unsigned long) cmd.response + sizeof resp,
> in_len - sizeof cmd, out_len - sizeof resp);
> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
> index 602b1bd..f73e15b 100644
> --- a/drivers/infiniband/core/verbs.c
> +++ b/drivers/infiniband/core/verbs.c
> @@ -479,6 +479,7 @@ static const struct {
> [IB_QPT_UD] = (IB_QP_PKEY_INDEX |
> IB_QP_PORT |
> IB_QP_QKEY),
> + [IB_QPT_RAW_PACKET] = IB_QP_PORT,
> [IB_QPT_UC] = (IB_QP_PKEY_INDEX |
> IB_QP_PORT |
> IB_QP_ACCESS_FLAGS),
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index c3cca5a..6220b8b 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -605,7 +605,7 @@ enum ib_qp_type {
> IB_QPT_UD,
> IB_QPT_RAW_IPV6,
> IB_QPT_RAW_ETHERTYPE,
> - /* Save 8 for RAW_PACKET */
> + IB_QPT_RAW_PACKET = 8,
> IB_QPT_XRC_INI = 9,
> IB_QPT_XRC_TGT,
> IB_QPT_MAX
> --
> 1.7.1
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Home]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]
[Devices]