]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/if_loop.c
xnu-201.tar.gz
[apple/xnu.git] / bsd / net / if_loop.c
index 422303b87b98e2b7fff6e6cc0c65ffab1b0491b2..e8cef396f8f2201c3d5541770e8c9be633fb2a9e 100644 (file)
@@ -285,6 +285,9 @@ lo_output(ifp, m)
          */
        m->m_pkthdr.header = mtod(m, char *);
         m->m_pkthdr.aux = ifp; /* HACKERY */
+        m->m_pkthdr.csum_data = 0xffff; /* loopback checksums are always OK */
+        m->m_pkthdr.csum_flags = CSUM_DATA_VALID | CSUM_PSEUDO_HDR | 
+                               CSUM_IP_CHECKED | CSUM_IP_VALID;
        return dlil_input(ifp, m, m);
 }
 
@@ -605,6 +608,7 @@ loopattach(dummy)
                ifp->if_set_bpf_tap = lo_set_bpf_tap;
                ifp->if_output = lo_output;
                ifp->if_type = IFT_LOOP;
+               ifp->if_hwassist = 0; /* HW cksum on send side breaks Classic loopback */
                dlil_if_attach(ifp);
 #if NBPFILTER > 0
                bpfattach(ifp, DLT_NULL, sizeof(u_int));