[ewg] RAW_ETH support [PATCH 1/1]
Moni Shoua
monis at voltaire.com
Sun Jun 13 07:37:40 PDT 2010
I think that Eli was referring to the MLX4 specific patches but we'll
send the common and specific patches together once again
-----Original Message-----
From: Vladimir Sokolovsky [mailto:vlad at dev.mellanox.co.il]
Sent: Sunday, June 13, 2010 5:28 PM
To: Aleksey Senin
Cc: Moni Shoua; ewg at lists.openfabrics.org; Eli Cohen; Walukiewicz,
Miroslaw
Subject: Re: [ewg] RAW_ETH support [PATCH 1/1]
Alekseys Senin wrote:
> Vlad,
> apply this patch. It will add new RAW_ETH enum and used by NES/Intel
driver in their code.
>
> This patch add RAW_ETH QP type to verbs layer.
>
> Signed-off-by: Aleksey Senin <alekseys at voltaire.com>
> ---
Hi Aleksey,
I understand from Eli that there are issues with this patch.
So, please send the fixed version.
Regards,
Vladimir
> kernel_patches/fixes/core_0560_raw_eth.patch | 63
++++++++++++++++++++++++++
> 1 files changed, 63 insertions(+), 0 deletions(-) create mode 100644
> kernel_patches/fixes/core_0560_raw_eth.patch
>
> diff --git a/kernel_patches/fixes/core_0560_raw_eth.patch
> b/kernel_patches/fixes/core_0560_raw_eth.patch
> new file mode 100644
> index 0000000..2a8b30f
> --- /dev/null
> +++ b/kernel_patches/fixes/core_0560_raw_eth.patch
> @@ -0,0 +1,63 @@
> + Add new RAW_ETY QP type in order to build RAW Ethernet packets over
> + iWARP and RDMAOE protocols.
> +
> +
> +Signed-off-by: Aleksey Senin <alekseys at voltaire.com>
> +---
> + drivers/infiniband/core/verbs.c | 13 +++++++++++--
> + include/rdma/ib_verbs.h | 1 +
> + 2 files changed, 12 insertions(+), 2 deletions(-)
> +
> +diff --git a/drivers/infiniband/core/verbs.c
> +b/drivers/infiniband/core/verbs.c index 881850e..bb4dcd5 100644
> +--- a/drivers/infiniband/core/verbs.c
> ++++ b/drivers/infiniband/core/verbs.c
> +@@ -382,6 +382,7 @@ static const struct {
> + [IB_QPT_UD] = (IB_QP_PKEY_INDEX
|
> + IB_QP_PORT
|
> + IB_QP_QKEY),
> ++ [IB_QPT_RAW_ETH] = IB_QP_PORT,
> + [IB_QPT_UC] = (IB_QP_PKEY_INDEX
|
> + IB_QP_PORT
|
> + IB_QP_ACCESS_FLAGS),
> +@@ -1004,7 +1005,11 @@ int ib_attach_mcast(struct ib_qp *qp, union
> +ib_gid *gid, u16 lid)
> +
> + switch (rdma_node_get_transport(qp->device->node_type)) {
> + case RDMA_TRANSPORT_IB:
> +- if (gid->raw[0] != 0xff || qp->qp_type != IB_QPT_UD)
> ++ if (qp->qp_type == IB_QPT_RAW_ETH) {
> ++ /* In raw Etherent mgids the 63 msb's should be
0 */
> ++ if (gid->global.subnet_prefix &
cpu_to_be64(~1ULL))
> ++ return -EINVAL;
> ++ } else if (gid->raw[0] != 0xff || qp->qp_type !=
IB_QPT_UD)
> + return -EINVAL;
> + break;
> + case RDMA_TRANSPORT_IWARP:
> +@@ -1023,7 +1028,11 @@ int ib_detach_mcast(struct ib_qp *qp, union
> +ib_gid *gid, u16 lid)
> +
> + switch (rdma_node_get_transport(qp->device->node_type)) {
> + case RDMA_TRANSPORT_IB:
> +- if (gid->raw[0] != 0xff || qp->qp_type != IB_QPT_UD)
> ++ if (qp->qp_type == IB_QPT_RAW_ETH) {
> ++ /* In raw Etherent mgids the 63 msb's should be
0 */
> ++ if (gid->global.subnet_prefix &
cpu_to_be64(~1ULL))
> ++ return -EINVAL;
> ++ } else if (gid->raw[0] != 0xff || qp->qp_type !=
IB_QPT_UD)
> + return -EINVAL;
> + break;
> + case RDMA_TRANSPORT_IWARP:
> +diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index
> +3a5a40f..2162253 100644
> +--- a/include/rdma/ib_verbs.h
> ++++ b/include/rdma/ib_verbs.h
> +@@ -571,6 +571,7 @@ enum ib_qp_type {
> + IB_QPT_UD,
> + IB_QPT_XRC,
> + IB_QPT_RAW_IPV6,
> ++ IB_QPT_RAW_ETH,
> + IB_QPT_RAW_ETY
> + };
> +
> +--
> +1.6.5.2
> +
More information about the ewg
mailing list