1 /* 2 * Copyright (c) 2013,2016 Qualcomm Atheros, Inc. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #include "wil6210.h" 18 #include "trace.h" 19 20 void __wil_err(struct wil6210_priv *wil, const char *fmt, ...) 21 { 22 struct va_format vaf; 23 va_list args; 24 25 va_start(args, fmt); 26 vaf.fmt = fmt; 27 vaf.va = &args; 28 netdev_err(wil_to_ndev(wil), "%pV", &vaf); 29 trace_wil6210_log_err(&vaf); 30 va_end(args); 31 } 32 33 void __wil_err_ratelimited(struct wil6210_priv *wil, const char *fmt, ...) 34 { 35 struct va_format vaf; 36 va_list args; 37 38 if (!net_ratelimit()) 39 return; 40 41 va_start(args, fmt); 42 vaf.fmt = fmt; 43 vaf.va = &args; 44 netdev_err(wil_to_ndev(wil), "%pV", &vaf); 45 trace_wil6210_log_err(&vaf); 46 va_end(args); 47 } 48 49 void wil_dbg_ratelimited(const struct wil6210_priv *wil, const char *fmt, ...) 50 { 51 struct va_format vaf; 52 va_list args; 53 54 if (!net_ratelimit()) 55 return; 56 57 va_start(args, fmt); 58 vaf.fmt = fmt; 59 vaf.va = &args; 60 netdev_dbg(wil_to_ndev(wil), "%pV", &vaf); 61 trace_wil6210_log_dbg(&vaf); 62 va_end(args); 63 } 64 65 void __wil_info(struct wil6210_priv *wil, const char *fmt, ...) 66 { 67 struct va_format vaf; 68 va_list args; 69 70 va_start(args, fmt); 71 vaf.fmt = fmt; 72 vaf.va = &args; 73 netdev_info(wil_to_ndev(wil), "%pV", &vaf); 74 trace_wil6210_log_info(&vaf); 75 va_end(args); 76 } 77 78 void wil_dbg_trace(struct wil6210_priv *wil, const char *fmt, ...) 79 { 80 struct va_format vaf; 81 va_list args; 82 83 va_start(args, fmt); 84 vaf.fmt = fmt; 85 vaf.va = &args; 86 trace_wil6210_log_dbg(&vaf); 87 va_end(args); 88 } 89