diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/iwl-debug.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-debug.c | 24 | 
1 files changed, 17 insertions, 7 deletions
| diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-debug.c b/drivers/net/wireless/intel/iwlwifi/iwl-debug.c index f6ca2fc37c40..ae4c2a3d63d5 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-debug.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-debug.c @@ -1,6 +1,6 @@  // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause  /* - * Copyright (C) 2005-2011 Intel Corporation + * Copyright (C) 2005-2011, 2021 Intel Corporation   */  #include <linux/device.h>  #include <linux/interrupt.h> @@ -31,21 +31,31 @@ IWL_EXPORT_SYMBOL(__iwl_info);  __iwl_fn(crit)  IWL_EXPORT_SYMBOL(__iwl_crit); -void __iwl_err(struct device *dev, bool rfkill_prefix, bool trace_only, -		const char *fmt, ...) +void __iwl_err(struct device *dev, enum iwl_err_mode mode, const char *fmt, ...)  {  	struct va_format vaf = {  		.fmt = fmt,  	}; -	va_list args; +	va_list args, args2;  	va_start(args, fmt); -	vaf.va = &args; -	if (!trace_only) { -		if (rfkill_prefix) +	switch (mode) { +	case IWL_ERR_MODE_RATELIMIT: +		if (net_ratelimit()) +			break; +		fallthrough; +	case IWL_ERR_MODE_REGULAR: +	case IWL_ERR_MODE_RFKILL: +		va_copy(args2, args); +		vaf.va = &args2; +		if (mode == IWL_ERR_MODE_RFKILL)  			dev_err(dev, "(RFKILL) %pV", &vaf);  		else  			dev_err(dev, "%pV", &vaf); +		va_end(args2); +		break; +	default: +		break;  	}  	trace_iwlwifi_err(&vaf);  	va_end(args); |