123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
- /*
- * Copyright (C) 2005-2011, 2021-2022 Intel Corporation
- */
- #include <linux/device.h>
- #include <linux/interrupt.h>
- #include <linux/export.h>
- #include "iwl-drv.h"
- #include "iwl-debug.h"
- #include "iwl-devtrace.h"
- #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)
- IWL_EXPORT_SYMBOL(__iwl_warn);
- __iwl_fn(info)
- IWL_EXPORT_SYMBOL(__iwl_info);
- __iwl_fn(crit)
- IWL_EXPORT_SYMBOL(__iwl_crit);
- void __iwl_err(struct device *dev, enum iwl_err_mode mode, const char *fmt, ...)
- {
- struct va_format vaf = {
- .fmt = fmt,
- };
- va_list args, args2;
- va_start(args, fmt);
- 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;
- }
- vaf.va = &args;
- trace_iwlwifi_err(&vaf);
- va_end(args);
- }
- IWL_EXPORT_SYMBOL(__iwl_err);
- #if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING)
- void __iwl_dbg(struct device *dev,
- 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
- if (iwl_have_debug_level(level) &&
- (!limit || net_ratelimit()))
- dev_printk(KERN_DEBUG, dev, "%s %pV", function, &vaf);
- #endif
- trace_iwlwifi_dbg(level, function, &vaf);
- va_end(args);
- }
- IWL_EXPORT_SYMBOL(__iwl_dbg);
- #endif
|