freebsd-dev/sys/netinet
Paul Saab 0077b0163f When looking for the next hole to retransmit from the scoreboard,
or to compute the total retransmitted bytes in this sack recovery
episode, the scoreboard is traversed. While in sack recovery, this
traversal occurs on every call to tcp_output(), every dupack and
every partial ack. The scoreboard could potentially get quite large,
making this traversal expensive.

This change optimizes this by storing hints (for the next hole to
retransmit and the total retransmitted bytes in this sack recovery
episode) reducing the complexity to find these values from O(n) to
constant time.

The debug code that sanity checks the hints against the computed
value will be removed eventually.

Submitted by:   Mohan Srinivasan, Noritoshi Demizu, Raja Mukerji.
2005-05-11 21:37:42 +00:00
..
libalias Add a workaround for 64-bit archs: store unsigned long return value in 2005-05-06 13:01:31 +00:00
accf_data.c add missing #include <sys/module.h> 2004-05-30 20:27:19 +00:00
accf_http.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
icmp6.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
icmp_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_atm.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_atm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_ether.c Embrace with #ifdef DEV_CARP carp-related code. 2005-03-13 11:23:22 +00:00
if_ether.h Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
igmp_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
igmp.c deal with malloc failures 2005-03-26 22:20:22 +00:00
igmp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_cksum.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_gif.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_gif.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_pcb.c o Tweak the comment a bit. 2005-04-08 08:43:21 +00:00
in_pcb.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_proto.c Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
in_rmx.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_systm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in.c ifma_protospec is a pointer. Use NULL when assigning or compating it. 2005-03-20 14:31:45 +00:00
in.h Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
ip6.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_carp.c Remove anti-LOR bandaid, it is not needed now. 2005-04-20 09:32:05 +00:00
ip_carp.h Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
ip_divert.c If we are going to 2005-05-06 02:50:00 +00:00
ip_divert.h Convert IPDIVERT into a loadable module. This makes use of the dynamic loadability 2004-10-19 21:14:57 +00:00
ip_dummynet.c IPFW version 2 is the only option in HEAD and RELENG_5. 2005-05-04 13:12:52 +00:00
ip_dummynet.h Add IPv6 support to IPFW and Dummynet. 2005-04-18 18:35:05 +00:00
ip_ecn.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_ecn.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_encap.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_encap.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_fastfwd.c Pass icmp_error() the MTU argument directly instead of 2005-05-04 13:09:19 +00:00
ip_fw2.c IPFW version 2 is the only option in HEAD and RELENG_5. 2005-05-04 13:12:52 +00:00
ip_fw_pfil.c Add IPv6 support to IPFW and Dummynet. 2005-04-18 18:35:05 +00:00
ip_fw.h IPFW version 2 is the only option in HEAD and RELENG_5. 2005-05-04 13:12:52 +00:00
ip_gre.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_gre.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_icmp.c Add another step of 1280 (gif(4) tunnels) to ip_next_mtu(). 2005-05-04 13:23:54 +00:00
ip_icmp.h Pass icmp_error() the MTU argument directly instead of 2005-05-04 13:09:19 +00:00
ip_id.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_input.c Pass icmp_error() the MTU argument directly instead of 2005-05-04 13:09:19 +00:00
ip_mroute.c Use NET_CALLOUT_MPSAFE macro. 2005-03-01 12:01:17 +00:00
ip_mroute.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_output.c Bring back the full packet destination manipulation for 'ipfw fwd' 2005-02-22 17:40:40 +00:00
ip_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ipprotosw.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pim_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pim.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_ip.c If we are going to 2005-05-06 02:50:00 +00:00
tcp_debug.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_debug.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_fsm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_hostcache.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_input.c When looking for the next hole to retransmit from the scoreboard, 2005-05-11 21:37:42 +00:00
tcp_output.c When looking for the next hole to retransmit from the scoreboard, 2005-05-11 21:37:42 +00:00
tcp_reass.c When looking for the next hole to retransmit from the scoreboard, 2005-05-11 21:37:42 +00:00
tcp_sack.c When looking for the next hole to retransmit from the scoreboard, 2005-05-11 21:37:42 +00:00
tcp_seq.h - Tighten up the Timestamp checks to prevent a spoofed segment from 2005-04-10 05:24:59 +00:00
tcp_subr.c Fix two issues which were missed in FreeBSD-SA-05:08.kmem. 2005-05-07 00:41:36 +00:00
tcp_syncache.c Remove some code that snuck in by accident. 2005-04-21 20:29:40 +00:00
tcp_timer.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_timer.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_timewait.c Fix two issues which were missed in FreeBSD-SA-05:08.kmem. 2005-05-07 00:41:36 +00:00
tcp_usrreq.c Remove now unused inirw variable from previous use of COMMON_END(). 2005-05-01 14:01:38 +00:00
tcp_var.h When looking for the next hole to retransmit from the scoreboard, 2005-05-11 21:37:42 +00:00
tcp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcpip.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
udp_usrreq.c If we are going to 2005-05-06 02:50:00 +00:00
udp_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
udp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00