]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
ath5k: Add a module parameter to disable hw rf kill switch
authorNick Kossifidis <mickflemm@gmail.com>
Fri, 25 Nov 2011 18:40:27 +0000 (20:40 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 28 Nov 2011 19:44:18 +0000 (14:44 -0500)
Add a module parameter to disable hw rf kill switch (GPIO interrupt) because
in some cases when the card doesn't come with the laptop, EEPROM configuration
doesn't match laptop's configuration and rf kill interrupt always fires up and
disables hw. I thought of moving this to debugfs and make it per-card but
this way it's easier for users and distros to handle.

Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Tested-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index 9bb40b002fad303337331f568b2e731331eee4b8..02207fa62675c2e8b7a7f6cc9e9349a46cebfe8f 100644 (file)
@@ -80,6 +80,11 @@ static int modparam_fastchanswitch;
 module_param_named(fastchanswitch, modparam_fastchanswitch, bool, S_IRUGO);
 MODULE_PARM_DESC(fastchanswitch, "Enable fast channel switching for AR2413/AR5413 radios.");
 
+static int ath5k_modparam_no_hw_rfkill_switch;
+module_param_named(no_hw_rfkill_switch, ath5k_modparam_no_hw_rfkill_switch,
+                                                               bool, S_IRUGO);
+MODULE_PARM_DESC(no_hw_rfkill_switch, "Ignore the GPIO RFKill switch state");
+
 
 /* Module info */
 MODULE_AUTHOR("Jiri Slaby");
@@ -2635,7 +2640,8 @@ int ath5k_start(struct ieee80211_hw *hw)
        if (ret)
                goto done;
 
-       ath5k_rfkill_hw_start(ah);
+       if (!ath5k_modparam_no_hw_rfkill_switch)
+               ath5k_rfkill_hw_start(ah);
 
        /*
         * Reset the key cache since some parts do not reset the
@@ -2719,7 +2725,8 @@ void ath5k_stop(struct ieee80211_hw *hw)
 
        cancel_delayed_work_sync(&ah->tx_complete_work);
 
-       ath5k_rfkill_hw_stop(ah);
+       if (!ath5k_modparam_no_hw_rfkill_switch)
+               ath5k_rfkill_hw_stop(ah);
 }
 
 /*