qcacmn: Add wmi support to get link airtime usage stats
Add wmi support to get link airtime usage stats Change-Id: Ie23c980de1178a7293eca19b3576da86d6318d21 CRs-Fixed: 3199400
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c1f2908102
commit
61d0aa9de0
@@ -4777,4 +4777,16 @@ wmi_extract_pktlog_decode_info_event(wmi_unified_t wmi_handle,
|
|||||||
QDF_STATUS wmi_unified_pn_mgmt_rxfilter_send_cmd(
|
QDF_STATUS wmi_unified_pn_mgmt_rxfilter_send_cmd(
|
||||||
struct wmi_unified *wmi_handle,
|
struct wmi_unified *wmi_handle,
|
||||||
struct vdev_pn_mgmt_rxfilter_params *params);
|
struct vdev_pn_mgmt_rxfilter_params *params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_extract_pdev_telemetry_stats_tlv - extract pdev telemetry stats
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @evt_buf: pointer to event buffer
|
||||||
|
* @pdev stats: Pointer to hold pdev telemetry stats
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||||
|
*/
|
||||||
|
QDF_STATUS wmi_extract_pdev_telemetry_stats(
|
||||||
|
wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
struct wmi_host_pdev_telemetry_stats *pdev_stats);
|
||||||
#endif /* _WMI_UNIFIED_API_H_ */
|
#endif /* _WMI_UNIFIED_API_H_ */
|
||||||
|
@@ -893,6 +893,7 @@ typedef enum {
|
|||||||
WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000,
|
WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000,
|
||||||
WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT = 0x8000,
|
WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT = 0x8000,
|
||||||
WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT = 0x10000,
|
WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT = 0x10000,
|
||||||
|
WMI_HOST_REQUEST_PDEV_TELEMETRY_STAT = 0x40000,
|
||||||
} wmi_host_stats_id;
|
} wmi_host_stats_id;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -4716,6 +4717,20 @@ struct wmi_host_tsf_event {
|
|||||||
uint32_t use_tqm_timer;
|
uint32_t use_tqm_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wmi_host_peer_adv_stats - peer adv stats event structure
|
||||||
|
* @avg_chan_lat_per_ac: average channel latency
|
||||||
|
* @estimated_air_time_per_ac: Percentage of air time available for each AC
|
||||||
|
* BIT[0-7] : AC_BE
|
||||||
|
* BIT[8-15] : AC_BK
|
||||||
|
* BIT[16-23] : AC_VI
|
||||||
|
* BIT[24-31] : AC_VO
|
||||||
|
*/
|
||||||
|
struct wmi_host_pdev_telemetry_stats {
|
||||||
|
uint32_t avg_chan_lat_per_ac[WIFI_AC_MAX];
|
||||||
|
uint32_t estimated_air_time_per_ac;
|
||||||
|
};
|
||||||
|
|
||||||
#define WMI_EVENT_ID_INVALID 0
|
#define WMI_EVENT_ID_INVALID 0
|
||||||
/**
|
/**
|
||||||
* Host based ENUM IDs for events to abstract target enums for event_id
|
* Host based ENUM IDs for events to abstract target enums for event_id
|
||||||
|
@@ -3003,6 +3003,11 @@ QDF_STATUS
|
|||||||
uint8_t *pdev_id, uint8_t *software_image,
|
uint8_t *pdev_id, uint8_t *software_image,
|
||||||
uint8_t *chip_info,
|
uint8_t *chip_info,
|
||||||
uint32_t *pktlog_json_version);
|
uint32_t *pktlog_json_version);
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
(*extract_pdev_telemetry_stats)(
|
||||||
|
wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
struct wmi_host_pdev_telemetry_stats *pdev_stats);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Forward declartion for psoc*/
|
/* Forward declartion for psoc*/
|
||||||
|
@@ -3851,3 +3851,22 @@ wmi_extract_pktlog_decode_info_event(wmi_unified_t wmi_handle,
|
|||||||
pktlog_json_version);
|
pktlog_json_version);
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_extract_pdev_telemetry_stats_tlv - extract pdev telemetry stats
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @evt_buf: pointer to event buffer
|
||||||
|
* @pdev stats: Pointer to hold pdev telemetry stats
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||||
|
*/
|
||||||
|
QDF_STATUS wmi_extract_pdev_telemetry_stats(
|
||||||
|
wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
struct wmi_host_pdev_telemetry_stats *pdev_stats)
|
||||||
|
{
|
||||||
|
if (wmi_handle->ops->extract_pdev_telemetry_stats)
|
||||||
|
return wmi_handle->ops->extract_pdev_telemetry_stats(
|
||||||
|
wmi_handle, evt_buf, pdev_stats);
|
||||||
|
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -593,7 +593,7 @@ extract_all_stats_counts_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
return QDF_STATUS_E_FAULT;
|
return QDF_STATUS_E_FAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 1; i <= WMI_REQUEST_VDEV_EXTD_STAT; i = i << 1) {
|
for (i = 1; i <= WMI_REQUEST_PDEV_TELEMETRY_STAT; i = i << 1) {
|
||||||
switch (ev->stats_id & i) {
|
switch (ev->stats_id & i) {
|
||||||
case WMI_REQUEST_PEER_STAT:
|
case WMI_REQUEST_PEER_STAT:
|
||||||
stats_param->stats_id |= WMI_HOST_REQUEST_PEER_STAT;
|
stats_param->stats_id |= WMI_HOST_REQUEST_PEER_STAT;
|
||||||
@@ -641,6 +641,10 @@ extract_all_stats_counts_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
stats_param->stats_id |=
|
stats_param->stats_id |=
|
||||||
WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT;
|
WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT;
|
||||||
break;
|
break;
|
||||||
|
case WMI_REQUEST_PDEV_TELEMETRY_STAT:
|
||||||
|
stats_param->stats_id |=
|
||||||
|
WMI_HOST_REQUEST_PDEV_TELEMETRY_STAT;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17770,6 +17770,35 @@ extract_pktlog_decode_info_event_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
qdf_mem_copy(chip_info, event->chip_info, 40);
|
qdf_mem_copy(chip_info, event->chip_info, 40);
|
||||||
*pktlog_json_version = event->pktlog_defs_json_version;
|
*pktlog_json_version = event->pktlog_defs_json_version;
|
||||||
*pdev_id = event->pdev_id;
|
*pdev_id = event->pdev_id;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extract_pdev_telemetry_stats_tlv - extract pdev telemetry stats
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @evt_buf: pointer to event buffer
|
||||||
|
* @pdev stats: Pointer to hold pdev telemetry stats
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
extract_pdev_telemetry_stats_tlv(
|
||||||
|
wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
struct wmi_host_pdev_telemetry_stats *pdev_stats)
|
||||||
|
{
|
||||||
|
WMI_UPDATE_STATS_EVENTID_param_tlvs *param_buf;
|
||||||
|
wmi_pdev_telemetry_stats *ev;
|
||||||
|
|
||||||
|
param_buf = (WMI_UPDATE_STATS_EVENTID_param_tlvs *)evt_buf;
|
||||||
|
|
||||||
|
if (param_buf->pdev_telemetry_stats) {
|
||||||
|
ev = (wmi_pdev_telemetry_stats *)(param_buf->pdev_telemetry_stats);
|
||||||
|
qdf_mem_copy(pdev_stats->avg_chan_lat_per_ac,
|
||||||
|
ev->avg_chan_lat_per_ac,
|
||||||
|
sizeof(ev->avg_chan_lat_per_ac));
|
||||||
|
pdev_stats->estimated_air_time_per_ac =
|
||||||
|
ev->estimated_air_time_per_ac;
|
||||||
|
}
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@@ -18219,6 +18248,7 @@ struct wmi_ops tlv_ops = {
|
|||||||
.send_vdev_pn_mgmt_rxfilter_cmd = send_vdev_pn_mgmt_rxfilter_cmd_tlv,
|
.send_vdev_pn_mgmt_rxfilter_cmd = send_vdev_pn_mgmt_rxfilter_cmd_tlv,
|
||||||
.extract_pktlog_decode_info_event =
|
.extract_pktlog_decode_info_event =
|
||||||
extract_pktlog_decode_info_event_tlv,
|
extract_pktlog_decode_info_event_tlv,
|
||||||
|
.extract_pdev_telemetry_stats = extract_pdev_telemetry_stats_tlv,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_11BE_MLO
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
|
Reference in New Issue
Block a user