Index: sys/sys/mbuf.h =================================================================== --- sys/sys/mbuf.h +++ sys/sys/mbuf.h @@ -187,35 +187,46 @@ }; }; union { - uint8_t eight[8]; - uint16_t sixteen[4]; - uint32_t thirtytwo[2]; - uint64_t sixtyfour[1]; - uintptr_t unintptr[1]; - void *ptr; - } PH_per; + union { + uint8_t eight[8]; + uint16_t sixteen[4]; + uint32_t thirtytwo[2]; + uint64_t sixtyfour[1]; + uintptr_t unintptr[1]; + void *ptr; + } PH_per; + struct { /* Ethernet */ + uint16_t ether_vtag; /* in and out */ + uint32_t csum_data; /* inbound */ + }; + uint16_t vt_nrecs; /* IGMP and MLD6 */ + struct { /* TCP */ + uint16_t tcp_tun_port; /* in and out (tcp_respond) */ + struct { + uint16_t tso_segsz; /* outbound */ + uint16_t lro_nsegs; /* inbound after LRO */ + }; + }; + }; /* Layer specific non-persistent local storage for reassembly, etc. */ union { - uint8_t eight[8]; - uint16_t sixteen[4]; - uint32_t thirtytwo[2]; - uint64_t sixtyfour[1]; - uintptr_t unintptr[1]; - void *ptr; - } PH_loc; + union { + uint8_t eight[8]; + uint16_t sixteen[4]; + uint32_t thirtytwo[2]; + uint64_t sixtyfour[1]; + uintptr_t unintptr[1]; + void *ptr; + } PH_loc; + struct { /* TCP: inbound during LRO (no reassembly) */ + uint16_t lro_tcp_d_len; + uint16_t lro_tcp_d_csum; + uint16_t lro_tcp_h_off; + uint16_t lro_etype; + }; + }; }; -#define ether_vtag PH_per.sixteen[0] -#define tcp_tun_port PH_per.sixteen[0] /* outbound */ -#define vt_nrecs PH_per.sixteen[0] /* mld and v6-ND */ -#define tso_segsz PH_per.sixteen[1] /* inbound after LRO */ -#define lro_nsegs tso_segsz /* inbound after LRO */ -#define csum_data PH_per.thirtytwo[1] /* inbound from hardware up */ -#define lro_tcp_d_len PH_loc.sixteen[0] /* inbound during LRO (no reassembly) */ -#define lro_tcp_d_csum PH_loc.sixteen[1] /* inbound during LRO (no reassembly) */ -#define lro_tcp_h_off PH_loc.sixteen[2] /* inbound during LRO (no reassembly) */ -#define lro_etype PH_loc.sixteen[3] /* inbound during LRO (no reassembly) */ -/* Note PH_loc is used during IP reassembly (all 8 bytes as a ptr) */ /* * TLS records for TLS 1.0-1.2 can have the following header lengths: