qcacld-3.0: Trigger pktlog as part of unusual disconnect
Trigger packet logs if deauth/Disconnect comes with reason code
other than eSIR_MAC_UNSPEC_FAILURE_REASON,
eSIR_MAC_DEAUTH_LEAVING_BSS_REASON,
eSIR_MAC_DISASSOC_LEAVING_BSS_REASON
Change-Id: I906abf4e4b7c7b9fb109fa1ead1afed15a9f5e81
CRs-Fixed: 2071173
diff --git a/core/mac/inc/ani_global.h b/core/mac/inc/ani_global.h
index 6d6da13..2c81e22 100644
--- a/core/mac/inc/ani_global.h
+++ b/core/mac/inc/ani_global.h
@@ -173,6 +173,7 @@
* @WLAN_LOG_REASON_SCAN_NOT_ALLOWED: scan not allowed due to connection states
* @WLAN_LOG_REASON_HB_FAILURE: station triggered heart beat failure with AP
* @WLAN_LOG_REASON_ROAM_HO_FAILURE: Handover failed during LFR3 roaming
+ * @WLAN_LOG_REASON_DISCONNECT: Disconnect because of some failure
*/
enum log_event_host_reason_code {
WLAN_LOG_REASON_CODE_UNUSED,
@@ -188,7 +189,8 @@
WLAN_LOG_REASON_NO_SCAN_RESULTS,
WLAN_LOG_REASON_SCAN_NOT_ALLOWED,
WLAN_LOG_REASON_HB_FAILURE,
- WLAN_LOG_REASON_ROAM_HO_FAILURE
+ WLAN_LOG_REASON_ROAM_HO_FAILURE,
+ WLAN_LOG_REASON_DISCONNECT
};
diff --git a/core/mac/src/pe/lim/lim_process_deauth_frame.c b/core/mac/src/pe/lim/lim_process_deauth_frame.c
index 25e002a..d5e99d0 100644
--- a/core/mac/src/pe/lim/lim_process_deauth_frame.c
+++ b/core/mac/src/pe/lim/lim_process_deauth_frame.c
@@ -163,6 +163,17 @@
GET_LIM_SYSTEM_ROLE(psessionEntry), frame_rssi,
reasonCode, lim_dot11_reason_str(reasonCode),
MAC_ADDR_ARRAY(pHdr->sa));
+
+ if (pMac->roam.configParam.enable_fatal_event &&
+ (reasonCode != eSIR_MAC_UNSPEC_FAILURE_REASON &&
+ reasonCode != eSIR_MAC_DEAUTH_LEAVING_BSS_REASON &&
+ reasonCode != eSIR_MAC_DISASSOC_LEAVING_BSS_REASON)) {
+ cds_flush_logs(WLAN_LOG_TYPE_FATAL,
+ WLAN_LOG_INDICATOR_HOST_DRIVER,
+ WLAN_LOG_REASON_DISCONNECT,
+ false, false);
+ }
+
lim_diag_event_report(pMac, WLAN_PE_DIAG_DEAUTH_FRAME_EVENT,
psessionEntry, 0, reasonCode);
diff --git a/core/mac/src/pe/lim/lim_process_disassoc_frame.c b/core/mac/src/pe/lim/lim_process_disassoc_frame.c
index f1a8697..0d48700 100644
--- a/core/mac/src/pe/lim/lim_process_disassoc_frame.c
+++ b/core/mac/src/pe/lim/lim_process_disassoc_frame.c
@@ -162,6 +162,16 @@
lim_dot11_reason_str(reasonCode), MAC_ADDR_ARRAY(pHdr->sa));
lim_diag_event_report(pMac, WLAN_PE_DIAG_DISASSOC_FRAME_EVENT,
psessionEntry, 0, reasonCode);
+
+ if (pMac->roam.configParam.enable_fatal_event &&
+ (reasonCode != eSIR_MAC_UNSPEC_FAILURE_REASON &&
+ reasonCode != eSIR_MAC_DEAUTH_LEAVING_BSS_REASON &&
+ reasonCode != eSIR_MAC_DISASSOC_LEAVING_BSS_REASON)) {
+ cds_flush_logs(WLAN_LOG_TYPE_FATAL,
+ WLAN_LOG_INDICATOR_HOST_DRIVER,
+ WLAN_LOG_REASON_DISCONNECT,
+ false, false);
+ }
/**
* Extract 'associated' context for STA, if any.
* This is maintained by DPH and created by LIM.