@@ -1386,18 +1386,6 @@ int siw_connect(struct iw_cm_id *id, struct iw_cm_conn_param *params)
if (rv < 0)
goto error;
- /*
- * NOTE: For simplification, connect() is called in blocking
- * mode. Might be reconsidered for async connection setup at
- * TCP level.
- */
- rv = kernel_bindconnect(s, laddr, raddr, id->afonly);
- if (rv != 0) {
- siw_dbg_qp(qp, "kernel_bindconnect: error %d\n", rv);
- goto error;
- }
- if (siw_tcp_nagle == false)
- tcp_sock_set_nodelay(s->sk);
cep = siw_cep_alloc(sdev);
if (!cep) {
rv = -ENOMEM;
@@ -1494,6 +1482,19 @@ int siw_connect(struct iw_cm_id *id, struct iw_cm_conn_param *params)
goto error;
}
+ /*
+ * NOTE: For simplification, connect() is called in blocking
+ * mode. Might be reconsidered for async connection setup at
+ * TCP level.
+ */
+ rv = kernel_bindconnect(s, laddr, raddr, id->afonly);
+ if (rv != 0) {
+ siw_dbg_qp(qp, "kernel_bindconnect: error %d\n", rv);
+ goto error;
+ }
+ if (siw_tcp_nagle == false)
+ tcp_sock_set_nodelay(s->sk);
+
cep->state = SIW_EPSTATE_AWAIT_MPAREP;
rv = siw_send_mpareqrep(cep, cep->mpa.pdata,
We should build all state before calling kernel_bindconnect(). This will allow us to go async in the final patch. Fixes: 6c52fdc244b5 ("rdma/siw: connection management") Signed-off-by: Stefan Metzmacher <metze@samba.org> Cc: Bernard Metzler <bmt@zurich.ibm.com> Cc: linux-rdma@vger.kernel.org --- drivers/infiniband/sw/siw/siw_cm.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)