From c35d85bd25d1673fa355e99055352b0141a3c1ef Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Thu, 1 Aug 2013 08:34:36 -0400 Subject: Fix firmware issues with iwl4965 and rfkill (rhbz 977053) --- iwl4965-reset-firmware-after-rfkill-off.patch | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 iwl4965-reset-firmware-after-rfkill-off.patch (limited to 'iwl4965-reset-firmware-after-rfkill-off.patch') diff --git a/iwl4965-reset-firmware-after-rfkill-off.patch b/iwl4965-reset-firmware-after-rfkill-off.patch new file mode 100644 index 000000000..08b360d10 --- /dev/null +++ b/iwl4965-reset-firmware-after-rfkill-off.patch @@ -0,0 +1,56 @@ +Using rfkill switch can make firmware unstable, what cause various +Microcode errors and kernel warnings. Reseting firmware just after +rfkill off (radio on) helped with that. + +Resolve: +https://bugzilla.redhat.com/show_bug.cgi?id=977053 + +Reported-and-tested-by: Justin Pearce +Cc: stable@vger.kernel.org +Signed-off-by: Stanislaw Gruszka +--- + drivers/net/wireless/iwlegacy/4965-mac.c | 10 +++++----- + drivers/net/wireless/iwlegacy/common.c | 1 + + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c +index f0b7794..f2ed62e 100644 +--- a/drivers/net/wireless/iwlegacy/4965-mac.c ++++ b/drivers/net/wireless/iwlegacy/4965-mac.c +@@ -4460,12 +4460,12 @@ il4965_irq_tasklet(struct il_priv *il) + * is killed. Hence update the killswitch state here. The + * rfkill handler will care about restarting if needed. + */ +- if (!test_bit(S_ALIVE, &il->status)) { +- if (hw_rf_kill) +- set_bit(S_RFKILL, &il->status); +- else +- clear_bit(S_RFKILL, &il->status); ++ if (hw_rf_kill) { ++ set_bit(S_RFKILL, &il->status); ++ } else { ++ clear_bit(S_RFKILL, &il->status); + wiphy_rfkill_set_hw_state(il->hw->wiphy, hw_rf_kill); ++ il_force_reset(il, true); + } + + handled |= CSR_INT_BIT_RF_KILL; +diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c +index 3195aad..b03e22e 100644 +--- a/drivers/net/wireless/iwlegacy/common.c ++++ b/drivers/net/wireless/iwlegacy/common.c +@@ -4660,6 +4660,7 @@ il_force_reset(struct il_priv *il, bool external) + + return 0; + } ++EXPORT_SYMBOL(il_force_reset); + + int + il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, +-- +1.7.11.7 + +-- +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 \ No newline at end of file -- cgit