public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
@ 2012-01-17 11:37   ` Or Gerlitz
       [not found]     ` <alpine.LRH.2.00.1201171337040.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-17 11:39   ` [PATCH 2/4] IB/mlx4: add Raw Packet QP support Or Gerlitz
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Or Gerlitz @ 2012-01-17 11:37 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma

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-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 2/4] IB/mlx4: add Raw Packet QP support
       [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-17 11:37   ` [PATCH 1/4] IB/core: add RAW Packet QP type Or Gerlitz
@ 2012-01-17 11:39   ` Or Gerlitz
       [not found]     ` <alpine.LRH.2.00.1201171338430.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-17 11:41   ` [PATCH libibverbs 3/4] add RAW Packet QP type Or Gerlitz
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Or Gerlitz @ 2012-01-17 11:39 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma, Christoph Lameter, Liran Liss

Implementation of the RAW Packet QP for the mlx4_ib driver,
use the MLX transport as done by the mlx4_en Ethernet driver.

Signed-off-by: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 drivers/infiniband/hw/mlx4/qp.c |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index aa2aefa..97ee02a 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -84,6 +84,11 @@ enum {
 	MLX4_IB_CACHE_LINE_SIZE	= 64,
 };

+enum {
+	MLX4_RAW_QP_MTU		= 7,
+	MLX4_RAW_QP_MSGMAX	= 31,
+};
+
 static const __be32 mlx4_ib_opcode[] = {
 	[IB_WR_SEND]				= cpu_to_be32(MLX4_OPCODE_SEND),
 	[IB_WR_LSO]				= cpu_to_be32(MLX4_OPCODE_LSO),
@@ -573,7 +578,12 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
 	if (sqpn) {
 		qpn = sqpn;
 	} else {
-		err = mlx4_qp_reserve_range(dev->dev, 1, 1, &qpn);
+		/* Raw packet QPNs must be aligned to 8 bits. If not, the WQE
+		   BlueFlame setup flow would wrongly cause vlan insertion */
+		if (init_attr->qp_type == IB_QPT_RAW_PACKET)
+			err = mlx4_qp_reserve_range(dev->dev, 1, 1 << 8, &qpn);
+		else
+			err = mlx4_qp_reserve_range(dev->dev, 1, 1, &qpn);
 		if (err)
 			goto err_wrid;
 	}
@@ -791,6 +801,7 @@ struct ib_qp *mlx4_ib_create_qp(struct ib_pd *pd,
 	case IB_QPT_RC:
 	case IB_QPT_UC:
 	case IB_QPT_UD:
+	case IB_QPT_RAW_PACKET:
 	{
 		qp = kzalloc(sizeof *qp, GFP_KERNEL);
 		if (!qp)
@@ -872,7 +883,8 @@ static int to_mlx4_st(enum ib_qp_type type)
 	case IB_QPT_XRC_INI:
 	case IB_QPT_XRC_TGT:	return MLX4_QP_ST_XRC;
 	case IB_QPT_SMI:
-	case IB_QPT_GSI:	return MLX4_QP_ST_MLX;
+	case IB_QPT_GSI:
+	case IB_QPT_RAW_PACKET:	return MLX4_QP_ST_MLX;
 	default:		return -1;
 	}
 }
@@ -1042,6 +1054,8 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,

 	if (ibqp->qp_type == IB_QPT_GSI || ibqp->qp_type == IB_QPT_SMI)
 		context->mtu_msgmax = (IB_MTU_4096 << 5) | 11;
+	else if (ibqp->qp_type == IB_QPT_RAW_PACKET)
+		context->mtu_msgmax = (MLX4_RAW_QP_MTU << 5) | MLX4_RAW_QP_MSGMAX;
 	else if (ibqp->qp_type == IB_QPT_UD) {
 		if (qp->flags & MLX4_IB_QP_LSO)
 			context->mtu_msgmax = (IB_MTU_4096 << 5) |
@@ -1200,7 +1214,8 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
 	if (cur_state == IB_QPS_INIT &&
 	    new_state == IB_QPS_RTR  &&
 	    (ibqp->qp_type == IB_QPT_GSI || ibqp->qp_type == IB_QPT_SMI ||
-	     ibqp->qp_type == IB_QPT_UD)) {
+	     ibqp->qp_type == IB_QPT_UD ||
+	     ibqp->qp_type == IB_QPT_RAW_PACKET)) {
 		context->pri_path.sched_queue = (qp->port - 1) << 6;
 		if (is_qp0(dev, qp))
 			context->pri_path.sched_queue |= MLX4_IB_DEFAULT_QP0_SCHED_QUEUE;
@@ -1319,6 +1334,14 @@ int mlx4_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 		goto out;
 	}

+	if ((attr_mask & IB_QP_PORT) && (ibqp->qp_type == IB_QPT_RAW_PACKET) &&
+		(rdma_port_get_link_layer(&dev->ib_dev, attr->port_num)
+				!= IB_LINK_LAYER_ETHERNET)) {
+		printk(KERN_WARNING "mlx4_ib: RAW PACKET QPs can "
+			"only be used over Ethernet ports\n");
+		goto out;
+	}
+
 	if (attr_mask & IB_QP_PKEY_INDEX) {
 		int p = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
 		if (attr->pkey_index >= dev->dev->caps.pkey_table_len[p])
-- 
1.7.1


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH libibverbs 3/4] add RAW Packet QP type
       [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-17 11:37   ` [PATCH 1/4] IB/core: add RAW Packet QP type Or Gerlitz
  2012-01-17 11:39   ` [PATCH 2/4] IB/mlx4: add Raw Packet QP support Or Gerlitz
@ 2012-01-17 11:41   ` Or Gerlitz
  2012-01-17 11:42   ` [PATCH libmlx4 4/4] add Raw Packet QP support Or Gerlitz
  2012-01-17 15:08   ` [PATCH 0/4] add RAW Packet QP type Steve Wise
  4 siblings, 0 replies; 19+ messages in thread
