1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-24 11:29:10 +00:00
freebsd/sys/netinet6
Andre Oppermann 1b4381afbb Restructure the mbuf pkthdr to make it fit for upcoming capabilities and
features.  The changes in particular are:

o Remove rarely used "header" pointer and replace it with a 64bit protocol/
  layer specific union PH_loc for local use.  Protocols can flexibly overlay
  their own 8 to 64 bit fields to store information while the packet is
  worked on.

o Mechanically convert IP reassembly, IGMP/MLD and ATM to use pkthdr.PH_loc
  instead of pkthdr.header.

o Extend csum_flags to 64bits to allow for additional future offload
  information to be carried (e.g. iSCSI, IPsec offload, and others).

o Move the RSS hash type enumerator from abusing m_flags to its own 8bit
  rsstype field.  Adjust accessor macros.

o Add cosqos field to store Class of Service / Quality of Service information
  with the packet.  It is not yet supported in any drivers but allows us to
  get on par with Cisco/Juniper in routing applications (plus MPLS QoS) with
  a modernized ALTQ.

o Add four 8 bit fields l[2-5]hlen to store the relative header offsets
  from the start of the packet.  This is important for various offload
  capabilities and to relieve the drivers from having to parse the packet
  and protocol headers to find out location of checksums and other
  information.  Header parsing in drivers is a lot of copy-paste and
  unhandled corner cases which we want to avoid.

o Add another flexible 64bit union to map various additional persistent
  packet information, like ether_vtag, tso_segsz and csum fields.
  Depending on the csum_flags settings some fields may have different usage
  making it very flexible and adaptable to future capabilities.

o Restructure the CSUM flags to better signify their outbound (down the
  stack) and inbound (up the stack) use.  The CSUM flags used to be a bit
  chaotic and rather poorly documented leading to incorrect use in many
  places.  Bring clarity into their use through better naming.
  Compatibility mappings are provided to preserve the API.  The drivers
  can be corrected one by one and MFC'd without issue.

o The size of pkthdr stays the same at 48/56bytes (32/64bit architectures).

Sponsored by:	The FreeBSD Foundation
2013-08-24 19:51:18 +00:00
..
dest6.c Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
frag6.c Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
icmp6.c - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
icmp6.h
in6_cksum.c MFp4 bz_ipv6_fast: 2012-05-24 18:25:09 +00:00
in6_gif.c Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
in6_gif.h Remove __P. 2012-10-22 21:49:56 +00:00
in6_ifattach.c Fix a panic in tmpaddrtimer. 2013-08-05 00:36:12 +00:00
in6_ifattach.h Use FF02:0:0:0:0:2:FF00::/104 prefix for IPv6 Node Information Group 2013-05-04 19:16:26 +00:00
in6_mcast.c Fix an integer overflow in computing the size of a temporary buffer 2013-08-22 00:51:37 +00:00
in6_pcb.c A complete duplication of binding should be allowed if on both new and 2013-07-12 19:08:33 +00:00
in6_pcb.h Remove __P. 2012-10-22 21:49:56 +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 Migrate structs ip6stat, icmp6stat and rip6stat to PCPU counters. 2013-07-09 09:54:54 +00:00
in6_rmx.c Eliminate code checking if found IPv6 rte is dynamic. IPv6 redirects 2012-10-22 12:54:52 +00:00
in6_src.c Fix accounting after the r249528, also add several another counters to 2013-04-16 11:31:26 +00:00
in6_var.h Migrate structs in6_ifstat and icmp6_ifstat to PCPU counters. 2013-07-09 09:59:46 +00:00
in6.c - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
in6.h - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
ip6_ecn.h
ip6_forward.c - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
ip6_id.c - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
ip6_input.c Migrate structs ip6stat, icmp6stat and rip6stat to PCPU counters. 2013-07-09 09:54:54 +00:00
ip6_ipsec.c Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
ip6_ipsec.h
ip6_mroute.c Add m_clrprotoflags() to clear protocol specific mbuf flags at up and 2013-08-19 13:27:32 +00:00
ip6_mroute.h Prepare network statistics structures for migration to PCPU counters. 2013-07-09 09:32:06 +00:00
ip6_output.c Restructure the mbuf pkthdr to make it fit for upcoming capabilities and 2013-08-24 19:51:18 +00:00
ip6_var.h Move the global M_SKIP_FIREWALL mbuf flags to a protocol layer specific 2013-08-19 11:08:36 +00:00
ip6.h
ip6protosw.h Remove __P. 2012-10-22 21:49:56 +00:00
mld6_var.h
mld6.c Restructure the mbuf pkthdr to make it fit for upcoming capabilities and 2013-08-24 19:51:18 +00:00
mld6.h
nd6_nbr.c - Use m_getcl() instead of hand allocating. 2013-03-15 13:48:53 +00:00
nd6_rtr.c - Use time_uptime instead of time_second in data structures for 2013-08-05 20:13:02 +00:00
nd6.c Add m_clrprotoflags() to clear protocol specific mbuf flags at up and 2013-08-19 13:27:32 +00:00
nd6.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
pim6_var.h Prepare network statistics structures for migration to PCPU counters. 2013-07-09 09:32:06 +00:00
pim6.h
raw_ip6.c Remove the large part of struct ipsecstat. Only few fields of this 2013-07-23 14:14:24 +00:00
raw_ip6.h Migrate structs ip6stat, icmp6stat and rip6stat to PCPU counters. 2013-07-09 09:54:54 +00:00
route6.c Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
scope6_var.h - Move definition of V_deembed_scopeid to scope6_var.h. 2012-12-05 19:45:24 +00:00
scope6.c Simplify in6_setscope() function to get better performance. 2013-01-10 00:10:24 +00:00
sctp6_usrreq.c Honor the net.inet6.ip6.v6only sysctl variable and the IPV6_V6ONLY 2013-05-10 18:09:38 +00:00
sctp6_var.h Add support for SCTP/UDP/IPV6. 2012-11-17 20:04:04 +00:00
send.c Add m_clrprotoflags() to clear protocol specific mbuf flags at up and 2013-08-19 13:27:32 +00:00
send.h Use uint8_t for sockaddr sa_len. 2011-06-05 11:40:30 +00:00
tcp6_var.h Remove __P. 2012-10-22 21:49:56 +00:00
udp6_usrreq.c Remove the large part of struct ipsecstat. Only few fields of this 2013-07-23 14:14:24 +00:00
udp6_var.h