summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp/tcp_fusion.c
diff options
context:
space:
mode:
authorbrutus <none@none>2008-04-18 09:37:59 -0700
committerbrutus <none@none>2008-04-18 09:37:59 -0700
commit8e50dcc9f00b393d43e6aa42b820bcbf1d3e1ce4 (patch)
treebabf218af112e325384a001aeac7a408aa885dd9 /usr/src/uts/common/inet/tcp/tcp_fusion.c
parent8ca4fa23f8750b90c13a6933cc51ddb7d29abf22 (diff)
downloadillumos-joyent-8e50dcc9f00b393d43e6aa42b820bcbf1d3e1ce4.tar.gz
6567008 driver for intel ioat v1 & v2 DMA engine needed
6582323 uioa - uio asynchronous, for support of Intel I/OAT hardware 6582330 sodirect - socket direct, for support of Intel I/OAT hardware 6582335 TCP/IP receive-side zero CPU copy for support of Intel I/OAT hardware
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp_fusion.c')
-rw-r--r--usr/src/uts/common/inet/tcp/tcp_fusion.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp_fusion.c b/usr/src/uts/common/inet/tcp/tcp_fusion.c
index 2503a13e29..75851ac1f7 100644
--- a/usr/src/uts/common/inet/tcp/tcp_fusion.c
+++ b/usr/src/uts/common/inet/tcp/tcp_fusion.c
@@ -287,6 +287,15 @@ tcp_fuse(tcp_t *tcp, uchar_t *iphdr, tcph_t *tcph)
if ((mp = allocb(sizeof (*stropt), BPRI_HI)) == NULL)
goto failed;
+ /* If peer sodirect enabled then disable */
+ ASSERT(tcp->tcp_sodirect == NULL);
+ if (peer_tcp->tcp_sodirect != NULL) {
+ mutex_enter(peer_tcp->tcp_sodirect->sod_lock);
+ SOD_DISABLE(peer_tcp->tcp_sodirect);
+ mutex_exit(peer_tcp->tcp_sodirect->sod_lock);
+ peer_tcp->tcp_sodirect = NULL;
+ }
+
/* Fuse both endpoints */
peer_tcp->tcp_loopback_peer = tcp;
tcp->tcp_loopback_peer = peer_tcp;