There is a patch fix this bug in Intrepid about iwl4965.
---
This patch take care of coming out rfkill when the driver is up while
rfkill is on
Signed-off-by: mohamed abbas <email address hidden>
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 7183ac5..da5d18a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1655,8 +1655,11 @@ static void iwl4965_irq_tasklet(struct iwl_priv *priv)
* the driver as well won't allow loading if RFKILL is set
* therefore no need to restart the driver from this handler
*/
- if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status))
+ if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status)) {
clear_bit(STATUS_RF_KILL_HW, &priv->status);
+ if (priv->is_open && !iwl_is_rfkill(priv))
+ queue_work(priv->workqueue, &priv->up);
+ }
+ /* when driver is up while rfkill is on, it wont receive
+ * any CARD_STATE_NOTIFICATION notifications so we have to
+ * restart it in here
+ */
+ if (priv->is_open && !test_bit(STATUS_ALIVE, &priv->status)) {
+ clear_bit(STATUS_RF_KILL_SW, &priv->status);
+ if (!iwl_is_rfkill(priv))
+ queue_work(priv->workqueue, &priv->up);
+ }
+
/* If the driver is already loaded, it will receive
* CARD_STATE_NOTIFICATION notifications and the handler will
* call restart to reload the driver.
There is a patch fix this bug in Intrepid about iwl4965.
--- net/wireless/ iwlwifi/ iwl-agn. c b/drivers/ net/wireless/ iwlwifi/ iwl-agn. c net/wireless/ iwlwifi/ iwl-agn. c net/wireless/ iwlwifi/ iwl-agn. c irq_tasklet( struct iwl_priv *priv) STATUS_ ALIVE, &priv->status)) STATUS_ ALIVE, &priv->status)) { bit(STATUS_ RF_KILL_ HW, &priv->status); rfkill( priv)) priv->workqueue , &priv->up);
This patch take care of coming out rfkill when the driver is up while
rfkill is on
Signed-off-by: mohamed abbas <email address hidden>
diff --git a/drivers/
index 7183ac5..da5d18a 100644
--- a/drivers/
+++ b/drivers/
@@ -1655,8 +1655,11 @@ static void iwl4965_
* the driver as well won't allow loading if RFKILL is set
* therefore no need to restart the driver from this handler
*/
- if (!hw_rf_kill && !test_bit(
+ if (!hw_rf_kill && !test_bit(
clear_
+ if (priv->is_open && !iwl_is_
+ queue_work(
+ }
handled |= CSR_INT_ BIT_RF_ KILL; net/wireless/ iwlwifi/ iwl-core. c b/drivers/ net/wireless/ iwlwifi/ iwl-core. c net/wireless/ iwlwifi/ iwl-core. c net/wireless/ iwlwifi/ iwl-core. c kill_sw_ enable_ radio(struct iwl_priv *priv)
}
diff --git a/drivers/
index 8eb0203..8de684d 100644
--- a/drivers/
+++ b/drivers/
@@ -1490,6 +1490,16 @@ int iwl_radio_
return 0;
}
+ /* when driver is up while rfkill is on, it wont receive NOTIFICATION notifications so we have to STATUS_ ALIVE, &priv->status)) { STATUS_ RF_KILL_ SW, &priv->status); rfkill( priv)) priv->workqueue , &priv->up); NOTIFICATION notifications and the handler will
+ * any CARD_STATE_
+ * restart it in here
+ */
+ if (priv->is_open && !test_bit(
+ clear_bit(
+ if (!iwl_is_
+ queue_work(
+ }
+
/* If the driver is already loaded, it will receive
* CARD_STATE_
* call restart to reload the driver.