summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsiu-Chang Chen <hsiuchangchen@google.com>2023-03-21 09:03:41 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2023-03-21 09:03:41 +0000
commitf183f2c98a6eb1bc120a2bcd2b5e3ca9da0ca7a6 (patch)
treeafd74db5c641a4ade657895852d18617bb5a588f
parent696988d3091da31c53fbecc3a0b0bf674d52ae0a (diff)
parent80b70e7237d10ffa1b9264b19d8246346628b306 (diff)
downloadwlan-f183f2c98a6eb1bc120a2bcd2b5e3ca9da0ca7a6.tar.gz
Merge changes from topic "L10-wifi-tm-qpr3" into android13-gs-pixel-5.10-tm-qpr3android-13.0.0_r0.92android-13.0.0_r0.85android-13.0.0_r0.84android-13.0.0_r0.83android-13.0.0_r0.82
* changes: qcacmn: Enhance hang reason code mappings qcacld-3.0: Enhance hang reason code mappings qcacmn: Trigger recovery incase of scheduler watchdog timeout qcacmn: Enhance QCA vendor interface with new hang reason codes
-rw-r--r--qca-wifi-host-cmn/os_if/linux/qca_vendor.h22
-rw-r--r--qca-wifi-host-cmn/qdf/inc/qdf_types.h10
-rw-r--r--qca-wifi-host-cmn/scheduler/src/scheduler_api.c4
-rw-r--r--qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c4
-rw-r--r--qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c27
-rw-r--r--qcacld-3.0/core/wma/src/wma_dev_if.c4
6 files changed, 65 insertions, 6 deletions
diff --git a/qca-wifi-host-cmn/os_if/linux/qca_vendor.h b/qca-wifi-host-cmn/os_if/linux/qca_vendor.h
index e9b0b93..66b9125 100644
--- a/qca-wifi-host-cmn/os_if/linux/qca_vendor.h
+++ b/qca-wifi-host-cmn/os_if/linux/qca_vendor.h
@@ -893,6 +893,28 @@ enum qca_wlan_vendor_hang_reason {
QCA_WLAN_HANG_BUS_FAILURE = 26,
/* tasklet/credit latency found */
QCA_WLAN_HANG_TASKLET_CREDIT_LATENCY_DETECT = 27,
+ /* MSDU buffers received in REO error ring, exceeding certain
+ * threshold
+ */
+ QCA_WLAN_HANG_RX_MSDU_BUF_RCVD_IN_ERR_RING = 28,
+ /* Vdev SM is out of sync and connect req received
+ * when already connected
+ */
+ QCA_WLAN_HANG_VDEV_SM_OUT_OF_SYNC = 29,
+ /* Stats request timeout */
+ QCA_WLAN_HANG_STATS_REQ_TIMEOUT = 30,
+ /* Leak in TX descriptor for a packet */
+ QCA_WLAN_HANG_TX_DESC_LEAK = 31,
+ /* Scheduler watchdog timeout */
+ QCA_WLAN_HANG_SCHED_TIMEOUT = 32,
+ /* Failed to send self peer deletion cmd to firmware */
+ QCA_WLAN_HANG_SELF_PEER_DEL_FAIL = 33,
+ /* Received del self sta without del bss */
+ QCA_WLAN_HANG_DEL_SELF_STA_FAIL = 34,
+ /* Recovery needed when sending flush completion to userspace */
+ QCA_WLAN_HANG_FLUSH_LOGS = 35,
+ /* Host wakeup because of page fault */
+ QCA_WLAN_HANG_HOST_WAKEUP_REASON_PAGE_FAULT = 36,
};
/**
diff --git a/qca-wifi-host-cmn/qdf/inc/qdf_types.h b/qca-wifi-host-cmn/qdf/inc/qdf_types.h
index 46fd3b5..b33e040 100644
--- a/qca-wifi-host-cmn/qdf/inc/qdf_types.h
+++ b/qca-wifi-host-cmn/qdf/inc/qdf_types.h
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -1414,6 +1414,10 @@ enum qdf_suspend_type {
* @QDF_STATS_REQ_TIMEDOUT: Stats request timedout
* @QDF_RSO_STOP_RSP_TIMEOUT: Firmware hasn't sent RSO stop response
* @QDF_HOST_WAKEUP_REASON_PAGEFAULT: Host wakeup because of pagefault
+ * @QDF_SCHED_TIMEOUT: Scheduler watchdog timedout
+ * @QDF_SELF_PEER_DEL_FAILED: Failed to send self peer deletion cmd to fw
+ * @QDF_DEL_SELF_STA_FAILED: Received del self sta without del bss
+ * @QDF_FLUSH_LOGS : Recovery needed when sending flush completion to userspace
*/
enum qdf_hang_reason {
QDF_REASON_UNSPECIFIED,
@@ -1447,6 +1451,10 @@ enum qdf_hang_reason {
QDF_TX_DESC_LEAK,
QDF_RSO_STOP_RSP_TIMEOUT,
QDF_HOST_WAKEUP_REASON_PAGEFAULT,
+ QDF_SCHED_TIMEOUT,
+ QDF_SELF_PEER_DEL_FAILED,
+ QDF_DEL_SELF_STA_FAILED,
+ QDF_FLUSH_LOGS,
};
/**
diff --git a/qca-wifi-host-cmn/scheduler/src/scheduler_api.c b/qca-wifi-host-cmn/scheduler/src/scheduler_api.c
index 20a84a6..3b7951b 100644
--- a/qca-wifi-host-cmn/scheduler/src/scheduler_api.c
+++ b/qca-wifi-host-cmn/scheduler/src/scheduler_api.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -83,7 +84,8 @@ static void scheduler_watchdog_timeout(void *arg)
if (qdf_atomic_test_bit(MC_SHUTDOWN_EVENT_MASK, &sched->sch_event_flag))
return;
- SCHED_DEBUG_PANIC("Going down for Scheduler Watchdog Bite!");
+ sched_err("Triggering self recovery on sheduler timeout");
+ qdf_trigger_self_recovery(NULL, QDF_SCHED_TIMEOUT);
}
QDF_STATUS scheduler_enable(void)
diff --git a/qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c b/qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c
index 58f5782..741a763 100644
--- a/qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c
+++ b/qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -777,7 +777,7 @@ static void send_flush_completion_to_user(uint8_t ring_id)
wlan_report_log_completion(is_fatal, indicator, reason_code, ring_id);
if (recovery_needed)
- cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
+ cds_trigger_recovery(QDF_FLUSH_LOGS);
}
#endif
diff --git a/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c b/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c
index 9a46c9c..760a74b 100644
--- a/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c
@@ -1188,6 +1188,33 @@ hdd_convert_hang_reason(enum qdf_hang_reason reason)
case QDF_TASKLET_CREDIT_LATENCY_DETECT:
ret_val = QCA_WLAN_HANG_TASKLET_CREDIT_LATENCY_DETECT;
break;
+ case QDF_RX_REG_PKT_ROUTE_ERR:
+ ret_val = QCA_WLAN_HANG_RX_MSDU_BUF_RCVD_IN_ERR_RING;
+ break;
+ case QDF_VDEV_SM_OUT_OF_SYNC:
+ ret_val = QCA_WLAN_HANG_VDEV_SM_OUT_OF_SYNC;
+ break;
+ case QDF_STATS_REQ_TIMEDOUT:
+ ret_val = QCA_WLAN_HANG_STATS_REQ_TIMEOUT;
+ break;
+ case QDF_TX_DESC_LEAK:
+ ret_val = QCA_WLAN_HANG_TX_DESC_LEAK;
+ break;
+ case QDF_SCHED_TIMEOUT:
+ ret_val = QCA_WLAN_HANG_SCHED_TIMEOUT;
+ break;
+ case QDF_SELF_PEER_DEL_FAILED:
+ ret_val = QCA_WLAN_HANG_SELF_PEER_DEL_FAIL;
+ break;
+ case QDF_DEL_SELF_STA_FAILED:
+ ret_val = QCA_WLAN_HANG_DEL_SELF_STA_FAIL;
+ break;
+ case QDF_FLUSH_LOGS:
+ ret_val = QCA_WLAN_HANG_FLUSH_LOGS;
+ break;
+ case QDF_HOST_WAKEUP_REASON_PAGEFAULT:
+ ret_val = QCA_WLAN_HANG_HOST_WAKEUP_REASON_PAGE_FAULT;
+ break;
case QDF_REASON_UNSPECIFIED:
default:
ret_val = QCA_WLAN_HANG_REASON_UNSPECIFIED;
diff --git a/qcacld-3.0/core/wma/src/wma_dev_if.c b/qcacld-3.0/core/wma/src/wma_dev_if.c
index 17e60dc..358b028 100644
--- a/qcacld-3.0/core/wma/src/wma_dev_if.c
+++ b/qcacld-3.0/core/wma/src/wma_dev_if.c
@@ -688,7 +688,7 @@ static QDF_STATUS wma_vdev_self_peer_delete(tp_wma_handle wma_handle,
vdev_id);
wma_handle_vdev_detach(wma_handle, pdel_vdev_req_param);
mlme_vdev_self_peer_delete_resp(pdel_vdev_req_param);
- cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
+ cds_trigger_recovery(QDF_SELF_PEER_DEL_FAILED);
return status;
}
} else if (iface->type == WMI_VDEV_TYPE_STA) {
@@ -751,7 +751,7 @@ QDF_STATUS wma_vdev_detach(struct del_vdev_params *pdel_vdev_req_param)
send_fail_rsp:
wma_err("rcvd del_self_sta without del_bss; vdev_id:%d", vdev_id);
- cds_trigger_recovery(QDF_REASON_UNSPECIFIED);
+ cds_trigger_recovery(QDF_DEL_SELF_STA_FAILED);
status = QDF_STATUS_E_FAILURE;
return status;
}