RDMA/cxgb3: Adjust ORD/IRD (if needed) for peer2peer connections
NFS/RDMA currently fails to set up connections if peer2peer is on. This is due to the fact that the NFS/RDMA client sets its ORD to 0. If peer2peer is set, make sure the active side ORD is >= 1 and the passive side IRD is >=1. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
a939b96ccc
commit
96ac7e8892
|
@ -1830,6 +1830,10 @@ int iwch_accept_cr(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||||
ep->com.rpl_err = 0;
|
ep->com.rpl_err = 0;
|
||||||
ep->ird = conn_param->ird;
|
ep->ird = conn_param->ird;
|
||||||
ep->ord = conn_param->ord;
|
ep->ord = conn_param->ord;
|
||||||
|
|
||||||
|
if (peer2peer && ep->ird == 0)
|
||||||
|
ep->ird = 1;
|
||||||
|
|
||||||
PDBG("%s %d ird %d ord %d\n", __func__, __LINE__, ep->ird, ep->ord);
|
PDBG("%s %d ird %d ord %d\n", __func__, __LINE__, ep->ird, ep->ord);
|
||||||
|
|
||||||
get_ep(&ep->com);
|
get_ep(&ep->com);
|
||||||
|
@ -1915,6 +1919,10 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||||
conn_param->private_data, ep->plen);
|
conn_param->private_data, ep->plen);
|
||||||
ep->ird = conn_param->ird;
|
ep->ird = conn_param->ird;
|
||||||
ep->ord = conn_param->ord;
|
ep->ord = conn_param->ord;
|
||||||
|
|
||||||
|
if (peer2peer && ep->ord == 0)
|
||||||
|
ep->ord = 1;
|
||||||
|
|
||||||
ep->com.tdev = h->rdev.t3cdev_p;
|
ep->com.tdev = h->rdev.t3cdev_p;
|
||||||
|
|
||||||
cm_id->add_ref(cm_id);
|
cm_id->add_ref(cm_id);
|
||||||
|
|
Loading…
Reference in a new issue