qcacld-3.0: Enhance congestion report
Enhance congestion report by pdev extend stats. Change-Id: Ica61112f95e6264db5b46db807e1f5df04b26c98 CRs-Fixed: 3234080
This commit is contained in:

committed by
Madan Koyyalamudi

parent
45cfd4b5fc
commit
25e3dfc1ee
@@ -340,6 +340,8 @@ static void target_if_cp_stats_free_stats_event(struct stats_event *ev)
|
||||
{
|
||||
qdf_mem_free(ev->pdev_stats);
|
||||
ev->pdev_stats = NULL;
|
||||
qdf_mem_free(ev->pdev_extd_stats);
|
||||
ev->pdev_extd_stats = NULL;
|
||||
qdf_mem_free(ev->peer_stats);
|
||||
ev->peer_stats = NULL;
|
||||
qdf_mem_free(ev->peer_adv_stats);
|
||||
@@ -402,16 +404,7 @@ static QDF_STATUS target_if_cp_stats_extract_pdev_stats(
|
||||
*/
|
||||
ev->pdev_stats[i].max_pwr = pdev_stats->chan_tx_pwr >> 1;
|
||||
|
||||
/*
|
||||
* if pdev_stats->pdev_id is 0, then the event contains all
|
||||
* pdev info, else only contains 1 pdev with pdev id set.
|
||||
* minus 1: align fw pdev_id and driver
|
||||
*/
|
||||
if (pdev_stats->pdev_id)
|
||||
ev->pdev_stats[i].pdev_id = pdev_stats->pdev_id - 1;
|
||||
else
|
||||
ev->pdev_stats[i].pdev_id = i;
|
||||
|
||||
ev->pdev_stats[i].pdev_id = pdev_stats->pdev_id;
|
||||
ev->pdev_stats[i].rx_clear_count = pdev_stats->rx_clear_count;
|
||||
ev->pdev_stats[i].tx_frame_count = pdev_stats->tx_frame_count;
|
||||
ev->pdev_stats[i].cycle_count = pdev_stats->cycle_count;
|
||||
@@ -456,6 +449,55 @@ static QDF_STATUS target_if_cp_stats_extract_pmf_bcn_protect_stats(
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS
|
||||
target_if_cp_stats_extract_pdev_extd_stats(struct wmi_unified *wmi_hdl,
|
||||
wmi_host_stats_event *stats_param,
|
||||
struct stats_event *ev,
|
||||
uint8_t *data)
|
||||
{
|
||||
uint32_t i;
|
||||
QDF_STATUS status;
|
||||
wmi_host_pdev_ext_stats *pdev_extd_stats;
|
||||
|
||||
if (!(stats_param->stats_id & WMI_REQUEST_PDEV_EXTD_STAT))
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
ev->pdev_extd_stats = qdf_mem_malloc(sizeof(*ev->pdev_extd_stats) *
|
||||
WLAN_UMAC_MAX_RP_PID);
|
||||
if (!ev->pdev_extd_stats)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
pdev_extd_stats = qdf_mem_malloc(sizeof(*pdev_extd_stats));
|
||||
if (!pdev_extd_stats)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
ev->num_pdev_extd_stats = 0;
|
||||
for (i = 0; i < stats_param->num_pdev_ext_stats; i++) {
|
||||
qdf_mem_set(pdev_extd_stats, sizeof(*pdev_extd_stats), 0);
|
||||
|
||||
status = wmi_extract_pdev_ext_stats(wmi_hdl, data, i,
|
||||
pdev_extd_stats);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
qdf_mem_free(pdev_extd_stats);
|
||||
cp_stats_err("wmi_extract_pdev_ext_stats failed");
|
||||
return status;
|
||||
}
|
||||
|
||||
ev->num_pdev_extd_stats++;
|
||||
ev->pdev_extd_stats[i].pdev_id =
|
||||
pdev_extd_stats->pdev_id;
|
||||
ev->pdev_extd_stats[i].my_rx_count =
|
||||
pdev_extd_stats->my_rx_count;
|
||||
ev->pdev_extd_stats[i].rx_matched_11ax_msdu_cnt =
|
||||
pdev_extd_stats->rx_matched_11ax_msdu_cnt;
|
||||
ev->pdev_extd_stats[i].rx_other_11ax_msdu_cnt =
|
||||
pdev_extd_stats->rx_other_11ax_msdu_cnt;
|
||||
}
|
||||
|
||||
qdf_mem_free(pdev_extd_stats);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void target_if_cp_stats_extract_peer_extd_stats(
|
||||
struct wmi_unified *wmi_hdl,
|
||||
wmi_host_stats_event *stats_param,
|
||||
@@ -858,6 +900,13 @@ static QDF_STATUS target_if_cp_stats_extract_event(struct wmi_unified *wmi_hdl,
|
||||
status = target_if_cp_stats_extract_pmf_bcn_protect_stats(wmi_hdl,
|
||||
&stats_param,
|
||||
ev, data);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return status;
|
||||
|
||||
status = target_if_cp_stats_extract_pdev_extd_stats(wmi_hdl,
|
||||
&stats_param,
|
||||
ev, data);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -1428,8 +1477,9 @@ static uint32_t get_stats_id(enum stats_req_type type)
|
||||
default:
|
||||
break;
|
||||
case TYPE_CONNECTION_TX_POWER:
|
||||
case TYPE_CONGESTION_STATS:
|
||||
return WMI_REQUEST_PDEV_STAT;
|
||||
case TYPE_CONGESTION_STATS:
|
||||
return WMI_REQUEST_PDEV_STAT | WMI_REQUEST_PDEV_EXTD_STAT;
|
||||
case TYPE_PEER_STATS:
|
||||
return WMI_REQUEST_PEER_STAT | WMI_REQUEST_PEER_EXTD_STAT;
|
||||
case TYPE_STATION_STATS:
|
||||
|
Reference in New Issue
Block a user