112 lines · c
1// SPDX-License-Identifier: BSD-3-Clause-Clear2/*3 * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.4 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.5 */6 7#include <linux/vmalloc.h>8#include "core.h"9#include "debug.h"10 11void ath11k_info(struct ath11k_base *ab, const char *fmt, ...)12{13 struct va_format vaf = {14 .fmt = fmt,15 };16 va_list args;17 18 va_start(args, fmt);19 vaf.va = &args;20 dev_info(ab->dev, "%pV", &vaf);21 trace_ath11k_log_info(ab, &vaf);22 va_end(args);23}24EXPORT_SYMBOL(ath11k_info);25 26void ath11k_err(struct ath11k_base *ab, const char *fmt, ...)27{28 struct va_format vaf = {29 .fmt = fmt,30 };31 va_list args;32 33 va_start(args, fmt);34 vaf.va = &args;35 dev_err(ab->dev, "%pV", &vaf);36 trace_ath11k_log_err(ab, &vaf);37 va_end(args);38}39EXPORT_SYMBOL(ath11k_err);40 41void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...)42{43 struct va_format vaf = {44 .fmt = fmt,45 };46 va_list args;47 48 va_start(args, fmt);49 vaf.va = &args;50 dev_warn_ratelimited(ab->dev, "%pV", &vaf);51 trace_ath11k_log_warn(ab, &vaf);52 va_end(args);53}54EXPORT_SYMBOL(ath11k_warn);55 56#ifdef CONFIG_ATH11K_DEBUG57 58void __ath11k_dbg(struct ath11k_base *ab, enum ath11k_debug_mask mask,59 const char *fmt, ...)60{61 struct va_format vaf;62 va_list args;63 64 va_start(args, fmt);65 66 vaf.fmt = fmt;67 vaf.va = &args;68 69 if (ath11k_debug_mask & mask)70 dev_printk(KERN_DEBUG, ab->dev, "%s %pV", ath11k_dbg_str(mask), &vaf);71 72 trace_ath11k_log_dbg(ab, mask, &vaf);73 74 va_end(args);75}76EXPORT_SYMBOL(__ath11k_dbg);77 78void ath11k_dbg_dump(struct ath11k_base *ab,79 enum ath11k_debug_mask mask,80 const char *msg, const char *prefix,81 const void *buf, size_t len)82{83 char linebuf[256];84 size_t linebuflen;85 const void *ptr;86 87 if (ath11k_debug_mask & mask) {88 if (msg)89 __ath11k_dbg(ab, mask, "%s\n", msg);90 91 for (ptr = buf; (ptr - buf) < len; ptr += 16) {92 linebuflen = 0;93 linebuflen += scnprintf(linebuf + linebuflen,94 sizeof(linebuf) - linebuflen,95 "%s%08x: ",96 (prefix ? prefix : ""),97 (unsigned int)(ptr - buf));98 hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1,99 linebuf + linebuflen,100 sizeof(linebuf) - linebuflen, true);101 dev_printk(KERN_DEBUG, ab->dev, "%s\n", linebuf);102 }103 }104 105 /* tracing code doesn't like null strings */106 trace_ath11k_log_dbg_dump(ab, msg ? msg : "", prefix ? prefix : "",107 buf, len);108}109EXPORT_SYMBOL(ath11k_dbg_dump);110 111#endif /* CONFIG_ATH11K_DEBUG */112