This patch add RAW ETH support to IB core.
Signed-off-by: Aleksey Senin <aleks...@voltaire.com> --- .../fixes/core_0560_raw_eth_common.patch | 66 ++++++++++++++++++++ 1 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 kernel_patches/fixes/core_0560_raw_eth_common.patch diff --git a/kernel_patches/fixes/core_0560_raw_eth_common.patch b/kernel_patches/fixes/core_0560_raw_eth_common.patch new file mode 100644 index 0000000..52d7be7 --- /dev/null +++ b/kernel_patches/fixes/core_0560_raw_eth_common.patch @@ -0,0 +1,66 @@ +From b76993213461212cfdb40817b454513a91ee4e6e Mon Sep 17 00:00:00 2001 +From: Aleksey Senin <aleks...@voltaire.com> +Date: Mon, 14 Jun 2010 15:20:40 +0300 +Subject: [PATCH 1/2] Verbs RAW ETH support + +This patch add RAW ETH support in IB core. + +Signed-off-by: Aleksey Senin <aleks...@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 + -- 1.6.5.2 _______________________________________________ ewg mailing list ewg@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg