Print this page
5295 remove maxburst logic from TCP's send algorithm Reviewed by: Dan McDonald <danmcd@omniti.com>


   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright (c) 2011, Joyent, Inc. All rights reserved.
  24  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.

  25  */
  26 /* Copyright (c) 1990 Mentat Inc. */
  27 
  28 #ifndef _INET_TCP_H
  29 #define _INET_TCP_H
  30 
  31 #ifdef  __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 #include <sys/inttypes.h>
  36 #include <netinet/ip6.h>
  37 #include <netinet/tcp.h>
  38 #include <sys/socket.h>
  39 #include <sys/socket_proto.h>
  40 #include <sys/md5.h>
  41 #include <inet/common.h>
  42 #include <inet/ip.h>
  43 #include <inet/ip6.h>
  44 #include <inet/mi.h>


 163         uint32_t tcp_rto_min;           /* Minimum RTO */
 164         uint32_t tcp_rto_max;           /* Maximum RTO */
 165 
 166         uint32_t tcp_snxt;              /* Senders next seq num */
 167         uint32_t tcp_swnd;              /* Senders window (relative to suna) */
 168         uint32_t tcp_mss;               /* Max segment size */
 169         uint32_t tcp_iss;               /* Initial send seq num */
 170         uint32_t tcp_rnxt;              /* Seq we expect to recv next */
 171         uint32_t tcp_rwnd;
 172 
 173         /* Fields arranged in approximate access order along main paths */
 174         mblk_t  *tcp_xmit_head;         /* Head of xmit/rexmit list */
 175         mblk_t  *tcp_xmit_last;         /* Last valid data seen by tcp_wput */
 176         mblk_t  *tcp_xmit_tail;         /* Last data sent */
 177         uint32_t tcp_unsent;            /* # of bytes in hand that are unsent */
 178         uint32_t tcp_xmit_tail_unsent;  /* # of unsent bytes in xmit_tail */
 179 
 180         uint32_t tcp_suna;              /* Sender unacknowledged */
 181         uint32_t tcp_rexmit_nxt;        /* Next rexmit seq num */
 182         uint32_t tcp_rexmit_max;        /* Max retran seq num */
 183         int32_t tcp_snd_burst;          /* Send burst factor */
 184         uint32_t tcp_cwnd;              /* Congestion window */
 185         int32_t tcp_cwnd_cnt;           /* cwnd cnt in congestion avoidance */
 186 
 187         uint32_t tcp_ibsegs;            /* Inbound segments on this stream */
 188         uint32_t tcp_obsegs;            /* Outbound segments on this stream */
 189 
 190         uint32_t tcp_naglim;            /* Tunable nagle limit */
 191         uint32_t        tcp_valid_bits;
 192 #define TCP_ISS_VALID   0x1     /* Is the tcp_iss seq num active? */
 193 #define TCP_FSS_VALID   0x2     /* Is the tcp_fss seq num active? */
 194 #define TCP_URG_VALID   0x4     /* Is the tcp_urg seq num active? */
 195 #define TCP_OFO_FIN_VALID 0x8   /* Has TCP received an out of order FIN? */
 196 
 197 
 198 
 199         timeout_id_t    tcp_timer_tid;  /* Control block for timer service */
 200         uchar_t tcp_timer_backoff;      /* Backoff shift count. */
 201         int64_t tcp_last_recv_time;     /* Last time we receive a segment. */
 202         uint32_t tcp_init_cwnd;         /* Initial cwnd (start/restart) */
 203 




   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright (c) 2011, Joyent, Inc. All rights reserved.
  24  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
  25  * Copyright (c) 2014 by Delphix. All rights reserved.
  26  */
  27 /* Copyright (c) 1990 Mentat Inc. */
  28 
  29 #ifndef _INET_TCP_H
  30 #define _INET_TCP_H
  31 
  32 #ifdef  __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 #include <sys/inttypes.h>
  37 #include <netinet/ip6.h>
  38 #include <netinet/tcp.h>
  39 #include <sys/socket.h>
  40 #include <sys/socket_proto.h>
  41 #include <sys/md5.h>
  42 #include <inet/common.h>
  43 #include <inet/ip.h>
  44 #include <inet/ip6.h>
  45 #include <inet/mi.h>


 164         uint32_t tcp_rto_min;           /* Minimum RTO */
 165         uint32_t tcp_rto_max;           /* Maximum RTO */
 166 
 167         uint32_t tcp_snxt;              /* Senders next seq num */
 168         uint32_t tcp_swnd;              /* Senders window (relative to suna) */
 169         uint32_t tcp_mss;               /* Max segment size */
 170         uint32_t tcp_iss;               /* Initial send seq num */
 171         uint32_t tcp_rnxt;              /* Seq we expect to recv next */
 172         uint32_t tcp_rwnd;
 173 
 174         /* Fields arranged in approximate access order along main paths */
 175         mblk_t  *tcp_xmit_head;         /* Head of xmit/rexmit list */
 176         mblk_t  *tcp_xmit_last;         /* Last valid data seen by tcp_wput */
 177         mblk_t  *tcp_xmit_tail;         /* Last data sent */
 178         uint32_t tcp_unsent;            /* # of bytes in hand that are unsent */
 179         uint32_t tcp_xmit_tail_unsent;  /* # of unsent bytes in xmit_tail */
 180 
 181         uint32_t tcp_suna;              /* Sender unacknowledged */
 182         uint32_t tcp_rexmit_nxt;        /* Next rexmit seq num */
 183         uint32_t tcp_rexmit_max;        /* Max retran seq num */

 184         uint32_t tcp_cwnd;              /* Congestion window */
 185         int32_t tcp_cwnd_cnt;           /* cwnd cnt in congestion avoidance */
 186 
 187         uint32_t tcp_ibsegs;            /* Inbound segments on this stream */
 188         uint32_t tcp_obsegs;            /* Outbound segments on this stream */
 189 
 190         uint32_t tcp_naglim;            /* Tunable nagle limit */
 191         uint32_t        tcp_valid_bits;
 192 #define TCP_ISS_VALID   0x1     /* Is the tcp_iss seq num active? */
 193 #define TCP_FSS_VALID   0x2     /* Is the tcp_fss seq num active? */
 194 #define TCP_URG_VALID   0x4     /* Is the tcp_urg seq num active? */
 195 #define TCP_OFO_FIN_VALID 0x8   /* Has TCP received an out of order FIN? */
 196 
 197 
 198 
 199         timeout_id_t    tcp_timer_tid;  /* Control block for timer service */
 200         uchar_t tcp_timer_backoff;      /* Backoff shift count. */
 201         int64_t tcp_last_recv_time;     /* Last time we receive a segment. */
 202         uint32_t tcp_init_cwnd;         /* Initial cwnd (start/restart) */
 203