freebsd-dev/sys/netinet6
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
..
dest6.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
frag6.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
icmp6.c MFp4 bz_ipv6_fast: 2012-05-25 01:42:48 +00:00
icmp6.h
in6_cksum.c MFp4 bz_ipv6_fast: 2012-05-24 18:25:09 +00:00
in6_gif.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_gif.h
in6_ifattach.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_ifattach.h
in6_mcast.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_pcb.c in6_pcblookup_local() still can return a pcb with NULL 2012-03-21 08:43:38 +00:00
in6_pcb.h Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_pcbgroup.c Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_proto.c o Convert IPv6 read-only stats sysctls to the read-write ones. 2011-12-19 05:50:34 +00:00
in6_rmx.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_src.c MFp4 bz_ipv6_fast: 2012-05-25 01:45:05 +00:00
in6_var.h Provide the IPv6 counterpart to the extended IPv4 rtalloc(9) KPI. 2012-02-03 09:33:58 +00:00
in6.c When using flowtable llentrys can outlive the interface with which they're associated 2012-02-23 18:21:37 +00:00
in6.h MFp4 bz_ipv6_fast: 2012-05-24 18:25:09 +00:00
ip6_ecn.h
ip6_forward.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
ip6_id.c
ip6_input.c MFp4 bz_ipv6_fast: 2012-05-25 02:58:21 +00:00
ip6_ipsec.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
ip6_ipsec.h
ip6_mroute.c o Convert IPv6 read-only stats sysctls to the read-write ones. 2011-12-19 05:50:34 +00:00
ip6_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip6_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
ip6_var.h MFp4 bz_ipv6_fast: 2012-05-25 01:48:15 +00:00
ip6.h
ip6protosw.h Introduce an infrastructure for dismantling vnet instances. 2009-06-08 17:15:40 +00:00
mld6_var.h Use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to signal a join or leave 2009-12-22 20:40:22 +00:00
mld6.c Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
mld6.h
nd6_nbr.c Allow to provide a hint to in6_selectsrc() for the interface using the 2012-02-14 11:51:32 +00:00
nd6_rtr.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
nd6.c MFp4 bz_ipv6_fast: 2012-05-25 09:27:16 +00:00
nd6.h Mark a couple of file local functions static and stop exporting them. 2012-01-05 01:14:35 +00:00
pim6_var.h
pim6.h
raw_ip6.c Add SO_SETFIB option support on PF_INET6 sockets and allow inheriting the 2012-02-03 11:00:53 +00:00
raw_ip6.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
route6.c MFp4 bz_ipv6_fast: 2012-05-25 01:43:52 +00:00
scope6_var.h MFp4 bz_ipv6_fast: 2012-05-24 16:30:13 +00:00
scope6.c MFp4 bz_ipv6_fast: 2012-05-24 16:30:13 +00:00
sctp6_usrreq.c Get rid of SCTP specific code to avoid CRC32C computations on loopback. 2012-05-26 09:16:33 +00:00
sctp6_var.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
send.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
send.h Use uint8_t for sockaddr sa_len. 2011-06-05 11:40:30 +00:00
tcp6_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
udp6_usrreq.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
udp6_var.h