Print this page
DLPX-43064 include high-resolution round-trip times in connstat (EP-652)
DLPX-42721 Create inline function for TCP RTO calculation
@@ -20,10 +20,11 @@
*/
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright 2016 Joyent, Inc.
+ * Copyright (c) 2016 by Delphix. All rights reserved.
*/
#include <sys/types.h>
#include <sys/stream.h>
#define _SUN_TPI_VERSION 2
@@ -972,13 +973,11 @@
tcp_wput_data(tcp, NULL, B_FALSE);
}
tcp->tcp_cork = onoff;
}
break;
- case TCP_RTO_INITIAL: {
- clock_t rto;
-
+ case TCP_RTO_INITIAL:
if (checkonly || val == 0)
break;
/*
* Sanity checks
@@ -1004,19 +1003,14 @@
* really affect anything.
*/
if (tcp->tcp_state >= TCPS_SYN_SENT)
break;
- tcp->tcp_rtt_sa = tcp->tcp_rto_initial << 2;
- tcp->tcp_rtt_sd = tcp->tcp_rto_initial >> 1;
- rto = (tcp->tcp_rtt_sa >> 3) + tcp->tcp_rtt_sd +
- tcps->tcps_rexmit_interval_extra +
- (tcp->tcp_rtt_sa >> 5) +
- tcps->tcps_conn_grace_period;
- TCP_SET_RTO(tcp, rto);
+ tcp->tcp_rtt_sa = MSEC2NSEC(tcp->tcp_rto_initial) << 2;
+ tcp->tcp_rtt_sd = MSEC2NSEC(tcp->tcp_rto_initial) >> 1;
+ tcp->tcp_rto = tcp_calculate_rto(tcp, tcps);
break;
- }
case TCP_RTO_MIN:
if (checkonly || val == 0)
break;
if (val < tcps->tcps_rexmit_interval_min_low ||