aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNavdeep Parhar <np@FreeBSD.org>2018-10-29 22:35:46 +0000
committerNavdeep Parhar <np@FreeBSD.org>2018-10-29 22:35:46 +0000
commitf01fc2d0e82ace225ee12109ecfd82c93ab67899 (patch)
treefdc12f70c3fbff7d031bfa6ef28ae616a8612159
parent567a3784c2d68c8f69c4ab213bd2f8249f21ef67 (diff)
downloadsrc-f01fc2d0e82ace225ee12109ecfd82c93ab67899.tar.gz
src-f01fc2d0e82ace225ee12109ecfd82c93ab67899.zip
cxgbe/iw_cxgbe: Install the socket upcall before calling soconnect to
ensure that it always runs when soisconnected does. Submitted by: Krishnamraju Eraparaju @ Chelsio MFC after: 1 month Sponsored by: Chelsio Communications
Notes
Notes: svn path=/head/; revision=339891
-rw-r--r--sys/dev/cxgbe/iw_cxgbe/cm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/cxgbe/iw_cxgbe/cm.c b/sys/dev/cxgbe/iw_cxgbe/cm.c
index bf9cf46608f6..f15ec321ad64 100644
--- a/sys/dev/cxgbe/iw_cxgbe/cm.c
+++ b/sys/dev/cxgbe/iw_cxgbe/cm.c
@@ -2601,22 +2601,24 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
goto fail;
setiwsockopt(ep->com.so);
+ init_iwarp_socket(ep->com.so, &ep->com);
err = -soconnect(ep->com.so, (struct sockaddr *)&ep->com.remote_addr,
ep->com.thread);
- if (!err) {
- init_iwarp_socket(ep->com.so, &ep->com);
- goto out;
- } else
+ if (err)
goto fail_free_so;
+ CTR2(KTR_IW_CXGBE, "%s:ccE, ep %p", __func__, ep);
+ return 0;
fail_free_so:
+ uninit_iwarp_socket(ep->com.so);
+ ep->com.state = DEAD;
sock_release(ep->com.so);
fail:
deref_cm_id(&ep->com);
c4iw_put_ep(&ep->com);
ep = NULL;
out:
- CTR2(KTR_IW_CXGBE, "%s:ccE ret:%d", __func__, err);
+ CTR2(KTR_IW_CXGBE, "%s:ccE Error %d", __func__, err);
return err;
}