freebsd-dev/sys/net
Gleb Smirnoff a6b55ee6be net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH
Expect that drivers call into the network stack with the net epoch
entered. This has already been the fact since early 2020. The net
interrupts, that are marked with INTR_TYPE_NET, were entering epoch
since 511d1afb6b. For the taskqueues there is NET_TASK_INIT() and
all drivers that were known back in 2020 we marked with it in
6c3e93cb5a. However in e87c494015 we took conservative approach
and preferred to opt-in rather than opt-out for the epoch.

This change not only reverts e87c494015 but adds a safety belt to
avoid panicing with INVARIANTS if there is a missed driver. With
INVARIANTS we will run in_epoch() check, print a warning and enter
the net epoch.  A driver that prints can be quickly fixed with the
IFF_NEEDSEPOCH flag, but better be augmented to properly enter the
epoch itself.

Note on TCP LRO: it is a backdoor to enter the TCP stack bypassing
some layers of net stack, ignoring either old IFF_KNOWSEPOCH or the
new IFF_NEEDSEPOCH.  But the tcp_lro_flush_all() asserts the presence
of network epoch.  Indeed, all NIC drivers that support LRO already
provide the epoch, either with help of INTR_TYPE_NET or just running
NET_EPOCH_ENTER() in their code.

Reviewed by:		zlei, gallatin, erj
Differential Revision:	https://reviews.freebsd.org/D39510
2023-04-17 09:08:35 -07:00
..
altq altq: ansify 2023-02-13 18:32:45 +00:00
route netlink: allow exact-match route lookups via RTM_GETROUTE. 2023-04-02 13:47:10 +00:00
bpf_buffer.c
bpf_buffer.h
bpf_filter.c bpf(3): Grammar fix for a source code comment 2022-09-04 17:30:05 +02:00
bpf_jitter.c
bpf_jitter.h
bpf_zerocopy.c
bpf_zerocopy.h
bpf.c net: whack __mips__ leftovers 2023-03-01 11:07:32 +00:00
bpf.h bpf: Add "_if" tap APIs 2023-01-31 15:02:14 -05:00
bpfdesc.h
bridgestp.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
bridgestp.h
debugnet_inet.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
debugnet_int.h
debugnet.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
debugnet.h debugnet: Add ifnet accessor to set debugnet methods 2023-01-24 15:03:35 -05:00
dlt.h libpcap: Update to 1.10.3 2023-03-31 16:02:22 -03:00
ethernet.h bridge: Add support for emulated netmap mode 2023-04-10 12:14:11 -04:00
firewire.h IfAPI: Add l2com accessor for firewire. 2023-01-31 15:02:17 -05:00
ieee8023ad_lacp.c lacp: Use C99 bool for boolean return value 2023-04-01 01:48:36 +08:00
ieee8023ad_lacp.h lacp: Use C99 bool for boolean return value 2023-04-01 01:48:36 +08:00
ieee_oui.h
if_arp.h
if_bridge.c bridge: distinguish no vlan and vlan 1 2023-04-14 13:17:02 +02:00
if_bridgevar.h bridge: Add support for emulated netmap mode 2023-04-10 12:14:11 -04:00
if_clone.c net: refactor if_clone.c #1 2023-03-15 13:54:22 +00:00
if_clone.h if_clone: add ifc_link_ifp() / ifc_unlink_ifp() to the KPI 2022-09-24 19:42:42 +00:00
if_dead.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_disc.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_dl.h
if_edsc.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_enc.c net: use pfil_mbuf_{in,out} where we always have an mbuf 2023-02-14 10:02:49 -08:00
if_enc.h
if_epair.c net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH 2023-04-17 09:08:35 -07:00
if_ethersubr.c net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH 2023-04-17 09:08:35 -07:00
if_fwsubr.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_gif.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_gif.h
if_gre.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_gre.h
if_infiniband.c net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH 2023-04-17 09:08:35 -07:00
if_ipsec.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_ipsec.h
if_lagg.c lagg(4): Correctly define some sysctl variables 2023-04-17 18:24:35 +08:00
if_lagg.h lagg: Various style fixes 2023-03-24 17:55:15 +08:00
if_llatbl.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_llatbl.h netinet6: Fix mbuf leak in NDP 2022-05-31 21:06:14 +00:00
if_llc.h
if_loop.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_me.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_media.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_media.h
if_mib.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_mib.h
if_ovpn.c if_ovpn: ovpn_find_peer_by_ip() is unused without INET 2023-02-23 05:56:56 +01:00
if_ovpn.h if_ovpn: implement OVPN_GET_PEER_STATS 2022-12-14 06:48:58 +01:00
if_pflog.h pflog: align header to 4 bytes, not 8 2022-02-01 18:17:44 +01:00
if_pfsync.h pfsync: prepare code to accommodate AF_INET6 family 2022-11-09 21:06:07 +01:00
if_private.h IfAPI: Add some more accessors 2023-01-31 15:02:17 -05:00
if_stf.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_stf.h
if_tap.h
if_tun.h
if_tuntap.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_types.h Import the WireGuard driver from zx2c4.com. 2022-10-28 13:36:12 -07:00
if_var.h IfAPI: Add iterator to complement if_foreach() 2023-03-23 09:39:26 -04:00
if_vlan_var.h bridge: distinguish no vlan and vlan 1 2023-04-14 13:17:02 +02:00
if_vlan.c net: unify mtu update code 2023-03-06 15:08:08 +00:00
if_vxlan.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
if_vxlan.h
if.c ifcapnv: cap_bit in ifcap2_nv_bit_names[] is bit, not index 2023-03-31 02:08:15 +03:00
if.h net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH 2023-04-17 09:08:35 -07:00
ifdi_if.m IfAPI: Explicitly include <net/if_private.h> in netstack 2023-01-31 15:02:16 -05:00
iflib_clone.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
iflib_private.h
iflib.c net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH 2023-04-17 09:08:35 -07:00
iflib.h iflib: Introduce v2 of TX Queue Select Functionality 2022-10-17 14:59:55 -07:00
ifq.c IfAPI: Explicitly include <net/if_private.h> in netstack 2023-01-31 15:02:16 -05:00
ifq.h ifnet/API: Privatize the implementation of the drbr_* APIs 2023-01-31 15:02:14 -05:00
infiniband.h infiniband: Convert BPF handling for IfAPI 2023-03-14 15:51:32 -04:00
mp_ring.c
mp_ring.h net: whack __mips__ leftovers 2023-03-01 11:07:32 +00:00
mppc.h
mppcc.c
mppcd.c
netisr_internal.h
netisr.c ifnet/API: Move struct ifnet definition to a <net/if_private.h> 2023-01-24 14:36:30 -05:00
netisr.h netisr: Remove the now-unused NETISR_EPAIR queue index 2023-04-05 11:46:42 -04:00
netmap_legacy.h
netmap_user.h netmap: fix refcount bug in netmap allocator 2022-03-06 16:39:16 +00:00
netmap_virt.h
netmap.h netmap(4): Fix a typo in a source code comment 2022-10-25 14:56:25 +02:00
paravirt.h
pfil.c pf: distinguish forwarding and output cases for pf_refragment6() 2023-03-16 10:59:04 +01:00
pfil.h pf: distinguish forwarding and output cases for pf_refragment6() 2023-03-16 10:59:04 +01:00
pfkeyv2.h ipsec: add support for CHACHA20POLY1305 2022-11-02 14:19:04 +01:00
pfvar.h pf: backport OpenBSD syntax of "scrub" option for "match" and "pass" rules 2023-04-14 09:04:06 +02:00
ppp_defs.h
radix.c net: constantify radix.c functions 2022-08-01 07:32:40 +00:00
radix.h net: constantify radix.c functions 2022-08-01 07:32:40 +00:00
rndis.h
route.c netlink: add netlink KPI to the kernel by default 2023-03-27 13:55:44 +00:00
route.h netlink: add rtsock-compatible header to use with netlink snl(3). 2023-03-09 14:37:42 +00:00
rss_config.c
rss_config.h
rtsock.c routing: add public rt_is_exportable() version to check if 2023-03-26 08:24:27 +00:00
sff8436.h
sff8472.h
slcompress.c
slcompress.h
toeplitz.c
toeplitz.h
vnet.c vnet: Fix a typo in a source code comment 2023-04-17 18:24:35 +08:00
vnet.h vnet: Make vnet_sys[un]init() static 2023-02-22 00:22:23 +08:00