diff options
author | Josh Boyer <jwboyer@redhat.com> | 2013-08-01 08:34:36 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2013-08-01 08:45:02 -0400 |
commit | c35d85bd25d1673fa355e99055352b0141a3c1ef (patch) | |
tree | 7fdedb8de11f12cde296d9b10ce6e7b681b1d4de /iwl4965-reset-firmware-after-rfkill-off.patch | |
parent | 8330880f50134651478a7b02d27219b365524fae (diff) | |
download | kernel-c35d85bd25d1673fa355e99055352b0141a3c1ef.tar.gz kernel-c35d85bd25d1673fa355e99055352b0141a3c1ef.tar.xz kernel-c35d85bd25d1673fa355e99055352b0141a3c1ef.zip |
Fix firmware issues with iwl4965 and rfkill (rhbz 977053)
Diffstat (limited to 'iwl4965-reset-firmware-after-rfkill-off.patch')
-rw-r--r-- | iwl4965-reset-firmware-after-rfkill-off.patch | 56 |
1 files changed, 56 insertions, 0 deletions
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 <whitefox@guardianfox.net> +Cc: stable@vger.kernel.org +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +--- + 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 |