|  | /* bug in tracepoint.h, it should include this */ | 
|  | #include <linux/module.h> | 
|  |  | 
|  | /* sparse isn't too happy with all macros... */ | 
|  | #ifndef __CHECKER__ | 
|  | #include <net/cfg80211.h> | 
|  | #include "driver-ops.h" | 
|  | #include "debug.h" | 
|  | #define CREATE_TRACE_POINTS | 
|  | #include "trace.h" | 
|  |  | 
|  | #ifdef CONFIG_MAC80211_MESSAGE_TRACING | 
|  | void __sdata_info(const char *fmt, ...) | 
|  | { | 
|  | struct va_format vaf = { | 
|  | .fmt = fmt, | 
|  | }; | 
|  | va_list args; | 
|  |  | 
|  | va_start(args, fmt); | 
|  | vaf.va = &args; | 
|  |  | 
|  | pr_info("%pV", &vaf); | 
|  | trace_mac80211_info(&vaf); | 
|  | va_end(args); | 
|  | } | 
|  |  | 
|  | void __sdata_dbg(bool print, const char *fmt, ...) | 
|  | { | 
|  | struct va_format vaf = { | 
|  | .fmt = fmt, | 
|  | }; | 
|  | va_list args; | 
|  |  | 
|  | va_start(args, fmt); | 
|  | vaf.va = &args; | 
|  |  | 
|  | if (print) | 
|  | pr_debug("%pV", &vaf); | 
|  | trace_mac80211_dbg(&vaf); | 
|  | va_end(args); | 
|  | } | 
|  |  | 
|  | void __sdata_err(const char *fmt, ...) | 
|  | { | 
|  | struct va_format vaf = { | 
|  | .fmt = fmt, | 
|  | }; | 
|  | va_list args; | 
|  |  | 
|  | va_start(args, fmt); | 
|  | vaf.va = &args; | 
|  |  | 
|  | pr_err("%pV", &vaf); | 
|  | trace_mac80211_err(&vaf); | 
|  | va_end(args); | 
|  | } | 
|  |  | 
|  | void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...) | 
|  | { | 
|  | struct va_format vaf = { | 
|  | .fmt = fmt, | 
|  | }; | 
|  | va_list args; | 
|  |  | 
|  | va_start(args, fmt); | 
|  | vaf.va = &args; | 
|  |  | 
|  | if (print) | 
|  | wiphy_dbg(wiphy, "%pV", &vaf); | 
|  | trace_mac80211_dbg(&vaf); | 
|  | va_end(args); | 
|  | } | 
|  | #endif | 
|  | #endif |