From owner-freebsd-bugs@FreeBSD.ORG Sun Nov 20 08:10:10 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 94A2716A41F for ; Sun, 20 Nov 2005 08:10:10 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0974143D46 for ; Sun, 20 Nov 2005 08:10:10 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id jAK8A9OA067095 for ; Sun, 20 Nov 2005 08:10:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id jAK8A9GG067094; Sun, 20 Nov 2005 08:10:09 GMT (envelope-from gnats) Resent-Date: Sun, 20 Nov 2005 08:10:09 GMT Resent-Message-Id: <200511200810.jAK8A9GG067094@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Emmanuel GUEGAN Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4DE1816A420 for ; Sun, 20 Nov 2005 08:00:53 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [216.136.204.117]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3FF8443D66 for ; Sun, 20 Nov 2005 08:00:07 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id jAK806HA010784 for ; Sun, 20 Nov 2005 08:00:06 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id jAK806ni010783; Sun, 20 Nov 2005 08:00:06 GMT (envelope-from nobody) Message-Id: <200511200800.jAK806ni010783@www.freebsd.org> Date: Sun, 20 Nov 2005 08:00:06 GMT From: Emmanuel GUEGAN To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-2.3 Cc: Subject: misc/89305: D-Link NIC with VIA Rhine II, lost of Network and message displayed "vr0: rx packet lost" X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Nov 2005 08:10:10 -0000 >Number: 89305 >Category: misc >Synopsis: D-Link NIC with VIA Rhine II, lost of Network and message displayed "vr0: rx packet lost" >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Nov 20 08:10:09 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Emmanuel GUEGAN >Release: 6.0 >Organization: Assystem FRance >Environment: FreeBSD myserv 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Sat Nov 19 15:04:45 CET 2005 root@myserv:/usr/obj/usr/src/sys/MYKERN i386 >Description: I 'm using a Via Rhine II 100mb pci network card on a samba server (celeron 450 MHz). When I am doing a heavy net transfert (several windows pcs making big transfert at the same time / network speed above 3~4 M Bytes/sec), after a while ( 1-2minutes) the message "vr0: rx packet lost" is displayed in loop and the network link is definitivly lost >How-To-Repeat: As decribe above, very heavy network transfert, after a little time, the probleme is systematic after a little while >Fix: The message "vr0: packet lost" is known both in the functions vr_poll_locked(...) and vr_intr(...) : if (status & VR_ISR_RX_DROPPED) { printf("vr%d: rx packet lost\n", sc->vr_unit); ifp->if_ierrors++; } when the flag VR_ISR_RX_DROPPED is up, it is displayed, but in the next segment the test (status & VR_ISR_RX_DROPPED) is missing to enter in the condition so packetscannot be Tx above by vr_rxeoc(sc) if ((status & VR_ISR_RX_ERR) || (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_OFLOW)) { printf("vr%d: receive error (%04x)", sc->vr_unit, status); ... if (status & VR_ISR_RX_DROPPED) printf(" packet lost"); printf("\n"); vr_rxeoc(sc); } I propose this patch : RCS file: RCS/if_vr.c,v retrieving revision 1.1 diff -r1.1 if_vr.c 1198c1198,1200 < (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_OFLOW)) { --- > (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_OFLOW) > || (status & VR_ISR_RX_DROPPED) > ) { 1281c1283,1285 < (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_OFLOW)) { --- > (status & VR_ISR_RX_NOBUF) || (status & VR_ISR_RX_OFLOW) > || (status & VR_ISR_RX_DROPPED) > ) { >Release-Note: >Audit-Trail: >Unformatted: