Created attachment 161607 [details] Patch for if_igb.h igb driver declare in sys/dev/e1000/if_igb.c: ifp->if_hwassist support (CSUM_TCP|CSUM_UDP|CSUM), but in sys/dev/e1000/if_igb.h: #define CSUM_OFFLOAD (CSUM_IP|CSUM_TCP|CSUM_UDP|CSUM_SCTP) this difference results = the not optimal in igb_tx_ctx_setup() in sys/dev/e1000/if_igb.c for packets other than TCP|UDP|SCTP. And i think not work TCP, UDP, SCTP offload for IPv6 (not check), then send IPv6 TCP or UDP network stack sets flags CSUM_TCP_IPV6 or CSUM_UDP_IPV6, but in if_hwassist no CSUM_TCP_IPV6|CSUM_UDP_IPV6. Hardware support it. http://www.intel.com/content/dam/doc/product-brief/82576-gbe-controller-brief.pdf
The way this works in the FreeBSD 12+ driver looks correct with respect to your patch. If you want to review the current settings take a look at isc_tx_csum_flags in if_em.c.