summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath6kl/core.h
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>2012-08-29 19:40:26 +0530
committerKalle Valo <kvalo@qca.qualcomm.com>2012-10-24 11:49:48 +0300
commit84caf8005b09e0a4a57fce44119489d1b0bbbe94 (patch)
tree073cc27545956f8f4e4bd38119d974d015459b63 /drivers/net/wireless/ath/ath6kl/core.h
parentede615d2f043539e23bc4022955dbe0c3ec70ca2 (diff)
downloadop-kernel-dev-84caf8005b09e0a4a57fce44119489d1b0bbbe94.zip
op-kernel-dev-84caf8005b09e0a4a57fce44119489d1b0bbbe94.tar.gz
ath6kl: Recover from fw crash
Re-initialize the target when fw crash is reported. This would make the device functional again after target crash. During the target re-initialization it is made sure that target is not bugged with data/cmd request, ar->state ATH6KL_STATE_RECOVERY is used for this purpose. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/core.h')
-rw-r--r--drivers/net/wireless/ath/ath6kl/core.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/core.h b/drivers/net/wireless/ath/ath6kl/core.h
index 8b31b9a..c7dcdad 100644
--- a/drivers/net/wireless/ath/ath6kl/core.h
+++ b/drivers/net/wireless/ath/ath6kl/core.h
@@ -645,6 +645,12 @@ enum ath6kl_state {
ATH6KL_STATE_DEEPSLEEP,
ATH6KL_STATE_CUTPOWER,
ATH6KL_STATE_WOW,
+ ATH6KL_STATE_RECOVERY,
+};
+
+/* Fw error recovery */
+enum ath6kl_fw_err {
+ ATH6KL_FW_ASSERT,
};
struct ath6kl {
@@ -790,6 +796,12 @@ struct ath6kl {
bool wiphy_registered;
+ struct ath6kl_fw_recovery {
+ bool enable;
+ struct work_struct recovery_work;
+ unsigned long err_reason;
+ } fw_recovery;
+
#ifdef CONFIG_ATH6KL_DEBUG
struct {
struct sk_buff_head fwlog_queue;
@@ -925,4 +937,10 @@ int ath6kl_core_init(struct ath6kl *ar, enum ath6kl_htc_type htc_type);
void ath6kl_core_cleanup(struct ath6kl *ar);
void ath6kl_core_destroy(struct ath6kl *ar);
+/* Fw error recovery */
+void ath6kl_init_hw_restart(struct ath6kl *ar);
+void ath6kl_recovery_err_notify(struct ath6kl *ar, enum ath6kl_fw_err reason);
+void ath6kl_recovery_init(struct ath6kl *ar);
+void ath6kl_recovery_cleanup(struct ath6kl *ar);
+void ath6kl_recovery_suspend(struct ath6kl *ar);
#endif /* CORE_H */
OpenPOWER on IntegriCloud