From owner-p4-projects@FreeBSD.ORG Wed Jan 31 06:18:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CA8AA16A408; Wed, 31 Jan 2007 06:18:16 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 90C1216A405 for ; Wed, 31 Jan 2007 06:18:16 +0000 (UTC) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 817FD13C46B for ; Wed, 31 Jan 2007 06:18:16 +0000 (UTC) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0V6IGYL023204 for ; Wed, 31 Jan 2007 06:18:16 GMT (envelope-from csjp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0V6IGUi023201 for perforce@freebsd.org; Wed, 31 Jan 2007 06:18:16 GMT (envelope-from csjp@freebsd.org) Date: Wed, 31 Jan 2007 06:18:16 GMT Message-Id: <200701310618.l0V6IGUi023201@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to csjp@freebsd.org using -f From: "Christian S.J. Peron" To: Perforce Change Reviews Cc: Subject: PERFORCE change 113748 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Jan 2007 06:18:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=113748 Change 113748 by csjp@csjp_rnd01 on 2007/01/31 06:17:29 - Add counters for matching packets written to bpf - Add some additional counters for zero copy to assist with debugging Affected files ... .. //depot/projects/zcopybpf/src/sys/net/bpf.c#6 edit .. //depot/projects/zcopybpf/src/sys/net/bpfdesc.h#5 edit Differences ... ==== //depot/projects/zcopybpf/src/sys/net/bpf.c#6 (text+ko) ==== @@ -171,6 +171,7 @@ #ifdef BPF_ZEROCOPY case BPF_BUFMODE_ZBUF: + d->bd_zcopy++; return (bpf_zerocopy_append_bytes(d, buf, offset, src, len)); #endif @@ -190,6 +191,7 @@ #ifdef BPF_ZEROCOPY case BPF_BUFMODE_ZBUF: + d->bd_zcopy++; return (bpf_zerocopy_append_mbuf(d, buf, offset, src, len)); #endif @@ -795,23 +797,32 @@ int error; struct sockaddr dst; - if (d->bd_bif == NULL) + d->bd_wcount++; + if (d->bd_bif == NULL) { + d->bd_wdcount++; return (ENXIO); + } ifp = d->bd_bif->bif_ifp; - if ((ifp->if_flags & IFF_UP) == 0) + if ((ifp->if_flags & IFF_UP) == 0) { + d->bd_wdcount++; return (ENETDOWN); + } - if (uio->uio_resid == 0) + if (uio->uio_resid == 0) { + d->bd_wdcount++; return (0); + } bzero(&dst, sizeof(dst)); error = bpf_movein(uio, (int)d->bd_bif->bif_dlt, ifp->if_mtu, &m, &dst, d->bd_wfilter); - if (error) + if (error) { + d->bd_wdcount++; return (error); - + } + d->bd_wfcount++; if (d->bd_hdrcmplt) dst.sa_family = pseudo_AF_HDRCMPLT; @@ -822,6 +833,8 @@ #endif NET_LOCK_GIANT(); error = (*ifp->if_output)(ifp, m, &dst, NULL); + if (error) + d->bd_wdcount++; NET_UNLOCK_GIANT(); /* * The driver frees the mbuf. @@ -848,6 +861,10 @@ d->bd_rcount = 0; d->bd_dcount = 0; d->bd_fcount = 0; + d->bd_wcount = 0; + d->bd_wfcount = 0; + d->bd_wdcount = 0; + d->bd_zcopy = 0; } /* @@ -1921,6 +1938,10 @@ strlcpy(d->bd_ifname, bd->bd_bif->bif_ifp->if_xname, IFNAMSIZ); d->bd_locked = bd->bd_locked; + d->bd_wcount = bd->bd_wcount; + d->bd_wdcount = bd->bd_wdcount; + d->bd_wfcount = bd->bd_wfcount; + d->bd_zcopy = bd->bd_zcopy; } static int ==== //depot/projects/zcopybpf/src/sys/net/bpfdesc.h#5 (text+ko) ==== @@ -94,6 +94,10 @@ pid_t bd_pid; /* PID which created descriptor */ int bd_locked; /* true if descriptor is locked */ u_int bd_bufmode; /* Current buffer mode. */ + u_long bd_wcount; /* number of packets written */ + u_long bd_wfcount; /* number of packets that matched write filter */ + u_long bd_wdcount; /* number of packets dropped during a write */ + u_long bd_zcopy; /* number of zero copy operations */ }; /* Values for bd_state */ @@ -127,6 +131,10 @@ pid_t bd_pid; char bd_ifname[IFNAMSIZ]; int bd_locked; + u_long bd_wcount; + u_long bd_wfcount; + u_long bd_wdcount; + u_long bd_zcopy; }; #define BPFIF_LOCK(bif) mtx_lock(&(bif)->bif_mtx)