From owner-freebsd-current@FreeBSD.ORG Sun Oct 17 08:07:05 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A404216A4CE for ; Sun, 17 Oct 2004 08:07:05 +0000 (GMT) Received: from mail6.speakeasy.net (mail6.speakeasy.net [216.254.0.206]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6745043D3F for ; Sun, 17 Oct 2004 08:07:05 +0000 (GMT) (envelope-from jmg@hydrogen.funkthat.com) Received: (qmail 12612 invoked from network); 17 Oct 2004 08:07:05 -0000 Received: from gate.funkthat.com (HELO hydrogen.funkthat.com) ([69.17.45.168]) (envelope-sender ) by mail6.speakeasy.net (qmail-ldap-1.03) with SMTP for ; 17 Oct 2004 08:07:04 -0000 Received: from hydrogen.funkthat.com (gbshkj@localhost.funkthat.com [127.0.0.1])i9H872lb092472; Sun, 17 Oct 2004 01:07:03 -0700 (PDT) (envelope-from jmg@hydrogen.funkthat.com) Received: (from jmg@localhost) by hydrogen.funkthat.com (8.12.10/8.12.10/Submit) id i9H86wWh092471; Sun, 17 Oct 2004 01:06:58 -0700 (PDT) Date: Sun, 17 Oct 2004 01:06:58 -0700 From: John-Mark Gurney To: Max Laier Message-ID: <20041017080658.GY22681@funkthat.com> Mail-Followup-To: Max Laier , freebsd-current@freebsd.org, Bruce M Simpson , Robert Huff , Andrey Chernov , Ian FREISLICH , Robert Watson , Kris Kennaway References: <20041014000822.GA30887@nagual.pp.ru> <20041014182715.GB665@empiric.icir.org> <20041014203132.GA54873@nagual.pp.ru> <200410151943.01797.max@love2party.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="3Pql8miugIZX0722" Content-Disposition: inline In-Reply-To: <200410151943.01797.max@love2party.net> User-Agent: Mutt/1.4.1i X-Operating-System: FreeBSD 4.2-RELEASE i386 X-PGP-Fingerprint: B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html cc: Bruce M Simpson cc: Robert Huff cc: Andrey Chernov cc: Ian FREISLICH cc: freebsd-current@freebsd.org cc: Robert Watson cc: Kris Kennaway Subject: Re: network slowness/freez-up since update 10/11 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: John-Mark Gurney List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Oct 2004 08:07:05 -0000 --3Pql8miugIZX0722 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Max Laier wrote this message on Fri, Oct 15, 2004 at 19:42 +0200: > Anyway, let's end this and get on to fixing it - shall we? I didn't try those patches, but I think I found the problem. I'm not sure why it would effect us now, and not a long time ago, but it appears that there was some optimization to drop back to processing only one packet at a time (and possibly process other packets in an interrupt), but something got broken... I ended up just eliminating the drop back to single packet delivery, and things over here seem to be doing well.. I've been running netperf's tcp stream for the last 20 minutes or so, and ping's ar still in the sub 10ms range.. usually around 4ms.. and most of the time I've been pushing around 11meg/sec to the machine (which generates around 300k transmit)... I'm now running transmits from the machine, but the performance isn't as good as it should be.. I'm getting only about 10meg/sec right now.. attached is the patch... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." --3Pql8miugIZX0722 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="if_de.c.diff" Index: if_de.c =================================================================== RCS file: /home/ncvs/src/sys/pci/if_de.c,v retrieving revision 1.158 diff -u -r1.158 if_de.c --- if_de.c 13 Aug 2004 22:48:05 -0000 1.158 +++ if_de.c 17 Oct 2004 07:52:55 -0000 @@ -117,7 +117,6 @@ static int tulip_ifmedia_change(struct ifnet * const ifp); static void tulip_ifmedia_status(struct ifnet * const ifp, struct ifmediareq *req); -static void tulip_ifstart_one(struct ifnet *ifp); static void tulip_ifstart(struct ifnet *ifp); static void tulip_init(tulip_softc_t * const sc); static void tulip_intr_shared(void *arg); @@ -4635,29 +4634,9 @@ break; } } - if (IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) - sc->tulip_if.if_start = tulip_ifstart_one; } TULIP_PERFEND(ifstart); -} - -static void -tulip_ifstart_one( - struct ifnet * const ifp) -{ - TULIP_PERFSTART(ifstart_one) - tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc; - - if ((sc->tulip_if.if_flags & IFF_RUNNING) - && !IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) { - struct mbuf *m; - IFQ_DRV_DEQUEUE(&sc->tulip_if.if_snd, m); - if(m == NULL); - else if((m = tulip_txput(sc, m)) != NULL) - IFQ_DRV_PREPEND(&sc->tulip_if.if_snd, m); - } - TULIP_PERFEND(ifstart_one); } /* --3Pql8miugIZX0722--