From: Or Gerlitz @ 2012-01-17 11:41 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma

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. 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-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 include/infiniband/verbs.h |    3 ++-
 man/ibv_create_qp.3        |    2 +-
 man/ibv_modify_qp.3        |   10 ++++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h
index 6acfc81..8ed8a66 100644
--- a/include/infiniband/verbs.h
+++ b/include/infiniband/verbs.h
@@ -399,7 +399,8 @@ struct ibv_srq_init_attr {
 enum ibv_qp_type {
 	IBV_QPT_RC = 2,
 	IBV_QPT_UC,
-	IBV_QPT_UD
+	IBV_QPT_UD,
+	IBV_QPT_RAW_PACKET = 8
 };

 struct ibv_qp_cap {
diff --git a/man/ibv_create_qp.3 b/man/ibv_create_qp.3
index 5301ad8..7feeab2 100644
--- a/man/ibv_create_qp.3
+++ b/man/ibv_create_qp.3
@@ -28,7 +28,7 @@ struct ibv_cq          *send_cq;        /* CQ to be associated with the Send Que
 struct ibv_cq          *recv_cq;        /* CQ to be associated with the Receive Queue (RQ) */
 struct ibv_srq         *srq;            /* SRQ handle if QP is to be associated with an SRQ, otherwise NULL */
 struct ibv_qp_cap       cap;            /* QP capabilities */
-enum ibv_qp_type        qp_type;        /* QP Transport Service Type: IBV_QPT_RC, IBV_QPT_UC, or IBV_QPT_UD */
+enum ibv_qp_type        qp_type;        /* QP Transport Service Type: IBV_QPT_RC, IBV_QPT_UC, IBV_QPT_UD or IBV_QPT_RAW_PACKET */
 int                     sq_sig_all;     /* If set, each Work Request (WR) submitted to the SQ generates a completion entry */
 .in -8
 };
diff --git a/man/ibv_modify_qp.3 b/man/ibv_modify_qp.3
index 9eabcdf..cb3faaa 100644
--- a/man/ibv_modify_qp.3
+++ b/man/ibv_modify_qp.3
@@ -159,6 +159,16 @@ RTR  \fB          IBV_QP_STATE, IBV_QP_AV, IBV_QP_PATH_MTU, \fR
 RTS  \fB          IBV_QP_STATE, IBV_QP_SQ_PSN, IBV_QP_MAX_QP_RD_ATOMIC, \fR
      \fB          IBV_QP_RETRY_CNT, IBV_QP_RNR_RETRY, IBV_QP_TIMEOUT \fR
 .fi
+.PP
+.nf
+For QP Transport Service Type \fB IBV_QPT_RAW_PACKET\fR:
+.sp
+Next state     Required attributes
+\-\-\-\-\-\-\-\-\-\-     \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+Init \fB          IBV_QP_STATE, IBV_QP_PORT\fR
+RTR  \fB          IBV_QP_STATE\fR
+RTS  \fB          IBV_QP_STATE\fR
+.fi
 .SH "SEE ALSO"
 .BR ibv_create_qp (3),
 .BR ibv_destroy_qp (3),
-- 
1.7.1



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH libmlx4 4/4] add Raw Packet QP support
       [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
                     ` (2 preceding siblings ...)
  2012-01-17 11:41   ` [PATCH libibverbs 3/4] add RAW Packet QP type Or Gerlitz
@ 2012-01-17 11:42   ` Or Gerlitz
  2012-01-17 15:08   ` [PATCH 0/4] add RAW Packet QP type Steve Wise
  4 siblings, 0 replies; 19+ messages in thread
From: Or Gerlitz @ 2012-01-17 11:42 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma

Basic support for RAW Packet QP.

Signed-off-by: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 src/qp.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/qp.c b/src/qp.c
index 40a6689..90c4e80 100644
--- a/src/qp.c
+++ b/src/qp.c
@@ -286,6 +286,10 @@ int mlx4_post_send(struct ibv_qp *ibqp, struct ibv_send_wr *wr,
 			size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
 			break;

+		case IBV_QPT_RAW_PACKET:
+			/* For raw eth, the MLX4_WQE_CTRL_SOLICIT flag is used
+			 * to indicate that no icrc should be calculated */
+			ctrl->srcrb_flags |= htonl(MLX4_WQE_CTRL_SOLICIT);
 		default:
 			break;
 		}
-- 
1.6.5.5


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/4] add RAW Packet QP type
       [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
                     ` (3 preceding siblings ...)
  2012-01-17 11:42   ` [PATCH libmlx4 4/4] add Raw Packet QP support Or Gerlitz
@ 2012-01-17 15:08   ` Steve Wise
       [not found]     ` <4F158ED7.3080405-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
  4 siblings, 1 reply; 19+ messages in thread
From: Steve Wise @ 2012-01-17 15:08 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Roland Dreier, linux-rdma, Christoph Lameter, Liran Liss


On 01/17/2012 05:34 AM, Or Gerlitz wrote:
> 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. Applications that use this qp type
> should deal with whole packets, including link level headers.
>
> This series allows to create such QPs and send packets over them. To receive
> packets, flow steering support has to be added to the verbs and low-level
> drivers. Flow Steering is the ability to program the HCA to direct a packet
> which matches a given flow specification to a given QP. Flow specs set by
> applications are typically made of L3 (IP) and L4 (TCP/UDP) based tuples,
> where network drivers typically use L2 based tuples. Core and mlx4 patches
> for flow steering are expected in the coming weeks.

Hey Or,

I think this series should add some new send flags for HW that does checksum offload:

For example, cxgb4 supports these:

enum {                     /* TX_PKT_XT checksum types */
         TX_CSUM_TCP    = 0,
         TX_CSUM_UDP    = 1,
         TX_CSUM_CRC16  = 4,
         TX_CSUM_CRC32  = 5,
         TX_CSUM_CRC32C = 6,
         TX_CSUM_FCOE   = 7,
         TX_CSUM_TCPIP  = 8,
         TX_CSUM_UDPIP  = 9,
         TX_CSUM_TCPIP6 = 10,
         TX_CSUM_UDPIP6 = 11,
         TX_CSUM_IP     = 12,
};

I'm sure mlx4 has this sort of functionality too?

Another form of HW assist is with VLAN insertion/extraction.  The API should provide a way to specify if a VLAN ID 
should be inserted by HW and removed from a packet on ingress (and passed to the app via the CQE).  In fact, we probably 
want a way to associate a VLAN with a RAW QP, maybe as a QP attribute?

Also, on ingress, most hardware can do INET checksum validation, and a way to indicate the results to the application is 
needed.  Perhaps flags in the CQE?  The cxgb4 device provides many fields on a ingress packet completion that would be 
useful for user mode applications including indications of MAC RX errors, protocol length vs packet length mismatches, 
IP version not 4 or 6, and more.  Does mlx4 has these sorts of indications on ingress packet CQEs?

Food for thought.

Steve.



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 0/4] add RAW Packet QP type
       [not found]     ` <4F158ED7.3080405-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
@ 2012-01-17 15:30       ` Walukiewicz, Miroslaw
  2012-01-17 15:59       ` Or Gerlitz
  1 sibling, 0 replies; 19+ messages in thread
From: Walukiewicz, Miroslaw @ 2012-01-17 15:30 UTC (permalink / raw)
  To: Steve Wise, Or Gerlitz
  Cc: Roland Dreier, linux-rdma, Christoph Lameter, Liran Liss

According VLANs, for RAW QP better solution is allowing inserting VLANs per packet by adding new flags to ib_post_send with special field containing VLAN ID.

On ingress, it would be interesting to see the ingress VLAN in CQE, by introducing a new field and flags indicating VLAN appearance.

As Steve mentioned, the HW checksum offload is necessary also in the API for sending IP fragments. When IP packet is not fragmented it is necessary to send it with L4/L3 sum computed by HW. And when fragments are sent the L3 only csum computation is requested.

Regards,

Mirek


-----Original Message-----
From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Steve Wise
Sent: Tuesday, January 17, 2012 4:08 PM
To: Or Gerlitz
Cc: Roland Dreier; linux-rdma; Christoph Lameter; Liran Liss
Subject: Re: [PATCH 0/4] add RAW Packet QP type


On 01/17/2012 05:34 AM, Or Gerlitz wrote:
> 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. Applications that use this qp type
> should deal with whole packets, including link level headers.
>
> This series allows to create such QPs and send packets over them. To receive
> packets, flow steering support has to be added to the verbs and low-level
> drivers. Flow Steering is the ability to program the HCA to direct a packet
> which matches a given flow specification to a given QP. Flow specs set by
> applications are typically made of L3 (IP) and L4 (TCP/UDP) based tuples,
> where network drivers typically use L2 based tuples. Core and mlx4 patches
> for flow steering are expected in the coming weeks.

Hey Or,

I think this series should add some new send flags for HW that does checksum offload:

For example, cxgb4 supports these:

enum {                     /* TX_PKT_XT checksum types */
         TX_CSUM_TCP    = 0,
         TX_CSUM_UDP    = 1,
         TX_CSUM_CRC16  = 4,
         TX_CSUM_CRC32  = 5,
         TX_CSUM_CRC32C = 6,
         TX_CSUM_FCOE   = 7,
         TX_CSUM_TCPIP  = 8,
         TX_CSUM_UDPIP  = 9,
         TX_CSUM_TCPIP6 = 10,
         TX_CSUM_UDPIP6 = 11,
         TX_CSUM_IP     = 12,
};

I'm sure mlx4 has this sort of functionality too?

Another form of HW assist is with VLAN insertion/extraction.  The API should provide a way to specify if a VLAN ID 
should be inserted by HW and removed from a packet on ingress (and passed to the app via the CQE).  In fact, we probably 
want a way to associate a VLAN with a RAW QP, maybe as a QP attribute?

Also, on ingress, most hardware can do INET checksum validation, and a way to indicate the results to the application is 
needed.  Perhaps flags in the CQE?  The cxgb4 device provides many fields on a ingress packet completion that would be 
useful for user mode applications including indications of MAC RX errors, protocol length vs packet length mismatches, 
IP version not 4 or 6, and more.  Does mlx4 has these sorts of indications on ingress packet CQEs?

Food for thought.

Steve.



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/4] add RAW Packet QP type
       [not found]     ` <4F158ED7.3080405-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
  2012-01-17 15:30       ` Walukiewicz, Miroslaw
@ 2012-01-17 15:59       ` Or Gerlitz
       [not found]         ` <4F159AEB.1060603-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
  1 sibling, 1 reply; 19+ messages in thread
From: Or Gerlitz @ 2012-01-17 15:59 UTC (permalink / raw)
  To: Steve Wise; +Cc: Roland Dreier, linux-rdma, Christoph Lameter, Liran Liss

On 1/17/2012 5:08 PM, Steve Wise wrote:
> I think this series should add some new send flags for HW that does 
> checksum offload [...] also, on ingress, most hardware can do INET 
> checksum validation, and a way to indicate the results to the 
> application is needed.  Perhaps flags in the CQE? [...] another form 
> of HW assist is with VLAN insertion/extraction.  The API should 
> provide a way to specify if a VLAN ID should be inserted by HW and 
> removed from a packet on ingress (and passed to the app via the CQE).  
> In fact, we probably want a way to associate a VLAN with a RAW QP, 
> maybe as a QP attribute?

Hi Steve,

Nice to see how a discussion is quickly revived when the subject is 
close to people's needs... anyway, yep, sure, this submission allows for 
basic functionality, as I mentioned and there's more to add here, but 
this could (should...) be done gradually,  i.e in steps that adds on the 
basic patch. Now to the points you've raised:

Sure, we want to be able to do checksum offload on TX and on RX as well. 
Adding checksum offload support will be done with a patch to libibverbs 
which is similar in spirit to commit e0605d "IB/core: Add IP checksum 
offload support" subject to reporting the RX checksum okay through new 
IB_WC_IP_CSUM_OK bit in ibv_wc->wc_flags along the lines of the patch I 
sent last week to the kernel. So we will have a new device capability 
and two new bit flags IB_SEND_IP_CSUM and IB_WC_IP_CSUM_OK, no ABI 
breaking... happy.

Less simple will be to add support in libibverbs and the low level 
driver libraries, for Large-Send-Offload, e.g in the spirit of commits 
b846f25aa "IB/core: Add creation flags to struct ib_qp_init_attr" and 
c93570f2 "IB/core: Add IPoIB UD LSO support", since we probably need to 
be able to specify something in the qp creation (Sean's verbs extension 
proposal!) and add fields to struct ibv_send_wr.wr.ud, in the WR case, 
we need more 16 (= 8 + 4 + 4) bytes, where it seems before the patch we 
have 12 bytes extra from wr.atomic, I need to check the compiler packing 
here...

> diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h
> index 6acfc81..81bc55f 100644
> --- a/include/infiniband/verbs.h
> +++ b/include/infiniband/verbs.h
> @@ -534,6 +534,9 @@ struct ibv_send_wr {
>                         struct ibv_ah  *ah;
>                         uint32_t        remote_qpn;
>                         uint32_t        remote_qkey;
> +                       void            *header;
> +                       uint32_t        hlen;
> +                       uint32_t        mss;
>                 } ud;
>         } wr;
>  };


As for vlan stripping/insertion, I'm not having definitive opinion yet - 
if we don't expect the system (library, firmware, hardware) to 
insert/strip the L2 MAC header, I', not sure what does it buy us to have 
the vlan tag inserted/stripped?

As for your comment on vlan association with raw qp, do you actually 
refer to the steering work the HCA/NIC should do w.r.t that qp? e.g 
you'd like to have L2 elements in the tuple/rule which is used to steer 
packets to that QP?

Or.


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/4] add RAW Packet QP type
       [not found]         ` <4F159AEB.1060603-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2012-01-17 16:21           ` Steve Wise
       [not found]             ` <4F15A008.9010303-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Steve Wise @ 2012-01-17 16:21 UTC (permalink / raw)
  To: Or Gerlitz
  Cc: Roland Dreier, linux-rdma, Christoph Lameter, Liran Liss,
	Felix Marti

