blob: 66ab78badd06806048dc5d4fbca8888e05286508 [file] [log] [blame]
/*
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: wlan_cfg80211_ic_cp_stats.h
*
* This Header file provide declaration for cfg80211 command handler API
* registered cp stats and specific with ic
*/
#ifndef __WLAN_CFG80211_IC_CP_STATS_H__
#define __WLAN_CFG80211_IC_CP_STATS_H__
#ifdef QCA_SUPPORT_CP_STATS
#include <wlan_objmgr_cmn.h>
#include <wlan_cp_stats_ic_defs.h>
#ifdef WLAN_ATF_ENABLE
#include <wlan_cp_stats_ic_atf_defs.h>
#endif
#include <wlan_cp_stats_ic_dcs_defs.h>
/**
* wlan_cfg80211_get_peer_cp_stats() - API to get peer stats object
* @peer_obj: peer object as input
* @peer_cp_stats: peer stats object to populate
*
* Return: 0 on success, negative value on failure
*/
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);
/**
* wlan_cfg80211_get_pdev_cp_stats() - API to get pdev cp stats object
* @pdev_obj: pdev object as input
* @pdev_cp_stats: pdev cp stats object to populate
*
* Return: 0 on success, negative value on failure
*/
int wlan_cfg80211_get_pdev_cp_stats(struct wlan_objmgr_pdev *pdev_obj,
struct pdev_ic_cp_stats *pdev_cp_stats);
#ifdef WLAN_ATF_ENABLE
/**
* wlan_cfg80211_get_peer_atf_cp_stats() - API to get ATF peer stats object
* @peer_obj: peer object as input
* @atf_cp_stats: atf peer cp stats object to populate
*
* Return: 0 on success, negative value on failure
*/
int
wlan_cfg80211_get_atf_peer_cp_stats(struct wlan_objmgr_peer *peer_obj,
struct atf_peer_cp_stats *atf_cp_stats);
/**
* wlan_cfg80211_get_peer_atf_cp_stats_from_mac() - API to get ATF peer
* stats object from peer mac address
* @vdev_obj: vdev object as input
* @mac: peer mac address as input
* @atf_cp_stats: atf peer cp stats object to populate
*
* API used from ucfg layer to get ATF peer cp stats object when only peer
* mac address is available
*
* Return: 0 on success, negative value on failure
*/
int wlan_cfg80211_get_atf_peer_cp_stats_from_mac(
struct wlan_objmgr_vdev *vdev_obj,
uint8_t *mac,
struct atf_peer_cp_stats *atf_cp_stats);
#endif /* WLAN_ATF_ENABLE */
/**
* wlan_cfg80211_get_dcs_pdev_cp_stats() - API to get DCS chan stats
* @pdev_obj: pdev object as input
* @dcs_chan_stats: DCS pdev stats object to populate
*
* Return: 0 on success, negative value on failure
*/
int wlan_cfg80211_get_dcs_pdev_cp_stats(
struct wlan_objmgr_pdev *pdev_obj,
struct pdev_dcs_chan_stats *dcs_chan_stats);
#endif /* QCA_SUPPORT_CP_STATS */
#endif /* __WLAN_CFG80211_IC_CP_STATS_H__ */