2012-02-01 09:08:37 +04:00
/******************************************************************************
*
* This file is provided under a dual BSD / GPLv2 license . When using or
* redistributing this file , you may do so under either license .
*
* GPL LICENSE SUMMARY
*
* Copyright ( c ) 2007 - 2011 Intel Corporation . All rights reserved .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation .
*
* 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 ,
* USA
*
* The full GNU General Public License is included in this distribution
2013-02-18 11:22:28 +04:00
* in the file called COPYING .
2012-02-01 09:08:37 +04:00
*
* Contact Information :
* Intel Linux Wireless < ilw @ linux . intel . com >
* Intel Corporation , 5200 N . E . Elam Young Parkway , Hillsboro , OR 97124 - 6497
*
* BSD LICENSE
*
* Copyright ( c ) 2005 - 2011 Intel Corporation . All rights reserved .
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* * Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
* * Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in
* the documentation and / or other materials provided with the
* distribution .
* * Neither the name Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT
* LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE ,
* DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2012-06-28 20:45:38 +04:00
# include <linux/device.h>
2012-02-01 09:08:37 +04:00
# include <linux/interrupt.h>
2012-05-17 00:54:27 +04:00
# include <linux/export.h>
2013-03-01 03:13:33 +04:00
# include "iwl-drv.h"
2012-02-01 09:08:37 +04:00
# include "iwl-debug.h"
2012-04-02 17:04:33 +04:00
# include "iwl-devtrace.h"
2012-02-01 09:08:37 +04:00
# define __iwl_fn(fn) \
void __iwl_ # # fn ( struct device * dev , const char * fmt , . . . ) \
{ \
struct va_format vaf = { \
. fmt = fmt , \
} ; \
va_list args ; \
\
va_start ( args , fmt ) ; \
vaf . va = & args ; \
dev_ # # fn ( dev , " %pV " , & vaf ) ; \
trace_iwlwifi_ # # fn ( & vaf ) ; \
va_end ( args ) ; \
}
__iwl_fn ( warn )
2013-03-01 03:13:33 +04:00
IWL_EXPORT_SYMBOL ( __iwl_warn ) ;
2012-02-01 09:08:37 +04:00
__iwl_fn ( info )
2013-03-01 03:13:33 +04:00
IWL_EXPORT_SYMBOL ( __iwl_info ) ;
2012-02-01 09:08:37 +04:00
__iwl_fn ( crit )
2013-03-01 03:13:33 +04:00
IWL_EXPORT_SYMBOL ( __iwl_crit ) ;
2012-02-01 09:08:37 +04:00
void __iwl_err ( struct device * dev , bool rfkill_prefix , bool trace_only ,
const char * fmt , . . . )
{
struct va_format vaf = {
. fmt = fmt ,
} ;
va_list args ;
va_start ( args , fmt ) ;
vaf . va = & args ;
if ( ! trace_only ) {
if ( rfkill_prefix )
dev_err ( dev , " (RFKILL) %pV " , & vaf ) ;
else
dev_err ( dev , " %pV " , & vaf ) ;
}
trace_iwlwifi_err ( & vaf ) ;
va_end ( args ) ;
}
2013-03-01 03:13:33 +04:00
IWL_EXPORT_SYMBOL ( __iwl_err ) ;
2012-02-01 09:08:37 +04:00
# if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING)
2012-03-05 23:24:30 +04:00
void __iwl_dbg ( struct device * dev ,
2012-02-01 09:08:37 +04:00
u32 level , bool limit , const char * function ,
const char * fmt , . . . )
{
struct va_format vaf = {
. fmt = fmt ,
} ;
va_list args ;
va_start ( args , fmt ) ;
vaf . va = & args ;
# ifdef CONFIG_IWLWIFI_DEBUG
2012-03-05 23:24:30 +04:00
if ( iwl_have_debug_level ( level ) & &
2012-02-01 09:08:37 +04:00
( ! limit | | net_ratelimit ( ) ) )
2014-05-08 16:24:54 +04:00
dev_printk ( KERN_DEBUG , dev , " %c %s %pV " ,
in_interrupt ( ) ? ' I ' : ' U ' , function , & vaf ) ;
2012-02-01 09:08:37 +04:00
# endif
trace_iwlwifi_dbg ( level , in_interrupt ( ) , function , & vaf ) ;
va_end ( args ) ;
}
2013-03-01 03:13:33 +04:00
IWL_EXPORT_SYMBOL ( __iwl_dbg ) ;
2012-02-01 09:08:37 +04:00
# endif