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
2022-12-12 05:07:30 -08:00
зафіксовано Madan Koyyalamudi
джерело 1364e17d1a
коміт 4470bb6708

Переглянути файл

@@ -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.112020 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.112020 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
/**