From 9eeb35db5f381b3fafa6ca5bd5f04282a7a0aa26 Mon Sep 17 00:00:00 2001 From: Naga Date: Thu, 3 May 2018 11:26:09 +0530 Subject: [PATCH] qcacmn: Add os_if implementation of vdev cp stats Add change to support get API for vdev cp stats from within cp stats component Change-Id: Ice1c9d6858cbf7241791a6901db7934217bb6076 CRs-Fixed: 2247228 --- .../cp_stats/inc/wlan_cfg80211_ic_cp_stats.h | 10 ++++++++ .../cp_stats/src/wlan_cfg80211_ic_cp_stats.c | 24 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/os_if/linux/cp_stats/inc/wlan_cfg80211_ic_cp_stats.h b/os_if/linux/cp_stats/inc/wlan_cfg80211_ic_cp_stats.h index 2c5775f366bd..84a11434e97f 100644 --- a/os_if/linux/cp_stats/inc/wlan_cfg80211_ic_cp_stats.h +++ b/os_if/linux/cp_stats/inc/wlan_cfg80211_ic_cp_stats.h @@ -40,5 +40,15 @@ int wlan_cfg80211_get_peer_cp_stats(struct wlan_objmgr_peer *peer_obj, struct peer_ic_cp_stats *peer_cp_stats); +/** + * wlan_cfg80211_get_vdev_cp_stats() - API to get vdev stats object + * @vdev_obj: vdev object as input + * @vdev_cp_stats: vdev stats object to populate + * + * Return: 0 on success, negative value on failure + */ +int wlan_cfg80211_get_vdev_cp_stats(struct wlan_objmgr_vdev *vdev_obj, + struct vdev_ic_cp_stats *vdev_cp_stats); + #endif /* QCA_SUPPORT_CP_STATS */ #endif /* __WLAN_CFG80211_IC_CP_STATS_H__ */ diff --git a/os_if/linux/cp_stats/src/wlan_cfg80211_ic_cp_stats.c b/os_if/linux/cp_stats/src/wlan_cfg80211_ic_cp_stats.c index 6af18de3cbbb..ea7422df1b12 100644 --- a/os_if/linux/cp_stats/src/wlan_cfg80211_ic_cp_stats.c +++ b/os_if/linux/cp_stats/src/wlan_cfg80211_ic_cp_stats.c @@ -49,3 +49,27 @@ int wlan_cfg80211_get_peer_cp_stats(struct wlan_objmgr_peer *peer_obj, return qdf_status_to_os_return(status); } + +int wlan_cfg80211_get_vdev_cp_stats(struct wlan_objmgr_vdev *vdev_obj, + struct vdev_ic_cp_stats *vdev_cp_stats) +{ + QDF_STATUS status; + + if (!vdev_obj) { + cfg80211_err("Invalid input, vdev obj is NULL"); + return -EINVAL; + } + + if (!vdev_cp_stats) { + cfg80211_err("Invalid input, vdev cp obj is NULL"); + return -EINVAL; + } + + status = wlan_ucfg_get_vdev_cp_stats(vdev_obj, vdev_cp_stats); + if (QDF_IS_STATUS_ERROR(status)) { + cfg80211_err("wlan_cfg80211_get_vdev_cp_stats status: %d", + status); + } + + return qdf_status_to_os_return(status); +}