Date: Wed, 18 Apr 2012 19:31:52 +0000 (UTC) From: Navdeep Parhar <np@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r234442 - in user/np/toe_iwarp/sys/ofed: drivers/infiniband/core include/rdma Message-ID: <201204181931.q3IJVqZq047516@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: np Date: Wed Apr 18 19:31:52 2012 New Revision: 234442 URL: http://svn.freebsd.org/changeset/base/234442 Log: Add a socket (for additional context) to a couple of iw_cm data structures. Obtained from: Chelsio Modified: user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/cma.c user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/iwcm.c user/np/toe_iwarp/sys/ofed/include/rdma/iw_cm.h Modified: user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/cma.c ============================================================================== --- user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/cma.c Wed Apr 18 19:30:22 2012 (r234441) +++ user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/cma.c Wed Apr 18 19:31:52 2012 (r234442) @@ -1478,6 +1478,7 @@ static int cma_iw_listen(struct rdma_id_ struct sockaddr_in *sin; id_priv->cm_id.iw = iw_create_cm_id(id_priv->id.device, + id_priv->sock, iw_conn_req_handler, id_priv); if (IS_ERR(id_priv->cm_id.iw)) @@ -2055,7 +2056,16 @@ static int cma_bind_addr(struct rdma_cm_ ((struct sockaddr_in6 *) dst_addr)->sin6_scope_id; } } - return rdma_bind_addr(id, src_addr); + if (!cma_any_addr(src_addr)) + return rdma_bind_addr(id, src_addr); + else { + struct sockaddr_in addr_in; + + memset(&addr_in, 0, sizeof addr_in); + addr_in.sin_family = dst_addr->sa_family; + addr_in.sin_len = sizeof addr_in; + return rdma_bind_addr(id, (struct sockaddr *) &addr_in); + } } int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, @@ -2604,7 +2614,8 @@ static int cma_connect_iw(struct rdma_id int ret; struct iw_cm_conn_param iw_param; - cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv); + cm_id = iw_create_cm_id(id_priv->id.device, id_priv->sock, + cma_iw_handler, id_priv); if (IS_ERR(cm_id)) { ret = PTR_ERR(cm_id); goto out; Modified: user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/iwcm.c ============================================================================== --- user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/iwcm.c Wed Apr 18 19:30:22 2012 (r234441) +++ user/np/toe_iwarp/sys/ofed/drivers/infiniband/core/iwcm.c Wed Apr 18 19:31:52 2012 (r234442) @@ -189,6 +189,7 @@ static void rem_ref(struct iw_cm_id *cm_ static int cm_event_handler(struct iw_cm_id *cm_id, struct iw_cm_event *event); struct iw_cm_id *iw_create_cm_id(struct ib_device *device, + struct socket *so, iw_cm_handler cm_handler, void *context) { @@ -205,6 +206,7 @@ struct iw_cm_id *iw_create_cm_id(struct cm_id_priv->id.event_handler = cm_event_handler; cm_id_priv->id.add_ref = add_ref; cm_id_priv->id.rem_ref = rem_ref; + cm_id_priv->id.so = so; spin_lock_init(&cm_id_priv->lock); atomic_set(&cm_id_priv->refcount, 1); init_waitqueue_head(&cm_id_priv->connect_wait); @@ -629,6 +631,7 @@ static void cm_conn_req_handler(struct i spin_unlock_irqrestore(&listen_id_priv->lock, flags); cm_id = iw_create_cm_id(listen_id_priv->id.device, + iw_event->so, listen_id_priv->id.cm_handler, listen_id_priv->id.context); /* If the cm_id could not be created, ignore the request */ Modified: user/np/toe_iwarp/sys/ofed/include/rdma/iw_cm.h ============================================================================== --- user/np/toe_iwarp/sys/ofed/include/rdma/iw_cm.h Wed Apr 18 19:30:22 2012 (r234441) +++ user/np/toe_iwarp/sys/ofed/include/rdma/iw_cm.h Wed Apr 18 19:31:52 2012 (r234442) @@ -63,6 +63,7 @@ struct iw_cm_event { void *private_data; u8 private_data_len; void *provider_data; + struct socket *so; }; /** @@ -98,6 +99,7 @@ struct iw_cm_id { /* Used by provider to add and remove refs on IW cm_id */ void (*add_ref)(struct iw_cm_id *); void (*rem_ref)(struct iw_cm_id *); + struct socket *so; }; struct iw_cm_conn_param { @@ -139,7 +141,7 @@ struct iw_cm_verbs { * returned IW CM identifier. * @context: User specified context associated with the id. */ -struct iw_cm_id *iw_create_cm_id(struct ib_device *device, +struct iw_cm_id *iw_create_cm_id(struct ib_device *device, struct socket *so, iw_cm_handler cm_handler, void *context); /**
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204181931.q3IJVqZq047516>