From owner-freebsd-bugs@FreeBSD.ORG Sat Oct 23 12:20:15 2004 Return-Path: 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 0186016A4CE for ; Sat, 23 Oct 2004 12:20:15 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id DA6F243D49 for ; Sat, 23 Oct 2004 12:20:14 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.11/8.12.11) with ESMTP id i9NCKE5b016811 for ; Sat, 23 Oct 2004 12:20:14 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i9NCKEHx016810; Sat, 23 Oct 2004 12:20:14 GMT (envelope-from gnats) Resent-Date: Sat, 23 Oct 2004 12:20:14 GMT Resent-Message-Id: <200410231220.i9NCKEHx016810@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, Arjan de Vet Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9C9F816A4CE for ; Sat, 23 Oct 2004 12:10:51 +0000 (GMT) Received: from a80-126-165-168.adsl.xs4all.nl (a80-126-165-168.adsl.xs4all.nl [80.126.165.168]) by mx1.FreeBSD.org (Postfix) with ESMTP id BD82943D39 for ; Sat, 23 Oct 2004 12:10:50 +0000 (GMT) (envelope-from devet@devet.org) Received: from adv.devet.org (adv.devet.org [192.168.1.2]) by a80-126-165-168.adsl.xs4all.nl (Postfix) with ESMTP id B263EC990 for ; Sat, 23 Oct 2004 14:10:49 +0200 (CEST) Received: by adv.devet.org (Postfix, from userid 100) id A20631938D; Sat, 23 Oct 2004 14:10:49 +0200 (CEST) Message-Id: <20041023121049.A20631938D@adv.devet.org> Date: Sat, 23 Oct 2004 14:10:49 +0200 (CEST) From: Arjan de Vet To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/73038: if_sk.c seems to need IFF_NEEDSGIANT on 5.3-BETA/RC1 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Arjan de Vet List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Oct 2004 12:20:15 -0000 >Number: 73038 >Category: kern >Synopsis: if_sk.c seems to need IFF_NEEDSGIANT on 5.3-BETA/RC1 >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Oct 23 12:20:14 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Arjan de Vet >Release: FreeBSD 5.3-RC1 i386 >Organization: >Environment: System: FreeBSD adv.devet.org 5.3-RC1 FreeBSD 5.3-RC1 #7: Sat Oct 23 13:49:58 CEST 2004 root@adv.devet.org:/usr/obj/usr/src/sys/ADV i386 >Description: After upgrading from 5.2.1-RELEASE to 5.3-BETA/RC, my sk0 network interface on an ASUS P4P800 motherboard mangles network connections (broken ssh connections, broken web pages). skc0: <3Com 3C940 Gigabit Ethernet> port 0xd800-0xd8ff mem 0xfeafc000-0xfeafffff irq 22 at device 5.0 on pci2 skc0: 3Com Gigabit LOM (3C940) sk0: on skc0 sk0: Ethernet address: 00:0c:6e:ea:f1:ba sk0: if_start running deferred for Giant miibus0: on sk0 e1000phy0: on miibus0 e1000phy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX, auto First workaround is to put debug.mpsafenet="0" in /boot/loader.conf. Another workaround seems to be adding the IFF_NEEDSGIANT flag to the if_sk.c driver. See patch below. >How-To-Repeat: SSH into another machine and give a command that produces lots of output ('ls -alR /') and watch the ssh-connection break with some weird error message. >Fix: Index: if_sk.c =================================================================== RCS file: /home/freebsd/CVS/src/sys/pci/if_sk.c,v retrieving revision 1.83.2.2 diff -u -r1.83.2.2 if_sk.c --- if_sk.c 25 Aug 2004 21:19:06 -0000 1.83.2.2 +++ if_sk.c 23 Oct 2004 11:47:50 -0000 @@ -1375,7 +1375,7 @@ ifp->if_softc = sc_if; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_mtu = ETHERMTU; - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | IFF_NEEDSGIANT; ifp->if_ioctl = sk_ioctl; ifp->if_start = sk_start; ifp->if_watchdog = sk_watchdog; >Release-Note: >Audit-Trail: >Unformatted: