Print this page
DLPX-25998 TCP congestion control is inadequate
Reviewed at: http://reviews.delphix.com/r/34808/
DLPX-43064 include high-resolution round-trip times in connstat (EP-652)
DLPX-42721 Create inline function for TCP RTO calculation

*** 20,30 **** */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2017 Joyent, Inc. * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. ! * Copyright (c) 2013, 2014 by Delphix. All rights reserved. */ #ifndef _INET_TCP_IMPL_H #define _INET_TCP_IMPL_H --- 20,30 ---- */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2017 Joyent, Inc. * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. ! * Copyright (c) 2013, 2017 by Delphix. All rights reserved. */ #ifndef _INET_TCP_IMPL_H #define _INET_TCP_IMPL_H
*** 298,318 **** ((ip6_t *)(iph))->ip6_vcf &= htonl(0xFFCFFFFF); \ ((ip6_t *)(iph))->ip6_vcf |= htonl(IPH_ECN_ECT0 << 20); \ } /* - * Set tcp_rto with boundary checking. - */ - #define TCP_SET_RTO(tcp, rto) \ - if ((rto) < (tcp)->tcp_rto_min) \ - (tcp)->tcp_rto = (tcp)->tcp_rto_min; \ - else if ((rto) > (tcp)->tcp_rto_max) \ - (tcp)->tcp_rto = (tcp)->tcp_rto_max; \ - else \ - (tcp)->tcp_rto = (rto); - - /* * TCP options struct returned from tcp_parse_options. */ typedef struct tcp_opt_s { uint32_t tcp_opt_mss; uint32_t tcp_opt_wscale; --- 298,307 ----
*** 587,596 **** --- 576,587 ---- tcps_propinfo_tbl[56].prop_min_uval #define tcps_wroff_xtra tcps_propinfo_tbl[57].prop_cur_uval #define tcps_dev_flow_ctl tcps_propinfo_tbl[58].prop_cur_bval #define tcps_reass_timeout tcps_propinfo_tbl[59].prop_cur_uval #define tcps_iss_incr tcps_propinfo_tbl[65].prop_cur_uval + #define tcps_abc tcps_propinfo_tbl[67].prop_cur_bval + #define tcps_abc_l_var tcps_propinfo_tbl[68].prop_cur_uval extern struct qinit tcp_rinitv4, tcp_rinitv6; extern boolean_t do_tcp_fusion; /*
*** 611,620 **** --- 602,612 ---- extern void tcp_acceptor_hash_insert(t_uscalar_t, tcp_t *); extern tcp_t *tcp_acceptor_hash_lookup(t_uscalar_t, tcp_stack_t *); extern void tcp_acceptor_hash_remove(tcp_t *); extern mblk_t *tcp_ack_mp(tcp_t *); extern int tcp_build_hdrs(tcp_t *); + extern clock_t tcp_calculate_rto(tcp_t *, tcp_stack_t *); extern void tcp_cleanup(tcp_t *); extern int tcp_clean_death(tcp_t *, int); extern void tcp_clean_death_wrapper(void *, mblk_t *, void *, ip_recv_attr_t *); extern void tcp_close_common(conn_t *, int);
*** 707,716 **** --- 699,709 ---- mblk_t **, uint32_t, boolean_t, uint32_t *, boolean_t); /* * Input related functions in tcp_input.c. */ + extern void cc_cong_signal(tcp_t *, uint32_t, uint32_t); extern void tcp_icmp_input(void *, mblk_t *, void *, ip_recv_attr_t *); extern void tcp_input_data(void *, mblk_t *, void *, ip_recv_attr_t *); extern void tcp_input_listener_unbound(void *, mblk_t *, void *, ip_recv_attr_t *); extern boolean_t tcp_paws_check(tcp_t *, const tcp_opt_t *);