Print this page
917 Make TCP's iss_incr a tunable

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/tcp/tcp.c
          +++ new/usr/src/uts/common/inet/tcp/tcp.c
↓ open down ↓ 3919 lines elided ↑ open up ↑
3920 3920  
3921 3921  static void
3922 3922  tcp_iss_init(tcp_t *tcp)
3923 3923  {
3924 3924          MD5_CTX context;
3925 3925          struct { uint32_t ports; in6_addr_t src; in6_addr_t dst; } arg;
3926 3926          uint32_t answer[4];
3927 3927          tcp_stack_t     *tcps = tcp->tcp_tcps;
3928 3928          conn_t          *connp = tcp->tcp_connp;
3929 3929  
3930      -        tcps->tcps_iss_incr_extra += (ISS_INCR >> 1);
     3930 +        tcps->tcps_iss_incr_extra += (tcps->tcps_iss_incr >> 1);
3931 3931          tcp->tcp_iss = tcps->tcps_iss_incr_extra;
3932 3932          switch (tcps->tcps_strong_iss) {
3933 3933          case 2:
3934 3934                  mutex_enter(&tcps->tcps_iss_key_lock);
3935 3935                  context = tcps->tcps_iss_key;
3936 3936                  mutex_exit(&tcps->tcps_iss_key_lock);
3937 3937                  arg.ports = connp->conn_ports;
3938 3938                  arg.src = connp->conn_laddr_v6;
3939 3939                  arg.dst = connp->conn_faddr_v6;
3940 3940                  MD5Update(&context, (uchar_t *)&arg, sizeof (arg));
↓ open down ↓ 2 lines elided ↑ open up ↑
3943 3943                  /*
3944 3944                   * Now that we've hashed into a unique per-connection sequence
3945 3945                   * space, add a random increment per strong_iss == 1.  So I
3946 3946                   * guess we'll have to...
3947 3947                   */
3948 3948                  /* FALLTHRU */
3949 3949          case 1:
3950 3950                  tcp->tcp_iss += (gethrtime() >> ISS_NSEC_SHT) + tcp_random();
3951 3951                  break;
3952 3952          default:
3953      -                tcp->tcp_iss += (uint32_t)gethrestime_sec() * ISS_INCR;
     3953 +                tcp->tcp_iss += (uint32_t)gethrestime_sec() *
     3954 +                    tcps->tcps_iss_incr;
3954 3955                  break;
3955 3956          }
3956 3957          tcp->tcp_valid_bits = TCP_ISS_VALID;
3957 3958          tcp->tcp_fss = tcp->tcp_iss - 1;
3958 3959          tcp->tcp_suna = tcp->tcp_iss;
3959 3960          tcp->tcp_snxt = tcp->tcp_iss + 1;
3960 3961          tcp->tcp_rexmit_nxt = tcp->tcp_snxt;
3961 3962          tcp->tcp_csuna = tcp->tcp_snxt;
3962 3963  }
3963 3964  
↓ open down ↓ 510 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX