Print this page
11553 Want pluggable TCP congestion control algorithms
Portions contributed by: Cody Peter Mello <cody.mello@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Robert Mustacchi <robert.mustacchi@joyent.com>


   4  * The contents of this file are subject to the terms of the
   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 /*
  23  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.

  24  */
  25 
  26 #ifndef _INET_TCP_STACK_H
  27 #define _INET_TCP_STACK_H
  28 
  29 #include <sys/netstack.h>
  30 #include <inet/ip.h>
  31 #include <inet/ipdrop.h>
  32 #include <inet/tcp_stats.h>
  33 #include <sys/sunddi.h>
  34 #include <sys/sunldi.h>
  35 
  36 #ifdef  __cplusplus
  37 extern "C" {
  38 #endif
  39 
  40 #ifdef _KERNEL
  41 
  42 /*
  43  * TCP stack instances


  97         uint32_t        tcps_rst_cnt;
  98 
  99         ldi_ident_t     tcps_ldi_ident;
 100 
 101         /* Used to synchronize access when reclaiming memory */
 102         mblk_t          *tcps_ixa_cleanup_mp;
 103         kmutex_t        tcps_ixa_cleanup_lock;
 104         kcondvar_t      tcps_ixa_cleanup_ready_cv;
 105         kcondvar_t      tcps_ixa_cleanup_done_cv;
 106 
 107         /* Variables for handling kmem reclaim call back. */
 108         kmutex_t        tcps_reclaim_lock;
 109         boolean_t       tcps_reclaim;
 110         timeout_id_t    tcps_reclaim_tid;
 111         uint32_t        tcps_reclaim_period;
 112 
 113         /* Listener connection limit configuration. */
 114         kmutex_t        tcps_listener_conf_lock;
 115         list_t          tcps_listener_conf;
 116 


 117         /*
 118          * Per CPU stats
 119          *
 120          * tcps_sc: array of pointer to per CPU stats.  The i-th element in the
 121          *    array represents the stats of the CPU with cpu_seqid.
 122          * tcps_sc_cnt: number of CPU stats in the tcps_sc array.
 123          */
 124         tcp_stats_cpu_t **tcps_sc;
 125         int             tcps_sc_cnt;
 126 };
 127 
 128 typedef struct tcp_stack tcp_stack_t;
 129 
 130 #endif /* _KERNEL */
 131 #ifdef  __cplusplus
 132 }
 133 #endif
 134 
 135 #endif  /* _INET_TCP_STACK_H */


   4  * The contents of this file are subject to the terms of the
   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 /*
  23  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright (c) 2017 by Delphix. All rights reserved.
  25  */
  26 
  27 #ifndef _INET_TCP_STACK_H
  28 #define _INET_TCP_STACK_H
  29 
  30 #include <sys/netstack.h>
  31 #include <inet/ip.h>
  32 #include <inet/ipdrop.h>
  33 #include <inet/tcp_stats.h>
  34 #include <sys/sunddi.h>
  35 #include <sys/sunldi.h>
  36 
  37 #ifdef  __cplusplus
  38 extern "C" {
  39 #endif
  40 
  41 #ifdef _KERNEL
  42 
  43 /*
  44  * TCP stack instances


  98         uint32_t        tcps_rst_cnt;
  99 
 100         ldi_ident_t     tcps_ldi_ident;
 101 
 102         /* Used to synchronize access when reclaiming memory */
 103         mblk_t          *tcps_ixa_cleanup_mp;
 104         kmutex_t        tcps_ixa_cleanup_lock;
 105         kcondvar_t      tcps_ixa_cleanup_ready_cv;
 106         kcondvar_t      tcps_ixa_cleanup_done_cv;
 107 
 108         /* Variables for handling kmem reclaim call back. */
 109         kmutex_t        tcps_reclaim_lock;
 110         boolean_t       tcps_reclaim;
 111         timeout_id_t    tcps_reclaim_tid;
 112         uint32_t        tcps_reclaim_period;
 113 
 114         /* Listener connection limit configuration. */
 115         kmutex_t        tcps_listener_conf_lock;
 116         list_t          tcps_listener_conf;
 117 
 118         struct cc_algo  *tcps_default_cc_algo;
 119 
 120         /*
 121          * Per CPU stats
 122          *
 123          * tcps_sc: array of pointer to per CPU stats.  The i-th element in the
 124          *    array represents the stats of the CPU with cpu_seqid.
 125          * tcps_sc_cnt: number of CPU stats in the tcps_sc array.
 126          */
 127         tcp_stats_cpu_t **tcps_sc;
 128         int             tcps_sc_cnt;
 129 };
 130 
 131 typedef struct tcp_stack tcp_stack_t;
 132 
 133 #endif /* _KERNEL */
 134 #ifdef  __cplusplus
 135 }
 136 #endif
 137 
 138 #endif  /* _INET_TCP_STACK_H */