svn commit: r234442 - in user/np/toe_iwarp/sys/ofed:
drivers/infiniband/core include/rdma
Navdeep Parhar
np at FreeBSD.org
Wed Apr 18 19:31:53 UTC 2012
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);
/**
More information about the svn-src-user
mailing list