Thread (6 messages) 6 messages, 4 authors, 2011-09-28

Re: [RFT][PATCH] ath5k: Add rfkill_disable module parameter

From: Mohammed Shafi <hidden>
Date: 2011-09-20 10:06:22

Hi Nick,

On Mon, Sep 19, 2011 at 9:31 PM, Nick Kossifidis [off-list ref] wrote:
Add a module parameter to disable hw rf kill (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
i think this seems to happen with a card that comes with laptop.
AR5212802.11abg NIC (rev 01) in the lenovo T61

i just cannot bring up the card again once i toggle the rfkill switch
(unblock -> block -> unblock)
the card is still hard blocked.

quickly, i just commented out those function calls(same as your patch)
 in compat-wireless
ath5k_rfkill_hw_start(ah);
ath5k_rfkill_stop(ah);
as expected the problem disappears, but i can unblock the card via
soft-rfkill even when it is hard blocked.
is it ok to unblock via software unblock when the card is
hard-blocked?. please share your thoughts. meanwhile i will start
comparing ath5k and ath9k for this. thanks!
quoted hunk ↗ jump to hunk
but this way it's easier for users and distros to handle.

Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index e9ea38d..000a65d 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -80,6 +80,10 @@ 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_rfkill_disable;
+module_param_named(rfkill_disable, ath5k_modparam_rfkill_disable, bool, S_IRUGO);
+MODULE_PARM_DESC(rfkill_disable, "Disable hw rfkill support (GPIO interrupt).");
+

 /* Module info */
 MODULE_AUTHOR("Jiri Slaby");
@@ -2558,7 +2562,8 @@ int ath5k_start(struct ieee80211_hw *hw)
       if (ret)
               goto done;

-       ath5k_rfkill_hw_start(ah);
+       if (!ath5k_modparam_rfkill_disable)
+               ath5k_rfkill_hw_start(ah);

       /*
        * Reset the key cache since some parts do not reset the
@@ -2643,7 +2648,8 @@ void ath5k_stop(struct ieee80211_hw *hw)
       cancel_delayed_work_sync(&ah->tx_complete_work);

-       ath5k_rfkill_hw_stop(ah);
+       if (!ath5k_modparam_rfkill_disable)
+               ath5k_rfkill_hw_stop(ah);
 }

 /*

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
shafi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help