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); +}