All of lore.kernel.org
 help / color / mirror / Atom feed
From: bruno randolf <bruno@thinktube.com>
To: "Luis R. Rodriguez" <mcgrof@gmail.com>
Cc: linville@tuxdriver.com, ath5k-devel@lists.ath5k.org,
	linux-wireless@vger.kernel.org,
	"Jiri Slaby" <jirislaby@gmail.com>,
	"Nick Kossifidis" <mickflemm@gmail.com>
Subject: Re: [ath5k-devel] ath5k: more consistent debug, info and error logging
Date: Thu, 22 Nov 2007 13:11:40 +0900	[thread overview]
Message-ID: <200711221311.42072.bruno@thinktube.com> (raw)
In-Reply-To: <43e72e890711201757m159a5147j3984c3f1555e5444@mail.gmail.com>

On Wednesday 21 November 2007 10:57:51 Luis R. Rodriguez wrote:
> thanks for this work BTW. CC'ing other maintainers, you probably just
> forgot. I know this is a pain but this is a pretty big patch, can you
> split it into a few for better review? I also know this is just debug
> stuff but it would help. One for each main task you mention below
> might do it, or something like that.

ok. i did that in my last 2 posts, but you are right - i missed your comments 
here. i will address them now, but please be aware, that the last 2 patches 
are slightly different, i.e. i renamed AR5K_... to ATH5K_... and a few 
smaller things to keep scripts/checkpatch.pl happy.

