Index: sys/netinet/udp_usrreq.c =================================================================== --- sys/netinet/udp_usrreq.c (revision 316739) +++ sys/netinet/udp_usrreq.c (working copy) @@ -372,6 +372,9 @@ udp_append(struct inpcb *inp, struct ip *ip, struc append_sa = (struct sockaddr *)&udp_in[0]; m_adj(n, off); + /* Clear any h/w csum flags as they are no longer valid. */ + n->m_pkthdr.csum_flags &= ~(CSUM_DATA_VALID | CSUM_IP_VALID); + so = inp->inp_socket; SOCKBUF_LOCK(&so->so_rcv); if (sbappendaddr_locked(&so->so_rcv, append_sa, n, opts) == 0) { Index: sys/netinet6/udp6_usrreq.c =================================================================== --- sys/netinet6/udp6_usrreq.c (revision 316739) +++ sys/netinet6/udp6_usrreq.c (working copy) @@ -187,6 +187,9 @@ udp6_append(struct inpcb *inp, struct mbuf *n, int } m_adj(n, off + sizeof(struct udphdr)); + /* Clear any h/w csum flags as they are no longer valid. */ + n->m_pkthdr.csum_flags &= ~CSUM_DATA_VALID; + so = inp->inp_socket; SOCKBUF_LOCK(&so->so_rcv); if (sbappendaddr_locked(&so->so_rcv, (struct sockaddr *)&fromsa[0], n,