diff options
author | brutus <none@none> | 2008-04-18 09:37:59 -0700 |
---|---|---|
committer | brutus <none@none> | 2008-04-18 09:37:59 -0700 |
commit | 8e50dcc9f00b393d43e6aa42b820bcbf1d3e1ce4 (patch) | |
tree | babf218af112e325384a001aeac7a408aa885dd9 /usr/src/uts/common/inet/tcp/tcp_fusion.c | |
parent | 8ca4fa23f8750b90c13a6933cc51ddb7d29abf22 (diff) | |
download | illumos-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.c | 9 |
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; |