Mercurial > illumos > illumos-gate
changeset 3683:39e9a07d770e
6522934 When tcp fuse is on, taking a logical network interface down doesn't freeze connections
author | rshoaib |
---|---|
date | Tue, 20 Feb 2007 09:46:06 -0800 |
parents | 48f0fd311ddb |
children | a0773f73b68d |
files | usr/src/uts/common/inet/tcp/tcp_fusion.c |
diffstat | 1 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/inet/tcp/tcp_fusion.c Tue Feb 20 05:32:53 2007 -0800 +++ b/usr/src/uts/common/inet/tcp/tcp_fusion.c Tue Feb 20 09:46:06 2007 -0800 @@ -134,6 +134,20 @@ { ipsec_stack_t *ipss = ns->netstack_ipsec; + /* + * If ire is not cached, do not use fusion + */ + if (tcp->tcp_connp->conn_ire_cache == NULL) { + /* + * There is no need to hold conn_lock here because when called + * from tcp_fuse() there can be no window where conn_ire_cache + * can change. This is not true whe called from + * tcp_fuse_output(). conn_ire_cache can become null just + * after the check, but it's ok if a few packets are delivered + * in the fused state. + */ + return (B_TRUE); + } if (tcp->tcp_ipversion == IPV4_VERSION) { if (tcp->tcp_ip_hdr_len != IP_SIMPLE_HDR_LENGTH) return (B_TRUE);