text: /*
   * 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__ */
  