blob: 348766b341bddb18aac9dcb53b37c363c6b4010c [file] [log] [blame]
/**
Copyright (c) 2008 - 2013 Quantenna Communications Inc
All Rights Reserved
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
#ifndef _QDRV_MUC_STATS_H
#define _QDRV_MUC_STATS_H
#include <net80211/ieee80211_var.h>
#include "qdrv_mac.h"
/* enum disconnects the actual display for a particular line of phy stats from the phy stats mode */
enum qdrv_muc_stats_display_choice {
QDRV_MUC_STATS_SHOW_RSSI = 0,
QDRV_MUC_STATS_SHOW_RCPI,
QDRV_MUC_STATS_SHOW_EVM,
};
enum qdrv_muc_stats_display_choice qdrv_muc_stats_get_display_choice(const struct qtn_stats *stats,
const struct ieee80211com *ic);
struct qtn_stats *qtn_muc_stats_get_addr_latest_stats(struct qdrv_mac *mac,
const struct ieee80211com *ic,
int required_phy_stat_mode);
int qdrv_muc_stats_printlog(const struct qdrv_cb *data,
struct qdrv_mac *mac,
struct ieee80211com *ic,
int argc,
char **argv);
int qdrv_muc_get_noise(struct qdrv_mac *mac, const struct ieee80211com *ic);
int qdrv_muc_get_rssi_by_chain(struct qdrv_mac *mac,
const struct ieee80211com *ic,
unsigned int rf_chain);
u_int32_t qdrv_muc_get_rx_gain_fields(struct qdrv_mac *mac, const struct ieee80211com *ic);
int qdrv_muc_get_phy_stat(struct qdrv_mac *mac,
const struct ieee80211com *ic,
const char *name_of_stat,
const unsigned int array_index,
int *stat_value);
int qdrv_muc_stats_rxtx_phy_rate(const struct ieee80211_node *, const int is_rx,
uint8_t *nss, uint8_t *mcs, uint32_t * phy_rate);
int qdrv_muc_stats_rssi(const struct ieee80211_node *);
int qdrv_muc_stats_smoothed_rssi(const struct ieee80211_node *ni);
int qdrv_muc_stats_snr(const struct ieee80211_node *);
int qdrv_muc_stats_max_queue(const struct ieee80211_node *);
u_int32_t qdrv_muc_stats_mcs_to_phyrate(u_int8_t bw, u_int8_t sgi, u_int8_t mcs,
uint8_t nss, uint8_t vht);
ssize_t qdrv_muc_get_size_rssi_phy_stats(void);
u_int32_t qdrv_muc_stats_tx_failed(const struct ieee80211_node *);
int qdrv_muc_get_last_phy_stats(struct qdrv_mac *mac, struct ieee80211com *ic,
struct ieee80211_phy_stats *ps, uint8_t all_stats);
int qdrv_muc_stats_hw_noise(const struct ieee80211_node *ni);
u_int32_t qdrv_muc_stats_tx_airtime(const struct ieee80211_node *);
u_int32_t qdrv_muc_stats_tx_accum_airtime(const struct ieee80211_node *);
u_int32_t qdrv_muc_stats_rx_airtime(const struct ieee80211_node *);
u_int32_t qdrv_muc_stats_rx_accum_airtime(const struct ieee80211_node *);
int qdrv_muc_get_last_cca_stats(struct qdrv_mac *mac, struct ieee80211com *ic, struct qtn_exp_cca_stats *cs);
#endif