On Mon, Dec 15, 2008 at 08:40:45PM +0530, Vasanth Thiagarajan wrote: > This patch makes sure the rate control alg is registered/unregistered > only once for this module. > > Signed-off-by: Vasanthakumar Thiagarajan <vasanth@xxxxxxxxxxx> > --- > drivers/net/wireless/ath9k/main.c | 23 +++++++++++++---------- > 1 files changed, 13 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c > index 05416db..6376fdf 100644 > --- a/drivers/net/wireless/ath9k/main.c > +++ b/drivers/net/wireless/ath9k/main.c > @@ -1231,9 +1231,6 @@ static void ath_detach(struct ath_softc *sc) > ath_deinit_leds(sc); > > ieee80211_unregister_hw(hw); > - > - ath_rate_control_unregister(); > - > ath_rx_cleanup(sc); > ath_tx_cleanup(sc); > > @@ -1520,13 +1517,6 @@ static int ath_attach(u16 devid, struct ath_softc *sc) > > /* Register rate control */ > hw->rate_control_algorithm = "ath9k_rate_control"; > - error = ath_rate_control_register(); > - if (error != 0) { > - DPRINTF(sc, ATH_DBG_FATAL, > - "Unable to register rate control algorithm: %d\n", error); > - ath_rate_control_unregister(); > - goto bad; > - } > > if (sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_HT) { > setup_ht_cap(&sc->sbands[IEEE80211_BAND_2GHZ].ht_cap); > @@ -2727,8 +2717,20 @@ static struct pci_driver ath_pci_driver = { > > static int __init init_ath_pci(void) > { > + int error; > + > printk(KERN_INFO "%s: %s\n", dev_info, ATH_PCI_VERSION); > > + /* Register rate control algorithm */ > + error = ath_rate_control_register(); > + if (error != 0) { > + printk(KERN_ERR > + "Unable to register rate control algorithm: %d\n", > + error); > + ath_rate_control_unregister(); > + return -EIO; > + } > + > if (pci_register_driver(&ath_pci_driver) < 0) { > printk(KERN_ERR > "ath_pci: No devices found, driver not installed.\n"); > @@ -2742,6 +2744,7 @@ module_init(init_ath_pci); > > static void __exit exit_ath_pci(void) > { > + ath_rate_control_unregister(); > pci_unregister_driver(&ath_pci_driver); > printk(KERN_INFO "%s: Driver unloaded\n", dev_info); > } Please ignore this patch. This patch does not handle the rate control unregistration when pci_register_driver() fails. I will be sending out a more cleaner patch. Thanks, Vasanth -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html