From owner-freebsd-net@FreeBSD.ORG Sat Apr 14 03:06:06 2007 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5ACC216A403 for ; Sat, 14 Apr 2007 03:06:06 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from nz-out-0506.google.com (nz-out-0506.google.com [64.233.162.236]) by mx1.freebsd.org (Postfix) with ESMTP id 102E813C468 for ; Sat, 14 Apr 2007 03:06:05 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: by nz-out-0506.google.com with SMTP id r28so912106nza for ; Fri, 13 Apr 2007 20:06:05 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:received:received:date:from:to:cc:subject:message-id:reply-to:references:mime-version:content-type:content-disposition:in-reply-to:user-agent; b=S8868JiJX+GF3kG+VMswaSFCt8iqsrNb8A5pu6IrsEr6EuF1p6aBp2O6Mj+SV279z5ALIxKvFHZbaT50rid3OYjyK8gH3L/pJoWThp0JRnFtCT+ADn17beGZSqYT7Fc8T2jeZWBCyHyjJNW9RhI6QQtr0HMYSHM1LFrJ09FKTEM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:date:from:to:cc:subject:message-id:reply-to:references:mime-version:content-type:content-disposition:in-reply-to:user-agent; b=cFBghuIoyu0KhCjcrg6L/CeWhYIOS0rlAHFDIViyZZVDXOA7QIYnifpNlLAwJK0yeBNLoqnt7hnQ1U2Ar82WD+Y0G4T8JXGGNV952krFSYc8ZihgBNM9uQBUxvw0bYlqRAqb4HYStQYpW8P97B5avxxzPGL/D346P8P7/ptzb+g= Received: by 10.115.19.16 with SMTP id w16mr1201342wai.1176519965180; Fri, 13 Apr 2007 20:06:05 -0700 (PDT) Received: from michelle.cdnetworks.co.kr ( [211.53.35.84]) by mx.google.com with ESMTP id q20sm2186942pog.2007.04.13.20.06.01; Fri, 13 Apr 2007 20:06:03 -0700 (PDT) Received: from michelle.cdnetworks.co.kr (localhost.cdnetworks.co.kr [127.0.0.1]) by michelle.cdnetworks.co.kr (8.13.5/8.13.5) with ESMTP id l3E35wxR013469 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 14 Apr 2007 12:05:58 +0900 (KST) (envelope-from pyunyh@gmail.com) Received: (from yongari@localhost) by michelle.cdnetworks.co.kr (8.13.5/8.13.5/Submit) id l3E35uUT013468; Sat, 14 Apr 2007 12:05:56 +0900 (KST) (envelope-from pyunyh@gmail.com) Date: Sat, 14 Apr 2007 12:05:56 +0900 From: Pyun YongHyeon To: "Prokofiev S.P." Message-ID: <20070414030556.GA12777@cdnetworks.co.kr> References: <20070413104122.I17217@logos.uptel.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="nFreZHaLTZJo0R7j" Content-Disposition: inline In-Reply-To: <20070413104122.I17217@logos.uptel.net> User-Agent: Mutt/1.4.2.1i Cc: freebsd-net@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: Hang up/down re0: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Apr 2007 03:06:06 -0000 --nFreZHaLTZJo0R7j Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Apr 13, 2007 at 11:48:15AM +0300, Prokofiev S.P. wrote: > > I have a problem on FreeBSD 6.2-STABLE with NIC D-Link DGE-528(T). > When I put interface into promiscuous mode or output by tcpdump or simply > ifconfig xxx promisc/ifconfig xxx -promisc, the NIC hang down and then hang > up. > This is not normal behaviour... Please try attached patch and let me know the result. Thanks. -- Regards, Pyun YongHyeon --nFreZHaLTZJo0R7j Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="re.promisc.patch" Index: if_re.c =================================================================== RCS file: /home/ncvs/src/sys/dev/re/if_re.c,v retrieving revision 1.88 diff -u -r1.88 if_re.c --- if_re.c 28 Mar 2007 18:07:12 -0000 1.88 +++ if_re.c 14 Apr 2007 03:03:34 -0000 @@ -2509,10 +2509,18 @@ break; case SIOCSIFFLAGS: RL_LOCK(sc); - if (ifp->if_flags & IFF_UP) - re_init_locked(sc); - else if (ifp->if_drv_flags & IFF_DRV_RUNNING) - re_stop(sc); + if ((ifp->if_flags & IFF_UP) != 0) { + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { + if (((ifp->if_flags ^ sc->rl_if_flags) + & IFF_PROMISC) != 0) + re_setmulti(sc); + } else + re_init_locked(sc); + } else { + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + re_stop(sc); + } + sc->rl_if_flags = ifp->if_flags; RL_UNLOCK(sc); break; case SIOCADDMULTI: Index: ../../pci/if_rlreg.h =================================================================== RCS file: /home/ncvs/src/sys/pci/if_rlreg.h,v retrieving revision 1.64 diff -u -r1.64 if_rlreg.h --- ../../pci/if_rlreg.h 16 Jan 2007 20:35:23 -0000 1.64 +++ ../../pci/if_rlreg.h 14 Apr 2007 03:03:35 -0000 @@ -728,6 +728,7 @@ uint32_t rl_hwrev; uint32_t rl_rxlenmask; int rl_testmode; + int rl_if_flags; int suspended; /* 0 = normal 1 = suspended */ #ifdef DEVICE_POLLING int rxcycles; --nFreZHaLTZJo0R7j--