freebsd-skq/sys/netinet
jtl ee029a5d0b If the INP lock is uncontested, avoid taking a reference and jumping
through the lock-switching hoops.

A few of the INP lookup operations that lock INPs after the lookup do
so using this mechanism (to maintain lock ordering):

1. Lock lookup structure.
2. Find INP.
3. Acquire reference on INP.
4. Drop lock on lookup structure.
5. Acquire INP lock.
6. Drop reference on INP.

This change provides a slightly shorter path for cases where the INP
lock is uncontested:

1. Lock lookup structure.
2. Find INP.
3. Try to acquire the INP lock.
4. If successful, drop lock on lookup structure.

Of course, if the INP lock is contested, the functions will need to
revert to the previous way of switching locks safely.

This saves a few atomic operations when the INP lock is uncontested.

Discussed with:	gallatin, rrs, rwatson
MFC after:	2 weeks
Sponsored by:	Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D12911
2018-03-21 15:54:46 +00:00
..
cc Add support for the experimental Internet-Draft "TCP Alternative Backoff with 2018-03-19 16:37:47 +00:00
khelp sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
libalias libalias: small memory allocation cleanups. 2018-01-12 23:12:30 +00:00
tcp_stacks Declare more TCP globals in tcp_var.h, so that alternative TCP stacks 2017-10-11 20:36:09 +00:00
accf_data.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_dns.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_http.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
icmp6.h Correct the comment describing badrs which is bad router solicitiation, 2017-12-29 07:23:18 +00:00
icmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
if_ether.c Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration. 2018-03-17 17:05:48 +00:00
if_ether.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_cksum.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_debug.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_fib.c
in_fib.h
in_gif.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_jail.c Allow explicitly assigned IPv4 loopback address to be used in jails 2017-03-31 00:41:54 +00:00
in_kdtrace.c Use tcpinfoh_t for TCP headers in the tcp:::debug-{drop,input} probes. 2018-01-25 15:35:34 +00:00
in_kdtrace.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_mcast.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_pcb.c If the INP lock is uncontested, avoid taking a reference and jumping 2018-03-21 15:54:46 +00:00
in_pcb.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_pcbgroup.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_prot.c
in_proto.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_rmx.c
in_rss.c
in_rss.h
in_systm.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in.c Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration. 2018-03-17 17:05:48 +00:00
in.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip6.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_carp.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_carp.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_divert.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_divert.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_dummynet.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_ecn.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_ecn.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_encap.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_encap.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_fastfwd.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_fw.h Rework ipfw dynamic states implementation to be lockless on fast path. 2018-02-07 18:59:54 +00:00
ip_gre.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_icmp.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_icmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_id.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_input.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_mroute.c style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
ip_mroute.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_output.c Reduce code duplication for inpcb route caching 2018-01-23 03:15:39 +00:00
ip_reass.c Do not generate illegal mbuf chains during IP fragment reassembly. Only 2018-01-24 05:09:21 +00:00
ip_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pim_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pim.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
raw_ip.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_asconf.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_asconf.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_auth.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_auth.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_bsd_addr.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_bsd_addr.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_cc_functions.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_constants.h Add constant for the PAD chunk as defined in RFC 4820. 2018-01-27 13:46:55 +00:00
sctp_crc32.c When adding support for sending SCTP packets containing an ABORT chunk 2017-12-26 12:35:02 +00:00
sctp_crc32.h When adding support for sending SCTP packets containing an ABORT chunk 2017-12-26 12:35:02 +00:00
sctp_dtrace_declare.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_dtrace_define.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_header.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_indata.c Fix a bug related to fast retransmissions. 2018-01-16 21:58:38 +00:00
sctp_indata.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_input.c Cleaup, no functional change. 2017-12-13 17:11:57 +00:00
sctp_input.h Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_lock_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_output.c Cleaup, no functional change. 2017-12-13 17:11:57 +00:00
sctp_output.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_pcb.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_pcb.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_peeloff.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_peeloff.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_ss_functions.c Fix SPDX line as suggested by pfg 2017-11-24 19:38:59 +00:00
sctp_structs.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_syscalls.c Correct sysent flags for dynamically loaded syscalls. 2017-07-14 09:34:44 +00:00
sctp_sysctl.c Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_sysctl.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_timer.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_timer.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_uio.h Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_usrreq.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctputil.c Don't provide a (meaningless) cmsg when proving a notification 2018-01-15 21:59:20 +00:00
sctputil.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
siftr.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_debug.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_debug.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_fastopen.c When checking the TCP fast cookie length, conststently also check 2018-02-27 22:12:38 +00:00
tcp_fastopen.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_fsm.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_hostcache.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_hostcache.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_input.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_lro.c Update tcp_lro with tested bugfixes from Netflix and LLNW: 2018-03-09 00:08:43 +00:00
tcp_lro.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_offload.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_offload.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_output.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_pcap.c
tcp_pcap.h
tcp_reass.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_sack.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_seq.h Update tcp_lro with tested bugfixes from Netflix and LLNW: 2018-03-09 00:08:43 +00:00
tcp_subr.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_syncache.c Set the inp_vflag consistently for accepted TCP/IPv6 connections when 2018-03-16 15:26:07 +00:00
tcp_syncache.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_timer.c Export tcp_always_keepalive for use by the Chelsio TOM module. 2018-01-30 23:01:37 +00:00
tcp_timer.h Export tcp_always_keepalive for use by the Chelsio TOM module. 2018-01-30 23:01:37 +00:00
tcp_timewait.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_usrreq.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_var.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp.h This is an implementation of the client side of TCP Fast Open (TFO) 2018-02-26 02:53:22 +00:00
tcpip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
toecore.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
toecore.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
udp_usrreq.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udplite.h