qcacmn: Delete WIN specific files from cp_stats
Delete WIN specific files in cmd_dev cp_stats component and add them in component_dev cp_stats Change-Id: I16d0e251452225403e3e25f63a5105026c8f258c
Esse commit está contido em:
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_acs_api.h
|
||||
*
|
||||
* This file provide declarations for APIs exposed for accessing ACS related
|
||||
* control plane stats
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_IC_ACS_API_H__
|
||||
#define __WLAN_CP_STATS_IC_ACS_API_H__
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_ACS_API_H__ */
|
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_acs_defs.h
|
||||
*
|
||||
* This header file declare APIs defines structure for
|
||||
* common ACS functionality
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_ACS_DEFS_H__
|
||||
#define __WLAN_CP_STATS_ACS_DEFS_H__
|
||||
|
||||
#endif /* __WLAN_CP_STATS_ACS_DEFS_H__ */
|
@@ -1,83 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_atf_defs.h
|
||||
*
|
||||
* This header file provides structure definitions to ATF control plane stats
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_ATF_DEFS_H__
|
||||
#define __WLAN_CP_STATS_ATF_DEFS_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
|
||||
/**
|
||||
* struct atf_peer_cp_stats - ATF statistics
|
||||
* @vdev_id: vdev object identifier
|
||||
* @tokens: tokens distributed by strictq/fairq
|
||||
* @act_tokens: tokens available, after adjustemnt of excess
|
||||
* consumed in prev cycle
|
||||
* @total: total tokens distributed by strictq/fairq
|
||||
* @contribution: tokens contributed by this node
|
||||
* @tot_contribution: tokens contributed by all nodes
|
||||
* @borrow: tokens borrowed by this node
|
||||
* @unused: tokens not used
|
||||
* @pkt_drop_nobuf: packets dropped as node is already holding
|
||||
* it's share of tx buffers
|
||||
* @allowed_bufs: max tx buffers that this node can hold
|
||||
* @max_num_buf_held: max tx buffers held by this node
|
||||
* @min_num_buf_held: min tx buffers held by this node
|
||||
* @num_tx_bufs: packets sent for this node
|
||||
* @num_tx_bytes: bytes sent for this node
|
||||
* @tokens_common: tokens distributed by strictq/fairq
|
||||
* (for non-atf nodes)
|
||||
* @act_tokens_common: tokens available, after adjustemnt of
|
||||
* excess consumed in prev cycle (for non-atf nodes)
|
||||
* @timestamp: time when stats are updated
|
||||
* @weighted_unusedtokens_percent: weighted unused tokens percent
|
||||
* @raw_tx_tokens: raw tokens
|
||||
* @throughput: attainable throughput assuming 100% airtime
|
||||
* @total_used_tokens: total of used tokens
|
||||
*/
|
||||
struct atf_peer_cp_stats {
|
||||
uint8_t vdev_id;
|
||||
uint32_t tokens;
|
||||
uint32_t act_tokens;
|
||||
uint32_t total;
|
||||
uint32_t contribution;
|
||||
uint32_t tot_contribution;
|
||||
uint32_t borrow;
|
||||
uint32_t unused;
|
||||
uint32_t pkt_drop_nobuf;
|
||||
uint16_t allowed_bufs;
|
||||
uint16_t max_num_buf_held;
|
||||
uint16_t min_num_buf_held;
|
||||
uint16_t num_tx_bufs;
|
||||
uint32_t num_tx_bytes;
|
||||
uint32_t tokens_common;
|
||||
uint32_t act_tokens_common;
|
||||
uint32_t timestamp;
|
||||
uint32_t weighted_unusedtokens_percent;
|
||||
uint32_t raw_tx_tokens;
|
||||
uint32_t throughput;
|
||||
uint64_t total_used_tokens;
|
||||
};
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_ATF_DEFS_H__ */
|
@@ -1,61 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_dcs_defs.h
|
||||
*
|
||||
* This header file provide structure definitions for DCS control plane stats
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_IC_DCS_CHAN_STATS_H__
|
||||
#define __WLAN_CP_STATS_IC_DCS_CHAN_STATS_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
|
||||
/**
|
||||
* struct pdev_dcs_chan_stats - DCS statistics
|
||||
* @dcs_total_util: total channel utilization percentage
|
||||
* @dcs_ap_tx_util: tx channel utilization percentage
|
||||
* @dcs_ap_rx_util: rx channel utilization percentage
|
||||
* @dcs_self_bss_util: self BSS utilization percentage
|
||||
* @dcs_obss_util: other BSS utilization percentage
|
||||
* @dcs_obss_rx_util: total Rx channel utilization percentage
|
||||
* @dcs_free_medium: free medium percentage
|
||||
* @dcs_non_wifi_util: non wifi utilization percentage
|
||||
* @dcs_ss_under_util: spatial stream under util
|
||||
* @dcs_sec_20_util: secondary 20MHz util
|
||||
* @dcs_sec_40_util: secondary 40Mhz util
|
||||
* @dcs_sec_80_util: secondary 80MHz util
|
||||
*/
|
||||
struct pdev_dcs_chan_stats {
|
||||
uint8_t dcs_total_util;
|
||||
uint8_t dcs_ap_tx_util;
|
||||
uint8_t dcs_ap_rx_util;
|
||||
uint8_t dcs_self_bss_util;
|
||||
uint8_t dcs_obss_util;
|
||||
uint8_t dcs_obss_rx_util;
|
||||
uint8_t dcs_free_medium;
|
||||
uint8_t dcs_non_wifi_util;
|
||||
uint32_t dcs_ss_under_util;
|
||||
uint32_t dcs_sec_20_util;
|
||||
uint32_t dcs_sec_40_util;
|
||||
uint32_t dcs_sec_80_util;
|
||||
};
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_DCS_CHAN_STATS_H__ */
|
@@ -1,466 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_defs.h
|
||||
*
|
||||
* This header file maintain structure definitions for cp stats specific to ic
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_IC_DEFS_H__
|
||||
#define __WLAN_CP_STATS_IC_DEFS_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
|
||||
#include <wlan_cp_stats_ic_dcs_defs.h>
|
||||
/**
|
||||
* struct pdev_rx_rssi - rx rssi information
|
||||
*
|
||||
* @rx_rssi_pri20: primary 20 rssi
|
||||
* @rx_rssi_sec20: secondary 20 rssi
|
||||
* @rx_rssi_sec40: secondary 40 rssi
|
||||
* @rx_rssi_sec80: secondary 80 rssi
|
||||
*/
|
||||
struct pdev_rx_rssi {
|
||||
uint8_t rx_rssi_pri20;
|
||||
uint8_t rx_rssi_sec20;
|
||||
uint8_t rx_rssi_sec40;
|
||||
uint8_t rx_rssi_sec80;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct pdev_hw_stats - pdev hw stats
|
||||
*
|
||||
* @tx_hw_retries: tx hw retries
|
||||
* @rx_hw_retries: rx hw retries
|
||||
*/
|
||||
struct pdev_hw_stats {
|
||||
uint64_t tx_hw_retries;
|
||||
uint64_t tx_hw_failures;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct pdev_80211_stats - control plane stats at pdev
|
||||
*
|
||||
* the same statistics were earlier maintained with a reference to
|
||||
* ieee80211_mac_stats in vap structure, now the same structure will be
|
||||
* used as interface structure with user space application
|
||||
* make sure to align this structure with ieee80211_mac_stats
|
||||
*
|
||||
* @cs_tx_beacon: tx beacon
|
||||
* @cs_be_nobuf: tx no buf
|
||||
* @cs_tx_buf_count: tx buf count
|
||||
* @cs_tx_mgmt: tx mgmt
|
||||
* @cs_rx_mgmt: rx mgmt
|
||||
* @cs_rx_num_mgmt: rx num mgmt
|
||||
* @cs_rx_num_ctl: rx num ctrl
|
||||
* @cs_tx_rssi: tx rssi
|
||||
* @cs_rx_rssi_comb: rx rssi comb
|
||||
* @cs_rx_overrun: rx over run frames
|
||||
* @cs_rx_phy_err: rx phy error count
|
||||
* @cs_rx_ack_err: rx ack error count
|
||||
* @cs_rx_rts_err: rx rts error count
|
||||
* @cs_rx_rts_success: rx rts success count
|
||||
* @cs_no_beacons: rx beacon
|
||||
* @cs_mib_int_count: mib int count
|
||||
* @cs_rx_looplimit_start: rx loop limit start
|
||||
* @cs_rx_looplimit_end: rx loop limit end
|
||||
* @cs_ap_stats_tx_cal_enable: ap stats tx cal enable status
|
||||
* @cs_tgt_asserts: tgt assert count
|
||||
* @cs_chan_nf: channel noise floor
|
||||
* @cs_chan_nf_sec80: channel noise floor secondary 80
|
||||
* @cs_wmi_tx_mgmt: wmi tx mgmt
|
||||
* @cs_wmi_tx_mgmt_completions: wmi tx mgmt complete
|
||||
* @cs_wmi_tx_mgmt_completion_err: wmi tx mgmt error
|
||||
* @cs_peer_delete_req: peer del request
|
||||
* @cs_peer_delete_resp: peer del response
|
||||
* @cs_rx_mgmt_rssi_drop: rx mgmt rssi drop
|
||||
* @cs_tx_retries: tx retries
|
||||
* @cs_tx_frame_count: tx frame count
|
||||
* @cs_rx_frame_count: rx frame count
|
||||
* @cs_rx_clear_count: rx clear count
|
||||
* @cs_cycle_count: cycle count
|
||||
* @cs_phy_err_count: phy error count
|
||||
* @cs_chan_tx_pwr: channel tx power
|
||||
* @cs_fcsbad: fcs error count
|
||||
*/
|
||||
struct pdev_80211_stats {
|
||||
uint64_t cs_tx_beacon;
|
||||
uint32_t cs_be_nobuf;
|
||||
uint32_t cs_tx_buf_count;
|
||||
uint32_t cs_tx_mgmt;
|
||||
uint32_t cs_rx_mgmt;
|
||||
uint32_t cs_rx_num_mgmt;
|
||||
uint32_t cs_rx_num_ctl;
|
||||
uint32_t cs_tx_rssi;
|
||||
uint32_t cs_rx_rssi_comb;
|
||||
struct pdev_rx_rssi cs_rx_rssi_chain0;
|
||||
struct pdev_rx_rssi cs_rx_rssi_chain1;
|
||||
struct pdev_rx_rssi cs_rx_rssi_chain2;
|
||||
struct pdev_rx_rssi cs_rx_rssi_chain3;
|
||||
uint32_t cs_rx_overrun;
|
||||
uint32_t cs_rx_phy_err;
|
||||
uint32_t cs_rx_ack_err;
|
||||
uint32_t cs_rx_rts_err;
|
||||
uint32_t cs_rx_rts_success;
|
||||
uint32_t cs_no_beacons;
|
||||
uint32_t cs_mib_int_count;
|
||||
uint32_t cs_rx_looplimit_start;
|
||||
uint32_t cs_rx_looplimit_end;
|
||||
uint8_t cs_ap_stats_tx_cal_enable;
|
||||
uint32_t cs_tgt_asserts;
|
||||
int16_t cs_chan_nf;
|
||||
int16_t cs_chan_nf_sec80;
|
||||
uint64_t cs_wmi_tx_mgmt;
|
||||
uint64_t cs_wmi_tx_mgmt_completions;
|
||||
uint32_t cs_wmi_tx_mgmt_completion_err;
|
||||
uint32_t cs_peer_delete_req;
|
||||
uint32_t cs_peer_delete_resp;
|
||||
uint32_t cs_rx_mgmt_rssi_drop;
|
||||
uint32_t cs_tx_retries;
|
||||
uint32_t cs_tx_frame_count;
|
||||
uint32_t cs_rx_frame_count;
|
||||
uint32_t cs_rx_clear_count;
|
||||
uint32_t cs_cycle_count;
|
||||
uint32_t cs_phy_err_count;
|
||||
uint32_t cs_chan_tx_pwr;
|
||||
uint32_t cs_fcsbad;
|
||||
|
||||
/* at places of copying required for scn-stats, copy till here only */
|
||||
struct pdev_hw_stats hw_stats;
|
||||
struct pdev_dcs_chan_stats chan_stats;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct lmac_pdev_80211_stats - control plane stats at pdev
|
||||
*
|
||||
* the same statistics were earlier maintained with a reference to
|
||||
* ath_stats structure, now the same structure will be
|
||||
* used as interface structure with user space application
|
||||
*
|
||||
* @cs_ast_reset_on_error: resets on error
|
||||
* @cs_ast_hardware: fatal hardware error interrupts
|
||||
* @cs_ast_halresets: HAL resets
|
||||
* @cs_ast_bmiss: beacon miss interrupts
|
||||
* @cs_ast_brssi: beacon rssi threshold interrupts
|
||||
* @cs_ast_tx_fifoerr: management frames transmitted
|
||||
* @cs_ast_tx_filtered: tx failed 'cuz xmit filtered
|
||||
* @cs_ast_tx_noack: tx frames with no ack marked
|
||||
* @cs_ast_tx_shortpre: tx frames with short preamble
|
||||
* @cs_ast_tx_altrate: tx frames with alternate rate
|
||||
* @cs_ast_tx_protect: tx frames with protection
|
||||
* @cs_ast_rx_nobuf: rx setup failed 'cuz no skbuff
|
||||
* @cs_ast_rx_hal_in_progress: rx hal in progress
|
||||
* @cs_ast_rx_num_unknown: rx num unknown
|
||||
* @cs_ast_per_cal: periodic calibration calls
|
||||
* @cs_ast_per_calfai: periodic calibration failed
|
||||
* @cs_ast_per_rfgain: periodic calibration rfgain reset
|
||||
* @cs_ast_ant_defswitch: rx/default antenna switches
|
||||
* @cs_ast_bb_hang: BB hang detected
|
||||
* @cs_ast_mac_hang: MAC hang detected
|
||||
* @cs_ast_wow_wakeups: count of hibernate and standby wakeups
|
||||
* @cs_ast_wow_wakeupsok: count of wakeups thru WoW
|
||||
* @cs_ast_cfend_sched: count of CF-END frames scheduled
|
||||
* @cs_ast_cfend_sent: count of CF-END frames sent
|
||||
* @cs_ast_noise_floor: noise floor
|
||||
*/
|
||||
|
||||
struct lmac_pdev_80211_stats {
|
||||
uint32_t cs_ast_reset_on_error;
|
||||
uint32_t cs_ast_hardware;
|
||||
uint32_t cs_ast_halresets;
|
||||
uint32_t cs_ast_bmiss;
|
||||
uint32_t cs_ast_brssi;
|
||||
uint32_t cs_ast_tx_fifoerr;
|
||||
uint32_t cs_ast_tx_filtered;
|
||||
uint32_t cs_ast_tx_noack;
|
||||
uint32_t cs_ast_tx_shortpre;
|
||||
uint32_t cs_ast_tx_altrate;
|
||||
uint32_t cs_ast_tx_protect;
|
||||
uint32_t cs_ast_rx_nobuf;
|
||||
uint32_t cs_ast_rx_hal_in_progress;
|
||||
uint32_t cs_ast_rx_num_unknown;
|
||||
uint32_t cs_ast_per_cal;
|
||||
uint32_t cs_ast_per_calfail;
|
||||
uint32_t cs_ast_per_rfgain;
|
||||
uint32_t cs_ast_ant_defswitch;
|
||||
uint32_t cs_ast_bb_hang;
|
||||
uint32_t cs_ast_mac_hang;
|
||||
#ifdef ATH_WOW
|
||||
uint32_t cs_ast_wow_wakeups;
|
||||
uint32_t cs_ast_wow_wakeupsok;
|
||||
#endif
|
||||
#ifdef ATH_SUPPORT_CFEND
|
||||
uint32_t cs_ast_cfend_sched;
|
||||
uint32_t cs_ast_cfend_sent;
|
||||
#endif
|
||||
int16_t cs_ast_noise_floor;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct pdev_ic_cp_stats - control plane stats specific to WIN at pdev
|
||||
* @stats: 80211 stats
|
||||
* @lmac_stats: lmac 80211 stats
|
||||
*/
|
||||
struct pdev_ic_cp_stats {
|
||||
struct pdev_80211_stats stats;
|
||||
struct lmac_pdev_80211_stats lmac_stats;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct vdev_80211_stats - control plane 80211 stats at vdev
|
||||
*
|
||||
* the same statistics were earlier maintained with a reference to
|
||||
* ieee80211_mac_stats in vap structure, now the same structure will be
|
||||
* used as interface structure with user space application
|
||||
* make sure to align this structure with ieee80211_mac_stats
|
||||
*
|
||||
* @cs_tx_bcn_swba: tx beacon
|
||||
* @cs_tx_offchan_mgmt: tx offchan mgmt
|
||||
* @cs_tx_offchan_data: tx offchan data
|
||||
* @cs_tx_offchan_fail: tx offchan fail
|
||||
* @cs_rx_wrongbss: rx from wrong bssid
|
||||
* @cs_rx_tooshort: rx packet length too short
|
||||
* @cs_rx_wrongdir: rx wrong direction
|
||||
* @cs_rx_not_assoc: rx discard cuz sta !assoc
|
||||
* @cs_rx_no_privacy: rx wep but privacy off
|
||||
* @cs_rx_mgt_discard: rx mgmt frames discard
|
||||
* @cs_rx_ctl: rx control frames discard
|
||||
* @cs_rx_rs_too_big: rx rate set truncated
|
||||
* @cs_rx_elem_missing: rx required element missing
|
||||
* @cs_rx_elem_too_big: rx elem too big
|
||||
* @cs_rx_chan_err: rx chan err
|
||||
* @cs_rx_node_alloc: rx frame dropped
|
||||
* @cs_rx_ssid_mismatch: rx ssid mismatch
|
||||
* @cs_rx_auth_unsupported: rx auth unsupported algo
|
||||
* @cs_rx_auth_fail: rx auth fail
|
||||
* @cs_rx_auth_countermeasures: rx auth discard cuz counter measures
|
||||
* @cs_rx_assoc_bss: rx assoc from wrong bss
|
||||
* @cs_rx_assoc_notauth: rx assoc w/o auth
|
||||
* @cs_rx_assoc_cap_mismatch: rx assoc w/ cap mismatch
|
||||
* @cs_rx_assoc_norate: rx assoc w/ no rate match
|
||||
* @cs_rx_assoc_wpaie_err: rx assoc w/ WPA err
|
||||
* @cs_rx_action: rx action frames
|
||||
* @cs_rx_auth_err: rx auth errors
|
||||
* @cs_tx_nodefkey: tx nodefkey cuz no defkey
|
||||
* @cs_tx_noheadroom: tx failed no headroom space
|
||||
* @cs_rx_nocipherctx: rx no cipher context key
|
||||
* @cs_rx_acl: rx acl
|
||||
* @cs_rx_nowds: rx 4-addr packets with no wds enabled
|
||||
* @cs_tx_nonode: tx tx failed for lack of buf
|
||||
* @cs_tx_unknown_mgt: tx unkonwn mgmt
|
||||
* @cs_tx_cipher_err: tx cipher error
|
||||
* @cs_node_timeout: node timeout
|
||||
* @cs_crypto_nomem: no memory for crypto ctx
|
||||
* @cs_crypto_tkip: tkip crypto done in s/w
|
||||
* @cs_crypto_tkipenmic: tkip en-MIC done in s/w
|
||||
* @cs_crypto_tkipcm: crypto tkip counter measures
|
||||
* @cs_crypto_ccmp: crypto ccmp done in s/w
|
||||
* @cs_crypto_wep: crypto wep done in s/w
|
||||
* @cs_crypto_setkey_cipher: crypto set key cipher
|
||||
* @cs_crypto_setkey_nokey: crypto set key no key index
|
||||
* @cs_crypto_delkey: crypto driver key delete failed
|
||||
* @cs_crypto_cipher_err: crypto cipher err
|
||||
* @cs_crypto_attach_fail: crypto attach fail
|
||||
* @cs_crypto_swfallback: crypto sw fallback
|
||||
* @cs_crypto_keyfail: crypto key fail
|
||||
* @cs_ibss_capmismatch: ibss cap mismatch
|
||||
* @cs_ps_unassoc: ps unassoc
|
||||
* @cs_ps_aid_err: ps aid err
|
||||
* @cs_padding: padding
|
||||
* @cs_invalid_macaddr_nodealloc_failcnt: invalid mac node alloc failures
|
||||
* @cs_tx_bcn_succ_cnt:tx beacon success
|
||||
* @cs_tx_bcn_outage_cnt: tx beacon outage
|
||||
* @total_num_offchan_tx_mgmt: total number of offchan TX mgmt frames
|
||||
* @total_num_offchan_tx_data: total number of offchan TX data frames
|
||||
* @num_offchan_tx_failed: number of offchan TX frames failed
|
||||
* @sta_xceed_rlim: no of connections refused after radio limit
|
||||
* @sta_xceed_vlim: no of connections refused after vap limit
|
||||
* @mlme_auth_attempt: no of 802.11 MLME Auth Attempt
|
||||
* @mlme_auth_success: no of 802.11 MLME Auth Success
|
||||
* @authorize_attempt: no of Authorization Attempt
|
||||
* @authorize_success: no of Authorization successful
|
||||
*/
|
||||
struct vdev_80211_stats {
|
||||
uint64_t cs_rx_wrongbss;
|
||||
uint64_t cs_rx_tooshort;
|
||||
uint64_t cs_rx_wrongdir;
|
||||
uint64_t cs_rx_mcast_echo;
|
||||
uint64_t cs_rx_not_assoc;
|
||||
uint64_t cs_rx_noprivacy;
|
||||
uint64_t cs_rx_mgmt_discard;
|
||||
uint64_t cs_rx_ctl;
|
||||
uint64_t cs_rx_rs_too_big;
|
||||
uint64_t cs_rx_elem_missing;
|
||||
uint64_t cs_rx_elem_too_big;
|
||||
uint64_t cs_rx_chan_err;
|
||||
uint64_t cs_rx_node_alloc;
|
||||
uint64_t cs_rx_ssid_mismatch;
|
||||
uint64_t cs_rx_auth_unsupported;
|
||||
uint64_t cs_rx_auth_fail;
|
||||
uint64_t cs_rx_auth_countermeasures;
|
||||
uint64_t cs_rx_assoc_bss;
|
||||
uint64_t cs_rx_assoc_notauth;
|
||||
uint64_t cs_rx_assoc_cap_mismatch;
|
||||
uint64_t cs_rx_assoc_norate;
|
||||
uint64_t cs_rx_assoc_wpaie_err;
|
||||
uint64_t cs_rx_action;
|
||||
uint64_t cs_rx_auth_err;
|
||||
uint64_t cs_tx_nodefkey;
|
||||
uint64_t cs_tx_noheadroom;
|
||||
uint64_t cs_rx_acl;
|
||||
uint64_t cs_rx_nowds;
|
||||
uint64_t cs_tx_nobuf;
|
||||
uint64_t cs_tx_nonode;
|
||||
uint64_t cs_tx_cipher_err;
|
||||
uint64_t cs_tx_not_ok;
|
||||
uint64_t cs_tx_bcn_swba;
|
||||
uint64_t cs_node_timeout;
|
||||
uint64_t cs_crypto_nomem;
|
||||
uint64_t cs_crypto_tkip;
|
||||
uint64_t cs_crypto_tkipenmic;
|
||||
uint64_t cs_crypto_tkipcm;
|
||||
uint64_t cs_crypto_ccmp;
|
||||
uint64_t cs_crypto_wep;
|
||||
uint64_t cs_crypto_setkey_cipher;
|
||||
uint64_t cs_crypto_setkey_nokey;
|
||||
uint64_t cs_crypto_delkey;
|
||||
uint64_t cs_crypto_cipher_err;
|
||||
uint64_t cs_crypto_attach_fail;
|
||||
uint64_t cs_crypto_swfallback;
|
||||
uint64_t cs_crypto_keyfail;
|
||||
uint64_t cs_ibss_capmismatch;
|
||||
uint64_t cs_ps_unassoc;
|
||||
uint64_t cs_ps_aid_err;
|
||||
uint64_t cs_padding;
|
||||
uint64_t cs_tx_offchan_mgmt;
|
||||
uint64_t cs_tx_offchan_data;
|
||||
uint64_t cs_tx_offchan_fail;
|
||||
uint64_t cs_invalid_macaddr_nodealloc_fail;
|
||||
uint64_t cs_tx_bcn_success;
|
||||
uint64_t cs_tx_bcn_outage;
|
||||
uint64_t cs_sta_xceed_rlim;
|
||||
uint64_t cs_sta_xceed_vlim;
|
||||
uint64_t cs_mlme_auth_attempt;
|
||||
uint64_t cs_mlme_auth_success;
|
||||
uint64_t cs_authorize_attempt;
|
||||
uint64_t cs_authorize_success;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct vdev_80211_mac_stats - control plane 80211 mac stats at vdev
|
||||
*
|
||||
* the same statistics were earlier maintained with a reference to
|
||||
* ieee80211_mac_stats in vap structure, now the same structure will be
|
||||
* used as interface structure with user space application
|
||||
* make sure to align this structure with ieee80211_mac_stats
|
||||
*
|
||||
* @cs_rx_badkeyid: rx bad keyid
|
||||
* @cs_rx_decryptok: rx decrypt success
|
||||
* @cs_rx_wepfail: rx wep failures
|
||||
* @cs_rx_tkipreplay: rx tkip replays
|
||||
* @cs_rx_tkipformat: rx tkip format
|
||||
* @cs_rx_tkipicv: rx tkip icv
|
||||
* @cs_rx_ccmpreplay: rx ccmp replay
|
||||
* @cs_rx_ccmpformat: rx ccmp format
|
||||
* @cs_rx_ccmpmic: rx ccmp mic failures
|
||||
* @cs_rx_wpireplay: rx wpi replay
|
||||
* @cs_rx_wpimic: rx wpi mic failures
|
||||
* @cs_rx_countermeasure: rx counter measures count
|
||||
* @cs_tx_mgmt: tx mgmt
|
||||
* @cs_rx_mgmt: rx mgmt
|
||||
* @cs_tx_discard: tx dropped due to errors
|
||||
* @cs_rx_mgmt: rx dropped due to errors
|
||||
*/
|
||||
struct vdev_80211_mac_stats {
|
||||
uint64_t cs_rx_badkeyid;
|
||||
uint64_t cs_rx_decryptok;
|
||||
uint64_t cs_rx_wepfail;
|
||||
uint64_t cs_rx_tkipreplay;
|
||||
uint64_t cs_rx_tkipformat;
|
||||
uint64_t cs_rx_tkipicv;
|
||||
uint64_t cs_rx_ccmpreplay;
|
||||
uint64_t cs_rx_ccmpformat;
|
||||
uint64_t cs_rx_ccmpmic;
|
||||
uint64_t cs_rx_wpireplay;
|
||||
uint64_t cs_rx_wpimic;
|
||||
uint64_t cs_rx_countermeasure;
|
||||
uint64_t cs_tx_mgmt;
|
||||
uint64_t cs_rx_mgmt;
|
||||
uint64_t cs_tx_discard;
|
||||
uint64_t cs_rx_discard;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct vdev_ic_cp_stats - control plane stats specific to WIN at vdev
|
||||
* @stats: 80211 stats
|
||||
* @ucast_stats: unicast stats
|
||||
* @mcast_stats: multicast or broadcast stats
|
||||
*/
|
||||
struct vdev_ic_cp_stats {
|
||||
struct vdev_80211_stats stats;
|
||||
struct vdev_80211_mac_stats ucast_stats;
|
||||
struct vdev_80211_mac_stats mcast_stats;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct peer_ic_cp_stats - control plane stats specific to WIN at peer
|
||||
* the same statistics were earlier maintained with a reference to
|
||||
* ieee80211_nodestats in ni structure, now the same structure will be
|
||||
* as interface structure with user space application
|
||||
* make sure to align this structure with ieee80211_nodestats always
|
||||
*
|
||||
* @cs_rx_mgmt_rssi: rx mgmt rssi
|
||||
* @cs_rx_mgmt: rx mgmt
|
||||
* @cs_rx_noprivacy: rx no privacy
|
||||
* @cs_rx_wepfail: rx wep failures
|
||||
* @cs_rx_ccmpmic: rx ccmp mic failures
|
||||
* @cs_rx_wpimic: rx wpi mic failures
|
||||
* @cs_rx_tkipicv: rx tkip icv
|
||||
* @cs_tx_mgmt: tx mgmt
|
||||
* @cs_is_tx_not_ok: tx failures
|
||||
* @cs_ps_discard: ps discard
|
||||
* @cs_rx_mgmt_rate: rx mgmt rate
|
||||
* @cs_psq_drops: psq drops
|
||||
* @cs_tx_dropblock: tx dropblock
|
||||
* @cs_tx_assoc: tx assoc success
|
||||
* @cs_tx_assoc_fail: tx assoc failure
|
||||
*/
|
||||
struct peer_ic_cp_stats {
|
||||
int8_t cs_rx_mgmt_rssi;
|
||||
uint32_t cs_rx_mgmt;
|
||||
uint32_t cs_rx_noprivacy;
|
||||
uint32_t cs_rx_wepfail;
|
||||
uint32_t cs_rx_ccmpmic;
|
||||
uint32_t cs_rx_wpimic;
|
||||
uint32_t cs_rx_tkipicv;
|
||||
uint32_t cs_tx_mgmt;
|
||||
uint32_t cs_is_tx_not_ok;
|
||||
uint32_t cs_ps_discard;
|
||||
uint32_t cs_rx_mgmt_rate;
|
||||
uint32_t cs_psq_drops;
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
uint32_t cs_tx_dropblock;
|
||||
#endif
|
||||
uint32_t cs_tx_assoc;
|
||||
uint32_t cs_tx_assoc_fail;
|
||||
uint32_t cs_is_tx_nobuf;
|
||||
};
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_DEFS_H__ */
|
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_tgt_api.h
|
||||
*
|
||||
* This header file provides API declarations required for southbound
|
||||
* interaction specific to ic
|
||||
*/
|
||||
#ifndef __WLAN_CP_STATS_IC_TGT_API_H__
|
||||
#define __WLAN_CP_STATS_IC_TGT_API_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
|
||||
#include <wlan_objmgr_cmn.h>
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_TGT_API_H__ */
|
@@ -1,780 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_ucfg_api.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_IC_UCFG_API_H__
|
||||
#define __WLAN_CP_STATS_IC_UCFG_API_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
#include <wlan_objmgr_cmn.h>
|
||||
#include <wlan_cp_stats_ic_defs.h>
|
||||
#include <wlan_cp_stats_ic_dcs_defs.h>
|
||||
#include "../../core/src/wlan_cp_stats_defs.h"
|
||||
#ifdef WLAN_ATF_ENABLE
|
||||
#include <wlan_cp_stats_ic_atf_defs.h>
|
||||
#endif
|
||||
|
||||
#define UCFG_PDEV_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_pdev_cp_stats_##field##_inc(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->stats.cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_pdev_cp_stats_##field##_dec(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->stats.cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_pdev_cp_stats_##field##_update(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->stats.cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_beacon);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(be_nobuf);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_buf_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_num_mgmt);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_num_ctl);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_rssi);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_rssi_comb);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_overrun);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_phy_err);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_ack_err);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_rts_err);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_rts_success);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(no_beacons);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(mib_int_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_looplimit_start);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_looplimit_end);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(ap_stats_tx_cal_enable);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tgt_asserts);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(chan_nf);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(chan_nf_sec80);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt_completions);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt_completion_err);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(peer_delete_req);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(peer_delete_resp);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_mgmt_rssi_drop);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_retries);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(tx_frame_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_frame_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(rx_clear_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(cycle_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(phy_err_count);
|
||||
UCFG_PDEV_CP_STATS_SET_FUNCS(chan_tx_pwr);
|
||||
|
||||
#define UCFG_PDEV_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
ucfg_pdev_cp_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
struct pdev_ic_cp_stats *_pdev_ics; \
|
||||
if (_pdev_cs) { \
|
||||
_pdev_ics = _pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) \
|
||||
return _pdev_ics->stats.cs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(tx_mgmt);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(rx_num_mgmt);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(ap_stats_tx_cal_enable);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt_completions);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt_completion_err);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(tgt_asserts);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(rx_phy_err);
|
||||
UCFG_PDEV_CP_STATS_GET_FUNCS(fcsbad);
|
||||
|
||||
#define UCFG_PDEV_CHAN_STATS_GET_FUNCS(field) \
|
||||
static inline uint32_t \
|
||||
ucfg_pdev_chan_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
struct pdev_ic_cp_stats *_pdev_ic; \
|
||||
if (_pdev_cs) { \
|
||||
_pdev_ic = _pdev_cs->pdev_stats; \
|
||||
if (_pdev_ic) \
|
||||
return _pdev_ic->stats.chan_stats.dcs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(self_bss_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(obss_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(obss_rx_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(ap_rx_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(ap_tx_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(free_medium);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(non_wifi_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(ss_under_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(sec_20_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(sec_40_util);
|
||||
UCFG_PDEV_CHAN_STATS_GET_FUNCS(sec_80_util);
|
||||
|
||||
static inline void ucfg_pdev_cp_stats_reset(struct wlan_objmgr_pdev *_pdev)
|
||||
{
|
||||
struct pdev_cp_stats *pdev_cps = NULL;
|
||||
|
||||
pdev_cps = wlan_cp_stats_get_pdev_stats_obj(_pdev);
|
||||
if (!pdev_cps)
|
||||
return;
|
||||
|
||||
qdf_mem_zero(pdev_cps->pdev_stats, sizeof(struct pdev_ic_cp_stats));
|
||||
}
|
||||
|
||||
#define UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_inc(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->lmac_stats.cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_dec(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->lmac_stats.cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_update( \
|
||||
struct wlan_objmgr_pdev *_pdev, uint64_t _val) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
if (_pdev_cs) { \
|
||||
struct pdev_ic_cp_stats *_pdev_ics = \
|
||||
_pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
_pdev_ics->lmac_stats.cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_reset_on_error);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_hardware);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_halresets);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_bmiss);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_brssi);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_fifoerr);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_filtered);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_noack);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_shortpre);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_altrate);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_protect);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_nobuf);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_hal_in_progress);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_num_unknown);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_cal);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_calfail);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_rfgain);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_ant_defswitch);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_bb_hang);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_mac_hang);
|
||||
#ifdef ATH_WOW
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_wow_wakeups);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_wow_wakeupsok);
|
||||
#endif
|
||||
#ifdef ATH_SUPPORT_CFEND
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_cfend_sched);
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_cfend_sent);
|
||||
#endif
|
||||
UCFG_PDEV_LMAC_CP_STATS_SET_FUNCS(ast_noise_floor);
|
||||
|
||||
#define UCFG_PDEV_LMAC_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
struct pdev_cp_stats *_pdev_cs = \
|
||||
wlan_cp_stats_get_pdev_stats_obj(_pdev); \
|
||||
struct pdev_ic_cp_stats *_pdev_ics; \
|
||||
uint64_t stat = 0; \
|
||||
if (_pdev_cs) { \
|
||||
wlan_cp_stats_pdev_obj_lock(_pdev_cs); \
|
||||
_pdev_ics = _pdev_cs->pdev_stats; \
|
||||
if (_pdev_ics) { \
|
||||
stat = _pdev_ics->lmac_stats.cs_##field; \
|
||||
} \
|
||||
wlan_cp_stats_pdev_obj_unlock(_pdev_cs); \
|
||||
return stat; \
|
||||
} \
|
||||
else \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_PDEV_LMAC_CP_STATS_GET_FUNCS(ast_tx_fifoerr);
|
||||
UCFG_PDEV_LMAC_CP_STATS_GET_FUNCS(ast_tx_filtered);
|
||||
UCFG_PDEV_LMAC_CP_STATS_GET_FUNCS(ast_noise_floor);
|
||||
|
||||
#define UCFG_VDEV_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_vdev_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->stats.cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_vdev_cp_stats_##field##_dec(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->stats.cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_vdev_cp_stats_##field##_update(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->stats.cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_wrongbss);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_tooshort);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_wrongdir);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_not_assoc);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_noprivacy);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_mgmt_discard);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_ctl);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_rs_too_big);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_elem_missing);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_elem_too_big);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_chan_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_node_alloc);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_ssid_mismatch);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_auth_unsupported);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_auth_fail);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_auth_countermeasures);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_assoc_bss);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_assoc_notauth);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_assoc_cap_mismatch);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_assoc_norate);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_assoc_wpaie_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_action);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_auth_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_nodefkey);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_noheadroom);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_acl);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(rx_nowds);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_nobuf);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_nonode);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_cipher_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_not_ok);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_bcn_swba);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(node_timeout);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_nomem);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_tkip);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_tkipenmic);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_tkipcm);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_ccmp);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_wep);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_setkey_cipher);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_setkey_nokey);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_delkey);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_cipher_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_attach_fail);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_swfallback);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(crypto_keyfail);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(ibss_capmismatch);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(ps_unassoc);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(ps_aid_err);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_offchan_mgmt);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_offchan_data);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_offchan_fail);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(invalid_macaddr_nodealloc_fail);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_bcn_success);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(tx_bcn_outage);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(sta_xceed_rlim);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(sta_xceed_vlim);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(mlme_auth_attempt);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(mlme_auth_success);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(authorize_attempt);
|
||||
UCFG_VDEV_CP_STATS_SET_FUNCS(authorize_success);
|
||||
|
||||
#define UCFG_VDEV_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
ucfg_vdev_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) { \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
struct vdev_ic_cp_stats *_vdev_ics; \
|
||||
if (_vdev_cs) { \
|
||||
_vdev_ics = _vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) \
|
||||
return _vdev_ics->stats.cs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_VDEV_CP_STATS_GET_FUNCS(rx_wrongbss);
|
||||
UCFG_VDEV_CP_STATS_GET_FUNCS(rx_wrongdir);
|
||||
UCFG_VDEV_CP_STATS_GET_FUNCS(rx_ssid_mismatch);
|
||||
|
||||
#define UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_vdev_ucast_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->ucast_stats.cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_vdev_ucast_cp_stats_##field##_dec(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->ucast_stats.cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void ucfg_vdev_ucast_cp_stats_##field##_update( \
|
||||
struct wlan_objmgr_vdev *_vdev, uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->ucast_stats.cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_badkeyid);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_decryptok);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipreplay);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipformat);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpreplay);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpformat);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wpireplay);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_countermeasure);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(rx_discard);
|
||||
UCFG_VDEV_UCAST_CP_STATS_SET_FUNCS(tx_discard);
|
||||
|
||||
#define UCFG_VDEV_UCAST_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
ucfg_vdev_ucast_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
struct vdev_ic_cp_stats *_vdev_ics; \
|
||||
if (_vdev_cs) { \
|
||||
_vdev_ics = _vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) \
|
||||
return _vdev_ics->ucast_stats.cs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_VDEV_UCAST_CP_STATS_GET_FUNCS(rx_decryptok);
|
||||
UCFG_VDEV_UCAST_CP_STATS_GET_FUNCS(rx_ccmpmic);
|
||||
UCFG_VDEV_UCAST_CP_STATS_GET_FUNCS(rx_ccmpreplay);
|
||||
UCFG_VDEV_UCAST_CP_STATS_GET_FUNCS(rx_wepfail);
|
||||
|
||||
#define UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_vdev_mcast_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->mcast_stats.cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_vdev_mcast_cp_stats_##field##_dec(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->mcast_stats.cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void ucfg_vdev_mcast_cp_stats_##field##_update( \
|
||||
struct wlan_objmgr_vdev *_vdev, uint64_t _val) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
if (_vdev_cs) { \
|
||||
struct vdev_ic_cp_stats *_vdev_ics = \
|
||||
_vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) { \
|
||||
_vdev_ics->mcast_stats.cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_badkeyid);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_decryptok);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipreplay);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipformat);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpreplay);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpformat);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wpireplay);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_countermeasure);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(rx_discard);
|
||||
UCFG_VDEV_MCAST_CP_STATS_SET_FUNCS(tx_discard);
|
||||
|
||||
#define UCFG_VDEV_MCAST_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
ucfg_vdev_mcast_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) \
|
||||
{ \
|
||||
struct vdev_cp_stats *_vdev_cs = \
|
||||
wlan_cp_stats_get_vdev_stats_obj(_vdev); \
|
||||
struct vdev_ic_cp_stats *_vdev_ics; \
|
||||
if (_vdev_cs) { \
|
||||
_vdev_ics = _vdev_cs->vdev_stats; \
|
||||
if (_vdev_ics) \
|
||||
return _vdev_ics->mcast_stats.cs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_VDEV_MCAST_CP_STATS_GET_FUNCS(rx_decryptok);
|
||||
UCFG_VDEV_MCAST_CP_STATS_GET_FUNCS(rx_ccmpmic);
|
||||
UCFG_VDEV_MCAST_CP_STATS_GET_FUNCS(rx_ccmpreplay);
|
||||
UCFG_VDEV_MCAST_CP_STATS_GET_FUNCS(rx_wepfail);
|
||||
|
||||
#define UCFG_PEER_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
ucfg_peer_cp_stats_##field##_inc(struct wlan_objmgr_peer *_peer, \
|
||||
uint32_t _val) \
|
||||
{ \
|
||||
struct peer_cp_stats *_peer_cs = \
|
||||
wlan_cp_stats_get_peer_stats_obj(_peer); \
|
||||
if (_peer_cs) { \
|
||||
struct peer_ic_cp_stats *_peer_ics = \
|
||||
_peer_cs->peer_stats; \
|
||||
if (_peer_ics) { \
|
||||
_peer_ics->cs_##field += _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_peer_cp_stats_##field##_dec(struct wlan_objmgr_peer *_peer, \
|
||||
uint32_t _val) \
|
||||
{ \
|
||||
struct peer_cp_stats *_peer_cs = \
|
||||
wlan_cp_stats_get_peer_stats_obj(_peer); \
|
||||
if (_peer_cs) { \
|
||||
struct peer_ic_cp_stats *_peer_ics = \
|
||||
_peer_cs->peer_stats; \
|
||||
if (_peer_ics) { \
|
||||
_peer_ics->cs_##field -= _val;\
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
static inline void \
|
||||
ucfg_peer_cp_stats_##field##_update(struct wlan_objmgr_peer *_peer, \
|
||||
uint32_t _val) \
|
||||
{ \
|
||||
struct peer_cp_stats *_peer_cs = \
|
||||
wlan_cp_stats_get_peer_stats_obj(_peer); \
|
||||
if (_peer_cs) { \
|
||||
struct peer_ic_cp_stats *_peer_ics = \
|
||||
_peer_cs->peer_stats; \
|
||||
if (_peer_ics) { \
|
||||
_peer_ics->cs_##field = _val;\
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_mgmt_rate);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(is_tx_not_ok);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_noprivacy);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(ps_discard);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(psq_drops);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(tx_assoc);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(tx_assoc_fail);
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(is_tx_nobuf);
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
UCFG_PEER_CP_STATS_SET_FUNCS(tx_dropblock);
|
||||
#endif
|
||||
|
||||
static inline
|
||||
void ucfg_peer_cp_stats_rx_mgmt_rssi_update(struct wlan_objmgr_peer *peer,
|
||||
int8_t rssi)
|
||||
{
|
||||
struct peer_cp_stats *peer_cs;
|
||||
struct peer_ic_cp_stats *peer_cps;
|
||||
|
||||
if (!peer)
|
||||
return;
|
||||
|
||||
peer_cs = wlan_cp_stats_get_peer_stats_obj(peer);
|
||||
if (!peer_cs)
|
||||
return;
|
||||
|
||||
peer_cps = peer_cs->peer_stats;
|
||||
if (peer_cps)
|
||||
peer_cps->cs_rx_mgmt_rssi = rssi;
|
||||
}
|
||||
|
||||
static inline
|
||||
int8_t ucfg_peer_cp_stats_rx_mgmt_rssi_get(struct wlan_objmgr_peer *peer)
|
||||
{
|
||||
struct peer_cp_stats *peer_cs;
|
||||
struct peer_ic_cp_stats *peer_cps;
|
||||
int8_t val = -1;
|
||||
|
||||
if (!peer)
|
||||
return val;
|
||||
|
||||
peer_cs = wlan_cp_stats_get_peer_stats_obj(peer);
|
||||
if (!peer_cs)
|
||||
return val;
|
||||
|
||||
peer_cps = peer_cs->peer_stats;
|
||||
if (peer_cps)
|
||||
val = peer_cps->cs_rx_mgmt_rssi;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
#define UCFG_PEER_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint32_t \
|
||||
ucfg_peer_cp_stats_##field##_get(struct wlan_objmgr_peer *_peer) \
|
||||
{ \
|
||||
struct peer_cp_stats *_peer_cs = \
|
||||
wlan_cp_stats_get_peer_stats_obj(_peer); \
|
||||
struct peer_ic_cp_stats *_peer_ics; \
|
||||
if (_peer_cs) { \
|
||||
_peer_ics = _peer_cs->peer_stats; \
|
||||
if (_peer_ics) \
|
||||
return _peer_ics->cs_##field; \
|
||||
} \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
UCFG_PEER_CP_STATS_GET_FUNCS(rx_mgmt_rate);
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
UCFG_PEER_CP_STATS_GET_FUNCS(tx_dropblock);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_peer_cp_stats() - ucfg API to get peer cp stats
|
||||
* @peer_obj: pointer to peer object
|
||||
* @peer_cps: pointer to peer cp stats object to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_get_peer_cp_stats(struct wlan_objmgr_peer *peer,
|
||||
struct peer_ic_cp_stats *peer_cps);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_vdev_cp_stats() - ucfg API to get vdev cp stats
|
||||
* @vdev_obj: pointer to vdev object
|
||||
* @vdev_cps: pointer to vdev cp stats object to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_get_vdev_cp_stats(struct wlan_objmgr_vdev *vdev,
|
||||
struct vdev_ic_cp_stats *vdev_cps);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_pdev_cp_stats_ref() - API to get reference to pdev cp stats
|
||||
* @pdev_obj: pointer to pdev object
|
||||
*
|
||||
* Return: pdev_ic_cp_stats or NULL
|
||||
*/
|
||||
struct pdev_ic_cp_stats
|
||||
*wlan_ucfg_get_pdev_cp_stats_ref(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_pdev_cp_stats() - ucfg API to get pdev cp stats
|
||||
* @pdev_obj: pointer to pdev object
|
||||
* @pdev_cps: pointer to pdev cp stats object to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_get_pdev_cp_stats(struct wlan_objmgr_pdev *pdev,
|
||||
struct pdev_ic_cp_stats *pdev_cps);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_pdev_cp_stats() - ucfg API to get pdev hw stats
|
||||
* @pdev_obj: pointer to pdev object
|
||||
* @hw_stats: pointer to pdev hw cp stats to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_get_pdev_hw_cp_stats(struct wlan_objmgr_pdev *pdev,
|
||||
struct pdev_hw_stats *hw_stats);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_set_pdev_cp_stats() - ucfg API to set pdev hw stats
|
||||
* @pdev_obj: pointer to pdev object
|
||||
* @hw_stats: pointer to pdev hw cp stats
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_set_pdev_hw_cp_stats(struct wlan_objmgr_pdev *pdev,
|
||||
struct pdev_hw_stats *hw_stats);
|
||||
|
||||
#ifdef WLAN_ATF_ENABLE
|
||||
/**
|
||||
* wlan_ucfg_get_atf_peer_cp_stats() - ucfg API to get ATF peer cp stats
|
||||
* @peer_obj: pointer to peer object
|
||||
* @atf_cps: pointer to atf peer cp stats object to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS wlan_ucfg_get_atf_peer_cp_stats(struct wlan_objmgr_peer *peer,
|
||||
struct atf_peer_cp_stats *atf_cps);
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_atf_peer_cp_stats_from_mac() - ucfg API to get ATF
|
||||
* peer cp stats from peer mac address
|
||||
* @vdev_obj: pointer to vdev object
|
||||
* @mac: pointer to peer mac address
|
||||
* @atf_cps: pointer to atf peer cp stats object to populate
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_ucfg_get_atf_peer_cp_stats_from_mac(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *mac,
|
||||
struct atf_peer_cp_stats *astats);
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_ucfg_get_dcs_chan_stats() - ucfg API to set dcs chan stats
|
||||
* @pdev_obj: pointer to pdev object
|
||||
* @dcs_chan_stats: pointer to dcs chan stats structure
|
||||
*
|
||||
* Return: QDF_STATUS - Success or Failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_ucfg_get_dcs_chan_stats(struct wlan_objmgr_pdev *pdev,
|
||||
struct pdev_dcs_chan_stats *dcs_chan_stats);
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_UCFG_API_H__ */
|
@@ -1,445 +0,0 @@
|
||||
/*
|
||||
* 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_cp_stats_ic_utils_api.h
|
||||
*
|
||||
* This header file provide definitions and declarations required for northbound
|
||||
* specific to WIN
|
||||
*/
|
||||
|
||||
#ifndef __WLAN_CP_STATS_IC_UTILS_API_H__
|
||||
#define __WLAN_CP_STATS_IC_UTILS_API_H__
|
||||
|
||||
#ifdef QCA_SUPPORT_CP_STATS
|
||||
#include "wlan_cp_stats_ic_ucfg_api.h"
|
||||
|
||||
#define PEER_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
peer_cp_stats_##field##_inc(struct wlan_objmgr_peer *_peer, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_peer_cp_stats_##field##_inc(_peer, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
peer_cp_stats_##field##_dec(struct wlan_objmgr_peer *_peer, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_peer_cp_stats_##field##_inc(_peer, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
peer_cp_stats_##field##_update(struct wlan_objmgr_peer *_peer, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_peer_cp_stats_##field##_update(_peer, _val); \
|
||||
}
|
||||
|
||||
PEER_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
PEER_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_mgmt_rate);
|
||||
PEER_CP_STATS_SET_FUNCS(is_tx_not_ok);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_noprivacy);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
PEER_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
PEER_CP_STATS_SET_FUNCS(ps_discard);
|
||||
PEER_CP_STATS_SET_FUNCS(psq_drops);
|
||||
PEER_CP_STATS_SET_FUNCS(tx_assoc);
|
||||
PEER_CP_STATS_SET_FUNCS(tx_assoc_fail);
|
||||
PEER_CP_STATS_SET_FUNCS(is_tx_nobuf);
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
PEER_CP_STATS_SET_FUNCS(tx_dropblock);
|
||||
#endif
|
||||
|
||||
#define PEER_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
peer_cp_stats_##field##_get(struct wlan_objmgr_peer *_peer) \
|
||||
{ \
|
||||
return ucfg_peer_cp_stats_##field##_get(_peer); \
|
||||
}
|
||||
|
||||
PEER_CP_STATS_GET_FUNCS(rx_mgmt_rate);
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
PEER_CP_STATS_GET_FUNCS(tx_dropblock);
|
||||
#endif
|
||||
|
||||
static inline void
|
||||
peer_cp_stats_rx_mgmt_rssi_update(struct wlan_objmgr_peer *peer,
|
||||
int8_t rssi)
|
||||
{
|
||||
ucfg_peer_cp_stats_rx_mgmt_rssi_update(peer, rssi);
|
||||
}
|
||||
|
||||
static inline int8_t
|
||||
peer_cp_stats_rx_mgmt_rssi_get(struct wlan_objmgr_peer *peer)
|
||||
{
|
||||
return ucfg_peer_cp_stats_rx_mgmt_rssi_get(peer);
|
||||
}
|
||||
|
||||
#define VDEV_UCAST_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
vdev_ucast_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_ucast_cp_stats_##field##_inc(_vdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
vdev_ucast_cp_stats_##field##_update(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_ucast_cp_stats_##field##_update(_vdev, _val); \
|
||||
}
|
||||
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_badkeyid);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_decryptok);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipreplay);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_tkipformat);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpreplay);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_ccmpformat);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_wpireplay);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_countermeasure);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(rx_discard);
|
||||
VDEV_UCAST_CP_STATS_SET_FUNCS(tx_discard);
|
||||
|
||||
#define VDEV_UCAST_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
vdev_ucast_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) \
|
||||
{ \
|
||||
return ucfg_vdev_ucast_cp_stats_##field##_get(_vdev); \
|
||||
}
|
||||
|
||||
VDEV_UCAST_CP_STATS_GET_FUNCS(rx_wepfail);
|
||||
VDEV_UCAST_CP_STATS_GET_FUNCS(rx_decryptok);
|
||||
VDEV_UCAST_CP_STATS_GET_FUNCS(rx_ccmpmic);
|
||||
VDEV_UCAST_CP_STATS_GET_FUNCS(rx_ccmpreplay);
|
||||
|
||||
#define VDEV_MCAST_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
vdev_mcast_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_mcast_cp_stats_##field##_inc(_vdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
vdev_mcast_cp_stats_##field##_update(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_mcast_cp_stats_##field##_update(_vdev, _val); \
|
||||
}
|
||||
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_badkeyid);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_decryptok);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wepfail);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipicv);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipreplay);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_tkipformat);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpmic);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpreplay);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_ccmpformat);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wpimic);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_wpireplay);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_countermeasure);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(rx_discard);
|
||||
VDEV_MCAST_CP_STATS_SET_FUNCS(tx_discard);
|
||||
|
||||
#define VDEV_MCAST_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
vdev_mcast_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) \
|
||||
{ \
|
||||
return ucfg_vdev_mcast_cp_stats_##field##_get(_vdev); \
|
||||
}
|
||||
|
||||
VDEV_MCAST_CP_STATS_GET_FUNCS(rx_wepfail);
|
||||
VDEV_MCAST_CP_STATS_GET_FUNCS(rx_decryptok);
|
||||
VDEV_MCAST_CP_STATS_GET_FUNCS(rx_ccmpmic);
|
||||
VDEV_MCAST_CP_STATS_GET_FUNCS(rx_ccmpreplay);
|
||||
|
||||
#define VDEV_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
vdev_cp_stats_##field##_inc(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_cp_stats_##field##_inc(_vdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
vdev_cp_stats_##field##_update(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_cp_stats_##field##_update(_vdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
vdev_cp_stats_##field##_dec(struct wlan_objmgr_vdev *_vdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_vdev_cp_stats_##field##_dec(_vdev, _val); \
|
||||
}
|
||||
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_wrongbss);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_tooshort);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_wrongdir);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_not_assoc);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_noprivacy);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_mgmt_discard);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_ctl);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_rs_too_big);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_elem_missing);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_elem_too_big);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_chan_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_node_alloc);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_ssid_mismatch);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_auth_unsupported);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_auth_fail);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_auth_countermeasures);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_assoc_bss);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_assoc_notauth);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_assoc_cap_mismatch);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_assoc_norate);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_assoc_wpaie_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_action);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_auth_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_nodefkey);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_noheadroom);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_acl);
|
||||
VDEV_CP_STATS_SET_FUNCS(rx_nowds);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_nobuf);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_nonode);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_cipher_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_not_ok);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_bcn_swba);
|
||||
VDEV_CP_STATS_SET_FUNCS(node_timeout);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_nomem);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_tkip);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_tkipenmic);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_tkipcm);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_ccmp);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_wep);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_setkey_cipher);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_setkey_nokey);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_delkey);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_cipher_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_attach_fail);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_swfallback);
|
||||
VDEV_CP_STATS_SET_FUNCS(crypto_keyfail);
|
||||
VDEV_CP_STATS_SET_FUNCS(ibss_capmismatch);
|
||||
VDEV_CP_STATS_SET_FUNCS(ps_unassoc);
|
||||
VDEV_CP_STATS_SET_FUNCS(ps_aid_err);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_offchan_mgmt);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_offchan_data);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_offchan_fail);
|
||||
VDEV_CP_STATS_SET_FUNCS(invalid_macaddr_nodealloc_fail);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_bcn_success);
|
||||
VDEV_CP_STATS_SET_FUNCS(tx_bcn_outage);
|
||||
VDEV_CP_STATS_SET_FUNCS(sta_xceed_rlim);
|
||||
VDEV_CP_STATS_SET_FUNCS(sta_xceed_vlim);
|
||||
VDEV_CP_STATS_SET_FUNCS(mlme_auth_attempt);
|
||||
VDEV_CP_STATS_SET_FUNCS(mlme_auth_success);
|
||||
VDEV_CP_STATS_SET_FUNCS(authorize_attempt);
|
||||
VDEV_CP_STATS_SET_FUNCS(authorize_success);
|
||||
|
||||
#define VDEV_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
vdev_cp_stats_##field##_get(struct wlan_objmgr_vdev *_vdev) \
|
||||
{ \
|
||||
return ucfg_vdev_cp_stats_##field##_get(_vdev); \
|
||||
}
|
||||
|
||||
VDEV_CP_STATS_GET_FUNCS(rx_wrongbss);
|
||||
VDEV_CP_STATS_GET_FUNCS(rx_wrongdir);
|
||||
VDEV_CP_STATS_GET_FUNCS(rx_ssid_mismatch);
|
||||
|
||||
static inline void vdev_cp_stats_reset(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_cp_stats *vdev_cps;
|
||||
struct vdev_ic_cp_stats *vdev_cs;
|
||||
|
||||
if (!vdev)
|
||||
return;
|
||||
|
||||
vdev_cps = wlan_cp_stats_get_vdev_stats_obj(vdev);
|
||||
if (!vdev_cps)
|
||||
return;
|
||||
|
||||
vdev_cs = vdev_cps->vdev_stats;
|
||||
qdf_mem_set(vdev_cs, sizeof(struct vdev_ic_cp_stats), 0x0);
|
||||
}
|
||||
|
||||
#define PDEV_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
pdev_cp_stats_##field##_inc(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_pdev_cp_stats_##field##_inc(_pdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
pdev_cp_stats_##field##_update(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_pdev_cp_stats_##field##_update(_pdev, _val); \
|
||||
}
|
||||
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_beacon);
|
||||
PDEV_CP_STATS_SET_FUNCS(be_nobuf);
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_buf_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_mgmt);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_mgmt);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_num_mgmt);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_num_ctl);
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_rssi);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_rssi_comb);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_overrun);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_phy_err);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_ack_err);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_rts_err);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_rts_success);
|
||||
PDEV_CP_STATS_SET_FUNCS(no_beacons);
|
||||
PDEV_CP_STATS_SET_FUNCS(mib_int_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_looplimit_start);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_looplimit_end);
|
||||
PDEV_CP_STATS_SET_FUNCS(ap_stats_tx_cal_enable);
|
||||
PDEV_CP_STATS_SET_FUNCS(tgt_asserts);
|
||||
PDEV_CP_STATS_SET_FUNCS(chan_nf);
|
||||
PDEV_CP_STATS_SET_FUNCS(chan_nf_sec80);
|
||||
PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt);
|
||||
PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt_completions);
|
||||
PDEV_CP_STATS_SET_FUNCS(wmi_tx_mgmt_completion_err);
|
||||
PDEV_CP_STATS_SET_FUNCS(peer_delete_req);
|
||||
PDEV_CP_STATS_SET_FUNCS(peer_delete_resp);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_mgmt_rssi_drop);
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_retries);
|
||||
PDEV_CP_STATS_SET_FUNCS(tx_frame_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_frame_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(rx_clear_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(cycle_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(phy_err_count);
|
||||
PDEV_CP_STATS_SET_FUNCS(chan_tx_pwr);
|
||||
|
||||
#define PDEV_CHAN_STATS_GET_FUNCS(field) \
|
||||
static inline uint32_t \
|
||||
pdev_chan_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
return ucfg_pdev_chan_stats_##field##_get(_pdev); \
|
||||
}
|
||||
|
||||
PDEV_CHAN_STATS_GET_FUNCS(self_bss_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(obss_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(obss_rx_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(ap_rx_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(ap_tx_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(free_medium);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(non_wifi_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(ss_under_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(sec_20_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(sec_40_util);
|
||||
PDEV_CHAN_STATS_GET_FUNCS(sec_80_util);
|
||||
|
||||
#define PDEV_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
pdev_cp_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
return ucfg_pdev_cp_stats_##field##_get(_pdev); \
|
||||
}
|
||||
|
||||
PDEV_CP_STATS_GET_FUNCS(tx_mgmt);
|
||||
PDEV_CP_STATS_GET_FUNCS(rx_num_mgmt);
|
||||
PDEV_CP_STATS_GET_FUNCS(ap_stats_tx_cal_enable);
|
||||
PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt);
|
||||
PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt_completions);
|
||||
PDEV_CP_STATS_GET_FUNCS(wmi_tx_mgmt_completion_err);
|
||||
PDEV_CP_STATS_GET_FUNCS(tgt_asserts);
|
||||
PDEV_CP_STATS_GET_FUNCS(rx_phy_err);
|
||||
PDEV_CP_STATS_GET_FUNCS(fcsbad);
|
||||
|
||||
static inline void pdev_cp_stats_reset(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
ucfg_pdev_cp_stats_reset(pdev);
|
||||
}
|
||||
|
||||
#define PDEV_LMAC_CP_STATS_SET_FUNCS(field) \
|
||||
static inline void \
|
||||
pdev_lmac_cp_stats_##field##_inc(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_inc(_pdev, _val); \
|
||||
} \
|
||||
static inline void \
|
||||
pdev_lmac_cp_stats_##field##_update(struct wlan_objmgr_pdev *_pdev, \
|
||||
uint64_t _val) \
|
||||
{ \
|
||||
ucfg_pdev_lmac_cp_stats_##field##_update(_pdev, _val); \
|
||||
}
|
||||
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_reset_on_error);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_hardware);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_halresets);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_bmiss);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_brssi);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_fifoerr);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_filtered);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_noack);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_shortpre);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_altrate);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_tx_protect);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_nobuf);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_hal_in_progress);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_rx_num_unknown);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_cal);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_calfail);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_per_rfgain);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_ant_defswitch);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_bb_hang);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_mac_hang);
|
||||
#ifdef ATH_WOW
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_wow_wakeups);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_wow_wakeupsok);
|
||||
#endif
|
||||
#ifdef ATH_SUPPORT_CFEND
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_cfend_sched);
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_cfend_sent);
|
||||
#endif
|
||||
PDEV_LMAC_CP_STATS_SET_FUNCS(ast_noise_floor);
|
||||
|
||||
#define PDEV_LMAC_CP_STATS_GET_FUNCS(field) \
|
||||
static inline uint64_t \
|
||||
pdev_lmac_cp_stats_##field##_get(struct wlan_objmgr_pdev *_pdev) \
|
||||
{ \
|
||||
return ucfg_pdev_lmac_cp_stats_##field##_get(_pdev); \
|
||||
}
|
||||
PDEV_LMAC_CP_STATS_GET_FUNCS(ast_tx_fifoerr);
|
||||
PDEV_LMAC_CP_STATS_GET_FUNCS(ast_tx_filtered);
|
||||
PDEV_LMAC_CP_STATS_GET_FUNCS(ast_noise_floor);
|
||||
|
||||
/**
|
||||
* wlan_get_pdev_cp_stats_ref() - API to reference to pdev cp stats object
|
||||
* @pdev: pointer to pdev object
|
||||
*
|
||||
* Return: pdev_ic_cp_stats or NULL
|
||||
*/
|
||||
struct pdev_ic_cp_stats
|
||||
*wlan_get_pdev_cp_stats_ref(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
#endif /* QCA_SUPPORT_CP_STATS */
|
||||
#endif /* __WLAN_CP_STATS_IC_UTILS_API_H__ */
|
Referência em uma nova issue
Block a user