diff options
author | Navdeep Parhar <np@FreeBSD.org> | 2018-10-29 22:35:46 +0000 |
---|---|---|
committer | Navdeep Parhar <np@FreeBSD.org> | 2018-10-29 22:35:46 +0000 |
commit | f01fc2d0e82ace225ee12109ecfd82c93ab67899 (patch) | |
tree | fdc12f70c3fbff7d031bfa6ef28ae616a8612159 | |
parent | 567a3784c2d68c8f69c4ab213bd2f8249f21ef67 (diff) | |
download | src-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.c | 12 |
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; } |