- Re-write tcp_ctlinput6() to closely mimic the IPv4 tcp_ctlinput() as it stands in D7251. Hopefully the code will be close enough to prevent future regressions and bitrot in the v6 code.
- Now that tcp_ctlinput6() updates t_maxseg, we can allow ip6_output() to send TCP packets without looking at the tcp host cache for every single transmit.
- Prevent the icmp6 code from returning PRC_HOSTDEAD so as to avoid the massive lock contention caused by in6_pcbnotify() walking tcpbinfo with the write lock held.
Without these changes in place, even 5-10% of traffic being IPv6
causes huge scalability issues with large numbers (order 100K) of TCP
connections. With these changes in place, these scalability issues
are gone.