mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
qcacld-3.0: Remove redundant recovery-enabled checks
cds_trigger_recovery() already checks for various conditions before actually triggering recovery. One of these checks ensures that recovery is enabled, but some callers are checking to see if recovery is enabled before calling cds_trigger_recovery() as well. Because of this, some important checks are skipped, and crashes can occur when they should not. Remove the redundant checks at the call sites for cds_trigger_recovery() so that all of the recovery conditions are properly handled, and the wlan driver avoids crashing when it should not. Change-Id: I8c26a002b66496a1eb06263f3f8b91ead739e3ac CRs-Fixed: 2296008
This commit is contained in:
parent
50a2108ab3
commit
83044c26d3
4 changed files with 11 additions and 46 deletions
|
|
@ -990,10 +990,7 @@ qdf_nbuf_t htt_rx_hash_list_lookup(struct htt_pdev_t *pdev,
|
|||
if (!netbuf) {
|
||||
qdf_print("rx hash: %s: no entry found for %pK!\n",
|
||||
__func__, (void *)paddr);
|
||||
if (cds_is_self_recovery_enabled())
|
||||
cds_trigger_recovery(QDF_RX_HASH_NO_ENTRY_FOUND);
|
||||
else
|
||||
HTT_ASSERT_ALWAYS(0);
|
||||
cds_trigger_recovery(QDF_RX_HASH_NO_ENTRY_FOUND);
|
||||
}
|
||||
|
||||
return netbuf;
|
||||
|
|
|
|||
|
|
@ -14234,10 +14234,7 @@ void hdd_drv_ops_inactivity_handler(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (cds_is_self_recovery_enabled())
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
else
|
||||
QDF_BUG(0);
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
}
|
||||
|
||||
void hdd_pld_ipa_uc_shutdown_pipes(void)
|
||||
|
|
|
|||
|
|
@ -5965,12 +5965,7 @@ bool lim_set_nss_change(tpAniSirGlobal pMac, tpPESession psessionEntry,
|
|||
|
||||
if (!rxNss) {
|
||||
pe_err("Invalid rxNss value: %u", rxNss);
|
||||
if (!cds_is_driver_recovering()) {
|
||||
if (cds_is_self_recovery_enabled())
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
else
|
||||
QDF_BUG(0);
|
||||
}
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
}
|
||||
|
||||
tempParam.rxNss = rxNss;
|
||||
|
|
|
|||
|
|
@ -842,17 +842,8 @@ QDF_STATUS wma_vdev_detach(tp_wma_handle wma_handle,
|
|||
return status;
|
||||
|
||||
send_fail_rsp:
|
||||
if (!cds_is_driver_recovering()) {
|
||||
if (cds_is_self_recovery_enabled()) {
|
||||
WMA_LOGE("rcvd del_self_sta without del_bss, trigger recovery, vdev_id %d",
|
||||
vdev_id);
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
} else {
|
||||
WMA_LOGE("rcvd del_self_sta without del_bss, BUG_ON(), vdev_id %d",
|
||||
vdev_id);
|
||||
QDF_BUG(0);
|
||||
}
|
||||
}
|
||||
WMA_LOGE("rcvd del_self_sta without del_bss; vdev_id:%d", vdev_id);
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
status = QDF_STATUS_E_FAILURE;
|
||||
|
||||
send_rsp:
|
||||
|
|
@ -2784,16 +2775,8 @@ QDF_STATUS wma_vdev_start(tp_wma_handle wma,
|
|||
WMA_TARGET_REQ_TYPE_VDEV_STOP,
|
||||
false);
|
||||
if (!req_msg || req_msg->msg_type != WMA_DELETE_BSS_REQ) {
|
||||
if (!cds_is_driver_recovering()) {
|
||||
if (cds_is_self_recovery_enabled()) {
|
||||
WMA_LOGE("BSS is in started state before vdev start, trigger recovery");
|
||||
cds_trigger_recovery(
|
||||
QDF_REASON_UNSPECIFIED);
|
||||
} else {
|
||||
WMA_LOGE("BSS is in started state before vdev start, BUG_ON()");
|
||||
QDF_BUG(0);
|
||||
}
|
||||
}
|
||||
WMA_LOGE("BSS is in started state before vdev start");
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3196,18 +3179,11 @@ int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
|
|||
return status;
|
||||
}
|
||||
|
||||
static void wma_trigger_recovery_assert_on_fw_timeout(
|
||||
uint16_t wma_msg)
|
||||
static void wma_trigger_recovery_assert_on_fw_timeout(uint16_t wma_msg)
|
||||
{
|
||||
if (cds_is_self_recovery_enabled()) {
|
||||
WMA_LOGE("%s timed out, triggering recovery",
|
||||
mac_trace_get_wma_msg_string(wma_msg));
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
} else {
|
||||
WMA_LOGE("%s timed out, BUG_ON()",
|
||||
mac_trace_get_wma_msg_string(wma_msg));
|
||||
QDF_BUG(0);
|
||||
}
|
||||
WMA_LOGE("%s timed out, triggering recovery",
|
||||
mac_trace_get_wma_msg_string(wma_msg));
|
||||
cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
|
||||
}
|
||||
|
||||
static inline bool wma_crash_on_fw_timeout(bool crash_enabled)
|
||||
|
|
|
|||
Loading…
Reference in a new issue