On 01/17/2012 09:59 AM, Or Gerlitz wrote:
> On 1/17/2012 5:08 PM, Steve Wise wrote:
>> I think this series should add some new send flags for HW that does checksum offload [...] also, on ingress, most 
>> hardware can do INET checksum validation, and a way to indicate the results to the application is needed.  Perhaps 
>> flags in the CQE? [...] another form of HW assist is with VLAN insertion/extraction.  The API should provide a way to 
>> specify if a VLAN ID should be inserted by HW and removed from a packet on ingress (and passed to the app via the 
>> CQE).  In fact, we probably want a way to associate a VLAN with a RAW QP, maybe as a QP attribute?
>
> Hi Steve,
>
> Nice to see how a discussion is quickly revived when the subject is close to people's needs... anyway, yep, sure, this 
> submission allows for basic functionality, as I mentioned and there's more to add here, but this could (should...) be 
> done gradually,  i.e in steps that adds on the basic patch. Now to the points you've raised:
>
> Sure, we want to be able to do checksum offload on TX and on RX as well. Adding checksum offload support will be done 
> with a patch to libibverbs which is similar in spirit to commit e0605d "IB/core: Add IP checksum offload support" 
> subject to reporting the RX checksum okay through new IB_WC_IP_CSUM_OK bit in ibv_wc->wc_flags along the lines of the 
> patch I sent last week to the kernel. So we will have a new device capability and two new bit flags IB_SEND_IP_CSUM 
> and IB_WC_IP_CSUM_OK, no ABI breaking... happy.

