ath9k: Move rate control alg register/unregister to appropriate place
PATCH 1/1 ath9k: Move rate control alg register/unregister to appropriate place
This patch makes sure the rate control alg is registered/unregistered only once for this module.
Signed-off-by Vasanthakumar Thiagarajan <[email protected]>
--- drivers/net/wireless/ath9k/main.c | 30 ++++++++++++++---------------- 1 files changed, 14 insertions(+), 16 deletions(-)
drivers/net/wireless/ath9k/main.c +14 -16
@@ -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);
@@ -1518,15 +1515,7 @@ static int ath_attach(u16 devid, struct ath_softc *sc) hw->sta_data_size =sizeof (struct ath_node ); hw->vif_data_size =sizeof (struct ath_vap ); -/* 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);
@@ -1559,10 +1548,6 @@ static int ath_attach(u16 devid, struct ath_softc *sc)#endif error =ieee80211_register_hw (hw); -if (error !=0 ) { -ath_rate_control_unregister (); - goto bad; - }/* Initialize LED control */ ath_init_leds (sc);
@@ -1575,7 +1560,6 @@ static int ath_attach(u16 devid, struct ath_softc *sc)return 0 ; detach:ath_detach (sc); -bad:return error; }
@@ -2727,11 +2711,24 @@ 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 error; + } +if (pci_register_driver (&ath_pci_driver) <0 ) {printk (KERN_ERR "ath_pci: No devices found, driver not installed.\n" ); +ath_rate_control_unregister ();pci_unregister_driver (&ath_pci_driver);return -ENODEV ; }
@@ -2742,6 +2739,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); }
Signature · 1 line
1.5.5.1