aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/main.c
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2009-01-25 09:49:59 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 16:01:47 -0500
commit060210f938d8aa0b9d795588a2274cd67ba9d6a4 (patch)
tree74eceabb2bb5b945862f49e567bf862d243ff13a /drivers/net/wireless/b43/main.c
parent08e87a833f5e77ff33b64c9ac27cb7fb9ecd4a48 (diff)
b43: Dynamically control log verbosity
Dynamically control the log verbosity with a module parameter. This enables us to dynamically enable debugging messages (or disable info, warn, error messages) via module parameter or /sys/module/b43/parameters/verbose. This increases the module size by about 3k. But in practice it reduces the module size for the user, because some distributions ship the b43 module with CONFIG_B43_DEBUG set, which increases the module by about 15k. So with this patch applied, distributions should really _disable_ CONFIG_B43_DEBUG. There is no reason to keep it in a production-release kernel. So we have a net reduction in size by about 12k. This patch also adds a printk of the wireless core revision, so people don't have to enable SSB debugging to get the wireless core revision. Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/main.c')
-rw-r--r--drivers/net/wireless/b43/main.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index e41c10fd31d..dbb8765506e 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4,7 +4,7 @@
4 4
5 Copyright (c) 2005 Martin Langer <martin-langer@gmx.de> 5 Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>
6 Copyright (c) 2005 Stefano Brivio <stefano.brivio@polimi.it> 6 Copyright (c) 2005 Stefano Brivio <stefano.brivio@polimi.it>
7 Copyright (c) 2005, 2006 Michael Buesch <mb@bu3sch.de> 7 Copyright (c) 2005-2009 Michael Buesch <mb@bu3sch.de>
8 Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org> 8 Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org>
9 Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch> 9 Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch>
10 10
@@ -88,6 +88,10 @@ static int modparam_btcoex = 1;
88module_param_named(btcoex, modparam_btcoex, int, 0444); 88module_param_named(btcoex, modparam_btcoex, int, 0444);
89MODULE_PARM_DESC(btcoex, "Enable Bluetooth coexistance (default on)"); 89MODULE_PARM_DESC(btcoex, "Enable Bluetooth coexistance (default on)");
90 90
91int b43_modparam_verbose = B43_VERBOSITY_DEFAULT;
92module_param_named(verbose, b43_modparam_verbose, int, 0644);
93MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
94
91 95
92static const struct ssb_device_id b43_ssb_tbl[] = { 96static const struct ssb_device_id b43_ssb_tbl[] = {
93 SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5), 97 SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
@@ -300,6 +304,8 @@ void b43info(struct b43_wl *wl, const char *fmt, ...)
300{ 304{
301 va_list args; 305 va_list args;
302 306
307 if (b43_modparam_verbose < B43_VERBOSITY_INFO)
308 return;
303 if (!b43_ratelimit(wl)) 309 if (!b43_ratelimit(wl))
304 return; 310 return;
305 va_start(args, fmt); 311 va_start(args, fmt);
@@ -313,6 +319,8 @@ void b43err(struct b43_wl *wl, const char *fmt, ...)
313{ 319{
314 va_list args; 320 va_list args;
315 321
322 if (b43_modparam_verbose < B43_VERBOSITY_ERROR)
323 return;
316 if (!b43_ratelimit(wl)) 324 if (!b43_ratelimit(wl))
317 return; 325 return;
318 va_start(args, fmt); 326 va_start(args, fmt);
@@ -326,6 +334,8 @@ void b43warn(struct b43_wl *wl, const char *fmt, ...)
326{ 334{
327 va_list args; 335 va_list args;
328 336
337 if (b43_modparam_verbose < B43_VERBOSITY_WARN)
338 return;
329 if (!b43_ratelimit(wl)) 339 if (!b43_ratelimit(wl))
330 return; 340 return;
331 va_start(args, fmt); 341 va_start(args, fmt);
@@ -335,18 +345,18 @@ void b43warn(struct b43_wl *wl, const char *fmt, ...)
335 va_end(args); 345 va_end(args);
336} 346}
337 347
338#if B43_DEBUG
339void b43dbg(struct b43_wl *wl, const char *fmt, ...) 348void b43dbg(struct b43_wl *wl, const char *fmt, ...)
340{ 349{
341 va_list args; 350 va_list args;
342 351
352 if (b43_modparam_verbose < B43_VERBOSITY_DEBUG)
353 return;
343 va_start(args, fmt); 354 va_start(args, fmt);
344 printk(KERN_DEBUG "b43-%s debug: ", 355 printk(KERN_DEBUG "b43-%s debug: ",
345 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan"); 356 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan");
346 vprintk(fmt, args); 357 vprintk(fmt, args);
347 va_end(args); 358 va_end(args);
348} 359}
349#endif /* DEBUG */
350 360
351static void b43_ram_write(struct b43_wldev *dev, u16 offset, u32 val) 361static void b43_ram_write(struct b43_wldev *dev, u16 offset, u32 val)
352{ 362{
@@ -3589,9 +3599,7 @@ static int b43_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
3589 u8 algorithm; 3599 u8 algorithm;
3590 u8 index; 3600 u8 index;
3591 int err; 3601 int err;
3592#if B43_DEBUG 3602 static const u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
3593 static const u8 bcast_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
3594#endif
3595 3603
3596 if (modparam_nohwcrypt) 3604 if (modparam_nohwcrypt)
3597 return -ENOSPC; /* User disabled HW-crypto */ 3605 return -ENOSPC; /* User disabled HW-crypto */
@@ -4744,9 +4752,10 @@ static int b43_wireless_init(struct ssb_device *dev)
4744 INIT_WORK(&wl->txpower_adjust_work, b43_phy_txpower_adjust_work); 4752 INIT_WORK(&wl->txpower_adjust_work, b43_phy_txpower_adjust_work);
4745 4753
4746 ssb_set_devtypedata(dev, wl); 4754 ssb_set_devtypedata(dev, wl);
4747 b43info(wl, "Broadcom %04X WLAN found\n", dev->bus->chip_id); 4755 b43info(wl, "Broadcom %04X WLAN found (core revision %u)\n",
4756 dev->bus->chip_id, dev->id.revision);
4748 err = 0; 4757 err = 0;
4749 out: 4758out:
4750 return err; 4759 return err;
4751} 4760}
4752 4761