Browse Source

qcacld-3.0: Add diag logging support for measurement report

Introduce diag logging support for Neighbor report and
beacon report via event id EVENT_WLAN_NBR_RPT and
EVENT_WLAN_BCN_RPT.

For Neighbor report token, ssid, report number, frequency
list and frequency is sent. For Beacon report token, mode,
operating class, channel, duration, request_mode and report
number is sent.

Change-Id: I7ef407fa729e608ad0a7036f024acbf8b5180181
CRs-Fixed: 3370758
Vijay Raj 2 years ago
parent
commit
4470bb6708
1 changed files with 87 additions and 1 deletions
  1. 87 1
      components/cmn_services/logging/inc/wlan_connectivity_logging.h

+ 87 - 1
components/cmn_services/logging/inc/wlan_connectivity_logging.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 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 above
@@ -161,6 +161,10 @@ enum wlan_main_tag {
  * @WLAN_CONN_DIAG_EAP_FAIL_EVENT: EAP failure
  * @WLAN_CONN_DIAG_CUSTOM_EVENT: Additional WLAN logs
  * @WLAN_CONN_DIAG_EAP_START_EVENT: EAPOL start frame
+ * @WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT: Neighbor report request
+ * @WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT: Neighbor report response
+ * @WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT: Beacon report request
+ * @WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT: Beacon report response
  * @WLAN_CONN_DIAG_MAX: MAX tag
  */
 enum qca_conn_diag_log_event_type {
@@ -205,6 +209,10 @@ enum qca_conn_diag_log_event_type {
 	WLAN_CONN_DIAG_EAP_FAIL_EVENT,
 	WLAN_CONN_DIAG_CUSTOM_EVENT,
 	WLAN_CONN_DIAG_EAP_START_EVENT,
+	WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT,
+	WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT,
+	WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT,
+	WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT,
 	WLAN_CONN_DIAG_MAX
 };
 
@@ -224,6 +232,84 @@ struct wlan_connectivity_log_diag_cmn {
 	uint64_t ktime_us;
 } qdf_packed;
 
+#define DIAG_NBR_RPT_VERSION 1
+
+/**
+ * struct wlan_diag_nbr_rpt - Neighbor report structure
+ * @diag_cmn: Common diag info
+ * @version: structure version
+ * @num_rpt: the number of neighbor report elements in response frame.
+ * @subtype: Event Subtype
+ * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
+ * @num_freq: Number of frequency in response frame
+ * @ssid_len: SSID length
+ * @seq_num: Sequence number
+ * @ssid: SSID
+ * @freq: Frequency list in response frame
+ */
+struct wlan_diag_nbr_rpt {
+	struct wlan_connectivity_log_diag_cmn diag_cmn;
+	uint8_t version;
+	uint8_t num_rpt;
+	uint8_t subtype;
+	uint8_t token;
+	uint16_t num_freq;
+	uint16_t ssid_len;
+	uint32_t seq_num;
+	char ssid[WLAN_SSID_MAX_LEN];
+	uint32_t freq[WLAN_MAX_LOGGING_FREQ];
+} qdf_packed;
+
+/**
+ * enum wlan_bcn_rpt_measurement_mode - Measurement mode enum.
+ * Defined in IEEE Std 802.11‐2020 Table 9-103.
+ * @MEASURE_MODE_PASSIVE: Passive measurement mode
+ * @MEASURE_MODE_ACTIVE: Active measurement mode
+ * @MEASURE_MODE_BCN_TABLE: Beacon table measurement mode
+ * @MEASURE_MODE_RESERVED: Reserved
+ */
+enum wlan_bcn_rpt_measurement_mode {
+	MEASURE_MODE_PASSIVE = 0,
+	MEASURE_MODE_ACTIVE,
+	MEASURE_MODE_BCN_TABLE,
+	MEASURE_MODE_RESERVED = 0xFF
+};
+
+#define DIAG_BCN_RPT_VERSION 1
+
+/**
+ * struct wlan_diag_bcn_rpt - Beacon report structure
+ * @diag_cmn: Common diag info
+ * @version: structure version
+ * @subtype: Event Subtype
+ * @diag_token: Dialog token
+ * @op_class: Operating classes that include primary channels
+ * @chan: The channel number field in the beacon report request.
+ * @req_mode: hex value defines Duration mandatory, parallel, enable,
+ * request, and report bits.
+ * @num_rpt: the number of neighbor report elements in response frame.
+ * @meas_token: A nonzero number that is unique among the Measurement Request
+ * elements
+ * @mode: Mode used for measurement.Values defined in IEEE
+ * Std 802.11‐2020 Table 9-103.
+ * @duration: The duration over which the Beacon report was measured.(in ms)
+ * @seq_num: Sequence number.
+ */
+struct wlan_diag_bcn_rpt {
+	struct wlan_connectivity_log_diag_cmn diag_cmn;
+	uint8_t version;
+	uint8_t subtype;
+	uint8_t diag_token;
+	uint8_t op_class;
+	uint8_t chan;
+	uint8_t req_mode;
+	uint8_t num_rpt;
+	uint8_t meas_token;
+	uint16_t mode;
+	uint16_t duration;
+	uint32_t seq_num;
+} qdf_packed;
+
 #define DIAG_ROAM_CAND_VERSION 1
 
 /**