|
12 | 12 | * All rights reserved. |
13 | 13 | * Copyright (c) 2007-2013 Cisco Systems, Inc. All rights reserved. |
14 | 14 | * Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved. |
15 | | - * Copyright (c) 2006-2014 Los Alamos National Security, LLC. All rights |
| 15 | + * Copyright (c) 2006-2016 Los Alamos National Security, LLC. All rights |
16 | 16 | * reserved. |
17 | 17 | * Copyright (c) 2006-2007 Voltaire All rights reserved. |
18 | 18 | * Copyright (c) 2008-2012 Oracle and/or its affiliates. All rights reserved. |
@@ -92,16 +92,6 @@ int mca_btl_openib_get (mca_btl_base_module_t *btl, struct mca_btl_base_endpoint |
92 | 92 | frag->sr_desc.wr.rdma.rkey = remote_handle->rkey; |
93 | 93 | } |
94 | 94 |
|
95 | | -#if HAVE_XRC |
96 | | - if (MCA_BTL_XRC_ENABLED && BTL_OPENIB_QP_TYPE_XRC(qp)) { |
97 | | -#if OPAL_HAVE_CONNECTX_XRC_DOMAINS |
98 | | - frag->sr_desc.qp_type.xrc.remote_srqn = ep->rem_info.rem_srqs[qp].rem_srq_num; |
99 | | -#else |
100 | | - frag->sr_desc.xrc_remote_srq_num = ep->rem_info.rem_srqs[qp].rem_srq_num; |
101 | | -#endif |
102 | | - } |
103 | | -#endif |
104 | | - |
105 | 95 | if (ep->endpoint_state != MCA_BTL_IB_CONNECTED) { |
106 | 96 | OPAL_THREAD_LOCK(&ep->endpoint_lock); |
107 | 97 | rc = check_endpoint_state(ep, &to_base_frag(frag)->base, &ep->pending_get_frags); |
@@ -138,6 +128,19 @@ int mca_btl_openib_get_internal (mca_btl_base_module_t *btl, struct mca_btl_base |
138 | 128 | int qp = to_base_frag(frag)->base.order; |
139 | 129 | struct ibv_send_wr *bad_wr; |
140 | 130 |
|
| 131 | +#if HAVE_XRC |
| 132 | + if (MCA_BTL_XRC_ENABLED && BTL_OPENIB_QP_TYPE_XRC(qp)) { |
| 133 | + /* NTH: the remote SRQ number is only available once the endpoint is connected. By |
| 134 | + * setting the value here instead of mca_btl_openib_get we guarantee the rem_srqs |
| 135 | + * array is initialized. */ |
| 136 | +#if OPAL_HAVE_CONNECTX_XRC_DOMAINS |
| 137 | + frag->sr_desc.qp_type.xrc.remote_srqn = ep->rem_info.rem_srqs[qp].rem_srq_num; |
| 138 | +#else |
| 139 | + frag->sr_desc.xrc_remote_srq_num = ep->rem_info.rem_srqs[qp].rem_srq_num; |
| 140 | +#endif |
| 141 | + } |
| 142 | +#endif |
| 143 | + |
141 | 144 | /* check for a send wqe */ |
142 | 145 | if (qp_get_wqe(ep, qp) < 0) { |
143 | 146 | qp_put_wqe(ep, qp); |
|
0 commit comments