/* 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 CPTCFG_MAC80211_MESSAGE_TRACING
void __sdata_info(const char *fmt, ...)
{
	struct va_format vaf = {
		.fmt = fmt,
	};
	va_list args, args2;

	va_start(args, fmt);

	va_copy(args2, args);
	vaf.va = &args2;
	pr_info("%pV", &vaf);
	va_end(args2);

	vaf.va = &args;
	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);

	if (print) {
		va_list args2;

		va_copy(args2, args);
		vaf.va = &args2;
		pr_debug("%pV", &vaf);
		va_end(args2);
	}
	vaf.va = &args;
	trace_mac80211_dbg(&vaf);
	va_end(args);
}

void __sdata_err(const char *fmt, ...)
{
	struct va_format vaf = {
		.fmt = fmt,
	};
	va_list args, args2;

	va_start(args, fmt);

	va_copy(args2, args);
	vaf.va = &args2;
	pr_err("%pV", &vaf);
	va_end(args2);

	vaf.va = &args;
	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);

	if (print) {
		va_list args2;

		va_copy(args2, args);
		vaf.va = &args2;
		pr_debug("%pV", &vaf);
		va_end(args2);
	}
	vaf.va = &args;
	trace_mac80211_dbg(&vaf);
	va_end(args);
}
#endif
#endif
