b43: logging cleanups
Subsystems (3)
cover b43: logging cleanups
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use local ratelimit_state drivers/net/wireless/b43: Logging cleanups drivers/net/wireless/b43: Rename b43_debug to b43_debugging
drivers/net/wireless/b43/b43.h | 17 +-- drivers/net/wireless/b43/debugfs.c | 16 +- drivers/net/wireless/b43/debugfs.h | 4 +- drivers/net/wireless/b43/dma.c | 125 ++++++++--------- drivers/net/wireless/b43/leds.c | 6 +- drivers/net/wireless/b43/lo.c | 37 +++--- drivers/net/wireless/b43/main.c | 252 +++++++++++++++++---------------- drivers/net/wireless/b43/pcmcia.c | 3 +- drivers/net/wireless/b43/phy_a.c | 11 +- drivers/net/wireless/b43/phy_common.c | 7 +- drivers/net/wireless/b43/phy_g.c | 62 ++++---- drivers/net/wireless/b43/phy_lp.c | 17 ++- drivers/net/wireless/b43/phy_n.c | 30 ++-- drivers/net/wireless/b43/pio.c | 12 +- drivers/net/wireless/b43/rfkill.c | 4 +- drivers/net/wireless/b43/sysfs.c | 3 +- drivers/net/wireless/b43/xmit.c | 10 +- 17 files changed, 304 insertions(+), 312 deletions(-)
PATCH 1/3 drivers/net/wireless/b43: Use local ratelimit_state
Avoid limiting the logging output of other networking devices
--- drivers/net/wireless/b43/main.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/net/wireless/b43/main.c +3 -1
@@ -311,13 +311,15 @@ static int b43_wireless_core_start(struct b43_wldev *dev);static int b43_ratelimit (struct b43_wl *wl) { + static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 10); +if (!wl || !wl->current_dev)return 1 ;if (b43_status (wl->current_dev) <B43_STAT_STARTED )return 1 ;/* We are up and running. * Ratelimit the messages to avoid DoS over the net. */ -return net_ratelimit (); +return __ratelimit (&ratelimit); }void b43info (struct b43_wl *wl,const char *fmt, ...)
Signature · 6 lines
1.7.1.337.g6068.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/3 drivers/net/wireless/b43: Logging cleanups
In reply to Joe PerchesConvert the logging macros and printks to a more standardized style. Add underscores to b43 logging macros:
b43info -> b43_info b43err -> b43_err b43warn -> b43_warn b43dbg -> b43_dbg
Use pr_<level> in a few places.
Add KERN_<level> in a few places.
Coalesced some format strings.
--- drivers/net/wireless/b43/b43.h | 17 +-- drivers/net/wireless/b43/debugfs.c | 14 +- drivers/net/wireless/b43/dma.c | 115 ++++++++--------- drivers/net/wireless/b43/leds.c | 6 +- drivers/net/wireless/b43/lo.c | 31 ++--- drivers/net/wireless/b43/main.c | 232 ++++++++++++++++---------------- drivers/net/wireless/b43/pcmcia.c | 3 +- drivers/net/wireless/b43/phy_a.c | 11 +- drivers/net/wireless/b43/phy_common.c | 7 +- drivers/net/wireless/b43/phy_g.c | 54 ++++---- drivers/net/wireless/b43/phy_lp.c | 17 ++- drivers/net/wireless/b43/phy_n.c | 30 ++-- drivers/net/wireless/b43/pio.c | 12 +- drivers/net/wireless/b43/rfkill.c | 4 +- drivers/net/wireless/b43/sysfs.c | 3 +- drivers/net/wireless/b43/xmit.c | 10 +- 16 files changed, 278 insertions(+), 288 deletions(-)
drivers/net/wireless/b43/b43.h +8 -9
@@ -895,15 +895,14 @@ static inline bool b43_using_pio_transfers(struct b43_wldev *dev)#endif /* Message printing */ -void b43info (struct b43_wl *wl,const char *fmt, ...) - __attribute__ ((format (printf,2 ,3 ))); -void b43err (struct b43_wl *wl,const char *fmt, ...) - __attribute__ ((format (printf,2 ,3 ))); -void b43warn (struct b43_wl *wl,const char *fmt, ...) - __attribute__ ((format (printf,2 ,3 ))); -void b43dbg (struct b43_wl *wl,const char *fmt, ...) - __attribute__ ((format (printf,2 ,3 ))); - +void b43_info (struct b43_wl *wl,const char *fmt, ...) + __attribute__ ((format (printf,2 ,3 ))); +void b43_err (struct b43_wl *wl,const char *fmt, ...) + __attribute__ ((format (printf,2 ,3 ))); +void b43_warn (struct b43_wl *wl,const char *fmt, ...) + __attribute__ ((format (printf,2 ,3 ))); +void b43_dbg (struct b43_wl *wl,const char *fmt, ...) + __attribute__ ((format (printf,2 ,3 )));/* A WARN_ON variant that vanishes when b43 debugging is disabled. * This _also_ evaluates the arg with debugging disabled. */
drivers/net/wireless/b43/debugfs.c +7 -7
@@ -68,7 +68,7 @@ struct b43_dfs_file *fops_to_dfs_file(struct b43_wldev *dev, bufsize - count, \ fmt , ##x); \ else \ -printk (KERN_ERR "b43: fappend overflow\n" ); \ +pr_err ("b43: fappend overflow\n" ); \ }while (0 )
@@ -703,7 +703,7 @@ void b43_debugfs_add_device(struct b43_wldev *dev)B43_WARN_ON (!dev); e =kzalloc (sizeof (*e),GFP_KERNEL );if (!e) { -b43err (dev->wl,"debugfs: add device OOM\n" ); +b43_err (dev->wl,"debugfs: add device OOM\n" );return ; } e->dev = dev;
@@ -711,7 +711,7 @@ void b43_debugfs_add_device(struct b43_wldev *dev) log->log =kcalloc (B43_NR_LOGGED_TXSTATUS ,sizeof (struct b43_txstatus ),GFP_KERNEL );if (!log->log) { -b43err (dev->wl,"debugfs: add device txstatus OOM\n" ); +b43_err (dev->wl,"debugfs: add device txstatus OOM\n" );kfree (e);return ; }
@@ -723,11 +723,11 @@ void b43_debugfs_add_device(struct b43_wldev *dev) e->subdir =debugfs_create_dir (devdir, rootdir);if (!e->subdir ||IS_ERR (e->subdir)) {if (e->subdir ==ERR_PTR (-ENODEV )) { -b43dbg (dev->wl,"DebugFS (CONFIG_DEBUG_FS) not " -"enabled in kernel config\n" ); +b43_dbg (dev->wl, +"DebugFS (CONFIG_DEBUG_FS) not enabled in kernel config\n" ); }else { -b43err (dev->wl,"debugfs: cannot create %s directory\n" , - devdir); +b43_err (dev->wl,"debugfs: cannot create %s directory\n" , + devdir); } dev->dfsentry =NULL ;kfree (log->log);
drivers/net/wireless/b43/dma.c +56 -59
262 lines not on this page · raw message
drivers/net/wireless/b43/leds.c +3 -3
@@ -140,7 +140,7 @@ static int b43_register_led(struct b43_wldev *dev, struct b43_led *led, err =led_classdev_register (dev->dev->dev, &led->led_dev);if (err) { -b43warn (dev->wl,"LEDs: Failed to register %s\n" , name); +b43_warn (dev->wl,"LEDs: Failed to register %s\n" , name); led->wl =NULL ;return err; }
@@ -204,8 +204,8 @@ static void b43_map_led(struct b43_wldev *dev, led_index, activelow);break ;default : -b43warn (dev->wl,"LEDs: Unknown behaviour 0x%02X\n" , - behaviour); +b43_warn (dev->wl,"LEDs: Unknown behaviour 0x%02X\n" , + behaviour);break ; } }
drivers/net/wireless/b43/lo.c +15 -16
@@ -62,8 +62,8 @@ static void b43_lo_write(struct b43_wldev *dev, struct b43_loctl *control)if (B43_DEBUG ) {if (unlikely (abs (control->i) >16 ||abs (control->q) >16 )) { -b43dbg (dev->wl,"Invalid LO control pair " -"(I: %d, Q: %d)\n" , control->i, control->q); +b43_dbg (dev->wl,"Invalid LO control pair " +"(I: %d, Q: %d)\n" , control->i, control->q);dump_stack ();return ; }
@@ -775,15 +775,15 @@ struct b43_lo_calib *b43_calibrate_lo_setting(struct b43_wldev *dev,b43_mac_enable (dev);if (b43_debug (dev,B43_DBG_LO )) { -b43dbg (dev->wl,"LO: Calibrated for BB(%u), RF(%u,%u) " -"=> I=%d Q=%d\n" , - bbatt->att, rfatt->att, rfatt->with_padmix, - loctl.i, loctl.q); +b43_dbg (dev->wl,"LO: Calibrated for BB(%u), RF(%u,%u) " +"=> I=%d Q=%d\n" , + bbatt->att, rfatt->att, rfatt->with_padmix, + loctl.i, loctl.q); } cal =kmalloc (sizeof (*cal),GFP_KERNEL );if (!cal) { -b43warn (dev->wl,"LO calib: out of memory\n" ); +b43_warn (dev->wl,"LO calib: out of memory\n" );return NULL ; }memcpy (&cal->bbatt, bbatt,sizeof (*bbatt));
@@ -857,8 +857,7 @@ void b43_gphy_dc_lt_init(struct b43_wldev *dev, bool update_all) cal =b43_calibrate_lo_setting (dev, bbatt, rfatt);if (!cal) { -b43warn (dev->wl,"LO: Could not " -"calibrate DC table entry\n" ); +b43_warn (dev->wl,"LO: Could not calibrate DC table entry\n" );continue ; }/*FIXME: Is Q really in the low nibble? */
@@ -973,11 +972,11 @@ void b43_lo_g_maintanance_work(struct b43_wldev *dev) current_item_expired =1 ; }if (b43_debug (dev,B43_DBG_LO )) { -b43dbg (dev->wl,"LO: Item BB(%u), RF(%u,%u), " -"I=%d, Q=%d expired\n" , - cal->bbatt.att, cal->rfatt.att, - cal->rfatt.with_padmix, - cal->ctl.i, cal->ctl.q); +b43_dbg (dev->wl,"LO: Item BB(%u), RF(%u,%u), " +"I=%d, Q=%d expired\n" , + cal->bbatt.att, cal->rfatt.att, + cal->rfatt.with_padmix, + cal->ctl.i, cal->ctl.q); }list_del (&cal->list);kfree (cal);
@@ -985,13 +984,13 @@ void b43_lo_g_maintanance_work(struct b43_wldev *dev)if (current_item_expired ||unlikely (list_empty (&lo->calib_list))) {/* Recalibrate currently used LO setting. */ if (b43_debug (dev,B43_DBG_LO )) -b43dbg (dev->wl,"LO: Recalibrating current LO setting\n" ); +b43_dbg (dev->wl,"LO: Recalibrating current LO setting\n" ); cal =b43_calibrate_lo_setting (dev, &gphy->bbatt, &gphy->rfatt);if (cal) {list_add (&cal->list, &lo->calib_list);b43_lo_write (dev, &cal->ctl); }else -b43warn (dev->wl,"Failed to recalibrate current LO setting\n" ); +b43_warn (dev->wl,"Failed to recalibrate current LO setting\n" ); } }
drivers/net/wireless/b43/main.c +116 -116
688 lines not on this page · raw message
drivers/net/wireless/b43/pcmcia.c +1 -2
@@ -117,8 +117,7 @@ err_disable: err_kfree_ssb:kfree (ssb); out_error: -printk (KERN_ERR "b43-pcmcia: Initialization failed (%d, %d)\n" , - res, err); +pr_err ("b43-pcmcia: Initialization failed (%d, %d)\n" , res, err);return err; }
drivers/net/wireless/b43/phy_a.c +5 -6
@@ -344,8 +344,7 @@ static int b43_aphy_init_tssi2dbm_table(struct b43_wldev *dev)/* pabX values not set in SPROM, * but APHY needs a generated table. */ aphy->tssi2dbm =NULL ; -b43err (dev->wl,"Could not generate tssi2dBm " -"table (wrong SPROM info)!\n" ); +b43_err (dev->wl,"Could not generate tssi2dBm table (wrong SPROM info)!\n" );return -ENODEV ; }
@@ -427,14 +426,14 @@ static inline u16 adjust_phyreg(struct b43_wldev *dev, u16 offset)#if B43_DEBUG if ((offset &B43_PHYROUTE ) ==B43_PHYROUTE_EXT_GPHY ) {/* Ext-G registers are only available on G-PHYs */ -b43err (dev->wl,"Invalid EXT-G PHY access at " -"0x%04X on A-PHY\n" , offset); +b43_err (dev->wl,"Invalid EXT-G PHY access at " +"0x%04X on A-PHY\n" , offset);dump_stack (); }if ((offset &B43_PHYROUTE ) ==B43_PHYROUTE_N_BMODE ) {/* N-BMODE registers are only available on N-PHYs */ -b43err (dev->wl,"Invalid N-BMODE PHY access at " -"0x%04X on A-PHY\n" , offset); +b43_err (dev->wl,"Invalid N-BMODE PHY access at " +"0x%04X on A-PHY\n" , offset);dump_stack (); }#endif /* B43_DEBUG */
drivers/net/wireless/b43/phy_common.c +3 -4
@@ -87,14 +87,14 @@ int b43_phy_init(struct b43_wldev *dev) ops->software_rfkill (dev, false); err = ops->init (dev);if (err) { -b43err (dev->wl,"PHY init failed\n" ); +b43_err (dev->wl,"PHY init failed\n" ); goto err_block_rf; }/* Make sure to switch hardware and firmware (SHM) to * the default channel. */ err =b43_switch_channel (dev, ops->get_default_chan (dev));if (err) { -b43err (dev->wl,"PHY init: Channel switch to default failed\n" ); +b43_err (dev->wl,"PHY init: Channel switch to default failed\n" ); goto err_phy_exit; }
@@ -192,8 +192,7 @@ static inline void assert_mac_suspended(struct b43_wldev *dev)return ;if ((b43_status (dev) >=B43_STAT_INITIALIZED ) && (dev->mac_suspended <=0 )) { -b43dbg (dev->wl,"PHY/RADIO register access with " -"enabled MAC.\n" ); +b43_dbg (dev->wl,"PHY/RADIO register access with enabled MAC\n" );dump_stack (); } }
drivers/net/wireless/b43/phy_g.c +26 -28
101 lines not on this page · raw message
drivers/net/wireless/b43/phy_lp.c +9 -8
@@ -594,8 +594,9 @@ static void lpphy_2062_init(struct b43_wldev *dev) }if (!fd) fd = &freqdata_tab[ARRAY_SIZE (freqdata_tab) -1 ]; -b43dbg (dev->wl,"b2062: Using crystal tab entry %u kHz.\n" , - fd->freq);/* FIXME: Keep this printk until the code is fully debugged. */ + +/* FIXME: Keep this printk until the code is fully debugged. */ +b43_dbg (dev->wl,"b2062: Using crystal tab entry %u kHz\n" , fd->freq);b43_radio_write (dev,B2062_S_RFPLL_CTL8 , ((u16)(fd->data[1 ]) <<4 ) | fd->data[0 ]);
@@ -1210,9 +1211,9 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev *dev) err =b43_lpphy_op_switch_channel (dev,7 );if (err) { -b43dbg (dev->wl, -"RC calib: Failed to switch to channel 7, error = %d\n" , - err); +b43_dbg (dev->wl, +"RC calib: Failed to switch to channel 7, error = %d\n" , + err); } old_txg_ovr = !!(b43_phy_read (dev,B43_LPPHY_AFE_CTL_OVR ) &0x40 ); old_bbmult =lpphy_get_bb_mult (dev);
@@ -1590,7 +1591,7 @@ static void lpphy_pr41573_workaround(struct b43_wldev *dev) saved_tab =kcalloc (saved_tab_size,sizeof (saved_tab[0 ]),GFP_KERNEL );if (!saved_tab) { -b43err (dev->wl,"PR41573 failed. Out of memory!\n" ); +b43_err (dev->wl,"PR41573 failed. Out of memory!\n" );return ; }
@@ -2676,8 +2677,8 @@ static int b43_lpphy_op_init(struct b43_wldev *dev)lpphy_calibrate_rc (dev); err =b43_lpphy_op_switch_channel (dev,7 );if (err) { -b43dbg (dev->wl,"Switch to channel 7 failed, error = %d.\n" , - err); +b43_dbg (dev->wl,"Switch to channel 7 failed, error = %d\n" , + err); }lpphy_tx_pctl_init (dev);lpphy_calibration (dev);
drivers/net/wireless/b43/phy_n.c +15 -15
@@ -221,7 +221,7 @@ static void b43_radio_init2055_post(struct b43_wldev *dev)udelay (10 ); }if (i) -b43err (dev->wl,"radio post init timeout\n" ); +b43_err (dev->wl,"radio post init timeout\n" );b43_radio_mask (dev,B2055_CAL_LPOCTL ,0xFF7F );nphy_channel_switch (dev, dev->phy.channel);b43_radio_write (dev,B2055_C1_RX_BB_LPF ,0x9 );
@@ -1139,7 +1139,7 @@ static int b43_nphy_load_samples(struct b43_wldev *dev, data =kzalloc (len *sizeof (u32),GFP_KERNEL );if (!data) { -b43err (dev->wl,"allocation for samples loading failed\n" ); +b43_err (dev->wl,"allocation for samples loading failed\n" );return -ENOMEM ; }if (nphy->hang_avoid)
@@ -1183,7 +1183,7 @@ static u16 b43_nphy_gen_load_samples(struct b43_wldev *dev, u32 freq, u16 max, samples =kzalloc (len *sizeof (struct b43_c32 ),GFP_KERNEL );if (!samples) { -b43err (dev->wl,"allocation for samples generation failed\n" ); +b43_err (dev->wl,"allocation for samples generation failed\n" );return 0 ; } rot = (((freq *36 ) / bw) <<16 ) /100 ;
@@ -1256,7 +1256,7 @@ static void b43_nphy_run_samples(struct b43_wldev *dev, u16 samps, u16 loops,udelay (10 ); }if (i) -b43err (dev->wl,"run samples timeout\n" ); +b43_err (dev->wl,"run samples timeout\n" );b43_phy_write (dev,B43_NPHY_RFSEQMODE , seq_mode); }
@@ -1391,7 +1391,7 @@ static void b43_nphy_force_rf_sequence(struct b43_wldev *dev, goto ok;msleep (1 ); } -b43err (dev->wl,"RF sequence status timeout\n" ); +b43_err (dev->wl,"RF sequence status timeout\n" ); ok:b43_phy_write (dev,B43_NPHY_RFSEQMODE , seq_mode); }
@@ -1410,7 +1410,7 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field,const struct nphy_rf_control_override_rev3 *rf_ctrl;for (i =0 ; i <2 ; i++) {if (index ==0 || index ==16 ) { -b43err (dev->wl, +b43_err (dev->wl,"Unsupported RF Ctrl Override call\n" );return ; }
@@ -1445,7 +1445,7 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field,for (i =0 ; i <2 ; i++) {if (index <=1 || index ==16 ) { -b43err (dev->wl, +b43_err (dev->wl,"Unsupported RF Ctrl Override call\n" );return ; }
@@ -1511,7 +1511,7 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,udelay (10 ); }if (j) -b43err (dev->wl, +b43_err (dev->wl,"intc override timeout\n" );b43_phy_mask (dev,B43_NPHY_TXF_40CO_B1S1 ,0xFFFE );
@@ -1530,7 +1530,7 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,udelay (10 ); }if (j) -b43err (dev->wl, +b43_err (dev->wl,"intc override timeout\n" );b43_phy_mask (dev,B43_NPHY_RFCTL_OVER ,0xFFFE );
@@ -3265,7 +3265,7 @@ int b43_phy_initn(struct b43_wldev *dev)if (phy->rev >=3 )b43_nphy_spur_workaround (dev); -b43err (dev->wl,"IEEE 802.11n devices are not supported, yet.\n" ); +b43_err (dev->wl,"IEEE 802.11n devices are not supported yet\n" );return 0 ; }
@@ -3437,14 +3437,14 @@ static inline void check_phyreg(struct b43_wldev *dev, u16 offset)#if B43_DEBUG if ((offset &B43_PHYROUTE ) ==B43_PHYROUTE_OFDM_GPHY ) {/* OFDM registers are onnly available on A/G-PHYs */ -b43err (dev->wl,"Invalid OFDM PHY access at " -"0x%04X on N-PHY\n" , offset); +b43_err (dev->wl,"Invalid OFDM PHY access at " +"0x%04X on N-PHY\n" , offset);dump_stack (); }if ((offset &B43_PHYROUTE ) ==B43_PHYROUTE_EXT_GPHY ) {/* Ext-G registers are only available on G-PHYs */ -b43err (dev->wl,"Invalid EXT-G PHY access at " -"0x%04X on N-PHY\n" , offset); +b43_err (dev->wl,"Invalid EXT-G PHY access at " +"0x%04X on N-PHY\n" , offset);dump_stack (); }#endif /* B43_DEBUG */
@@ -3491,7 +3491,7 @@ static void b43_nphy_op_software_rfkill(struct b43_wldev *dev,struct b43_phy_n *nphy = dev->phy.n;if (b43_read32 (dev,B43_MMIO_MACCTL ) &B43_MACCTL_ENABLED ) -b43err (dev->wl,"MAC not suspended\n" ); +b43_err (dev->wl,"MAC not suspended\n" );if (blocked) { b43_phy_mask(dev, B43_NPHY_RFCTL_CMD,
drivers/net/wireless/b43/pio.c +6 -6
@@ -278,7 +278,7 @@ int b43_pio_init(struct b43_wldev *dev)if (!pio->rx_queue) goto err_destroy_mcast; -b43dbg (dev->wl,"PIO initialized\n" ); +b43_dbg (dev->wl,"PIO initialized\n" ); err =0 ; out:return err;
@@ -525,12 +525,12 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)if (unlikely (total_len > q->buffer_size)) { err = -ENOBUFS ; -b43dbg (dev->wl,"PIO: TX packet longer than queue.\n" ); +b43_dbg (dev->wl,"PIO: TX packet longer than queue\n" ); goto out; }if (unlikely (q->free_packet_slots ==0 )) { err = -ENOBUFS ; -b43warn (dev->wl,"PIO: TX packet overflow.\n" ); +b43_warn (dev->wl,"PIO: TX packet overflow\n" ); goto out; }B43_WARN_ON (q->buffer_used > q->buffer_size);
@@ -557,7 +557,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb) goto out; }if (unlikely (err)) { -b43err (dev->wl,"PIO transmission failure\n" ); +b43_err (dev->wl,"PIO transmission failure\n" ); goto out; }
@@ -651,7 +651,7 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)udelay (10 ); } } -b43dbg (q->dev->wl,"PIO RX timed out\n" ); +b43_dbg (q->dev->wl,"PIO RX timed out\n" );return 1 ; data_ready:
@@ -745,7 +745,7 @@ data_ready: rx_error:if (err_msg) -b43dbg (q->dev->wl,"PIO RX error: %s\n" , err_msg); +b43_dbg (q->dev->wl,"PIO RX error: %s\n" , err_msg);if (q->rev >=8 )b43_piorx_write32 (q,B43_PIO8_RXCTL ,B43_PIO8_RXCTL_DATARDY );else
drivers/net/wireless/b43/rfkill.c +2 -2
@@ -70,8 +70,8 @@ void b43_rfkill_poll(struct ieee80211_hw *hw)if (unlikely (enabled != dev->radio_hw_enable)) { dev->radio_hw_enable = enabled; -b43info (wl,"Radio hardware status changed to %s\n" , - enabled ?"ENABLED" :"DISABLED" ); +b43_info (wl,"Radio hardware status changed to %s\n" , + enabled ?"ENABLED" :"DISABLED" );wiphy_rfkill_set_hw_state (hw->wiphy, !enabled);if (enabled != dev->phy.radio_on)b43_software_rfkill (dev, !enabled);
drivers/net/wireless/b43/sysfs.c +1 -2
@@ -123,8 +123,7 @@ static ssize_t b43_attr_interfmode_store(struct device *dev,if (wldev->phy.ops->interf_mitigation) { err = wldev->phy.ops->interf_mitigation (wldev, mode);if (err) { -b43err (wldev->wl,"Interference Mitigation not " -"supported by device\n" ); +b43_err (wldev->wl,"Interference Mitigation not supported by device\n" ); } }else err = -ENOSYS ;
drivers/net/wireless/b43/xmit.c +5 -5
@@ -573,14 +573,14 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)/* Skip PLCP and padding */ padding = (macstat &B43_RX_MAC_PADDING ) ?2 :0 ;if (unlikely (skb->len < (sizeof (struct b43_plcp_hdr6 ) + padding))) { -b43dbg (dev->wl,"RX: Packet size underrun (1)\n" ); +b43_dbg (dev->wl,"RX: Packet size underrun (1)\n" ); goto drop; } plcp = (struct b43_plcp_hdr6 *)(skb->data + padding);skb_pull (skb,sizeof (struct b43_plcp_hdr6 ) + padding);/* The skb contains the Wireless Header + payload data now */ if (unlikely (skb->len < (2 +2 +6 /*minimum hdr */ +FCS_LEN ))) { -b43dbg (dev->wl,"RX: Packet size underrun (2)\n" ); +b43_dbg (dev->wl,"RX: Packet size underrun (2)\n" ); goto drop; } wlhdr = (struct ieee80211_hdr *)(skb->data);
@@ -601,8 +601,8 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)if (dev->key[keyidx].algorithm !=B43_SEC_ALGO_NONE ) { wlhdr_len =ieee80211_hdrlen (fctl);if (unlikely (skb->len < (wlhdr_len +3 ))) { -b43dbg (dev->wl, -"RX: Packet size underrun (3)\n" ); +b43_dbg (dev->wl, +"RX: Packet size underrun (3)\n" ); goto drop; } status.flag |=RX_FLAG_DECRYPTED ;
@@ -695,7 +695,7 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)#endif return ; drop: -b43dbg (dev->wl,"RX: Packet dropped\n" ); +b43_dbg (dev->wl,"RX: Packet dropped\n" );dev_kfree_skb_any (skb); }
Signature · 1 line
1.7.1.337.g6068.dirty
PATCH 3/3 drivers/net/wireless/b43: Rename b43_debug to b43_debugging
In reply to Joe PerchesAvoid using <foo>_debug function name because that is most commonly used to emit logging messages.
--- drivers/net/wireless/b43/debugfs.c | 2 +- drivers/net/wireless/b43/debugfs.h | 4 ++-- drivers/net/wireless/b43/dma.c | 10 +++++----- drivers/net/wireless/b43/lo.c | 6 +++--- drivers/net/wireless/b43/main.c | 16 ++++++++-------- drivers/net/wireless/b43/phy_g.c | 8 ++++---- 6 files changed, 23 insertions(+), 23 deletions(-)
drivers/net/wireless/b43/debugfs.c +1 -1
@@ -645,7 +645,7 @@ B43_DEBUGFS_FOPS(restart, NULL, restart_write_file);B43_DEBUGFS_FOPS (loctls, loctls_read_file,NULL ); -bool b43_debug (struct b43_wldev *dev,enum b43_dyndbg feature) +bool b43_debugging (struct b43_wldev *dev,enum b43_dyndbg feature) {bool enabled;
drivers/net/wireless/b43/debugfs.h +2 -2
@@ -73,7 +73,7 @@ struct b43_dfsentry {struct dentry *dyn_debug_dentries[__B43_NR_DYNDBG]; }; -bool b43_debug (struct b43_wldev *dev,enum b43_dyndbg feature); +bool b43_debugging (struct b43_wldev *dev,enum b43_dyndbg feature);void b43_debugfs_init (void );void b43_debugfs_exit (void );
@@ -84,7 +84,7 @@ void b43_debugfs_log_txstat(struct b43_wldev *dev,#else /* CONFIG_B43_DEBUG */ -static inline bool b43_debug (struct b43_wldev *dev,enum b43_dyndbg feature) +static inline bool b43_debugging (struct b43_wldev *dev,enum b43_dyndbg feature) {return 0 ; }
drivers/net/wireless/b43/dma.c +5 -5
@@ -265,7 +265,7 @@ static void update_max_used_slots(struct b43_dmaring *ring,if (current_used_slots <= ring->max_used_slots)return ; ring->max_used_slots = current_used_slots; -if (b43_debug (ring->dev,B43_DBG_DMAVERBOSE )) { +if (b43_debugging (ring->dev,B43_DBG_DMAVERBOSE )) { b43_dbg(ring->dev->wl, "max_used_slots increased to %d on %s ring %d\n", ring->max_used_slots,
@@ -1264,7 +1264,7 @@ out_unmap_hdr:static inline int should_inject_overflow (struct b43_dmaring *ring) {#ifdef CONFIG_B43_DEBUG -if (unlikely (b43_debug (ring->dev,B43_DBG_DMAOVERFLOW ))) { +if (unlikely (b43_debugging (ring->dev,B43_DBG_DMAOVERFLOW ))) {/* Check if we should inject another ringbuffer overflow * to test handling of this situation in the stack. */ unsigned long next_overflow;
@@ -1340,7 +1340,7 @@ int b43_dma_tx(struct b43_wldev *dev, struct sk_buff *skb)* Because of a race, one packet may be queued after * the queue is stopped, thus we got called when we shouldn't. * For now, just refuse the transmit. */ -if (b43_debug (dev,B43_DBG_DMAVERBOSE )) +if (b43_debugging (dev,B43_DBG_DMAVERBOSE ))b43_err (dev->wl,"Packet after queue stopped\n" ); err = -ENOSPC ; goto out;
@@ -1376,7 +1376,7 @@ int b43_dma_tx(struct b43_wldev *dev, struct sk_buff *skb)/* This TX ring is full. */ ieee80211_stop_queue (dev->wl->hw,skb_get_queue_mapping (skb)); ring->stopped =1 ; -if (b43_debug (dev,B43_DBG_DMAVERBOSE )) { +if (b43_debugging (dev,B43_DBG_DMAVERBOSE )) {b43_dbg (dev->wl,"Stopped TX ring %d\n" , ring->index); } }
@@ -1494,7 +1494,7 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev,B43_WARN_ON (free_slots (ring) <TX_SLOTS_PER_FRAME );ieee80211_wake_queue (dev->wl->hw, ring->queue_prio); ring->stopped =0 ; -if (b43_debug (dev,B43_DBG_DMAVERBOSE )) { +if (b43_debugging (dev,B43_DBG_DMAVERBOSE )) {b43_dbg (dev->wl,"Woke up TX ring %d\n" , ring->index); } }
drivers/net/wireless/b43/lo.c +3 -3
@@ -774,7 +774,7 @@ struct b43_lo_calib *b43_calibrate_lo_setting(struct b43_wldev *dev,lo_measure_restore (dev, &saved_regs);b43_mac_enable (dev); -if (b43_debug (dev,B43_DBG_LO )) { +if (b43_debugging (dev,B43_DBG_LO )) { b43_dbg(dev->wl, "LO: Calibrated for BB(%u), RF(%u,%u) " "=> I=%d Q=%d\n", bbatt->att, rfatt->att, rfatt->with_padmix,
@@ -971,7 +971,7 @@ void b43_lo_g_maintanance_work(struct b43_wldev *dev)B43_WARN_ON (current_item_expired); current_item_expired =1 ; } -if (b43_debug (dev,B43_DBG_LO )) { +if (b43_debugging (dev,B43_DBG_LO )) { b43_dbg(dev->wl, "LO: Item BB(%u), RF(%u,%u), " "I=%d, Q=%d expired\n", cal->bbatt.att, cal->rfatt.att,
@@ -983,7 +983,7 @@ void b43_lo_g_maintanance_work(struct b43_wldev *dev) }if (current_item_expired ||unlikely (list_empty (&lo->calib_list))) {/* Recalibrate currently used LO setting. */ -if (b43_debug (dev,B43_DBG_LO )) +if (b43_debugging (dev,B43_DBG_LO ))b43_dbg (dev->wl,"LO: Recalibrating current LO setting\n" ); cal =b43_calibrate_lo_setting (dev, &gphy->bbatt, &gphy->rfatt);if (cal) {
drivers/net/wireless/b43/main.c +8 -8
@@ -839,9 +839,9 @@ static void rx_tkip_phase1_write(struct b43_wldev *dev, u8 index, u32 iv32, index -= pairwise_keys_start;B43_WARN_ON (index >=B43_NR_PAIRWISE_KEYS ); -if (b43_debug (dev,B43_DBG_KEYS )) { +if (b43_debugging (dev,B43_DBG_KEYS )) {b43_dbg (dev->wl,"rx_tkip_phase1_write : idx 0x%x, iv32 0x%x\n" , - index, iv32); + index, iv32); }/* Write the key to the RX tkip shared mem */ offset =B43_SHM_SH_TKIPTSCTTAK + index * (10 +4 );
@@ -1014,7 +1014,7 @@ static void b43_dump_keymemory(struct b43_wldev *dev)u64 hf;struct b43_key *key; -if (!b43_debug (dev,B43_DBG_KEYS )) +if (!b43_debugging (dev,B43_DBG_KEYS ))return ; hf =b43_hf_read (dev);
@@ -1857,7 +1857,7 @@ static void b43_do_interrupt_thread(struct b43_wldev *dev)b43_write32 (dev,B43_MMIO_GEN_IRQ_MASK , dev->irq_mask);#if B43_DEBUG -if (b43_debug (dev,B43_DBG_VERBOSESTATS )) { +if (b43_debugging (dev,B43_DBG_VERBOSESTATS )) { dev->irq_count++;for (i =0 ; i <ARRAY_SIZE (dev->irq_bit_count); i++) {if (reason & (1 << i))
@@ -2587,7 +2587,7 @@ static void b43_gpio_cleanup(struct b43_wldev *dev)/* http://bcm-specs.sipsolutions.net/EnableMac */ void b43_mac_enable (struct b43_wldev *dev) { -if (b43_debug (dev,B43_DBG_FIRMWARE )) { +if (b43_debugging (dev,B43_DBG_FIRMWARE )) {u16 fwstate; fwstate = b43_shm_read16(dev, B43_SHM_SHARED,
@@ -2944,7 +2944,7 @@ static void b43_periodic_every15sec(struct b43_wldev *dev)wmb ();#if B43_DEBUG -if (b43_debug (dev,B43_DBG_VERBOSESTATS )) { +if (b43_debugging (dev,B43_DBG_VERBOSESTATS )) {unsigned int i; b43_dbg(dev->wl, "Stats: %7u IRQs/sec, %7u TX/sec, %7u RX/sec\n",
@@ -2993,14 +2993,14 @@ static void b43_periodic_work_handler(struct work_struct *work)if (unlikely (b43_status (dev) !=B43_STAT_STARTED )) goto out; -if (b43_debug (dev,B43_DBG_PWORK_STOP )) +if (b43_debugging (dev,B43_DBG_PWORK_STOP )) goto out_requeue;do_periodic_work (dev); dev->periodic_state++; out_requeue: -if (b43_debug (dev,B43_DBG_PWORK_FAST )) +if (b43_debugging (dev,B43_DBG_PWORK_FAST )) delay =msecs_to_jiffies (50 );else delay =round_jiffies_relative (HZ *15 );
drivers/net/wireless/b43/phy_g.c +4 -4
@@ -236,7 +236,7 @@ static void b43_set_txpower_g(struct b43_wldev *dev, gphy->rfatt.with_padmix = !!(tx_control &B43_TXCTL_TXMIX );memmove (&gphy->bbatt, bbatt,sizeof (*bbatt)); -if (b43_debug (dev,B43_DBG_XMITPOWER )) { +if (b43_debugging (dev,B43_DBG_XMITPOWER )) { b43_dbg(dev->wl, "Tuning TX-power to bbatt(%u), " "rfatt(%u), tx_control(0x%02X), " "tx_bias(0x%02X), tx_magn(0x%02X)\n",
@@ -2862,7 +2862,7 @@ static void b43_gphy_op_adjust_txpower(struct b43_wldev *dev) gphy->rfatt.att = rfatt; gphy->bbatt.att = bbatt; -if (b43_debug (dev,B43_DBG_XMITPOWER )) +if (b43_debugging (dev,B43_DBG_XMITPOWER ))b43_dbg (dev->wl,"Adjusting TX power\n" );/* Adjust the hardware */
@@ -2929,7 +2929,7 @@ static enum b43_txpwr_result b43_gphy_op_recalc_txpower(struct b43_wldev *dev, desired_pwr =INT_TO_Q52 (phy->desired_txpower);/* And limit it. max_pwr already is Q5.2 */ desired_pwr =clamp_val (desired_pwr,0 , max_pwr); -if (b43_debug (dev,B43_DBG_XMITPOWER )) { +if (b43_debugging (dev,B43_DBG_XMITPOWER )) {b43_dbg (dev->wl,"[TX power] current = " Q52_FMT " dBm, desired = " Q52_FMT
@@ -2958,7 +2958,7 @@ static enum b43_txpwr_result b43_gphy_op_recalc_txpower(struct b43_wldev *dev, bbatt_delta -=4 * rfatt_delta;#if B43_DEBUG -if (b43_debug (dev,B43_DBG_XMITPOWER )) { +if (b43_debugging (dev,B43_DBG_XMITPOWER )) {int dbm = pwr_adjust <0 ? -pwr_adjust : pwr_adjust;b43_dbg (dev->wl, "[TX power deltas] %s" Q52_FMT " dBm => "
Signature · 1 line
1.7.1.337.g6068.dirty
Quoted 6 lines · Joe Perches
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use localratelimit_statedrivers/net/wireless/b43: Logging cleanupsdrivers/net/wireless/b43: Renameb43_debugtob43_debugging
Any of the b43 guys want to express an opinion on these?
Signature · 2 lines
John W. Linville Someday the world will need a hero, and you [email protected] might be all we have. Be ready.
Quoted 9 lines · John W. Linville
Quoted 6 lines · Joe Perches
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use localratelimit_statedrivers/net/wireless/b43: Logging cleanupsdrivers/net/wireless/b43: Renameb43_debugtob43_debuggingAny of the b43 guys want to express an opinion on these?
The local ratelimit patch is OK. My personal opinion is that the others are just churning the source for no real reason, but I have no major objections.
Larry
Quoted 7 lines · John W. Linville
Quoted 5 lines · Joe Perches
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use localratelimit_statedrivers/net/wireless/b43: Logging cleanupsdrivers/net/wireless/b43: Renameb43_debugtob43_debuggingAny of the b43 guys want to express an opinion on these?
Stefano, are you active here?
Your last ack for b43 was Feb 2008.
There have been 400+ commits to b43 without your ack.
Should your name be moved from MAINTAINERS to CREDITS?
$ ./scripts/get_maintainer.pl --rolestats -f drivers/net/wireless/b43/ Stefano Brivio <[email protected]> (maintainer:B43 WIRELESS DRIVER) "John W. Linville" <[email protected]> (maintainer:NETWORKING [WIREL...,commit_signer:204/240=85%) "Rafał Miłecki" <[email protected]> (commit_signer:83/240=35%) "Gábor Stefanik" <[email protected]> (commit_signer:44/240=18%) Michael Buesch <[email protected]> (commit_signer:39/240=16%) Larry Finger <[email protected]> (commit_signer:13/240=5%) [email protected] (open list:B43 WIRELESS DRIVER) [email protected] (open list:NETWORKING DRIVERS) [email protected] (open list)
Quoted 15 lines · Joe Perches
Quoted 7 lines · John W. Linville
Quoted 5 lines · Joe Perches
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use localratelimit_statedrivers/net/wireless/b43: Logging cleanupsdrivers/net/wireless/b43: Renameb43_debugtob43_debuggingAny of the b43 guys want to express an opinion on these?
Stefano, are you active here?
Your last ack for b43 was Feb 2008.
There have been 400+ commits to b43 without your ack.Should your name be moved from
MAINTAINERSto CREDITS?
Quoted 10 lines
$ ./scripts/get_maintainer.pl --rolestats -f drivers/net/wireless/b43/ Stefano Brivio <[email protected]> (maintainer:B43 WIRELESS DRIVER) "John W. Linville" <[email protected]> (maintainer:NETWORKING [WIREL...,commit_signer:204/240=85%) "Rafał Miłecki" <[email protected]> (commit_signer:83/240=35%) "Gábor Stefanik" <[email protected]> (commit_signer:44/240=18%) Michael Buesch <[email protected]> (commit_signer:39/240=16%) Larry Finger <[email protected]> (commit_signer:13/240=5%) [email protected] (open list:B43 WIRELESS DRIVER) [email protected] (open list:NETWORKING DRIVERS) [email protected] (open list)
The primary arbitrator for patches to the subtle parts of b43 is Michael Buesch; however, he is no longer an official MAINTAINER. I can ACK some things; however, any changes that are associated with my reverse engineering of the Broadcom drivers are off limits.
Larry
PATCH 1/1 MAINTAINERS: b43 updates
Quoted 4 lines · Larry Finger
The primary arbitrator for patches to the subtle parts of b43 is Michael Buesch; however, he is no longer an official MAINTAINER. I can ACK some things; however, any changes that are associated with my reverse engineering of the Broadcom drivers are off limits.
Add Stefano Brivio's name and email address to CREDITS Removed Stefano Brivio's from B43 MAINTAINERS Added the b43 development mailing lists Changed B43 status to "Odd Fixes"
--- CREDITS | 4 ++++ MAINTAINERS | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-)
CREDITS +4 -0
@@ -495,6 +495,10 @@ S: Kopmansg 2 S: 411 13 Goteborg S: Sweden +N: Stefano Brivio +E: [email protected] +D: B43 wireless driver + N: Paul Bristow E: [email protected] W: http://paulbristow.net/linux/idefloppy.html
MAINTAINERS +3 -2
@@ -1225,16 +1225,17 @@ F: include/net/ax25.h F: net/ax25/ B43 WIRELESS DRIVER -M: Stefano Brivio <[email protected]> L: [email protected] +L: [email protected] W: http://linuxwireless.org/en/users/Drivers/b43 -S: Maintained +S: Odd Fixes F: drivers/net/wireless/b43/ B43LEGACY WIRELESS DRIVER M: Larry Finger <[email protected]> M: Stefano Brivio <[email protected]> L: [email protected] +L: [email protected] W: http://linuxwireless.org/en/users/Drivers/b43 S: Maintained F: drivers/net/wireless/b43legacy/
Re: [PATCH net-next] MAINTAINERS: b43 updates
Quoted 46 lines · Joe Perches
Quoted 4 lines · Larry Finger
The primary arbitrator for patches to the subtle parts of b43 is Michael Buesch; however, he is no longer an official MAINTAINER. I can ACK some things; however, any changes that are associated with my reverse engineering of the Broadcom drivers are off limits.
Add Stefano Brivio's name and email address to CREDITS Removed Stefano Brivio's from B43
MAINTAINERSAdded the b43 development mailing lists Changed B43 status to "Odd Fixes"Signed-off-by Joe Perches <[email protected]>--- CREDITS | 4 ++++ MAINTAINERS | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-)CREDITS +4
-0@@ -495,6 +495,10 @@ S: Kopmansg 2 S: 411 13 Goteborg S: Sweden +N: Stefano Brivio +E: [email protected] +D: B43 wireless driver + N: Paul Bristow E: [email protected] W: http://paulbristow.net/linux/idefloppy.htmlMAINTAINERS +2
-2@@ -1225,16 +1225,17 @@ F: include/net/ax25.h F: net/ax25/ B43 WIRELESS DRIVER -M: Stefano Brivio <[email protected]> L: [email protected] +L: [email protected] W: http://linuxwireless.org/en/users/Drivers/b43 -S: Maintained +S: Odd Fixes
MAINTAINERS F: include/net/ax25.h · line 1241
Quoted 10 lines
MAINTAINERS +1
-0F: drivers/net/wireless/b43/ B43LEGACY WIRELESS DRIVER M: Larry Finger <[email protected]> M: Stefano Brivio <[email protected]> L: [email protected] +L: [email protected] W: http://linuxwireless.org/en/users/Drivers/b43 S: Maintained F: drivers/net/wireless/b43legacy/
NACK. I never said that b43 is unmaintained. It is definitely getting much more than "odd fixes".
Larry
Re: [PATCH net-next] MAINTAINERS: b43 updates
Quoted 2 lines · Larry Finger
I never said that b43 is unmaintained. It is definitely getting much more than "odd fixes".
If Stefano isn't maintaining it, who is?
Re: [PATCH net-next] MAINTAINERS: b43 updates
Quoted 5 lines · Joe Perches
Quoted 2 lines · Larry Finger
I never said that b43 is unmaintained. It is definitely getting much more than "odd fixes".
If Stefano isn't maintaining it, who is?
We are working on that.
Larry
Re: [PATCH net-next] MAINTAINERS: b43 updates
Quoted 8 lines · Larry Finger
Quoted 5 lines · Joe Perches
Quoted 2 lines · Larry Finger
I never said that b43 is unmaintained. It is definitely getting much more than "odd fixes".
If Stefano isn't maintaining it, who is?
We are working on that.
Well, there are some developers working on the driver and there are some developers that do not actively work on the driver but used to work on it in the past (that includes me). Neither of them is an official maintainer (yet). I used to be a maintainer, but I dropped my official MAINTAINERS file entry, because I do not actively work on b43 anymore. However, I still read the patches going into the driver and comment on them as appropriate.
So well. I think b43 does not have a maintainer. But it's not unmaintained. There are lots of people working on it. I don't think an official maintainer is needed. Patches are sent directly to John (the wireless maintainer) and the b43 development crew reviews them. There's no problem with that.
Signature · 5 lines
Greetings Michael. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 8 lines · Joe Perches
Quoted 7 lines · John W. Linville
Quoted 5 lines · Joe Perches
Just some small cleanups
Joe Perches (3):
drivers/net/wireless/b43: Use localratelimit_statedrivers/net/wireless/b43: Logging cleanupsdrivers/net/wireless/b43: Renameb43_debugtob43_debuggingAny of the b43 guys want to express an opinion on these?
The cleanups, well, exchange one name for the other. I don't have a strong opinion on one or the other. So in the end I don't see why that stuff should be renamed. However, in the end I really do not care.
I'm not sure why we need an additional ratelimit here. Is it a policy that every kernel driver should have local ratelimiting? If not, why do you think b43 needs its own ratelimiting? Note that b43 does not output a single line to dmesg in normal operation, after init has finished (and ratelimit is disabled in init).
Quoted 6 lines
Stefano, are you active here?
Your last ack for b43 was Feb 2008.
There have been 400+ commits to b43 without your ack.Should your name be moved from
MAINTAINERSto CREDITS?
Quoted 10 lines
$ ./scripts/get_maintainer.pl --rolestats -f drivers/net/wireless/b43/ Stefano Brivio<[email protected]> (maintainer:B43 WIRELESS DRIVER) "John W. Linville"<[email protected]> (maintainer:NETWORKING [WIREL...,commit_signer:204/240=85%) "Rafał Miłecki"<[email protected]> (commit_signer:83/240=35%) "Gábor Stefanik"<[email protected]> (commit_signer:44/240=18%) Michael Buesch<[email protected]> (commit_signer:39/240=16%) Larry Finger<[email protected]> (commit_signer:13/240=5%) [email protected] (open list:B43 WIRELESS DRIVER) [email protected] (open list:NETWORKING DRIVERS) [email protected] (open list)
I think these statistics are almost worthless for b43.
Signature · 1 line
Greetings Michael.