qcacmn: Add support to cache peer capability info
Currently capability information and RX multicast broadcast packet count of the connected peer is not getting cached. Add support to cache the capability info from assoc request and RX multicast broadcast packets from FW. Change-Id: I105e055b1e440852e8e6b508c25e45f79db2d062 CRs-Fixed: 2409521
This commit is contained in:

committed by
nshrivas

vanhempi
a3bad2b70e
commit
5e3af684b5
@@ -43,6 +43,8 @@ static void target_if_cp_stats_free_stats_event(struct stats_event *ev)
|
||||
ev->peer_stats = NULL;
|
||||
qdf_mem_free(ev->peer_adv_stats);
|
||||
ev->peer_adv_stats = NULL;
|
||||
qdf_mem_free(ev->peer_extended_stats);
|
||||
ev->peer_extended_stats = NULL;
|
||||
qdf_mem_free(ev->cca_stats);
|
||||
ev->cca_stats = NULL;
|
||||
qdf_mem_free(ev->vdev_summary_stats);
|
||||
@@ -86,6 +88,43 @@ static QDF_STATUS target_if_cp_stats_extract_pdev_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,
|
||||
struct stats_event *ev,
|
||||
uint8_t *data)
|
||||
|
||||
{
|
||||
QDF_STATUS status;
|
||||
uint32_t i;
|
||||
wmi_host_peer_extd_stats peer_extd_stats;
|
||||
|
||||
if (!stats_param->num_peer_extd_stats)
|
||||
return;
|
||||
|
||||
ev->peer_extended_stats =
|
||||
qdf_mem_malloc(sizeof(*ev->peer_extended_stats) *
|
||||
stats_param->num_peer_extd_stats);
|
||||
if (!ev->peer_extended_stats)
|
||||
return;
|
||||
|
||||
ev->num_peer_extd_stats = stats_param->num_peer_extd_stats;
|
||||
|
||||
for (i = 0; i < ev->num_peer_extd_stats; i++) {
|
||||
status = wmi_extract_peer_extd_stats(wmi_hdl, data, i,
|
||||
&peer_extd_stats);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
cp_stats_err("wmi_extract_peer_extd_stats failed");
|
||||
continue;
|
||||
}
|
||||
WMI_MAC_ADDR_TO_CHAR_ARRAY(
|
||||
&peer_extd_stats.peer_macaddr,
|
||||
ev->peer_extended_stats[i].peer_macaddr);
|
||||
ev->peer_extended_stats[i].rx_mc_bc_cnt =
|
||||
peer_extd_stats.rx_mc_bc_cnt;
|
||||
}
|
||||
}
|
||||
|
||||
static QDF_STATUS target_if_cp_stats_extract_peer_stats(
|
||||
struct wmi_unified *wmi_hdl,
|
||||
wmi_host_stats_event *stats_param,
|
||||
@@ -99,14 +138,14 @@ static QDF_STATUS target_if_cp_stats_extract_peer_stats(
|
||||
struct wmi_host_peer_adv_stats *peer_adv_stats;
|
||||
|
||||
/* Extract peer_stats */
|
||||
ev->num_peer_stats = stats_param->num_peer_stats;
|
||||
if (!ev->num_peer_stats)
|
||||
if (!stats_param->num_peer_stats)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
ev->peer_stats = qdf_mem_malloc(sizeof(*ev->peer_stats) *
|
||||
ev->num_peer_stats);
|
||||
stats_param->num_peer_stats);
|
||||
if (!ev->peer_stats)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
ev->num_peer_stats = stats_param->num_peer_stats;
|
||||
|
||||
db2dbm_enabled = wmi_service_enabled(wmi_hdl,
|
||||
wmi_service_hw_db2dbm_support);
|
||||
@@ -127,6 +166,9 @@ static QDF_STATUS target_if_cp_stats_extract_peer_stats(
|
||||
TGT_NOISE_FLOOR_DBM;
|
||||
}
|
||||
|
||||
target_if_cp_stats_extract_peer_extd_stats(wmi_hdl, stats_param, ev,
|
||||
data);
|
||||
|
||||
/* Extract peer_adv_stats */
|
||||
ev->num_peer_adv_stats = stats_param->num_peer_adv_stats;
|
||||
if (!ev->num_peer_adv_stats)
|
||||
@@ -540,7 +582,7 @@ static uint32_t get_stats_id(enum stats_req_type type)
|
||||
case TYPE_CONNECTION_TX_POWER:
|
||||
return WMI_REQUEST_PDEV_STAT;
|
||||
case TYPE_PEER_STATS:
|
||||
return WMI_REQUEST_PEER_STAT;
|
||||
return WMI_REQUEST_PEER_STAT | WMI_REQUEST_PEER_EXTD_STAT;
|
||||
case TYPE_STATION_STATS:
|
||||
return (WMI_REQUEST_AP_STAT |
|
||||
WMI_REQUEST_PEER_STAT |
|
||||
|
Viittaa uudesa ongelmassa
Block a user