diff options
Diffstat (limited to 'usr/src/uts/common/inet/tcp.h')
-rw-r--r-- | usr/src/uts/common/inet/tcp.h | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/usr/src/uts/common/inet/tcp.h b/usr/src/uts/common/inet/tcp.h index b2b9973291..68404716b9 100644 --- a/usr/src/uts/common/inet/tcp.h +++ b/usr/src/uts/common/inet/tcp.h @@ -20,9 +20,9 @@ */ /* * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, Joyent, Inc. All rights reserved. + * Copyright 2015 Joyent, Inc. * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. - * Copyright (c) 2014 by Delphix. All rights reserved. + * Copyright (c) 2014, 2016 by Delphix. All rights reserved. */ /* Copyright (c) 1990 Mentat Inc. */ @@ -134,6 +134,7 @@ typedef struct tcphdra_s { struct conn_s; struct tcp_listen_cnt_s; +struct tcp_rg_s; /* * Control structure for each open TCP stream, @@ -177,16 +178,11 @@ typedef struct tcp_s { mblk_t *tcp_xmit_tail; /* Last data sent */ uint32_t tcp_unsent; /* # of bytes in hand that are unsent */ uint32_t tcp_xmit_tail_unsent; /* # of unsent bytes in xmit_tail */ - uint32_t tcp_suna; /* Sender unacknowledged */ uint32_t tcp_rexmit_nxt; /* Next rexmit seq num */ uint32_t tcp_rexmit_max; /* Max retran seq num */ uint32_t tcp_cwnd; /* Congestion window */ int32_t tcp_cwnd_cnt; /* cwnd cnt in congestion avoidance */ - - uint32_t tcp_ibsegs; /* Inbound segments on this stream */ - uint32_t tcp_obsegs; /* Outbound segments on this stream */ - uint32_t tcp_naglim; /* Tunable nagle limit */ uint32_t tcp_valid_bits; #define TCP_ISS_VALID 0x1 /* Is the tcp_iss seq num active? */ @@ -194,8 +190,6 @@ typedef struct tcp_s { #define TCP_URG_VALID 0x4 /* Is the tcp_urg seq num active? */ #define TCP_OFO_FIN_VALID 0x8 /* Has TCP received an out of order FIN? */ - - timeout_id_t tcp_timer_tid; /* Control block for timer service */ uchar_t tcp_timer_backoff; /* Backoff shift count. */ int64_t tcp_last_recv_time; /* Last time we receive a segment. */ @@ -282,9 +276,11 @@ typedef struct tcp_s { uint32_t tcp_cwnd_max; uint32_t tcp_csuna; /* Clear (no rexmits in window) suna */ - clock_t tcp_rtt_sa; /* Round trip smoothed average */ - clock_t tcp_rtt_sd; /* Round trip smoothed deviation */ - clock_t tcp_rtt_update; /* Round trip update(s) */ + hrtime_t tcp_rtt_sum; /* Round trip sum */ + uint32_t tcp_rtt_cnt; /* Round trip count (non_dup ACKs) */ + hrtime_t tcp_rtt_sa; /* Round trip smoothed average */ + hrtime_t tcp_rtt_sd; /* Round trip smoothed deviation */ + uint32_t tcp_rtt_update; /* Round trip update(s) */ clock_t tcp_ms_we_have_waited; /* Total retrans time */ uint32_t tcp_swl1; /* These help us avoid using stale */ @@ -404,6 +400,13 @@ typedef struct tcp_s { struct tcp_s *tcp_bind_hash_port; /* tcp_t's bound to the same lport */ struct tcp_s **tcp_ptpbhn; + /* + * Group of tcp_t entries bound to the same adress and port via + * SO_REUSEPORT. The pointer itself is protected by tf_lock in the + * containing tcps_bind_fanout slot. + */ + struct tcp_rg_s *tcp_rg_bind; + uint_t tcp_maxpsz_multiplier; uint32_t tcp_lso_max; /* maximum LSO payload */ @@ -493,6 +496,8 @@ typedef struct tcp_s { /* FIN-WAIT-2 flush timeout */ uint32_t tcp_fin_wait_2_flush_interval; + tcp_conn_stats_t tcp_cs; + #ifdef DEBUG pc_t tcmp_stk[15]; #endif |