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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/tcp_impl.h
          +++ new/usr/src/uts/common/inet/tcp_impl.h
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  23   23   * Copyright 2019 Joyent, Inc.
  24   24   * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
  25      - * Copyright (c) 2013, 2016 by Delphix. All rights reserved.
       25 + * Copyright (c) 2013, 2017 by Delphix. All rights reserved.
  26   26   */
  27   27  
  28   28  #ifndef _INET_TCP_IMPL_H
  29   29  #define _INET_TCP_IMPL_H
  30   30  
  31   31  /*
  32   32   * TCP implementation private declarations.  These interfaces are
  33   33   * used to build the IP module and are not meant to be accessed
  34   34   * by any modules except IP itself.  They are undocumented and are
  35   35   * subject to change without notice.
↓ open down ↓ 519 lines elided ↑ open up ↑
 555  555  #define tcps_keepalive_abort_interval_high \
 556  556                                          tcps_propinfo_tbl[56].prop_max_uval
 557  557  #define tcps_keepalive_abort_interval \
 558  558                                          tcps_propinfo_tbl[56].prop_cur_uval
 559  559  #define tcps_keepalive_abort_interval_low \
 560  560                                          tcps_propinfo_tbl[56].prop_min_uval
 561  561  #define tcps_wroff_xtra                 tcps_propinfo_tbl[57].prop_cur_uval
 562  562  #define tcps_dev_flow_ctl               tcps_propinfo_tbl[58].prop_cur_bval
 563  563  #define tcps_reass_timeout              tcps_propinfo_tbl[59].prop_cur_uval
 564  564  #define tcps_iss_incr                   tcps_propinfo_tbl[65].prop_cur_uval
      565 +#define tcps_abc                        tcps_propinfo_tbl[67].prop_cur_bval
      566 +#define tcps_abc_l_var                  tcps_propinfo_tbl[68].prop_cur_uval
 565  567  
 566  568  
 567  569  /*
 568  570   * As defined in RFC 6298, the RTO is the average estimates (SRTT) plus a
 569  571   * multiple of the deviation estimates (K * RTTVAR):
 570  572   *
 571  573   * RTO = SRTT + max(G, K * RTTVAR)
 572  574   *
 573  575   * K is defined in the RFC as 4, and G is the clock granularity. We constrain
 574  576   * the minimum mean deviation to TCP_SD_MIN when processing new RTTs, so this
↓ open down ↓ 151 lines elided ↑ open up ↑
 726  728  extern int      tcp_wput_fallback(queue_t *, mblk_t *);
 727  729  extern void     tcp_xmit_ctl(char *, tcp_t *, uint32_t, uint32_t, int);
 728  730  extern void     tcp_xmit_listeners_reset(mblk_t *, ip_recv_attr_t *,
 729  731                      ip_stack_t *i, conn_t *);
 730  732  extern mblk_t   *tcp_xmit_mp(tcp_t *, mblk_t *, int32_t, int32_t *,
 731  733                      mblk_t **, uint32_t, boolean_t, uint32_t *, boolean_t);
 732  734  
 733  735  /*
 734  736   * Input related functions in tcp_input.c.
 735  737   */
      738 +extern void     cc_cong_signal(tcp_t *, uint32_t, uint32_t);
 736  739  extern void     tcp_icmp_input(void *, mblk_t *, void *, ip_recv_attr_t *);
 737  740  extern void     tcp_input_data(void *, mblk_t *, void *, ip_recv_attr_t *);
 738  741  extern void     tcp_input_listener_unbound(void *, mblk_t *, void *,
 739  742                      ip_recv_attr_t *);
 740  743  extern boolean_t        tcp_paws_check(tcp_t *, const tcp_opt_t *);
 741  744  extern int      tcp_parse_options(tcpha_t *, tcp_opt_t *);
 742  745  extern uint_t   tcp_rcv_drain(tcp_t *);
 743  746  extern void     tcp_rcv_enqueue(tcp_t *, mblk_t *, uint_t, cred_t *);
 744  747  extern boolean_t        tcp_verifyicmp(conn_t *, void *, icmph_t *, icmp6_t *,
 745  748                              ip_recv_attr_t *);
↓ open down ↓ 80 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX