freebsd-dev/sys/contrib
Gleb Smirnoff b8a6e03fac Widen NET_EPOCH coverage.
When epoch(9) was introduced to network stack, it was basically
dropped in place of existing locking, which was mutexes and
rwlocks. For the sake of performance mutex covered areas were
as small as possible, so became epoch covered areas.

However, epoch doesn't introduce any contention, it just delays
memory reclaim. So, there is no point to minimise epoch covered
areas in sense of performance. Meanwhile entering/exiting epoch
also has non-zero CPU usage, so doing this less often is a win.

Not the least is also code maintainability. In the new paradigm
we can assume that at any stage of processing a packet, we are
inside network epoch. This makes coding both input and output
path way easier.

On output path we already enter epoch quite early - in the
ip_output(), in the ip6_output().

This patch does the same for the input path. All ISR processing,
network related callouts, other ways of packet injection to the
network stack shall be performed in net_epoch. Any leaf function
that walks network configuration now asserts epoch.

Tricky part is configuration code paths - ioctls, sysctls. They
also call into leaf functions, so some need to be changed.

This patch would introduce more epoch recursions (see EPOCH_TRACE)
than we had before. They will be cleaned up separately, as several
of them aren't trivial. Note, that unlike a lock recursion the
epoch recursion is safe and just wastes a bit of resources.

Reviewed by:	gallatin, hselasky, cy, adrian, kristof
Differential Revision:	https://reviews.freebsd.org/D19111
2019-10-07 22:40:05 +00:00
..
alpine-hal
ck Import CK as of 21d3e319407d19dece16ee317c757ffc54a452bc, which makes its 2018-11-27 12:35:51 +00:00
cloudabi Import the latest CloudABI definitions, v0.18. 2017-11-21 20:46:21 +00:00
dev athhal: disable unused function (big endian only) 2019-08-21 10:42:31 +00:00
edk2 Copy needed include files from EDK2. This is a minimal set gleened 2017-03-08 02:47:59 +00:00
ena-com Adjust ENA driver to the new ena-com 2019-05-30 13:01:46 +00:00
ipfilter/netinet Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
libb2 MFV: libb2: use native calls for secure memory clearance 2018-03-27 14:55:01 +00:00
libfdt MFV r328490: Update libfdt to github:f1879e1 2018-01-27 21:25:45 +00:00
libnv The nvlist_report_missing is also used by the cnvlist. 2019-04-11 04:24:41 +00:00
libsodium Bring in libsodium to sys/contrib 2018-08-17 00:23:50 +00:00
ncsw dpaa(4): Fix memcpy size for threshold copy in NCSW contrib 2019-09-28 02:49:46 +00:00
ngatm
octeon-sdk octeon-sdk: suppress another set of warnings under clang 2019-09-22 18:32:05 +00:00
rdma/krping Notify all sleeping threads of device removal in krping. 2019-10-02 09:03:48 +00:00
v4l
vchiq/interface Change synchonization rules for vm_page reference counting. 2019-09-09 21:32:42 +00:00
x86emu
xz-embedded Modularize xz. 2019-02-26 19:55:03 +00:00
zlib MFV r351500: Fix CLEAR_HASH macro to be usable as a single statement. 2019-08-26 00:46:39 +00:00
zstd Stopgap fix for gcc platforms. 2019-08-08 20:09:36 +00:00