summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp_stack.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/tcp_stack.h')
-rw-r--r--usr/src/uts/common/inet/tcp_stack.h102
1 files changed, 13 insertions, 89 deletions
diff --git a/usr/src/uts/common/inet/tcp_stack.h b/usr/src/uts/common/inet/tcp_stack.h
index 34d5e087fa..1a6e374f3e 100644
--- a/usr/src/uts/common/inet/tcp_stack.h
+++ b/usr/src/uts/common/inet/tcp_stack.h
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -30,6 +30,7 @@
#include <sys/netstack.h>
#include <inet/ip.h>
#include <inet/ipdrop.h>
+#include <inet/tcp_stats.h>
#include <sys/sunddi.h>
#include <sys/sunldi.h>
@@ -37,91 +38,6 @@
extern "C" {
#endif
-/* Kstats */
-typedef struct tcp_stat {
- kstat_named_t tcp_time_wait;
- kstat_named_t tcp_time_wait_syn;
- kstat_named_t tcp_time_wait_syn_success;
- kstat_named_t tcp_detach_non_time_wait;
- kstat_named_t tcp_detach_time_wait;
- kstat_named_t tcp_time_wait_reap;
- kstat_named_t tcp_clean_death_nondetached;
- kstat_named_t tcp_reinit_calls;
- kstat_named_t tcp_eager_err1;
- kstat_named_t tcp_eager_err2;
- kstat_named_t tcp_eager_blowoff_calls;
- kstat_named_t tcp_eager_blowoff_q;
- kstat_named_t tcp_eager_blowoff_q0;
- kstat_named_t tcp_not_hard_bound;
- kstat_named_t tcp_no_listener;
- kstat_named_t tcp_found_eager;
- kstat_named_t tcp_wrong_queue;
- kstat_named_t tcp_found_eager_binding1;
- kstat_named_t tcp_found_eager_bound1;
- kstat_named_t tcp_eager_has_listener1;
- kstat_named_t tcp_open_alloc;
- kstat_named_t tcp_open_detached_alloc;
- kstat_named_t tcp_rput_time_wait;
- kstat_named_t tcp_listendrop;
- kstat_named_t tcp_listendropq0;
- kstat_named_t tcp_wrong_rq;
- kstat_named_t tcp_rsrv_calls;
- kstat_named_t tcp_eagerfree2;
- kstat_named_t tcp_eagerfree3;
- kstat_named_t tcp_eagerfree4;
- kstat_named_t tcp_eagerfree5;
- kstat_named_t tcp_timewait_syn_fail;
- kstat_named_t tcp_listen_badflags;
- kstat_named_t tcp_timeout_calls;
- kstat_named_t tcp_timeout_cached_alloc;
- kstat_named_t tcp_timeout_cancel_reqs;
- kstat_named_t tcp_timeout_canceled;
- kstat_named_t tcp_timermp_freed;
- kstat_named_t tcp_push_timer_cnt;
- kstat_named_t tcp_ack_timer_cnt;
- kstat_named_t tcp_wsrv_called;
- kstat_named_t tcp_flwctl_on;
- kstat_named_t tcp_timer_fire_early;
- kstat_named_t tcp_timer_fire_miss;
- kstat_named_t tcp_rput_v6_error;
- kstat_named_t tcp_zcopy_on;
- kstat_named_t tcp_zcopy_off;
- kstat_named_t tcp_zcopy_backoff;
- kstat_named_t tcp_fusion_flowctl;
- kstat_named_t tcp_fusion_backenabled;
- kstat_named_t tcp_fusion_urg;
- kstat_named_t tcp_fusion_putnext;
- kstat_named_t tcp_fusion_unfusable;
- kstat_named_t tcp_fusion_aborted;
- kstat_named_t tcp_fusion_unqualified;
- kstat_named_t tcp_fusion_rrw_busy;
- kstat_named_t tcp_fusion_rrw_msgcnt;
- kstat_named_t tcp_fusion_rrw_plugged;
- kstat_named_t tcp_in_ack_unsent_drop;
- kstat_named_t tcp_sock_fallback;
- kstat_named_t tcp_lso_enabled;
- kstat_named_t tcp_lso_disabled;
- kstat_named_t tcp_lso_times;
- kstat_named_t tcp_lso_pkt_out;
- kstat_named_t tcp_listen_cnt_drop;
- kstat_named_t tcp_listen_mem_drop;
- kstat_named_t tcp_zwin_ack_syn;
- kstat_named_t tcp_rst_unsent;
-} tcp_stat_t;
-
-#define TCP_STAT(tcps, x) ((tcps)->tcps_statistics.x.value.ui64++)
-#define TCP_STAT_UPDATE(tcps, x, n) \
- ((tcps)->tcps_statistics.x.value.ui64 += (n))
-#define TCP_STAT_SET(tcps, x, n) \
- ((tcps)->tcps_statistics.x.value.ui64 = (n))
-
-typedef struct tcp_g_stat {
- kstat_named_t tcp_timermp_alloced;
- kstat_named_t tcp_timermp_allocfail;
- kstat_named_t tcp_timermp_allocdblfail;
- kstat_named_t tcp_freelist_cleanup;
-} tcp_g_stat_t;
-
#ifdef _KERNEL
/*
@@ -130,8 +46,6 @@ typedef struct tcp_g_stat {
struct tcp_stack {
netstack_t *tcps_netstack; /* Common netstack */
- mib2_tcp_t tcps_mib;
-
/*
* Extra privileged ports. In host byte order.
* Protected by tcp_epriv_port_lock.
@@ -167,7 +81,6 @@ struct tcp_stack {
*/
kstat_t *tcps_mibkp; /* kstat exporting tcp_mib data */
kstat_t *tcps_kstat;
- tcp_stat_t tcps_statistics;
uint32_t tcps_iss_incr_extra;
/* Incremented for each connection */
@@ -202,7 +115,18 @@ struct tcp_stack {
/* Listener connection limit configuration. */
kmutex_t tcps_listener_conf_lock;
list_t tcps_listener_conf;
+
+ /*
+ * Per CPU stats
+ *
+ * tcps_sc: array of pointer to per CPU stats. The i-th element in the
+ * array represents the stats of the CPU with cpu_seqid.
+ * tcps_sc_cnt: number of CPU stats in the tcps_sc array.
+ */
+ tcp_stats_cpu_t **tcps_sc;
+ int tcps_sc_cnt;
};
+
typedef struct tcp_stack tcp_stack_t;
#endif /* _KERNEL */