> > > +#define AR5K_PRINTK(_sc, _level, _fmt, ...) \
> > > +     printk(_level "ath5k %s: " _fmt, \
> > > +             ((_sc) && (_sc)->hw) ? wiphy_name((_sc)->hw->wiphy) : "",
> > > \ +             ##__VA_ARGS__)
> > > +
> > > +#define AR5K_PRINTK_LIMIT(_sc, _level, _fmt, ...) do { \
> > > +     if (net_ratelimit()) \
> > > +             AR5K_PRINTK(_sc, _level, _fmt, ##__VA_ARGS__); \
> > > +     } while (0)
> > > +
> > > +#define AR5K_INFO(_sc, _fmt, ...) \
> > > +     AR5K_PRINTK(_sc, KERN_INFO, _fmt, ##__VA_ARGS__)
> > > +
> > > +#define AR5K_WARN(_sc, _fmt, ...) \
> > > +     AR5K_PRINTK_LIMIT(_sc, KERN_WARNING, _fmt, ##__VA_ARGS__)
> > > +
> > > +#define AR5K_ERR(_sc, _fmt, ...) \
> > > +     AR5K_PRINTK_LIMIT(_sc, KERN_ERR, _fmt, ##__VA_ARGS__)
>
> I was kind of hoping we could stick to dev_[info|warn|err] for these.
> IIRC you had mentioned you can't get the device name printed? Is that
> right?

no. i print the name of the phyX device which i get with "wiphy_name()". i 
think this is more descriptive than the PCI bus id, especially if you want to 
match output from mac80211 to messages within ath5k. i do print a message 
like "ath5k_pci 0000:00:0e.0: registered as 'phy0'" via dev_info and from 
that point on the phyX device name is used.

anyways using these defines, and giving them sc gives us the possibility to 
switch them to use dev_info as well, we'd just have to change

#define ATH5K_PRINTK(_sc, _level, _fmt, ...) \
	dev_info(&(_sc)->pdev->dev, _fmt, ##__VA_ARGS__)

but i think, as i said above, using the phy name makes things clearer. also 
note that this is more or less the same as used in other mac80211 based 
drivers.

> > > diff --git a/drivers/net/wireless/ath5k/base.c
> > > b/drivers/net/wireless/ath5k/base.c index 77e3855..6ca7ebf 100644
> > > --- a/drivers/net/wireless/ath5k/base.c
> > > +++ b/drivers/net/wireless/ath5k/base.c
>
> Notice the license on base.[ch]. It's a "Dual GPL/BSD" license.
> Although all of our recent changes have been licensed the 3-clause-BSD
> for these files we did not verify the same for previous changes on
> MadWifi's files (stuff in base.[ch]) so its best to just keep the Dual
> license there for that code in case previous authors did intend on
> licesning their changes under the GPL (hence the problem with using
> vague "alternatively" language for Dual licensing). This presents a
> problem in trying to shift code on base.[ch] onto what you would think
> is an OK ISC-only licensed code. This is also the problem we knew we'd
> face down the road with trying to help OpenBSD -- in the end we may
> want to just shuffle around GPL code into ISC licensed code and well,
> then it becomes a pretty heavy nightmware for us to keep track of
> which part of the code is licensed under what for them.
>
> As we have it right now base.[ch] contains code which *may* have been
> patched in for GPL-only intentions (prior to kernel inclusion). In
> your patch series I'd like to see careful use of this shifting. If you
> are just deleting code, great, but if you are reusing code please
> either go through the git-log to see what license the changes were
> made (haha, good one huh!) or well lets just GPL those new files you
> are creating. The debug print stuff is pretty useless to other kernels
> too as its very specific to Linux.

ugh, that's getting complicated...

ok then. let's split it up into the 2 patches i've sent. i think the first one 
is pretty clear, as it just renames stuff, especially in base.c (i doubt that 
it's even worth a copyright claim). so would that be fine with a BSD license?

next: patch 2, debugging, is the complicated one, because i move stuff from 
base.c and hc.c to a different file, debugging.c (ath_printrxbuf(), 
ath_printtxbuf(), ath_dump_skb() and various other debugging parts). most of 
this code comes into git from Jiri Slaby's initial commit 88c37f32... "Net: 
add ath5k wireless driver" (git blame and git-gui is great!)

tracking things further than that is difficult but i found:

ath5k_printrxbuf() and ath5k_printtxbuf() also exist in a very similar way in 
madwifi, and it's pretty obvious they come from there, hence they are dual 
GPL/BSD licensed, right?

the debugging code i took out of ath_stoprecv() into a new function 
ath5k_debug_printrxbuffs() also seems to have it's origin in madwifi too, 
although modified for different list handling. so probably dual BSD/GPL too.

as far as i can tell ath_dump_skb and ath_dump_modes first appeared in Jiri 
Slaby's initial commit 88c37f32 so i'm not sure about their license. i found 
some messages which indicate that he intended GPL, but that did not hold or 
something?

ath5k_debug_dump_hwstate() clearly comes from openbsd 
ar5k_ar5212/11_dump_state, so it's ISC license (afaik, or BSD???).

so as a summary these are the functions i moved into debug.c:
function			source	license
-----------------------------------------------
ath5k_debug_printrxbuf()	madwifi	BSD/GPL
ath5k_debug_printrxbuffs()	madwifi	BSD/GPL
ath5k_debug_printtxbuf()	madwifi	BSD/GPL
ath5k_debug_dump_hwstate()	openbsd	ISC
ath5k_debug_dump_modes()	jiri	???
ath5k_debug_dump_skb()		jiri	???

+ it contains additional stuff (debugfs) which i made, therefore can license 
however i like.

which makes it license-able under what? i personally don't really care, and as 
you said it's only debugging stuff, so probably it won't go back into BSD 
systems anyways. at the same time as far as i understand we can take BSD 
stuff and re-license it under GPL, right, it's just not considered to be a 
nice thing to do. so would it be o.k. in this case to make debug.c licensed 
as GPL only?

anyhow i don't care about which license, and i don't want to get into license 
politics, but it is a real pain if we have to spend the same amount of time 
doing that kind of history searching as we spend coding - for every change we 
make. especially since most of this is probably irrelevant as nobody is going 
to port it back to BSD or it came from the ultra-permissive dual BSD/GPL 
anyways.

so please advise me which license is the most practical to use.

> > > 0x%x)\n", +     AR5K_INFO(sc, "Atheros AR%s chip found (MAC: 0x%x, PHY:
> > > 0x%x)\n", ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> > > sc->ah->ah_mac_srev,
> > >                                       sc->ah->ah_phy_revision);
> > > @@ -580,27 +490,28 @@ ath5k_pci_probe(struct pci_dev *pdev,
> > >               if(sc->ah->ah_radio_5ghz_revision &&
> > > !sc->ah->ah_radio_2ghz_revision) { /* No 5GHz support -> report 2GHz
> > > radio */ if(!test_bit(MODE_IEEE80211A,
> > > sc->ah->ah_capabilities.cap_mode)){ -                            
> > > dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n", +               
> > >              AR5K_INFO(sc, "RF%s 2GHz radio found (0x%x)\n",
> > > ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > sc->ah->ah_radio_5ghz_revision); /* No 2GHz support (5110 and some 5Ghz
> > > only cards) -> report 5Ghz radio */ } else
> > > if(!test_bit(MODE_IEEE80211B, sc->ah->ah_capabilities.cap_mode)){ -    
> > >                         dev_info(&pdev->dev, "RF%s 5GHz radio found
> > > (0x%x)\n", +                             AR5K_INFO(sc, "RF%s 5GHz radio
> > > found (0x%x)\n",
>
> See for example, here I wouldn't mind leaving dev_info, etc, with our
> own macros.

well i can change these lines back to use dev_info, but don't you think this 
output is o.k. too? an example:

ath5k_pci 0000:00:0e.0: registered as 'phy4'
ath5k phy4: Device only partially supported.
ath5k phy4: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
ath5k_pci 0000:00:0f.0: registered as 'phy5'
ath5k phy5: Atheros AR5213 chip found (MAC: 0x56, PHY: 0x41)
ath5k phy5: RF5111 5GHz radio found (0x17)
ath5k phy5: RF2111 2GHz radio found (0x23)

> > > +++ b/drivers/net/wireless/ath5k/debug.c
> > > @@ -0,0 +1,256 @@
> > > +/*
> > > + * Copyright (c) 2004-2007 Reyk Floeter <reyk@openbsd.org>
> > > + * Copyright (c) 2006-2007 Nick Kossifidis <mickflemm@gmail.com>
>
> You're adding unique code (debugfs stuff), you should add your
> Copyright entry here.

o.k.

> But note that this will look very different if 
> this is GPL'd. Please refer to SFLC's guidelines if you are to GPL
> these files (probably going to be needed).

> > > +     for (m = 0; m < NUM_DRIVER_MODES; m++) {
> > > +             printk(KERN_DEBUG "Mode %u: channels %d, rates %d\n", m,
> > > +                             modes[m].num_channels,
> > > modes[m].num_rates); +             printk(KERN_DEBUG " channels:\n");
>
> How about dev_dbg instead?

i think in general we should stick with one method, so that would be 
ATH5K_DBG. which in turn can be made to use dev_dbg if we choose to. but i 
made ATH5K_DBG rate limited (net_ratelimit()) so we can't use it to print 
several lines like this. i think it's ok, now, as all printk(KERN_DEBUG,... 
are within debug.[ch], and we can change it easily to have the same output 
like ATH5K_DGB. or we add another ATH5k_DBG_NONLIMITED or something?

> > > +     ATH_DEBUG_RESET         = 0x00000001,   /* reset processing */
> > > +     ATH_DEBUG_INTR          = 0x00000002,   /* ISR */
> > > +     ATH_DEBUG_MODE          = 0x00000004,   /* mode init/setup */
> > > +     ATH_DEBUG_XMIT          = 0x00000008,   /* basic xmit operation
> > > */ +     ATH_DEBUG_BEACON        = 0x00000010,   /* beacon handling */
> > > +     ATH_DEBUG_BEACON_PROC   = 0x00000020,   /* beacon ISR proc */ +  
> > >   ATH_DEBUG_CALIBRATE     = 0x00000100,   /* periodic calibration */ + 
> > >    ATH_DEBUG_TXPOWER       = 0x00000200,   /* transmit power */ +    
> > > ATH_DEBUG_LED           = 0x00000400,   /* led management */ +    
> > > ATH_DEBUG_DUMP_RX       = 0x00001000,   /* print received skb content
> > > */ +     ATH_DEBUG_DUMP_TX       = 0x00002000,   /* print transmit skb
> > > content */ +     ATH_DEBUG_DUMPSTATE     = 0x00004000,   /* dump
> > > register state */ +     ATH_DEBUG_DUMPMODES     = 0x00008000,   /* dump
> > > modes */ +     ATH_DEBUG_TRACE         = 0x00010000,   /* trace
> > > function calls */ +     ATH_DEBUG_FATAL         = 0x80000000,   /*
> > > fatal errors */ +     ATH_DEBUG_ANY           = 0xffffffff
> > > +};
>
> While you're at it can you move these to use kernel-doc? You'll have
> to name the enum, perhaps ath5k_debug ?

o.k.

thank you for your comments, luis!

i would appreciate it if you could give me more advice concerning the 
licensing issues as discussed above, so i can send in a correctly licensed 
patch.

bruno

  parent reply	other threads:[~2007-11-22  4:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-20  9:09 Bruno Randolf
     [not found] ` <200711201817.40243.bruno@thinktube.com>
2007-11-21  1:57   ` [ath5k-devel] ath5k: more consistent debug, info and error logging Luis R. Rodriguez
2007-11-21  8:56     ` bruno randolf
2007-11-22  4:11     ` bruno randolf [this message]
2007-11-22  4:45       ` bruno randolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200711221311.42072.bruno@thinktube.com \
    --to=bruno@thinktube.com \
    --cc=ath5k-devel@lists.ath5k.org \
    --cc=jirislaby@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=mcgrof@gmail.com \
    --cc=mickflemm@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.