freebsd-dev/sys/netinet
Bjoern A. Zeeb 356ab07e2d It turns out that too many drivers are not only parsing the L2/3/4
headers for TSO but also for generic checksum offloading.  Ideally we
would only have one common function shared amongst all drivers, and
perhaps when updating them for IPv6 we should introduce that.
Eventually we should provide the meta information along with mbufs to
avoid (re-)parsing entirely.

To not break IPv6 (checksums and offload) and to be able to MFC the
changes without risking to hurt 3rd party drivers, duplicate the v4
framework, as other OSes have done as well.

Introduce interface capability flags for TX/RX checksum offload with
IPv6, to allow independent toggling (where possible).  Add CSUM_*_IPV6
flags for UDP/TCP over IPv6, and reserve further for SCTP, and IPv6
fragmentation.  Define CSUM_DELAY_DATA_IPV6 as we do for legacy IP and
add an alias for CSUM_DATA_VALID_IPV6.

This pretty much brings IPv6 handling in line with IPv4.
TSO is still handled in a different way and not via if_hwassist.

Update ifconfig to allow (un)setting of the new capability flags.
Update loopback to announce the new capabilities and if_hwassist flags.

Individual driver updates will have to follow, as will SCTP.

Reported by:	gallatin, dim, ..
Reviewed by:	gallatin (glanced at?)
MFC after:	3 days
X-MFC with:	r235961,235959,235958
2012-05-28 09:30:13 +00:00
..
cc
ipfw Revert r234834 per luigi@ request. 2012-05-03 08:56:43 +00:00
khelp
libalias Remove unused inclusion of curses.h 2012-05-19 05:14:24 +00:00
accf_data.c
accf_dns.c
accf_http.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
cc.h
icmp6.h Correct typo in the RFC number for the constants based on IANA assignments 2012-03-04 18:47:20 +00:00
icmp_var.h
if_atm.c
if_atm.h
if_ether.c Clean up some #endif comments removing from short sections. Add #endif 2012-01-22 02:13:19 +00:00
if_ether.h Move arprequest() declaration to if_ether.h. 2012-01-08 13:34:00 +00:00
igmp_var.h
igmp.c Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
igmp.h
in_cksum.c
in_debug.c Remove last remnants of classful addressing: 2011-10-15 16:28:06 +00:00
in_gif.c
in_gif.h
in_mcast.c Remove unused variable. 2012-01-24 14:27:14 +00:00
in_pcb.c Clean up some #endif comments removing from short sections. Add #endif 2012-01-22 02:13:19 +00:00
in_pcb.h Hide a few declarations from userland (including `struct inpcbgroup'). This 2012-03-17 21:51:39 +00:00
in_pcbgroup.c
in_proto.c Bunch of fixes to pfsync(4) module load/unload: 2012-01-09 08:50:22 +00:00
in_rmx.c
in_systm.h
in_var.h Provide IA_MASKSIN() macro similar to IA_SIN() and IA_DSTSIN(). 2012-01-08 17:20:29 +00:00
in.c M_DONTWAIT is a flag from historical mbuf(9) 2012-04-10 06:52:39 +00:00
in.h Add IPPROTO_MPLS (rfc4023) IP protocol definition 2012-05-27 16:16:28 +00:00
ip6.h
ip_carp.c It is a logical error that in carp_multicast_cleanup() 2012-04-11 12:26:30 +00:00
ip_carp.h Restore a feature that was present in 5.x and 6.x, and was cleared in 2011-12-20 13:53:31 +00:00
ip_divert.c Make #error messages string-literals and remove punctuation. 2012-01-22 10:41:58 +00:00
ip_divert.h
ip_dummynet.h
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c
ip_fw.h Revert r234834 per luigi@ request. 2012-05-03 08:56:43 +00:00
ip_gre.c Make #error messages string-literals and remove punctuation. 2012-01-22 10:41:58 +00:00
ip_gre.h
ip_icmp.c - Fix sysctl description 2012-01-07 00:11:36 +00:00
ip_icmp.h
ip_id.c
ip_input.c Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
ip_ipsec.c Clean up some #endif comments removing from short sections. Add #endif 2012-01-22 02:13:19 +00:00
ip_ipsec.h
ip_mroute.c Change SYSINIT priorities so that ip_mroute_modevent() is executed 2012-03-04 18:59:38 +00:00
ip_mroute.h
ip_options.c
ip_options.h
ip_output.c Cache SO_REUSEPORT socket option in inpcb-layer in order to avoid 2011-11-06 10:47:20 +00:00
ip_var.h Defer the work of freeing IPv4 multicast options from a socket to an 2011-12-29 20:41:16 +00:00
ip.h Add ToS definitions for DiffServ Codepoints as per RFC2474. 2012-05-04 21:00:32 +00:00
pim_var.h
pim.h
raw_ip.c As I came by and noticed add a comment that inp locking is a bit optistic 2012-01-02 09:18:58 +00:00
sctp_asconf.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_asconf.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_auth.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_auth.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_bsd_addr.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_bsd_addr.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_cc_functions.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_constants.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_crc32.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_crc32.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_declare.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_define.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_header.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_indata.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_indata.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_input.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_input.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_lock_bsd.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_os_bsd.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_os.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_output.c Get rid of SCTP specific code to avoid CRC32C computations on loopback. 2012-05-26 09:16:33 +00:00
sctp_output.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_pcb.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_pcb.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_peeloff.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_peeloff.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_ss_functions.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_structs.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_sysctl.c Get rid of SCTP specific code to avoid CRC32C computations on loopback. 2012-05-26 09:16:33 +00:00
sctp_sysctl.h Get rid of SCTP specific code to avoid CRC32C computations on loopback. 2012-05-26 09:16:33 +00:00
sctp_timer.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_timer.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_uio.h Add sn_send_failed_event to sctp_notification. 2012-05-24 11:52:57 +00:00
sctp_usrreq.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_var.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp.h Undefine SCTP_PACKED before including sctp_uio.h, which doesn't 2012-05-25 11:14:08 +00:00
sctputil.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctputil.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
siftr.c
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
tcp_hostcache.h
tcp_input.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
tcp_lro.c Trim the extra $FreeBSD$ from the comment below the license. We use 2012-05-26 10:28:11 +00:00
tcp_lro.h MFp4 bz_ipv6_fast: 2012-05-24 23:03:23 +00:00
tcp_offload.c
tcp_offload.h
tcp_output.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
tcp_reass.c Plug a TCP reassembly UMA zone leak introduced in r226113 by only using the 2011-11-27 02:32:08 +00:00
tcp_sack.c
tcp_seq.h Fix PAWS (Protect Against Wrapped Sequence numbers) in cases when 2012-02-15 16:09:56 +00:00
tcp_subr.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
tcp_syncache.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
tcp_syncache.h
tcp_timer.c Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcp_timer.h Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcp_timewait.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
tcp_usrreq.c Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcp_var.h When we receive an ICMP unreach need fragmentation datagram, we take 2012-04-16 13:49:03 +00:00
tcp.h Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcpip.h
toedev.h
udp_usrreq.c MFp4 bz_ipv6_fast: 2012-05-25 09:24:45 +00:00
udp_var.h Export the udp_cksum sysctl for upcoming SCTP work. Rather than always, 2012-03-27 15:14:29 +00:00
udp.h