From owner-freebsd-arch@FreeBSD.ORG Wed Nov 5 13:59:34 2003 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DD51C16A4D1; Wed, 5 Nov 2003 13:59:34 -0800 (PST) Received: from ebb.errno.com (ebb.errno.com [66.127.85.87]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9ECC743FCB; Wed, 5 Nov 2003 13:59:33 -0800 (PST) (envelope-from sam@errno.com) Received: from 66.127.85.91 ([66.127.85.91]) (authenticated bits=0) by ebb.errno.com (8.12.9/8.12.9) with ESMTP id hA5LxW0x086838 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO); Wed, 5 Nov 2003 13:59:33 -0800 (PST) (envelope-from sam@errno.com) From: Sam Leffler Organization: Errno Consulting To: Brian Fundakowski Feldman , arch@freebsd.org Date: Wed, 5 Nov 2003 14:01:27 -0800 User-Agent: KMail/1.5.3 References: <200311051804.hA5I4gga002370@green.bikeshed.org> In-Reply-To: <200311051804.hA5I4gga002370@green.bikeshed.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200311051401.27579.sam@errno.com> Subject: Re: __VA_ARGS__izing IEEE80211_DPRINTF[2]() X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Nov 2003 21:59:35 -0000 On Wednesday 05 November 2003 10:04 am, Brian Fundakowski Feldman wrote: > Would it be a problem to make the following change to src/sys/net80211 so > that the debug messages aren't totally useless for systems that have more > than one card (or confusing on systems that just have one)? Obviously, it > would also involve removing the extra parentheses in each of the callers as > well. > > Old: > #define IEEE80211_DPRINTF(X) if (ieee80211_debug) printf X > #define IEEE80211_DPRINTF2(X) if (ieee80211_debug>1) printf X > > New: > #define IEEE80211_DPRINTF(...) do { \ > if (ieee80211_debug) \ > if_printf(&ic->ic_ifp, __VA_ARGS__); \ > while (0) > > The only place this wouldn't work is ieee80211_decap(), so I'd change it to > add a local "ic" variable when compiled for debugging. There's an easy > fallback for non-C99 compilers, too; it just wouldn't print the interface: > > static __inline void > IEEE80211_DPRINTF(const char *fmt, ...) > { > > if (ieee80211_debug) { > va_list ap; > > va_start(ap, fmt); > (void)vprintf(fmt, ap); > va_end(ap); > } > } I can't see what your intent is from the above. If the point is to use if_printf everywhere so all the printfs have a device prepended to the message then I'm fine with that. However I think it's a bad idea to depend on local variables existing. If you're going to do it, then add an explicit argument to the macros. If you're trying to deal with debugging systems w/ multiple 802.11 cards then you probably want debugging enabled on a per-if basis which this doesn't address. Regardless, in all this remember that this code is shared with other systems so changes like this shouldn't be done lightly. Sam