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:
Ashish Kumar Dhanotiya
2018-07-10 18:54:41 +05:30
committed by nshrivas
parent a3bad2b70e
commit 5e3af684b5
8 changed files with 256 additions and 11 deletions

View File

@@ -8341,6 +8341,9 @@ static QDF_STATUS extract_all_stats_counts_tlv(wmi_unified_t wmi_handle,
case WMI_REQUEST_BCN_STAT:
stats_param->stats_id |= WMI_HOST_REQUEST_BCN_STAT;
break;
case WMI_REQUEST_PEER_EXTD_STAT:
stats_param->stats_id |= WMI_REQUEST_PEER_EXTD_STAT;
break;
case WMI_REQUEST_PEER_EXTD2_STAT:
stats_param->stats_id |= WMI_HOST_REQUEST_PEER_ADV_STATS;
@@ -8377,6 +8380,7 @@ static QDF_STATUS extract_all_stats_counts_tlv(wmi_unified_t wmi_handle,
stats_param->num_pdev_ext_stats = 0;
stats_param->num_vdev_stats = ev->num_vdev_stats;
stats_param->num_peer_stats = ev->num_peer_stats;
stats_param->num_peer_extd_stats = ev->num_peer_extd_stats;
stats_param->num_bcnflt_stats = ev->num_bcnflt_stats;
stats_param->num_chan_stats = ev->num_chan_stats;
stats_param->num_bcn_stats = ev->num_bcn_stats;
@@ -8821,7 +8825,37 @@ static QDF_STATUS extract_peer_extd_stats_tlv(wmi_unified_t wmi_handle,
void *evt_buf, uint32_t index,
wmi_host_peer_extd_stats *peer_extd_stats)
{
WMI_UPDATE_STATS_EVENTID_param_tlvs *param_buf;
wmi_stats_event_fixed_param *ev_param;
uint8_t *data;
param_buf = (WMI_UPDATE_STATS_EVENTID_param_tlvs *)evt_buf;
ev_param = (wmi_stats_event_fixed_param *)param_buf->fixed_param;
data = (uint8_t *)param_buf->data;
if (!data)
return QDF_STATUS_E_FAILURE;
if (index < ev_param->num_peer_extd_stats) {
wmi_peer_extd_stats *ev = (wmi_peer_extd_stats *) (data +
(ev_param->num_pdev_stats * sizeof(wmi_pdev_stats)) +
(ev_param->num_vdev_stats * sizeof(wmi_vdev_stats)) +
(ev_param->num_peer_stats * sizeof(wmi_peer_stats)) +
(ev_param->num_bcnflt_stats *
sizeof(wmi_bcnfilter_stats_t)) +
(ev_param->num_chan_stats * sizeof(wmi_chan_stats)) +
(ev_param->num_mib_stats * sizeof(wmi_mib_stats)) +
(ev_param->num_bcn_stats * sizeof(wmi_bcn_stats)) +
(index * sizeof(wmi_peer_extd_stats)));
qdf_mem_zero(peer_extd_stats, sizeof(wmi_host_peer_extd_stats));
qdf_mem_copy(&peer_extd_stats->peer_macaddr, &ev->peer_macaddr,
sizeof(wmi_mac_addr));
peer_extd_stats->rx_mc_bc_cnt = ev->rx_mc_bc_cnt;
}
return QDF_STATUS_SUCCESS;
}
/**