freebsd-skq/sys/net
Robert Watson 3cb73e3d8b Teach the loopback interface about checksum generation and validation
avoidance:

- Enable setting the RXCSUM and TXCSUM flags for loopback interfaces;
  set both by default.
- When RXCSUM is set, flag packets sent over the loopback interface as
  having checked and valid IP, UDP, TCP checksums so that higher
  protocol layers won't check them.
- Always clear CSUM_{IP,UDP_TCP} checksum required flags on transmit,
  as they will have gotten there as a result of TXCSUM being set.

This is done only for packets explicitly sent over the loopback, not
simulated loopback via if_simloop() due to !SIMPLEX interfaces, etc.

Note that enabling TXCSUM but not RXCSUM will lead to unhappiness, as
checksums won't be generated but will be validated.

Kris reports that this leads to significant performance improvements
in loopback benchmarking with TCP and UDP for throughput:

	RXCSUM 	RXCSUM+TXCSUM
TCP	15%	37%
UDP	10%	74%

Update man page.

Reviewed by:	sam
Tested by:	kris
MFC after:	1 week
2009-03-15 20:17:44 +00:00
..
bpf_buffer.c Fill in BPF sysctl descriptions. 2008-07-25 23:58:09 +00:00
bpf_buffer.h Introduce support for zero-copy BPF buffering, which reduces the 2008-03-24 13:49:17 +00:00
bpf_filter.c Fix the last missing parentheses for a return statement in bpf_filter.c. 2008-08-29 20:00:55 +00:00
bpf_jitter.c Initialize scratch memory for JIT-compiled filter when it is allocated. 2008-08-28 16:40:51 +00:00
bpf_jitter.h Fix a typo in copyrights. 2008-08-25 20:43:13 +00:00
bpf_zerocopy.c Clarify some comments, fix some types, and rename ZBUF_FLAG_IMMUTABLE to 2009-03-07 10:21:37 +00:00
bpf_zerocopy.h Make sure we are clearing the ZBUF_FLAG_IMMUTABLE any time a free buffer 2008-07-05 20:11:28 +00:00
bpf.c Disable zerocopy by default for now. It's causing some problems in pcap 2009-03-10 14:28:19 +00:00
bpf.h Revert the previous commit to fix buildworld for now. 2008-08-26 16:12:49 +00:00
bpfdesc.h Remove trailing ';' in BPFD_LOCK_ASSERT macro. 2008-08-01 22:08:14 +00:00
bridgestp.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
bridgestp.h Fix spelling. 2007-12-09 20:47:12 +00:00
bsd_comp.c Retire the MALLOC and FREE macros. They are an abomination unto style(9). 2008-10-23 15:53:51 +00:00
ethernet.h Move CTASSERT of ether header sizes out of the header file and into 2008-08-27 17:10:37 +00:00
fddi.h
firewire.h
ieee8023ad_lacp.c Update the interface baudrate taking into account the max speed for the 2008-12-17 20:58:10 +00:00
ieee8023ad_lacp.h Remove extra semicolons. 2008-03-17 01:26:44 +00:00
if_arc.h
if_arcsubr.c Remove the rt argument from nd6_storelladdr() because 2008-12-17 10:27:34 +00:00
if_arp.h
if_atm.h
if_atmsubr.c This main goals of this project are: 2008-12-15 06:10:57 +00:00
if_bridge.c Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
if_bridgevar.h Add an option to limit the number of source MACs that can be behind a bridge 2007-11-04 08:32:27 +00:00
if_clone.c Fix clone destruction, can't use the simple api because that does not remove 2008-09-20 19:38:37 +00:00
if_clone.h Fix clone destruction, can't use the simple api because that does not remove 2008-09-20 19:38:37 +00:00
if_disc.c Add a comment explaining why disc(4) bears the IFF_LOOPBACK flag. 2007-10-27 19:57:41 +00:00
if_dl.h
if_edsc.c
if_ef.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
if_enc.c Increase statistic counters for enc0 interface when enabled 2008-08-12 09:05:01 +00:00
if_enc.h Increase statistic counters for enc0 interface when enabled 2008-08-12 09:05:01 +00:00
if_ethersubr.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
if_faith.c Rather than using hidden includes (with cicular dependencies), 2008-12-02 21:37:28 +00:00
if_fddisubr.c Remove the rt argument from nd6_storelladdr() because 2008-12-17 10:27:34 +00:00
if_fwsubr.c Remove the rt argument from nd6_storelladdr() because 2008-12-17 10:27:34 +00:00
if_gif.c Conditionally compile out V_ globals while instantiating the appropriate 2008-12-10 23:12:39 +00:00
if_gif.h On architectures with strict alignment requirements compensate 2009-03-07 19:08:58 +00:00
if_gre.c Rather than using hidden includes (with cicular dependencies), 2008-12-02 21:37:28 +00:00
if_gre.h Add support for the optional key in the GRE header. 2008-06-20 17:26:34 +00:00
if_iso88025subr.c Remove the rt argument from nd6_storelladdr() because 2008-12-17 10:27:34 +00:00
if_lagg.c - Protect against sc->sc_primary being null 2008-12-17 21:04:43 +00:00
if_lagg.h Fix two panics in lagg. 2007-10-12 03:03:16 +00:00
if_llatbl.c Like with r185713 make sure to not leak a lock as rtalloc1(9) returns 2009-01-31 10:48:02 +00:00
if_llatbl.h add macro for destroying an llentry's rwlock 2008-12-16 00:20:15 +00:00
if_llc.h
if_loop.c Teach the loopback interface about checksum generation and validation 2009-03-15 20:17:44 +00:00
if_media.c
if_media.h Add TWINAX (Twin Axial Copper for 10G networking) media types. 2008-12-17 22:59:29 +00:00
if_mib.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
if_mib.h
if_ppp.c Retire the MALLOC and FREE macros. They are an abomination unto style(9). 2008-10-23 15:53:51 +00:00
if_ppp.h
if_pppvar.h
if_sl.c Fix a number of style issues in the MALLOC / FREE commit. I've tried to 2008-10-23 20:26:15 +00:00
if_slvar.h
if_sppp.h
if_spppfr.c
if_spppsubr.c IFF_NEEDSGIANT will no longer be supported, so remove compatibility code 2009-02-16 10:29:03 +00:00
if_stf.c Rather than using hidden includes (with cicular dependencies), 2008-12-02 21:37:28 +00:00
if_stf.h
if_tap.c Retire the MALLOC and FREE macros. They are an abomination unto style(9). 2008-10-23 15:53:51 +00:00
if_tap.h Add new TAPGIFNAME tap(4) character device ioctl. This is a 2008-09-08 22:43:55 +00:00
if_tapvar.h
if_tun.c The "tun?" dev need not be opened at all. One is allowed to perform 2008-12-25 22:32:32 +00:00
if_tun.h
if_types.h Remove IPX over IP tunneling support, which allows IPX routing over IP 2007-06-13 14:01:43 +00:00
if_var.h Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
if_vlan_var.h
if_vlan.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
if.c Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
if.h remove unnecessary forward declaration 2009-02-16 15:09:37 +00:00
iso88025.h
netisr.c Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netisr.h Reserve a netisr slot for the IGMPv3 output queue. 2009-03-04 02:54:11 +00:00
pfil.c A few locking fixes and cleanups to pfil hook registration, 2008-12-16 17:03:22 +00:00
pfil.h Line wrap very long line in struct packet_filter_hook definition. 2008-12-13 12:03:21 +00:00
pfkeyv2.h Commit the change from FAST_IPSEC to IPSEC. The FAST_IPSEC 2007-07-03 12:13:45 +00:00
ppp_comp.h
ppp_deflate.c Retire the MALLOC and FREE macros. They are an abomination unto style(9). 2008-10-23 15:53:51 +00:00
ppp_defs.h
ppp_tty.c
radix_mpath.c This main goals of this project are: 2008-12-15 06:10:57 +00:00
radix_mpath.h When RADIX_MPATH is enabled, the route selection is not rotating 2008-05-30 09:34:35 +00:00
radix.c remove assertion checks for now - ipfw uses its own lock for protecting its radix tree instance 2008-12-16 11:01:36 +00:00
radix.h - convert radix node head lock from mutex to rwlock 2008-12-07 21:15:43 +00:00
raw_cb.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
raw_cb.h Put a global variables, which were virtualized but formerly 2008-12-11 16:26:38 +00:00
raw_usrreq.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
route.c The log message should terminate with a newline instead 2009-01-02 22:51:30 +00:00
route.h Revive the RTF_LLINFO flag in route.h. The kernel code is guarded 2009-01-12 11:24:32 +00:00
rtsock.c Call prison_if from rtm_get_jailed, instead of splitting it out into 2009-02-05 14:58:16 +00:00
slcompress.c
slcompress.h
slip.h
vnet.h Add size-guards evaluated at compile-time to the main struct vnet_* 2009-03-01 11:01:00 +00:00
zlib.c
zlib.h