freebsd-dev/sys/netinet
Gleb Smirnoff 2435e507de Now with epoch synchronized PCB lookup tables we can greatly simplify
locking in udp_output() and udp6_output().

First, we select if we need read or write lock in PCB itself, we take
the lock and enter network epoch.  Then, we proceed for the rest of
the function.  In case if we need to modify PCB hash, we would take
write lock on it for a short piece of code.

We could exit the epoch before allocating an mbuf, but with this
patch we are keeping it all the way into ip_output()/ip6_output().
Today this creates an epoch recursion, since ip_output() enters epoch
itself.  However, once all protocols are reviewed, ip_output() and
ip6_output() would require epoch instead of entering it.

Note: I'm not 100% sure that in udp6_output() the epoch is required.
We don't do PCB hash lookup for a bound socket.  And all branches of
in6_select_src() don't require epoch, at least they lack assertions.
Today inet6 address list is protected by rmlock, although it is CKLIST.
AFAIU, the future plan is to protect it by network epoch.  That would
require epoch in in6_select_src().  Anyway, in future ip6_output()
would require epoch, udp6_output() would need to enter it.
2019-11-07 21:01:36 +00:00
..
cc When performing after_idle() or post_recovery(), don't disable the 2019-07-29 09:19:48 +00:00
khelp
libalias Separate kernel crc32() implementation to its own header (gsb_crc32.h) and 2019-06-17 19:49:08 +00:00
netdump Fix compile issues when building a kernel without the VIMAGE option. 2019-10-19 20:48:53 +00:00
tcp_stacks Fix a small bug in bbr when running under a VM. Basically what 2019-10-24 05:54:30 +00:00
accf_data.c
accf_dns.c
accf_http.c
icmp6.h Initial implementation of draft-ietf-6man-ipv6only-flag. 2018-10-30 20:08:48 +00:00
icmp_var.h
if_ether.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
if_ether.h Retire arpresolve_addr(), which is not used anywhere, from if_ether.c. 2018-11-17 16:08:36 +00:00
igmp_var.h Separate list manipulation locking from state change in multicast 2018-05-02 19:36:29 +00:00
igmp.c Quickly fix up r353683: enter the epoch before calling into netisr_dispatch(). 2019-10-17 17:02:50 +00:00
igmp.h
in_cksum.c
in_debug.c CK: update consumers to use CK macros across the board 2018-05-24 23:21:23 +00:00
in_fib.c Existense of PCB route caching doesn't allow us to use new fast route 2019-05-08 23:39:24 +00:00
in_fib.h Existense of PCB route caching doesn't allow us to use new fast route 2019-05-08 23:39:24 +00:00
in_gif.c Add the check that current VNET is ready and access to srchash is allowed. 2018-10-23 13:11:45 +00:00
in_jail.c
in_kdtrace.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
in_kdtrace.h Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
in_mcast.c Revert r353313. It is not needed with r353357 and is actually incorrect. 2019-10-14 04:10:00 +00:00
in_pcb.c Since r353292 on input path we are always in network epoch, when 2019-11-07 20:49:56 +00:00
in_pcb.h Add INP_UNLOCK() which will do whatever R/W unlock is required. 2019-11-07 20:57:51 +00:00
in_pcbgroup.c Fix PCBGROUPS build post CK conversion of pcbinfo 2018-06-13 23:19:54 +00:00
in_prot.c
in_proto.c Remove empty encap_init() function. 2018-05-29 12:32:08 +00:00
in_rmx.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
in_rss.c
in_rss.h
in_systm.h
in_var.h Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
in.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
in.h Rename IPPROTO 33 from SEP to DCCP 2019-08-08 11:43:09 +00:00
ip6.h carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
ip_carp.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_carp.h
ip_divert.c Remove unnecessary recursive epoch enter via INP_INFO_RLOCK 2019-11-07 20:44:34 +00:00
ip_divert.h
ip_dummynet.h
ip_ecn.c
ip_ecn.h
ip_encap.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_encap.h Add KPI that can be used by tunneling interfaces to handle IP addresses 2018-10-21 17:55:26 +00:00
ip_fastfwd.c New pfil(9) KPI together with newborn pfil API and control utility. 2019-01-31 23:01:03 +00:00
ip_fw.h Add "tcpmss" opcode to match the TCP MSS value. 2019-06-21 10:54:51 +00:00
ip_gre.c Add GRE-in-UDP encapsulation support as defined in RFC8086. 2019-04-24 09:05:45 +00:00
ip_icmp.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_icmp.h
ip_id.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
ip_input.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_mroute.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_mroute.h
ip_options.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_options.h
ip_output.c Revert most of the multicast changes from r353292. This needs a more 2019-10-09 17:03:20 +00:00
ip_reass.c Properly set VNET when nuking recvif from fragment queues. 2019-10-25 18:54:06 +00:00
ip_var.h This commit adds BBR (Bottleneck Bandwidth and RTT) congestion control. This 2019-09-24 18:18:11 +00:00
ip.h carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
pim_var.h Rework IP encapsulation handling code. 2018-06-05 20:51:01 +00:00
pim.h
raw_ip.c Remove unnecessary recursive epoch enter via INP_INFO_RLOCK 2019-11-07 20:40:44 +00:00
sctp_asconf.c Validate length before use it, not vice versa. 2019-10-08 11:07:16 +00:00
sctp_asconf.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_auth.c Only allow a SCTP-AUTH shared key to be updated by the application 2019-09-17 09:46:42 +00:00
sctp_auth.h Remove unused code. 2018-09-18 10:53:07 +00:00
sctp_bsd_addr.c Use an event handler to notify the SCTP about IP address changes 2019-10-13 18:17:08 +00:00
sctp_bsd_addr.h Use an event handler to notify the SCTP about IP address changes 2019-10-13 18:17:08 +00:00
sctp_cc_functions.c Rename sctp_dtrace_declare.h to sctp_kdtrace.h for consistentcy. 2019-10-14 13:02:49 +00:00
sctp_constants.h Limit the user-controllable amount of memory the kernel allocates 2019-01-16 11:33:47 +00:00
sctp_crc32.c When the IP layer calls back into the SCTP layer to perform the SCTP 2019-09-15 18:29:45 +00:00
sctp_crc32.h
sctp_header.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_indata.c Plumb an mbuf leak in a code path that should not be taken. Also avoid 2019-10-06 08:47:10 +00:00
sctp_indata.h Fix initialization of top_fsn. 2019-09-01 10:39:16 +00:00
sctp_input.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_input.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_kdtrace.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_kdtrace.h Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_lock_bsd.h
sctp_os_bsd.h Improve consistency. No functional change. 2019-08-05 13:22:15 +00:00
sctp_os.h
sctp_output.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_output.h Improve the handling of state cookie parameters in INIT-ACK chunks. 2019-09-01 10:09:53 +00:00
sctp_pcb.c Move SCTP DTrace probe definitions into a .c file. 2019-10-13 16:14:04 +00:00
sctp_pcb.h Store a handle for the event handler. This will be used when unloading the 2019-10-24 09:22:23 +00:00
sctp_peeloff.c Use the stacb instead of the asoc in state macros. 2018-08-13 13:58:45 +00:00
sctp_peeloff.h
sctp_ss_functions.c Initialize scheduler specific data for the FCFS scheduler. 2019-03-25 16:40:54 +00:00
sctp_structs.h Fix build issue for the userland stack. 2019-03-24 12:13:05 +00:00
sctp_syscalls.c netinet silence warnings 2018-05-19 05:56:21 +00:00
sctp_sysctl.c Plug some networking sysctl leaks. 2018-11-22 20:49:41 +00:00
sctp_sysctl.h Add initial descriptions for SCTP related MIB variable. 2018-10-26 21:04:17 +00:00
sctp_timer.c Refactor the SHUTDOWN_PENDING state handling. 2018-08-21 13:25:32 +00:00
sctp_timer.h
sctp_uio.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_usrreq.c Store a handle for the event handler. This will be used when unloading the 2019-10-24 09:22:23 +00:00
sctp_var.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp.h Limit the size of messages sent on 1-to-many style SCTP sockets with the 2019-03-23 22:56:03 +00:00
sctputil.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctputil.h Cleanup the RTO calculation and perform some consistency checks 2019-09-22 10:40:15 +00:00
siftr.c In r343587 a simple port filter as sysctl tunable was added to siftr. 2019-10-07 20:35:04 +00:00
tcp_debug.c
tcp_debug.h
tcp_fastopen.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
tcp_fastopen.h
tcp_fsm.h Revert r334843, and partially revert r335180. 2018-06-23 06:53:53 +00:00
tcp_hostcache.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
tcp_hostcache.h
tcp_hpts.c This commit updates rack to what is basically being used at NF as 2019-07-10 20:40:39 +00:00
tcp_hpts.h This commit updates rack to what is basically being used at NF as 2019-07-10 20:40:39 +00:00
tcp_input.c netinet*: variable cleanup 2019-11-07 18:29:51 +00:00
tcp_log_buf.c Fix a small bug in the tcp_log_id where the bucket 2019-04-10 18:58:11 +00:00
tcp_log_buf.h This commit updates rack to what is basically being used at NF as 2019-07-10 20:40:39 +00:00
tcp_lro.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER(). 2019-11-07 00:08:34 +00:00
tcp_lro.h This adds the final tweaks to LRO that will now allow me 2019-09-06 14:25:41 +00:00
tcp_offload.c Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
tcp_offload.h Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
tcp_output.c RFC 7112 requires a host to put the complete IP header chain 2019-09-29 10:45:13 +00:00
tcp_pcap.c Add an external mbuf buffer type that holds multiple unmapped pages. 2019-06-29 00:48:33 +00:00
tcp_pcap.h
tcp_ratelimit.c Factor out TCP rateset destruction code. 2019-10-09 17:08:40 +00:00
tcp_ratelimit.h Fix the ifdefs in tcp_ratelimit.h. They were reversed so 2019-09-24 20:04:31 +00:00
tcp_reass.c This patch addresses an issue brought up by bz@ in D18968: 2019-02-21 09:34:47 +00:00
tcp_sack.c Don't write to memory outside of the allocated array for SACK blocks. 2019-09-16 08:18:05 +00:00
tcp_seq.h
tcp_subr.c Since r353292 on input path we are always in network epoch, when 2019-11-07 20:49:56 +00:00
tcp_syncache.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER(). 2019-11-07 00:08:34 +00:00
tcp_syncache.h Add new functionality to switch to using cookies exclusively when we the 2019-09-26 15:18:57 +00:00
tcp_timer.c TCP timers are executed in callout context, so they need to enter network 2019-11-07 00:27:23 +00:00
tcp_timer.h Add sysctl variable net.inet.tcp.rexmit_initial for setting RTO.Initial 2019-03-23 21:36:59 +00:00
tcp_timewait.c Fix a byte ordering issue for the advertised receiver window in ACK 2019-02-15 09:45:17 +00:00
tcp_usrreq.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER() in 2019-11-07 00:10:14 +00:00
tcp_var.h This adds in the missing counter initialization which 2019-09-06 18:29:48 +00:00
tcp.h Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
tcpip.h
toecore.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER(). 2019-11-07 00:08:34 +00:00
toecore.h Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
udp_usrreq.c Now with epoch synchronized PCB lookup tables we can greatly simplify 2019-11-07 21:01:36 +00:00
udp_var.h
udp.h
udplite.h Add a dtrace provider for UDP-Lite. 2018-07-31 22:56:03 +00:00