git: 0f2e5b432dcd - main - ibcore: Block processing of alternate path handling in RoCE RX CM messages.

Hans Petter Selasky hselasky at FreeBSD.org
Mon Jul 12 13:09:25 UTC 2021


The branch main has been updated by hselasky:

URL: https://cgit.FreeBSD.org/src/commit/?id=0f2e5b432dcdd19955285169f1603473219ac130

commit 0f2e5b432dcdd19955285169f1603473219ac130
Author:     Hans Petter Selasky <hselasky at FreeBSD.org>
AuthorDate: 2021-06-16 13:01:35 +0000
Commit:     Hans Petter Selasky <hselasky at FreeBSD.org>
CommitDate: 2021-07-12 12:22:30 +0000

    ibcore: Block processing of alternate path handling in RoCE RX CM messages.
    
    Due to the below reasons, it is better to not support alternate path receive
    messages for RoCE in near term.
    
    1. Alternate path for RoCE is not supported at rdmacm layer.
    2. It is not supported in uverbs/core layer for RoCE.
    3. Alternate path for IPv6 for link local address cannot resolve route
    determinstically without a valid incoming interface ID whose usecase
    make sense only with dual port mode.
    4. init_av_from_path while processing LAP messages for IB and RoCE can
    lead to adding duplicate entry of AV into the port list, leads to list
    corruption.
    5. rdma-core userspace a well known userspace implementation has removed
    support of libucm which use ucm.ko module, which is the only module that
    can trigger alternate path related messages.
    6. ucm kernel module is requested to be removed from the IB core in
    the following patch, https://patchwork.kernel.org/patch/10268503/ .
    
    Linux commit:
    97c45c2c28cd291e06778d9d36a0f60ee74726bc
    
    MFC after:      1 week
    Reviewed by:    kib
    Sponsored by:   Mellanox Technologies // NVIDIA Networking
---
 sys/ofed/drivers/infiniband/core/ib_cm.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/sys/ofed/drivers/infiniband/core/ib_cm.c b/sys/ofed/drivers/infiniband/core/ib_cm.c
index a0bfa1cd41b4..6a809b18d301 100644
--- a/sys/ofed/drivers/infiniband/core/ib_cm.c
+++ b/sys/ofed/drivers/infiniband/core/ib_cm.c
@@ -2957,6 +2957,13 @@ static int cm_lap_handler(struct cm_work *work)
 	struct ib_mad_send_buf *msg = NULL;
 	int ret;
 
+	/* Currently Alternate path messages are not supported for
+	 * RoCE link layer.
+	 */
+	if (rdma_protocol_roce(work->port->cm_dev->ib_device,
+			       work->port->port_num))
+		return -EINVAL;
+
 	/* todo: verify LAP request and send reject APR if invalid. */
 	lap_msg = (struct cm_lap_msg *)work->mad_recv_wc->recv_buf.mad;
 	cm_id_priv = cm_acquire_id(lap_msg->remote_comm_id,
@@ -3102,6 +3109,13 @@ static int cm_apr_handler(struct cm_work *work)
 	struct cm_apr_msg *apr_msg;
 	int ret;
 
+	/* Currently Alternate path messages are not supported for
+	 * RoCE link layer.
+	 */
+	if (rdma_protocol_roce(work->port->cm_dev->ib_device,
+			       work->port->port_num))
+		return -EINVAL;
+
 	apr_msg = (struct cm_apr_msg *)work->mad_recv_wc->recv_buf.mad;
 	cm_id_priv = cm_acquire_id(apr_msg->remote_comm_id,
 				   apr_msg->local_comm_id);


More information about the dev-commits-src-all mailing list