summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp.h
diff options
context:
space:
mode:
authormasputra <none@none>2005-10-22 22:50:14 -0700
committermasputra <none@none>2005-10-22 22:50:14 -0700
commitff550d0e264b51131fb34e9e83163b348d916640 (patch)
tree5cfa61832db382b34b7090acd22cfed2bed7cf82 /usr/src/uts/common/inet/tcp.h
parentd56104979b99dfd4b6bb1294d1c318fbd990903a (diff)
downloadillumos-gate-ff550d0e264b51131fb34e9e83163b348d916640.tar.gz
PSARC 2005/082 Yosemite: UDP Performance Enhancement
4796051 Solaris needs a more complete HW checksumming support 4905227 duplicate macros in ipclassifier.h and ip.h 4915681 need hardware checksum offload for the case of IP/UDP reassembly 6201076 outbound flow-control dysfunctional, ip to ce using mdt 6223331 ipv6 flow control may corrupt UDP packets 6223809 16-bit aligned IP header should be allowed for all x86 platforms 6275398 Galaxy hangs when running lmbench 6281836 Yosemite project integration into Solaris 6281885 xge needs to support IPv6 checksum offload 6282776 IPv6 NCE fast path is not created for incoming solicitation 6304890 IP transmit-side checksum logic needs to be tightened 6304902 IP6_IN_NOCKSUM is obsolete and should be torched 6304904 UDP should reject TI_GETPEERNAME for non-connected endpoint 6306768 IP and UDP device and module definitions need to be centralized
Diffstat (limited to 'usr/src/uts/common/inet/tcp.h')
-rw-r--r--usr/src/uts/common/inet/tcp.h43
1 files changed, 25 insertions, 18 deletions
diff --git a/usr/src/uts/common/inet/tcp.h b/usr/src/uts/common/inet/tcp.h
index 8a2ac05292..fbd594e6e6 100644
--- a/usr/src/uts/common/inet/tcp.h
+++ b/usr/src/uts/common/inet/tcp.h
@@ -286,11 +286,8 @@ typedef struct tcp_s {
tcp_accept_error : 1, /* Error during TLI accept */
tcp_send_discon_ind : 1, /* TLI accept err, send discon ind */
- tcp_fused : 1, /* loopback tcp in fusion mode */
- tcp_unfusable : 1, /* fusion not allowed on endpoint */
- tcp_fused_sigurg : 1, /* send SIGURG upon draining */
tcp_cork : 1, /* tcp_cork option */
- tcp_pad_to_bit_31 : 15;
+ tcp_pad_to_bit_31 : 18;
uint32_t tcp_if_mtu; /* Outgoing interface MTU. */
@@ -514,10 +511,29 @@ typedef struct tcp_s {
#define tcp_ipp_use_min_mtu tcp_sticky_ipp.ipp_use_min_mtu
struct tcp_s *tcp_saved_listener; /* saved value of listener */
+ uint32_t tcp_in_ack_unsent; /* ACK for unsent data cnt. */
+
+ /*
+ * The following fusion-related fields are protected by squeue.
+ */
struct tcp_s *tcp_loopback_peer; /* peer tcp for loopback */
mblk_t *tcp_fused_sigurg_mp; /* M_PCSIG mblk for SIGURG */
+ size_t tcp_fuse_rcv_hiwater; /* fusion receive queue size */
+ uint_t tcp_fuse_rcv_unread_hiwater; /* max # of outstanding pkts */
+ /*
+ * The following fusion-related fields and bit fields are to be
+ * manipulated with squeue protection or with tcp_fuse_lock held.
+ */
+ kmutex_t tcp_fuse_lock;
+ uint_t tcp_fuse_rcv_unread_cnt; /* # of outstanding pkts */
+ uint32_t
+ tcp_fused : 1, /* loopback tcp in fusion mode */
+ tcp_unfusable : 1, /* fusion not allowed on endpoint */
+ tcp_fused_sigurg : 1, /* send SIGURG upon draining */
+ tcp_direct_sockfs : 1, /* direct calls to sockfs */
- uint32_t tcp_in_ack_unsent; /* ACK for unsent data cnt. */
+ tcp_fuse_syncstr_stopped : 1, /* synchronous streams stopped */
+ tcp_fuse_to_bit_31 : 27;
/*
* This variable is accessed without any lock protection
@@ -525,6 +541,8 @@ typedef struct tcp_s {
* with the rest which require such condition.
*/
boolean_t tcp_issocket; /* this is a socket tcp */
+
+ uint32_t tcp_squeue_bytes;
} tcp_t;
extern void tcp_free(tcp_t *tcp);
@@ -537,7 +555,8 @@ extern void tcp_input(void *arg, mblk_t *mp, void *arg2);
extern void tcp_rput_data(void *arg, mblk_t *mp, void *arg2);
extern void *tcp_get_conn(void *arg);
extern void tcp_time_wait_collector(void *arg);
-
+extern int tcp_snmp_get(queue_t *, mblk_t *);
+extern int tcp_snmp_set(queue_t *, int, int, uchar_t *, int len);
/*
* The TCP Fanout structure.
* The hash tables and their linkage (tcp_*_hash_next, tcp_ptp*hn) are
@@ -610,18 +629,6 @@ typedef struct tcp_ioc_abort_conn_s {
#pragma pack()
#endif
-/* Named Dispatch Parameter Management Structure */
-typedef struct tcpparam_s {
- uint32_t tcp_param_min;
- uint32_t tcp_param_max;
- uint32_t tcp_param_val;
- char *tcp_param_name;
-} tcpparam_t;
-
-extern tcpparam_t tcp_param_arr[];
-
-extern boolean_t do_tcp_fusion;
-
#if (defined(_KERNEL) || defined(_KMEMUSER))
extern void tcp_rput_other(tcp_t *tcp, mblk_t *mp);
#endif