diff options
author | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2023-03-21 09:03:41 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2023-03-21 09:03:41 +0000 |
commit | f183f2c98a6eb1bc120a2bcd2b5e3ca9da0ca7a6 (patch) | |
tree | afd74db5c641a4ade657895852d18617bb5a588f | |
parent | 696988d3091da31c53fbecc3a0b0bf674d52ae0a (diff) | |
parent | 80b70e7237d10ffa1b9264b19d8246346628b306 (diff) | |
download | wlan-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.h | 22 | ||||
-rw-r--r-- | qca-wifi-host-cmn/qdf/inc/qdf_types.h | 10 | ||||
-rw-r--r-- | qca-wifi-host-cmn/scheduler/src/scheduler_api.c | 4 | ||||
-rw-r--r-- | qca-wifi-host-cmn/utils/logging/src/wlan_logging_sock_svc.c | 4 | ||||
-rw-r--r-- | qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c | 27 | ||||
-rw-r--r-- | qcacld-3.0/core/wma/src/wma_dev_if.c | 4 |
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; } |