Date: Mon, 28 Jun 2010 20:09:22 GMT From: Alexandre Fiveg <afiveg@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 180303 for review Message-ID: <201006282009.o5SK9M3q071923@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@180303?ac=10 Change 180303 by afiveg@cottonmouth on 2010/06/28 20:09:14 Cosmetic bug fixes in libpcap Affected files ... .. //depot/projects/soc2010/ringmap/current/contrib/libpcap/pcap/pcap.h#2 edit .. //depot/projects/soc2010/ringmap/current/contrib/libpcap/ringmap_pcap.c#7 edit .. //depot/projects/soc2010/ringmap/current/sys/dev/e1000/if_lem.c#15 edit .. //depot/projects/soc2010/ringmap/current/sys/dev/e1000/if_lem.h#13 edit .. //depot/projects/soc2010/ringmap/current/sys/dev/e1000/ringmap_8254.c#14 edit .. //depot/projects/soc2010/ringmap/current/sys/dev/e1000/ringmap_8254.h#12 edit .. //depot/projects/soc2010/ringmap/current/sys/net/ringmap.c#18 edit .. //depot/projects/soc2010/ringmap/current/sys/net/ringmap.h#18 edit .. //depot/projects/soc2010/ringmap/scripts/build_ringmap.sh#3 edit .. //depot/projects/soc2010/ringmap/scripts/set_ringmap.sh#3 edit .. //depot/projects/soc2010/ringmap/tests/libpcap/easy_pcap.c#4 edit .. //depot/projects/soc2010/ringmap/tests/libpcap/test_pcap.c#4 edit Differences ... ==== //depot/projects/soc2010/ringmap/current/contrib/libpcap/pcap/pcap.h#2 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/current/contrib/libpcap/ringmap_pcap.c#7 (text+ko) ==== @@ -363,7 +363,7 @@ curr_slot = R_MODULO(SW_TAIL(ring) + 1); if (!(ring->slot[curr_slot].is_ok)) { #ifdef __RINGMAP_DEB - printf("Slot %d was not accepted by driver!\n"); + printf("Slot %d was not accepted by driver!\n", curr_slot); #endif goto out; } @@ -375,16 +375,16 @@ pkthdr.caplen = pkthdr.len = mb->m_len; datap = (caddr_t)U_PACKET(ring, curr_slot); + ring->pkt_counter++; + --ws; + (*callback)(user, &pkthdr, datap); out: + INC_TAIL(ring); + ring->slot[curr_slot].is_ok = 0; ring->slot[curr_slot].filtered = 0; - - INC_TAIL(ring); - ring->pkt_counter++; - - --ws; } RINGMAP_FUNC_DEBUG(end); ==== //depot/projects/soc2010/ringmap/current/sys/dev/e1000/if_lem.c#15 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/current/sys/dev/e1000/if_lem.h#13 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/current/sys/dev/e1000/ringmap_8254.c#14 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/current/sys/dev/e1000/ringmap_8254.h#12 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/current/sys/net/ringmap.c#18 (text+ko) ==== @@ -229,6 +229,8 @@ contigfree(rm->funcs, sizeof(struct ringmap_functions), M_DEVBUF); contigfree(rm, sizeof(struct ringmap), M_DEVBUF); + + rm = NULL; RINGMAP_FUNC_DEBUG(end); ==== //depot/projects/soc2010/ringmap/current/sys/net/ringmap.h#18 (text+ko) ==== @@ -231,26 +231,27 @@ */ void (*delayed_isr_per_packet)(struct ring *, int); -/* - * This function synchronize the tail and head hardware registers - * with head and tail software varibles, that are visible from - * software process. - * - * Synchronisation rules: - * 1. SYNC_HEAD: HARDWARE_HEAD => SOFTWARE_HEAD - * set value from hardware HEAD register into the software visible - * HEAD-variable: ring->kernrp. The User-space process shouldn't touch - * the ring->kernrp variable. Only hardware increment the value in the - * HEAD register onto adapters chip while receiving new packets, and only - * driver (kernel) synchronize then hardware HEAD with ring->kernrp. - * - * 2. SYNC_TAIL: SOFTWARE_TAIL => HARDWARE_TAIL - * set value from software TAIL-variable: ring->userrp into the hardware - * TAIL-register. Hardware shouldn't change the content of TAIL-register. - * Software after reading one packet in RAM increment the value of - * ring->userrp. Kernel will check this value and set it into the - * hardware TAIL-register. - */ + /* + * This function synchronize the tail and head hardware registers + * with head and tail software varibles, that are visible from + * software process. + * + * Synchronisation rules: + * 1. SYNC_HEAD: HARDWARE_HEAD => SOFTWARE_HEAD + * set value from hardware HEAD register into the software visible + * HEAD-variable: ring->kernrp. The User-space process shouldn't + * touch the ring->kernrp variable. Only hardware increment the value + * in the HEAD register onto adapters chip while receiving new + * packets, and only driver (kernel) synchronize then hardware HEAD + * with ring->kernrp. + * + * 2. SYNC_TAIL: SOFTWARE_TAIL => HARDWARE_TAIL + * set value from software TAIL-variable: ring->userrp into the + * hardware TAIL-register. Hardware shouldn't change the content of + * TAIL-register. Software after reading one packet in RAM increment + * the value of ring->userrp. Kernel will check this value and set it + * into the hardware TAIL-register. + */ void (*sync_head_tail)(device_t, struct ring *); }; @@ -267,6 +268,7 @@ /* RDT = (userrp - RING_SAFETY_MARGIN) mod SLOTS_NUMBER */ #define IOCTL_SYNC_HEAD_TAIL _IO(RINGMAP_IOC_MAGIC, 2) + /* * Disable interrupts on NIC. In some cases it is safe * to disable interrupts in order to avoid kernel panics @@ -397,7 +399,6 @@ if (__RINGMAP_DEB) printf(WARN_PREFIX"[%s]: " #x "\n", __func__); - #ifdef _KERNEL #define RINGMAP_PRINT_DESC(i) \ printf("[%s] - DESC INFO: desc_num=%d, status=0x%X, pktlen=%d\n[%s] - ADDRESSES: pkt_virt=0x%X (kern), pkt_phys=0x%X\n", \ @@ -427,9 +428,3 @@ pktp[32], \ pktp[59]); #endif - - - - - - ==== //depot/projects/soc2010/ringmap/scripts/build_ringmap.sh#3 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/scripts/set_ringmap.sh#3 (text+ko) ==== ==== //depot/projects/soc2010/ringmap/tests/libpcap/easy_pcap.c#4 (text+ko) ==== @@ -21,11 +21,10 @@ pcap_t *handle; - +unsigned int pcnt = 0; #define HOWMANY 20 - int main(int argc, char **argv) { @@ -68,5 +67,12 @@ void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) { - printf("got :) \n"); + pcnt++; + + printf("===> Packet %d \n", pcnt); + printf("Packet Length: %d \n", header->len); + printf("Time Stamp: %llu \n", + (header->ts.tv_sec*1000000 + header->ts.tv_usec)); + + printf("\n\n"); } ==== //depot/projects/soc2010/ringmap/tests/libpcap/test_pcap.c#4 (text+ko) ====
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006282009.o5SK9M3q071923>