> 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 <[email protected]>
Reviewed-by: Sean Hefty <[email protected]> > --- > 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 [email protected] > 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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
