Merge origin/netpush (networking code) (XCC)
[akaros.git] / kern / src / eth_audio.c
index 5dbc553..f5d20db 100644 (file)
@@ -71,8 +71,9 @@ static void eth_audio_sendpacket(void *buf)
         * Eth-audio device shouldn't care (and Linux seems to be okay with packets
         * that have no checksum (but not a wrong checksum)).  Technically, this
         * hurts our performance a bit (and some NICs can offload this). */
-       eth_udp_out.udp_hdr.checksum = htons(udp_checksum(&eth_udp_out.ip_hdr,
-                                                         &eth_udp_out.udp_hdr));
+       eth_udp_out.udp_hdr.checksum = 0;
+       eth_udp_out.udp_hdr.checksum = udp_checksum(&eth_udp_out.ip_hdr,
+                                                         &eth_udp_out.udp_hdr);
        /* Send it out */
        retval = send_frame((const char*)&eth_udp_out, ETH_AUDIO_FRAME_SZ);
        assert(retval >= 0);
@@ -100,7 +101,8 @@ static void eth_audio_prep_response(struct ethaud_udp_packet *incoming,
        outgoing->ip_hdr.src_addr = htonl(ntohl(incoming->ip_hdr.src_addr) + 1);
        outgoing->ip_hdr.dst_addr = incoming->ip_hdr.src_addr;
        /* Since the IP header is set already, we can compute the checksum. */
-       outgoing->ip_hdr.checksum = htons(ip_checksum(&outgoing->ip_hdr));
+       outgoing->ip_hdr.checksum = 0;
+       outgoing->ip_hdr.checksum = ip_checksum(&outgoing->ip_hdr);
        outgoing->udp_hdr.src_port = htons(ETH_AUDIO_SRC_PORT);
        outgoing->udp_hdr.dst_port = htons(ETH_AUDIO_DST_PORT);
        outgoing->udp_hdr.length = htons(ETH_AUDIO_PAYLOAD_SZ + UDP_HDR_SZ);
@@ -138,7 +140,7 @@ void eth_audio_newpacket(void *buf)
        /* Send the current outbound packet (can consider doing this by fsync) */
        eth_audio_sendpacket(page2kva(out_page));
        if (active_proc)
-               proc_notify(active_proc, NE_FREE_APPLE_PIE, 0);
+               proc_notify(active_proc, 0);
 }
 
 /* mmap() calls this to do any FS specific mmap() work.  Since our files are
@@ -167,7 +169,7 @@ int eth_audio_mmap(struct file *file, struct vm_region *vmr)
        if (active_proc && active_proc != vmr->vm_proc)
                return -1;
        if (!active_proc) {
-               kref_get(&vmr->vm_proc->kref, 1);
+               kref_get(&vmr->vm_proc->p_kref, 1);
                active_proc = vmr->vm_proc;
        }
        assert(page);
@@ -208,7 +210,7 @@ int eth_audio_release(struct inode *inode, struct file *file)
        /* Disconnect the proc from the device, decref. */
        if (active_proc && current) {
                assert(active_proc == current);
-               kref_put(&active_proc->kref);
+               kref_put(&active_proc->p_kref);
                active_proc = 0;
        }
        return 0;