1/* 2 * Copyright (c) 2008-2011 Atheros Communications Inc. 3 * Copyright (c) 2011 Neratec Solutions AG 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 19#ifndef ATH9K_DFS_DEBUG_H 20#define ATH9K_DFS_DEBUG_H 21 22#include "hw.h" 23 24/** 25 * struct ath_dfs_stats - DFS Statistics per wiphy 26 * @pulses_total: pulses reported by HW 27 * @pulses_no_dfs: pulses wrongly reported as DFS 28 * @pulses_detected: pulses detected so far 29 * @datalen_discards: pulses discarded due to invalid datalen 30 * @rssi_discards: pulses discarded due to invalid RSSI 31 * @bwinfo_discards: pulses discarded due to invalid BW info 32 * @pri_phy_errors: pulses reported for primary channel 33 * @ext_phy_errors: pulses reported for extension channel 34 * @dc_phy_errors: pulses reported for primary + extension channel 35 * @pulses_processed: pulses forwarded to detector 36 * @radar_detected: radars detected 37 */ 38struct ath_dfs_stats { 39 /* pulse stats */ 40 u32 pulses_total; 41 u32 pulses_no_dfs; 42 u32 pulses_detected; 43 u32 datalen_discards; 44 u32 rssi_discards; 45 u32 bwinfo_discards; 46 u32 pri_phy_errors; 47 u32 ext_phy_errors; 48 u32 dc_phy_errors; 49 /* pattern detection stats */ 50 u32 pulses_processed; 51 u32 radar_detected; 52}; 53 54/** 55 * struct ath_dfs_pool_stats - DFS Statistics for global pools 56 */ 57struct ath_dfs_pool_stats { 58 u32 pool_reference; 59 u32 pulse_allocated; 60 u32 pulse_alloc_error; 61 u32 pulse_used; 62 u32 pseq_allocated; 63 u32 pseq_alloc_error; 64 u32 pseq_used; 65}; 66#if defined(CONFIG_ATH9K_DFS_DEBUGFS) 67 68#define DFS_STAT_INC(sc, c) (sc->debug.stats.dfs_stats.c++) 69void ath9k_dfs_init_debug(struct ath_softc *sc); 70 71#define DFS_POOL_STAT_INC(c) (global_dfs_pool_stats.c++) 72#define DFS_POOL_STAT_DEC(c) (global_dfs_pool_stats.c--) 73extern struct ath_dfs_pool_stats global_dfs_pool_stats; 74 75#else 76 77#define DFS_STAT_INC(sc, c) do { } while (0) 78static inline void ath9k_dfs_init_debug(struct ath_softc *sc) { } 79 80#define DFS_POOL_STAT_INC(c) do { } while (0) 81#define DFS_POOL_STAT_DEC(c) do { } while (0) 82#endif /* CONFIG_ATH9K_DFS_DEBUGFS */ 83 84#endif /* ATH9K_DFS_DEBUG_H */ 85