2011-07-18 00:22:30 +03:00
/*
* Copyright ( c ) 2011 Atheros Communications Inc .
2012-02-06 20:15:53 +05:30
* Copyright ( c ) 2011 - 2012 Qualcomm Atheros , Inc .
2011-07-18 00:22:30 +03:00
*
* 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 .
*/
# ifndef DEBUG_H
# define DEBUG_H
2011-10-05 12:23:49 +03:00
# include "hif.h"
2013-03-18 13:42:22 +02:00
# include "trace.h"
2011-07-18 00:22:30 +03:00
enum ATH6K_DEBUG_MASK {
2011-10-24 12:17:59 +03:00
ATH6KL_DBG_CREDIT = BIT ( 0 ) ,
2011-10-24 12:17:51 +03:00
/* hole */
2011-07-18 00:22:30 +03:00
ATH6KL_DBG_WLAN_TX = BIT ( 2 ) , /* wlan tx */
ATH6KL_DBG_WLAN_RX = BIT ( 3 ) , /* wlan rx */
ATH6KL_DBG_BMI = BIT ( 4 ) , /* bmi tracing */
2011-10-13 15:21:15 +03:00
ATH6KL_DBG_HTC = BIT ( 5 ) ,
2011-10-13 15:21:53 +03:00
ATH6KL_DBG_HIF = BIT ( 6 ) ,
2011-07-18 00:22:30 +03:00
ATH6KL_DBG_IRQ = BIT ( 7 ) , /* interrupt processing */
2011-10-24 12:17:51 +03:00
/* hole */
/* hole */
2011-07-18 00:22:30 +03:00
ATH6KL_DBG_WMI = BIT ( 10 ) , /* wmi tracing */
ATH6KL_DBG_TRC = BIT ( 11 ) , /* generic func tracing */
ATH6KL_DBG_SCATTER = BIT ( 12 ) , /* hif scatter tracing */
ATH6KL_DBG_WLAN_CFG = BIT ( 13 ) , /* cfg80211 i/f file tracing */
2011-09-27 14:31:21 +03:00
ATH6KL_DBG_RAW_BYTES = BIT ( 14 ) , /* dump tx/rx frames */
2011-07-21 10:54:26 +03:00
ATH6KL_DBG_AGGR = BIT ( 15 ) , /* aggregation */
2011-09-27 14:30:58 +03:00
ATH6KL_DBG_SDIO = BIT ( 16 ) ,
ATH6KL_DBG_SDIO_DUMP = BIT ( 17 ) ,
2011-09-27 14:31:11 +03:00
ATH6KL_DBG_BOOT = BIT ( 18 ) , /* driver init and fw boot */
2011-09-27 14:31:21 +03:00
ATH6KL_DBG_WMI_DUMP = BIT ( 19 ) ,
2011-11-01 08:44:44 +02:00
ATH6KL_DBG_SUSPEND = BIT ( 20 ) ,
2012-01-17 20:09:45 +02:00
ATH6KL_DBG_USB = BIT ( 21 ) ,
2012-03-25 17:15:29 +03:00
ATH6KL_DBG_USB_BULK = BIT ( 22 ) ,
2012-08-29 19:40:26 +05:30
ATH6KL_DBG_RECOVERY = BIT ( 23 ) ,
2011-07-18 00:22:30 +03:00
ATH6KL_DBG_ANY = 0xffffffff /* enable all logs */
} ;
extern unsigned int debug_mask ;
2014-09-22 10:35:34 -07:00
__printf ( 2 , 3 ) void ath6kl_printk ( const char * level , const char * fmt , . . . ) ;
__printf ( 1 , 2 ) void ath6kl_info ( const char * fmt , . . . ) ;
__printf ( 1 , 2 ) void ath6kl_err ( const char * fmt , . . . ) ;
__printf ( 1 , 2 ) void ath6kl_warn ( const char * fmt , . . . ) ;
2011-07-18 00:22:30 +03:00
2011-09-27 23:33:28 +03:00
enum ath6kl_war {
ATH6KL_WAR_INVALID_RATE ,
} ;
2011-07-18 00:22:30 +03:00
# ifdef CONFIG_ATH6KL_DEBUG
2012-01-17 20:09:27 +02:00
void ath6kl_dbg ( enum ATH6K_DEBUG_MASK mask , const char * fmt , . . . ) ;
void ath6kl_dbg_dump ( enum ATH6K_DEBUG_MASK mask ,
const char * msg , const char * prefix ,
const void * buf , size_t len ) ;
2011-07-18 00:22:30 +03:00
void ath6kl_dump_registers ( struct ath6kl_device * dev ,
struct ath6kl_irq_proc_registers * irq_proc_reg ,
struct ath6kl_irq_enable_reg * irq_en_reg ) ;
void dump_cred_dist_stats ( struct htc_target * target ) ;
2011-09-02 10:32:04 +03:00
void ath6kl_debug_fwlog_event ( struct ath6kl * ar , const void * buf , size_t len ) ;
2011-09-27 23:33:28 +03:00
void ath6kl_debug_war ( struct ath6kl * ar , enum ath6kl_war war ) ;
2011-10-11 17:31:54 +03:00
int ath6kl_debug_roam_tbl_event ( struct ath6kl * ar , const void * buf ,
size_t len ) ;
2011-10-11 17:31:56 +03:00
void ath6kl_debug_set_keepalive ( struct ath6kl * ar , u8 keepalive ) ;
void ath6kl_debug_set_disconnect_timeout ( struct ath6kl * ar , u8 timeout ) ;
2012-03-06 14:39:40 +05:30
void ath6kl_debug_init ( struct ath6kl * ar ) ;
int ath6kl_debug_init_fs ( struct ath6kl * ar ) ;
2011-09-02 10:32:04 +03:00
void ath6kl_debug_cleanup ( struct ath6kl * ar ) ;
2011-07-18 00:22:30 +03:00
# else
2014-09-22 10:35:34 -07:00
static inline void ath6kl_dbg ( enum ATH6K_DEBUG_MASK dbg_mask ,
const char * fmt , . . . )
2011-07-18 00:22:30 +03:00
{
}
static inline void ath6kl_dbg_dump ( enum ATH6K_DEBUG_MASK mask ,
2011-09-27 14:30:45 +03:00
const char * msg , const char * prefix ,
const void * buf , size_t len )
2011-07-18 00:22:30 +03:00
{
}
static inline void ath6kl_dump_registers ( struct ath6kl_device * dev ,
struct ath6kl_irq_proc_registers * irq_proc_reg ,
struct ath6kl_irq_enable_reg * irq_en_reg )
{
}
2014-03-11 12:58:01 +02:00
2011-07-18 00:22:30 +03:00
static inline void dump_cred_dist_stats ( struct htc_target * target )
{
}
2011-09-02 10:32:04 +03:00
2011-09-26 14:29:18 +05:30
static inline void ath6kl_debug_fwlog_event ( struct ath6kl * ar ,
const void * buf , size_t len )
2011-09-02 10:32:04 +03:00
{
}
2011-09-27 23:33:28 +03:00
static inline void ath6kl_debug_war ( struct ath6kl * ar , enum ath6kl_war war )
{
}
2011-10-11 17:31:54 +03:00
static inline int ath6kl_debug_roam_tbl_event ( struct ath6kl * ar ,
const void * buf , size_t len )
{
return 0 ;
}
2011-10-11 17:31:56 +03:00
static inline void ath6kl_debug_set_keepalive ( struct ath6kl * ar , u8 keepalive )
{
}
static inline void ath6kl_debug_set_disconnect_timeout ( struct ath6kl * ar ,
u8 timeout )
{
}
2012-03-06 14:39:40 +05:30
static inline void ath6kl_debug_init ( struct ath6kl * ar )
{
}
static inline int ath6kl_debug_init_fs ( struct ath6kl * ar )
2011-08-26 13:06:31 +05:30
{
return 0 ;
}
2011-09-02 10:32:04 +03:00
2011-09-26 14:29:18 +05:30
static inline void ath6kl_debug_cleanup ( struct ath6kl * ar )
2011-09-02 10:32:04 +03:00
{
}
2011-07-18 00:22:30 +03:00
# endif
# endif