|
@@ -2250,6 +2250,14 @@ int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+static inline bool wma_crash_on_fw_timeout(bool crash_enabled)
|
|
|
+{
|
|
|
+ /* Discard FW timeouts and dont crash during SSR */
|
|
|
+ if (cds_is_driver_recovering())
|
|
|
+ return false;
|
|
|
+
|
|
|
+ return crash_enabled;
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* wma_hold_req_timer() - wma hold request timeout function
|
|
@@ -2285,8 +2293,8 @@ void wma_hold_req_timer(void *data)
|
|
|
WMA_LOGA(FL("WMA_ADD_STA_REQ timed out"));
|
|
|
WMA_LOGD(FL("Sending add sta rsp to umac (mac:%pM, status:%d)"),
|
|
|
params->staMac, params->status);
|
|
|
- if (wma->fw_timeout_crash == true)
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true)
|
|
|
+ QDF_BUG(0);
|
|
|
else
|
|
|
wma_send_msg(wma, WMA_ADD_STA_RSP, (void *)params, 0);
|
|
|
} else if (tgt_req->msg_type == WMA_ADD_BSS_REQ) {
|
|
@@ -2295,8 +2303,8 @@ void wma_hold_req_timer(void *data)
|
|
|
WMA_LOGA(FL("WMA_ADD_BSS_REQ timed out"));
|
|
|
WMA_LOGD(FL("Sending add bss rsp to umac (mac:%pM, status:%d)"),
|
|
|
params->selfMacAddr, params->status);
|
|
|
- if (wma->fw_timeout_crash == true)
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true)
|
|
|
+ QDF_BUG(0);
|
|
|
else
|
|
|
wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)params, 0);
|
|
|
} else if ((tgt_req->msg_type == WMA_DELETE_STA_REQ) &&
|
|
@@ -2308,8 +2316,8 @@ void wma_hold_req_timer(void *data)
|
|
|
WMA_LOGP(FL("Sending del sta rsp to umac (mac:%pM, status:%d)"),
|
|
|
params->staMac, params->status);
|
|
|
|
|
|
- if (wma->fw_timeout_crash == true) {
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true) {
|
|
|
+ QDF_BUG(0);
|
|
|
} else {
|
|
|
/*
|
|
|
* Assert in development build only.
|
|
@@ -2464,8 +2472,8 @@ void wma_vdev_resp_timer(void *data)
|
|
|
WMA_LOGA("%s: WMA_SWITCH_CHANNEL_REQ timedout", __func__);
|
|
|
|
|
|
/* Trigger host crash if the flag is set */
|
|
|
- if (wma->fw_timeout_crash == true)
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true)
|
|
|
+ QDF_BUG(0);
|
|
|
else
|
|
|
wma_send_msg(wma, WMA_SWITCH_CHANNEL_RSP,
|
|
|
(void *)params, 0);
|
|
@@ -2496,8 +2504,8 @@ void wma_vdev_resp_timer(void *data)
|
|
|
goto free_tgt_req;
|
|
|
}
|
|
|
/* Trigger host crash when vdev response timesout */
|
|
|
- if (wma->fw_timeout_crash == true) {
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true) {
|
|
|
+ QDF_BUG(0);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -2564,8 +2572,8 @@ void wma_vdev_resp_timer(void *data)
|
|
|
params->status = QDF_STATUS_E_TIMEOUT;
|
|
|
|
|
|
WMA_LOGA("%s: WMA_DEL_STA_SELF_REQ timedout", __func__);
|
|
|
- if (wma->fw_timeout_crash == true) {
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true) {
|
|
|
+ QDF_BUG(0);
|
|
|
} else {
|
|
|
sme_msg.type = eWNI_SME_DEL_STA_SELF_RSP;
|
|
|
sme_msg.bodyptr = iface->del_staself_req;
|
|
@@ -2590,8 +2598,8 @@ void wma_vdev_resp_timer(void *data)
|
|
|
WMA_LOGA("%s: WMA_ADD_BSS_REQ timedout", __func__);
|
|
|
WMA_LOGI("%s: bssid %pM vdev_id %d", __func__, params->bssId,
|
|
|
tgt_req->vdev_id);
|
|
|
- if (wma->fw_timeout_crash == true) {
|
|
|
- BUG_ON(1);
|
|
|
+ if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true) {
|
|
|
+ QDF_BUG(0);
|
|
|
} else {
|
|
|
wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)params, 0);
|
|
|
QDF_ASSERT(0);
|