Sounds good, with the caveat that we need more bits to specify L4 CSUM generation as well as L3 (and L2 CRC).

>
>
> Less simple will be to add support in libibverbs and the low level driver libraries, for Large-Send-Offload, e.g in 
> the spirit of commits b846f25aa "IB/core: Add creation flags to struct ib_qp_init_attr" and c93570f2 "IB/core: Add 
> IPoIB UD LSO support", since we probably need to be able to specify something in the qp creation (Sean's verbs 
> extension proposal!) and add fields to struct ibv_send_wr.wr.ud, in the WR case, we need more 16 (= 8 + 4 + 4) bytes, 
> where it seems before the patch we have 12 bytes extra from wr.atomic, I need to check the compiler packing here...
>
>> diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h
>> index 6acfc81..81bc55f 100644
>> --- a/include/infiniband/verbs.h
>> +++ b/include/infiniband/verbs.h
>> @@ -534,6 +534,9 @@ struct ibv_send_wr {
>>                         struct ibv_ah  *ah;
>>                         uint32_t        remote_qpn;
>>                         uint32_t        remote_qkey;
>> +                       void            *header;
>> +                       uint32_t        hlen;
>> +                       uint32_t        mss;
>>                 } ud;
>>         } wr;
>>  };
>
>
> As for vlan stripping/insertion, I'm not having definitive opinion yet - if we don't expect the system (library, 
> firmware, hardware) to insert/strip the L2 MAC header, I', not sure what does it buy us to have the vlan tag 
> inserted/stripped?

