summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/tcp.h')
-rw-r--r--usr/src/uts/common/inet/tcp.h29
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