From d2ed1c50cbaaf3372d7e8979cd59b6424914353d Mon Sep 17 00:00:00 2001 From: Will Huang Date: Wed, 28 Oct 2020 09:29:21 +0800 Subject: [PATCH] qcacld-3.0: Fix get sap connected sta info fcs counter always 0 Stats event from target might have several sub events, and some event has no peer stats but have adv/ext2 peer stats. Check ext/ext2 peer stats even no peer stats in target_if_cp_stats_extract_peer_stats(). Fix copy adv stats size error in tgt_mc_cp_stats_prepare_n_send_raw_station_stats(). Although get_station_stats_cb and get_peer_stats_cb is union callbacks, better to assign to get_station_stats_cb because it is for TYPE_STATION_STATS. Change-Id: I0bead0cbb8b549cc538ef4a7327f0a8303c90bd1 CRs-Fixed: 2801842 --- components/cp_stats/dispatcher/src/wlan_cp_stats_mc_tgt_api.c | 2 +- components/target_if/cp_stats/src/target_if_mc_cp_stats.c | 3 ++- os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_tgt_api.c b/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_tgt_api.c index 31045b0a130d..c46ff2b3f55d 100644 --- a/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_tgt_api.c +++ b/components/cp_stats/dispatcher/src/wlan_cp_stats_mc_tgt_api.c @@ -914,7 +914,7 @@ tgt_mc_cp_stats_prepare_n_send_raw_station_stats(struct wlan_objmgr_psoc *psoc, info.num_peer_adv_stats = 1; qdf_mem_copy(info.peer_adv_stats, peer_mc_stats->adv_stats, - sizeof(peer_mc_stats->adv_stats)); + sizeof(*peer_mc_stats->adv_stats)); } wlan_cp_stats_peer_obj_unlock(peer_cp_stats_priv); diff --git a/components/target_if/cp_stats/src/target_if_mc_cp_stats.c b/components/target_if/cp_stats/src/target_if_mc_cp_stats.c index ea88f463c402..86a3db63be8d 100644 --- a/components/target_if/cp_stats/src/target_if_mc_cp_stats.c +++ b/components/target_if/cp_stats/src/target_if_mc_cp_stats.c @@ -480,7 +480,7 @@ static QDF_STATUS target_if_cp_stats_extract_peer_stats( /* Extract peer_stats */ if (!stats_param->num_peer_stats) - return QDF_STATUS_SUCCESS; + goto adv_stats; ev->peer_stats = qdf_mem_malloc(sizeof(*ev->peer_stats) * stats_param->num_peer_stats); @@ -507,6 +507,7 @@ static QDF_STATUS target_if_cp_stats_extract_peer_stats( TGT_NOISE_FLOOR_DBM; } +adv_stats: target_if_cp_stats_extract_peer_extd_stats(wmi_hdl, stats_param, ev, data); diff --git a/os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c b/os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c index 7058358f7b43..fbe196fcead9 100644 --- a/os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c +++ b/os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c @@ -897,7 +897,7 @@ wlan_cfg80211_mc_cp_stats_get_peer_stats(struct wlan_objmgr_vdev *vdev, cookie = osif_request_cookie(request); priv = osif_request_priv(request); info.cookie = cookie; - info.u.get_peer_stats_cb = get_station_adv_stats_cb; + info.u.get_station_stats_cb = get_station_adv_stats_cb; status = ucfg_mc_cp_stats_send_stats_request(vdev, TYPE_STATION_STATS, &info); if (QDF_IS_STATUS_ERROR(status)) {