Actually, I'm not sure.  But cxgb4 allows for it. :)  Maybe someone from Chelsio could explain the utility?

>
> As for your comment on vlan association with raw qp, do you actually refer to the steering work the HCA/NIC should do 
> w.r.t that qp? e.g you'd like to have L2 elements in the tuple/rule which is used to steer packets to that QP?
>

It definitely needs to be part of the steering filter/flow.  If we define a new API for adding the filter/flow, then I 
think that is one place where the VLAN ID would be provided by the app.  Also as part of a SEND WR, as Miroslaw points 
out.  My original thought was that you associate it with the RAW QP and then it is used by the provider as needed, but 
maybe that is too restrictive.


Steve.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 2/4] IB/mlx4: add Raw Packet QP support
       [not found]     ` <alpine.LRH.2.00.1201171338430.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
@ 2012-01-18 18:47       ` Hefty, Sean
       [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04E97-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Hefty, Sean @ 2012-01-18 18:47 UTC (permalink / raw)
  To: Or Gerlitz, Roland Dreier; +Cc: linux-rdma, Christoph Lameter, Liran Liss

> +enum {
> +	MLX4_RAW_QP_MTU		= 7,

Is there any special meaning for MTU 7 that should be standardized in ib_verbs.h?

In other places, the code uses IB_MTU_4096 (5):

> @@ -1042,6 +1054,8 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
> 
>  	if (ibqp->qp_type == IB_QPT_GSI || ibqp->qp_type == IB_QPT_SMI)
>  		context->mtu_msgmax = (IB_MTU_4096 << 5) | 11;
> +	else if (ibqp->qp_type == IB_QPT_RAW_PACKET)
> +		context->mtu_msgmax = (MLX4_RAW_QP_MTU << 5) | MLX4_RAW_QP_MSGMAX;
>  	else if (ibqp->qp_type == IB_QPT_UD) {
>  		if (qp->flags & MLX4_IB_QP_LSO)
>  			context->mtu_msgmax = (IB_MTU_4096 << 5) |
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/4] IB/mlx4: add Raw Packet QP support
       [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04E97-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2012-01-18 21:11           ` Or Gerlitz
  0 siblings, 0 replies; 19+ messages in thread
From: Or Gerlitz @ 2012-01-18 21:11 UTC (permalink / raw)
  To: Hefty, Sean; +Cc: Roland Dreier, linux-rdma, Christoph Lameter, Liran Liss

On Wed, Jan 18, 2012 at 8:47 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
>> +     MLX4_RAW_QP_MTU         = 7,

> Is there any special meaning for MTU 7 that should be standardized in ib_verbs.h?
> In other places, the code uses IB_MTU_4096 (5):

nope, its the ConnectX firmware that dictates this value for RAW QPs,
same for the msgmax
being 31.

Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]     ` <alpine.LRH.2.00.1201171337040.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
@ 2012-01-19  1:28       ` Hefty, Sean
       [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04FDC-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  2012-03-01 10:17       ` [PATCH V1 " Or Gerlitz
  2012-04-24 23:42       ` [PATCH " Roland Dreier
  2 siblings, 1 reply; 19+ messages in thread
From: Hefty, Sean @ 2012-01-19  1:28 UTC (permalink / raw)
  To: Or Gerlitz, Roland Dreier; +Cc: linux-rdma

> 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-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

Reviewed-by: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

> ---
>  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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> 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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04FDC-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2012-02-16  3:59           ` Or Gerlitz
       [not found]             ` <CAJZOPZKbdQF1pb7wQNjk23D4hpVgsYF1RNvtq9zDVURLxkLRzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Or Gerlitz @ 2012-02-16  3:59 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma, Christoph Lameter ‎, Sean Hefty

On Thu, Jan 19, 2012 at 3:28 AM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
>> 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-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

> Reviewed-by: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

Roland,

Also here, Sean provided his reviewed-by signature, people (CCed
Christoph and others) keep asking me about this patch set and I didn't
get any feedback from you.

Or.


>>  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
>> --
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]             ` <CAJZOPZKbdQF1pb7wQNjk23D4hpVgsYF1RNvtq9zDVURLxkLRzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2012-02-16 15:27               ` Christoph Lameter
       [not found]                 ` <alpine.DEB.2.00.1202160926460.26083-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Christoph Lameter @ 2012-02-16 15:27 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Roland Dreier, linux-rdma, Sean Hefty

On Thu, 16 Feb 2012, Or Gerlitz wrote:

> Also here, Sean provided his reviewed-by signature, people (CCed
> Christoph and others) keep asking me about this patch set and I didn't
> get any feedback from you.

I sure would like to see this merged for 3.4


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH V1 1/4] IB/core: add RAW Packet QP type
       [not found]     ` <alpine.LRH.2.00.1201171337040.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-19  1:28       ` Hefty, Sean
@ 2012-03-01 10:17       ` Or Gerlitz
  2012-04-24 23:42       ` [PATCH " Roland Dreier
  2 siblings, 0 replies; 19+ messages in thread
From: Or Gerlitz @ 2012-03-01 10:17 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma

Applications that use this qp type should build the whole packet,
including L2 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-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---

changes from V0:
 removed spaces at ib_verbs.h that went in by mistake

 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 4d27e4c..7d801e6 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 575b780..140f9a5 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..a3fa323 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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]                 ` <alpine.DEB.2.00.1202160926460.26083-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
@ 2012-03-12 16:41                   ` Or Gerlitz
       [not found]                     ` <4F5E272B.6060909-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Or Gerlitz @ 2012-03-12 16:41 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Christoph Lameter, linux-rdma, Sean Hefty

On 2/16/2012 5:27 PM, Christoph Lameter wrote:
> On Thu, 16 Feb 2012, Or Gerlitz wrote:
>
>> Also here, Sean provided his reviewed-by signature, people (CCed Christoph and others) keep asking me about this patch set and I didn't get any feedback from you.
>
> I sure would like to see this merged for 3.4
>
>

Hi Roland,

Same here, I submitted the patches ~two months ago and haven't heard 
from you, I would be happy to see this going into 3.4 and if 
fixes/changes are needed please let me know as soon as possible so I 
will do them.

Or.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]                     ` <4F5E272B.6060909-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2012-03-12 19:29                       ` Christoph Lameter
  0 siblings, 0 replies; 19+ messages in thread
From: Christoph Lameter @ 2012-03-12 19:29 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Roland Dreier, linux-rdma, Sean Hefty

On Mon, 12 Mar 2012, Or Gerlitz wrote:

> Same here, I submitted the patches ~two months ago and haven't heard from you,
> I would be happy to see this going into 3.4 and if fixes/changes are needed
> please let me know as soon as possible so I will do them.

I can confirm that the patches in OFED to the same effect work very well.
Widely deployed here.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/4] IB/core: add RAW Packet QP type
       [not found]     ` <alpine.LRH.2.00.1201171337040.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
  2012-01-19  1:28       ` Hefty, Sean
  2012-03-01 10:17       ` [PATCH V1 " Or Gerlitz
@ 2012-04-24 23:42       ` Roland Dreier
  2 siblings, 0 replies; 19+ messages in thread
From: Roland Dreier @ 2012-04-24 23:42 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: linux-rdma

Thanks, applied at long last.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/4] add RAW Packet QP type
       [not found]             ` <4F15A008.9010303-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
@ 2013-05-20 22:43               ` Shawn Bohrer
       [not found]                 ` <20130520224308.GA16639-/vebjAlq/uFE7V8Yqttd03bhEEblAqRIDbRjUBewulXQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 19+ messages in thread
From: Shawn Bohrer @ 2013-05-20 22:43 UTC (permalink / raw)
  To: Or Gerlitz
  Cc: Steve Wise, Roland Dreier, linux-rdma, Christoph Lameter,
	Liran Liss, Felix Marti

On Tue, Jan 17, 2012 at 10:21:28AM -0600, Steve Wise wrote:
> On 01/17/2012 09:59 AM, Or Gerlitz wrote:
> >On 1/17/2012 5:08 PM, Steve Wise wrote:
> >>I think this series should add some new send flags for HW that
> >>does checksum offload [...] also, on ingress, most hardware can
> >>do INET checksum validation, and a way to indicate the results
> >>to the application is needed.  Perhaps flags in the CQE? [...]
> >>another form of HW assist is with VLAN insertion/extraction.
> >>The API should provide a way to specify if a VLAN ID should be
> >>inserted by HW and removed from a packet on ingress (and passed
> >>to the app via the CQE).  In fact, we probably want a way to
> >>associate a VLAN with a RAW QP, maybe as a QP attribute?
> >
> >Hi Steve,
> >
> >Nice to see how a discussion is quickly revived when the subject
> >is close to people's needs... anyway, yep, sure, this submission
> >allows for basic functionality, as I mentioned and there's more to
> >add here, but this could (should...) be done gradually,  i.e in
> >steps that adds on the basic patch. Now to the points you've
> >raised:
> >
> >Sure, we want to be able to do checksum offload on TX and on RX as
> >well. Adding checksum offload support will be done with a patch to
> >libibverbs which is similar in spirit to commit e0605d "IB/core:
> >Add IP checksum offload support" subject to reporting the RX
> >checksum okay through new IB_WC_IP_CSUM_OK bit in ibv_wc->wc_flags
> >along the lines of the patch I sent last week to the kernel. So we
> >will have a new device capability and two new bit flags
> >IB_SEND_IP_CSUM and IB_WC_IP_CSUM_OK, no ABI breaking... happy.
> 
> Sounds good, with the caveat that we need more bits to specify L4 CSUM generation as well as L3 (and L2 CRC).

Hi Or,

I appologize if I missed it, but did any support for L3/L4 CSUM
generation get added?  Doesn't look like the upstream libibverbs has
it, and I don't seem to see any patches floating around.

Thanks,
Shawn
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/4] add RAW Packet QP type
       [not found]                 ` <20130520224308.GA16639-/vebjAlq/uFE7V8Yqttd03bhEEblAqRIDbRjUBewulXQT0dZR+AlfA@public.gmane.org>
@ 2013-05-21 19:57                   ` Or Gerlitz
  0 siblings, 0 replies; 19+ messages in thread
From: Or Gerlitz @ 2013-05-21 19:57 UTC (permalink / raw)
  To: Shawn Bohrer
  Cc: Or Gerlitz, Steve Wise, Roland Dreier, linux-rdma,
	Christoph Lameter, Liran Liss, Felix Marti

On Tue, May 21, 2013 at 1:43 AM, Shawn Bohrer <shawn.bohrer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> I appologize if I missed it, but did any support for L3/L4 CSUM
> generation get added?  Doesn't look like the upstream libibverbs has
> it, and I don't seem to see any patches floating around.

Roland commented that he will make a point release  this week for
libibverbs and libmlx4, the patches for CSUM offload I will post after
that release.

Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2013-05-21 19:57 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <alpine.LRH.2.00.1201171330540.24946@ogerlitz.voltaire.com>
     [not found] ` <alpine.LRH.2.00.1201171330540.24946-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
2012-01-17 11:37   ` [PATCH 1/4] IB/core: add RAW Packet QP type Or Gerlitz
     [not found]     ` <alpine.LRH.2.00.1201171337040.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
2012-01-19  1:28       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04FDC-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-02-16  3:59           ` Or Gerlitz
     [not found]             ` <CAJZOPZKbdQF1pb7wQNjk23D4hpVgsYF1RNvtq9zDVURLxkLRzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-16 15:27               ` Christoph Lameter
     [not found]                 ` <alpine.DEB.2.00.1202160926460.26083-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2012-03-12 16:41                   ` Or Gerlitz
     [not found]                     ` <4F5E272B.6060909-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2012-03-12 19:29                       ` Christoph Lameter
2012-03-01 10:17       ` [PATCH V1 " Or Gerlitz
2012-04-24 23:42       ` [PATCH " Roland Dreier
2012-01-17 11:39   ` [PATCH 2/4] IB/mlx4: add Raw Packet QP support Or Gerlitz
     [not found]     ` <alpine.LRH.2.00.1201171338430.26871-VYr5/9ddeaGSIdy2EShu12Xnswh1EIUO@public.gmane.org>
2012-01-18 18:47       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A823732DC04E97-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-01-18 21:11           ` Or Gerlitz
2012-01-17 11:41   ` [PATCH libibverbs 3/4] add RAW Packet QP type Or Gerlitz
2012-01-17 11:42   ` [PATCH libmlx4 4/4] add Raw Packet QP support Or Gerlitz
2012-01-17 15:08   ` [PATCH 0/4] add RAW Packet QP type Steve Wise
     [not found]     ` <4F158ED7.3080405-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2012-01-17 15:30       ` Walukiewicz, Miroslaw
2012-01-17 15:59       ` Or Gerlitz
     [not found]         ` <4F159AEB.1060603-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2012-01-17 16:21           ` Steve Wise
     [not found]             ` <4F15A008.9010303-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2013-05-20 22:43               ` Shawn Bohrer
     [not found]                 ` <20130520224308.GA16639-/vebjAlq/uFE7V8Yqttd03bhEEblAqRIDbRjUBewulXQT0dZR+AlfA@public.gmane.org>
2013-05-21 19:57                   ` Or Gerlitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox