From owner-cvs-src@FreeBSD.ORG Sat Sep 17 10:16:05 2005 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F332216A41F; Sat, 17 Sep 2005 10:16:04 +0000 (GMT) (envelope-from ru@ip.net.ua) Received: from tigra.ip.net.ua (tigra.ip.net.ua [82.193.96.10]) by mx1.FreeBSD.org (Postfix) with ESMTP id 33F8F43D45; Sat, 17 Sep 2005 10:16:03 +0000 (GMT) (envelope-from ru@ip.net.ua) Received: from localhost (rocky.ip.net.ua [82.193.96.2]) by tigra.ip.net.ua (8.12.11/8.12.11) with ESMTP id j8HAFoWF003061; Sat, 17 Sep 2005 13:15:50 +0300 (EEST) (envelope-from ru@ip.net.ua) Received: from tigra.ip.net.ua ([82.193.96.10]) by localhost (rocky.ipnet [82.193.96.2]) (amavisd-new, port 10024) with LMTP id 14934-14; Sat, 17 Sep 2005 13:15:49 +0300 (EEST) Received: from heffalump.ip.net.ua (heffalump.ip.net.ua [82.193.96.213]) by tigra.ip.net.ua (8.12.11/8.12.11) with ESMTP id j8HAFbkb003056 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 17 Sep 2005 13:15:43 +0300 (EEST) (envelope-from ru@ip.net.ua) Received: (from ru@localhost) by heffalump.ip.net.ua (8.13.3/8.13.3) id j8HAFqUE046170; Sat, 17 Sep 2005 13:15:52 +0300 (EEST) (envelope-from ru) Date: Sat, 17 Sep 2005 13:15:52 +0300 From: Ruslan Ermilov To: Bill Paul Message-ID: <20050917101552.GC22151@ip.net.ua> References: <20050916.151301.122028383.imp@bsdimp.com> <20050916230608.AA96916A420@hub.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="uXxzq0nDebZQVNAZ" Content-Disposition: inline In-Reply-To: <20050916230608.AA96916A420@hub.freebsd.org> User-Agent: Mutt/1.5.9i X-Virus-Scanned: by amavisd-new at ip.net.ua Cc: cvs-all@FreeBSD.org, cvs-src@FreeBSD.org, src-committers@FreeBSD.org, jhb@FreeBSD.org, "M. Warner Losh" Subject: Re: cvs commit: src/sys/dev/re if_re.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Sep 2005 10:16:05 -0000 --uXxzq0nDebZQVNAZ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, On Fri, Sep 16, 2005 at 11:06:08PM +0000, Bill Paul wrote: > If you insist on sticking to the "no twiddling IFF_UP from inside > the driver" rule, then I think the problem can be avoided by simply not > being lazy in foo_ioctl() and actually having explicit code in SIOCSIFFLA= GS > case that turns promisc mode on and off on an IFF_PROMISC transition, > and is careful not to do it unless IFF_RUNNING is set. It also > needs to handle IFF_UP separately from IFF_PROMISC. I think the > correct logic would look something like: >=20 > if (IFF_UP was toggled up) > foo_init(sc); > else if (IFF_UP was toggled down) > foo_stop(sc); >=20 > if (IFF_PROMISC was toggled up && ifp->if_flags & IFF_RUNNING) > foo_set_promisc(sc); > else if (IFF_PROMISC was toggled down && ifp->if_flags & IFF_RUNNING) > foo_clear_promisc(sc); >=20 How about prototyping the "lazy" SIOCSIFFLAGS handler as follows: if (IFF_UP has toggled up) foo_init(); /* foo_init takes care of IFF_PROMISC etc. */ else if (IFF_UP has toggled down) foo_stop(); else if (IFF_DRV_RUNNING) { if (something interesting has toggled) foo_init(); } Non-lazy handlers can specifially process IFF_PROMISC|IFF_ALLMULTI toggles. For comparison, the current "lazy" handler is as follows: if (IFF_UP) foo_init(); else if (!IFF_UP & IFF_DRV_RUNNING) foo_stop(); I.e., it doesn't remember the previous state. Cheers, --=20 Ruslan Ermilov ru@FreeBSD.org FreeBSD committer --uXxzq0nDebZQVNAZ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (FreeBSD) iD8DBQFDK+zXqRfpzJluFF4RAolZAJ4y+0V9/QikPJBEuDECfo7TFuHxXQCfbLhK /Bn2nksCGiuLfm2uNuyzACU= =IevN -----END PGP SIGNATURE----- --uXxzq0nDebZQVNAZ--