qcacmn: Add stats in Spectral report processing path
Add the following stats. - Number of Spectral events received from the target - Number of consume_spectral_report() invocations - Number of fill_samp_msg() invocations - Number of SAMP messages that are ready to be sent to the user-space - Number of SAMP messages queued to the user-space Change-Id: I53fda4b309620043a77bc2bc87573941d7fb0bcb CRs-Fixed: 3156151
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4759d79767
commit
aeb2ffde14
@@ -469,6 +469,23 @@ struct spectral_cp_request {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct spectral_data_stats - Spectral data stats
|
||||||
|
* @spectral_rx_events: Number of Spectral rx events
|
||||||
|
* @consume_spectral_calls: Number of consume_spectral_report() invocations
|
||||||
|
* @fill_samp_msg_calls: Number of fill_samp_msg() invocations
|
||||||
|
* @msgs_ready_for_user: Number of SAMP messages that are ready to be sent to
|
||||||
|
* user-space
|
||||||
|
* @msgs_queued_to_user: Number of SAMP messages queued to the user-space
|
||||||
|
*/
|
||||||
|
struct spectral_data_stats {
|
||||||
|
uint32_t spectral_rx_events;
|
||||||
|
uint32_t consume_spectral_calls;
|
||||||
|
uint32_t fill_samp_msg_calls;
|
||||||
|
uint32_t msgs_ready_for_user;
|
||||||
|
uint32_t msgs_queued_to_user;
|
||||||
|
};
|
||||||
|
|
||||||
#ifndef __KERNEL__
|
#ifndef __KERNEL__
|
||||||
|
|
||||||
static inline int16_t
|
static inline int16_t
|
||||||
|
@@ -1259,6 +1259,7 @@ int get_supported_sscan_bw_pos(enum phy_ch_width sscan_bw);
|
|||||||
* @supported_bws: Supported sscan bandwidths for all sscan modes and
|
* @supported_bws: Supported sscan bandwidths for all sscan modes and
|
||||||
* operating widths
|
* operating widths
|
||||||
* @supported_sscan_bw_list: List of supported sscan widths for all sscan modes
|
* @supported_sscan_bw_list: List of supported sscan widths for all sscan modes
|
||||||
|
* @data_stats: stats in Spectral data path
|
||||||
*/
|
*/
|
||||||
struct target_if_spectral {
|
struct target_if_spectral {
|
||||||
struct wlan_objmgr_pdev *pdev_obj;
|
struct wlan_objmgr_pdev *pdev_obj;
|
||||||
@@ -1392,6 +1393,7 @@ struct target_if_spectral {
|
|||||||
supported_bws[SPECTRAL_SCAN_MODE_MAX][CH_WIDTH_MAX];
|
supported_bws[SPECTRAL_SCAN_MODE_MAX][CH_WIDTH_MAX];
|
||||||
/* Whether a given sscan BW is supported on a given smode */
|
/* Whether a given sscan BW is supported on a given smode */
|
||||||
bool supported_sscan_bw_list[SPECTRAL_SCAN_MODE_MAX][CH_WIDTH_MAX];
|
bool supported_sscan_bw_list[SPECTRAL_SCAN_MODE_MAX][CH_WIDTH_MAX];
|
||||||
|
struct spectral_data_stats data_stats;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -42,12 +42,16 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
|||||||
uint16_t dest_det_idx;
|
uint16_t dest_det_idx;
|
||||||
enum spectral_scan_mode spectral_mode;
|
enum spectral_scan_mode spectral_mode;
|
||||||
uint16_t pwr_format;
|
uint16_t pwr_format;
|
||||||
|
struct spectral_data_stats *spectral_dp_stats;
|
||||||
|
|
||||||
if (!spectral) {
|
if (!spectral) {
|
||||||
spectral_err_rl("Spectral LMAC object is null");
|
spectral_err_rl("Spectral LMAC object is null");
|
||||||
return QDF_STATUS_E_NULL_VALUE;
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spectral_dp_stats = &spectral->data_stats;
|
||||||
|
spectral_dp_stats->fill_samp_msg_calls++;
|
||||||
|
|
||||||
if (!params) {
|
if (!params) {
|
||||||
spectral_err_rl("SAMP msg params structure is null");
|
spectral_err_rl("SAMP msg params structure is null");
|
||||||
return QDF_STATUS_E_NULL_VALUE;
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
@@ -281,9 +285,12 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
|||||||
if (spectral_debug_level & DEBUG_SPECTRAL4)
|
if (spectral_debug_level & DEBUG_SPECTRAL4)
|
||||||
target_if_dbg_print_samp_msg(spec_samp_msg);
|
target_if_dbg_print_samp_msg(spec_samp_msg);
|
||||||
|
|
||||||
|
spectral_dp_stats->msgs_ready_for_user++;
|
||||||
if (spectral->send_phy_data(spectral->pdev_obj,
|
if (spectral->send_phy_data(spectral->pdev_obj,
|
||||||
msg_type) == 0)
|
msg_type) == 0) {
|
||||||
spectral->spectral_sent_msg++;
|
spectral->spectral_sent_msg++;
|
||||||
|
spectral_dp_stats->msgs_queued_to_user++;
|
||||||
|
}
|
||||||
if (spectral->spectral_gen == SPECTRAL_GEN3)
|
if (spectral->spectral_gen == SPECTRAL_GEN3)
|
||||||
reset_160mhz_delivery_state_machine(spectral,
|
reset_160mhz_delivery_state_machine(spectral,
|
||||||
spectral_mode);
|
spectral_mode);
|
||||||
|
@@ -3445,12 +3445,16 @@ target_if_consume_spectral_report_gen3(
|
|||||||
bool finite_scan = false;
|
bool finite_scan = false;
|
||||||
int det = 0;
|
int det = 0;
|
||||||
struct sscan_detector_list *det_list;
|
struct sscan_detector_list *det_list;
|
||||||
|
struct spectral_data_stats *spectral_dp_stats;
|
||||||
|
|
||||||
if (!spectral) {
|
if (!spectral) {
|
||||||
spectral_err_rl("Spectral LMAC object is null");
|
spectral_err_rl("Spectral LMAC object is null");
|
||||||
goto fail_no_print;
|
goto fail_no_print;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spectral_dp_stats = &spectral->data_stats;
|
||||||
|
spectral_dp_stats->consume_spectral_calls++;
|
||||||
|
|
||||||
if (!report) {
|
if (!report) {
|
||||||
spectral_err_rl("Spectral report is null");
|
spectral_err_rl("Spectral report is null");
|
||||||
goto fail_no_print;
|
goto fail_no_print;
|
||||||
@@ -4041,6 +4045,7 @@ int target_if_spectral_process_report_gen3(
|
|||||||
struct target_if_spectral *spectral;
|
struct target_if_spectral *spectral;
|
||||||
struct spectral_report report;
|
struct spectral_report report;
|
||||||
int samp_msg_index;
|
int samp_msg_index;
|
||||||
|
struct spectral_data_stats *spectral_dp_stats;
|
||||||
|
|
||||||
spectral = get_target_if_spectral_handle_from_pdev(pdev);
|
spectral = get_target_if_spectral_handle_from_pdev(pdev);
|
||||||
if (!spectral) {
|
if (!spectral) {
|
||||||
@@ -4048,6 +4053,9 @@ int target_if_spectral_process_report_gen3(
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spectral_dp_stats = &spectral->data_stats;
|
||||||
|
spectral_dp_stats->spectral_rx_events++;
|
||||||
|
|
||||||
report.data = payload->vaddr;
|
report.data = payload->vaddr;
|
||||||
if (payload->meta_data_valid) {
|
if (payload->meta_data_valid) {
|
||||||
qdf_mem_copy(report.noisefloor, payload->meta_data.noisefloor,
|
qdf_mem_copy(report.noisefloor, payload->meta_data.noisefloor,
|
||||||
|
Reference in New Issue
Block a user