diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2013-10-09 10:28:35 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2013-10-09 10:29:38 -0400 |
commit | b817316a0e458997d10a704d5463a710338de111 (patch) | |
tree | f1964a98d38f62da703ad03ca9824c23c6cdda77 /0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch | |
parent | 821590a9f242e2159a7fc89a674bf8faa07fe92f (diff) | |
download | kernel-b817316a0e458997d10a704d5463a710338de111.tar.gz kernel-b817316a0e458997d10a704d5463a710338de111.tar.xz kernel-b817316a0e458997d10a704d5463a710338de111.zip |
Don't trigger a stack trace on crashing iwlwifi firmware (rhbz 896695)
Diffstat (limited to '0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch')
-rw-r--r-- | 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch b/0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch new file mode 100644 index 000000000..499c34a63 --- /dev/null +++ b/0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch @@ -0,0 +1,98 @@ +From 3efd689c41080b0d4a9cc263a51f2868e3d5a37b Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka <sgruszka@redhat.com> +Date: Wed, 9 Oct 2013 15:03:57 +0200 +Subject: [PATCH] iwlwifi: don't WARN on bad firmware state + +When we restart firmware is possible and hance firmware is marked as not +alive, we can still get calls from mac80211. Don't WARN on in this +situation as this triggers automatic bug reports with no valuable +information. + +This extend change from: + +commit 8ca95995e64f5d270889badb3e449dca91106a2b +Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Date: Sun Sep 15 11:37:17 2013 +0300 + + iwlwifi: don't WARN on host commands sent when firmware is dead + +which remove WARN_ONCE from one place, but those warnings are also +triggered from other functions. + +Patch adds also unlikely() statement. + +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +--- + drivers/net/wireless/iwlwifi/iwl-trans.h | 22 +++++++++++----------- + 1 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h +index 80b4750..c6bac7c 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/iwlwifi/iwl-trans.h +@@ -601,7 +601,7 @@ static inline int iwl_trans_send_cmd(struct iwl_trans *trans, + { + int ret; + +- if (trans->state != IWL_TRANS_FW_ALIVE) { ++ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) { + IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + return -EIO; + } +@@ -640,8 +640,8 @@ static inline void iwl_trans_free_tx_cmd(struct iwl_trans *trans, + static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb, + struct iwl_device_cmd *dev_cmd, int queue) + { +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + + return trans->ops->tx(trans, skb, dev_cmd, queue); + } +@@ -649,16 +649,16 @@ static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb, + static inline void iwl_trans_reclaim(struct iwl_trans *trans, int queue, + int ssn, struct sk_buff_head *skbs) + { +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + + trans->ops->reclaim(trans, queue, ssn, skbs); + } + + static inline void iwl_trans_txq_disable(struct iwl_trans *trans, int queue) + { +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + + trans->ops->txq_disable(trans, queue); + } +@@ -669,8 +669,8 @@ static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue, + { + might_sleep(); + +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (unlikely((trans->state != IWL_TRANS_FW_ALIVE))) ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + + trans->ops->txq_enable(trans, queue, fifo, sta_id, tid, + frame_limit, ssn); +@@ -685,8 +685,8 @@ static inline void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue, + + static inline int iwl_trans_wait_tx_queue_empty(struct iwl_trans *trans) + { +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); + + return trans->ops->wait_tx_queue_empty(trans); + } +-- +1.7.1 + |