ath6kl: add tracing support and tracing points for wmi packets
Add basic tracing infrastructure support to ath6kl and which can be enabled with CONFIG_ATH6KL_TRACING. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
44af34428d
commit
416cf0b49e
6 changed files with 125 additions and 0 deletions
|
@ -31,6 +31,15 @@ config ATH6KL_DEBUG
|
||||||
---help---
|
---help---
|
||||||
Enables debug support
|
Enables debug support
|
||||||
|
|
||||||
|
config ATH6KL_TRACING
|
||||||
|
bool "Atheros ath6kl tracing support"
|
||||||
|
depends on ATH6KL
|
||||||
|
depends on EVENT_TRACING
|
||||||
|
---help---
|
||||||
|
Select this to ath6kl use tracing infrastructure.
|
||||||
|
|
||||||
|
If unsure, say Y to make it easier to debug problems.
|
||||||
|
|
||||||
config ATH6KL_REGDOMAIN
|
config ATH6KL_REGDOMAIN
|
||||||
bool "Atheros ath6kl regdomain support"
|
bool "Atheros ath6kl regdomain support"
|
||||||
depends on ATH6KL
|
depends on ATH6KL
|
||||||
|
|
|
@ -35,10 +35,15 @@ ath6kl_core-y += txrx.o
|
||||||
ath6kl_core-y += wmi.o
|
ath6kl_core-y += wmi.o
|
||||||
ath6kl_core-y += core.o
|
ath6kl_core-y += core.o
|
||||||
ath6kl_core-y += recovery.o
|
ath6kl_core-y += recovery.o
|
||||||
|
|
||||||
ath6kl_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
|
ath6kl_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
|
||||||
|
ath6kl_core-$(CONFIG_ATH6KL_TRACING) += trace.o
|
||||||
|
|
||||||
obj-$(CONFIG_ATH6KL_SDIO) += ath6kl_sdio.o
|
obj-$(CONFIG_ATH6KL_SDIO) += ath6kl_sdio.o
|
||||||
ath6kl_sdio-y += sdio.o
|
ath6kl_sdio-y += sdio.o
|
||||||
|
|
||||||
obj-$(CONFIG_ATH6KL_USB) += ath6kl_usb.o
|
obj-$(CONFIG_ATH6KL_USB) += ath6kl_usb.o
|
||||||
ath6kl_usb-y += usb.o
|
ath6kl_usb-y += usb.o
|
||||||
|
|
||||||
|
# for tracing framework to find trace.h
|
||||||
|
CFLAGS_trace.o := -I$(src)
|
||||||
|
|
18
drivers/net/wireless/ath/ath6kl/trace.c
Normal file
18
drivers/net/wireless/ath/ath6kl/trace.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2012 Qualcomm Atheros, Inc.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CREATE_TRACE_POINTS
|
||||||
|
#include "trace.h"
|
87
drivers/net/wireless/ath/ath6kl/trace.h
Normal file
87
drivers/net/wireless/ath/ath6kl/trace.h
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
#if !defined(_ATH6KL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||||
|
|
||||||
|
#include <net/cfg80211.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/tracepoint.h>
|
||||||
|
#include "wmi.h"
|
||||||
|
|
||||||
|
#if !defined(_ATH6KL_TRACE_H)
|
||||||
|
static inline unsigned int ath6kl_get_wmi_id(void *buf, size_t buf_len)
|
||||||
|
{
|
||||||
|
struct wmi_cmd_hdr *hdr = buf;
|
||||||
|
|
||||||
|
if (buf_len < sizeof(*hdr))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return le16_to_cpu(hdr->cmd_id);
|
||||||
|
}
|
||||||
|
#endif /* __ATH6KL_TRACE_H */
|
||||||
|
|
||||||
|
#define _ATH6KL_TRACE_H
|
||||||
|
|
||||||
|
/* create empty functions when tracing is disabled */
|
||||||
|
#if !defined(CONFIG_ATH6KL_TRACING)
|
||||||
|
#undef TRACE_EVENT
|
||||||
|
#define TRACE_EVENT(name, proto, ...) \
|
||||||
|
static inline void trace_ ## name(proto) {}
|
||||||
|
#endif /* !CONFIG_ATH6KL_TRACING || __CHECKER__ */
|
||||||
|
|
||||||
|
#undef TRACE_SYSTEM
|
||||||
|
#define TRACE_SYSTEM ath6kl
|
||||||
|
|
||||||
|
TRACE_EVENT(ath6kl_wmi_cmd,
|
||||||
|
TP_PROTO(void *buf, size_t buf_len),
|
||||||
|
|
||||||
|
TP_ARGS(buf, buf_len),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(unsigned int, id)
|
||||||
|
__field(size_t, buf_len)
|
||||||
|
__dynamic_array(u8, buf, buf_len)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->id = ath6kl_get_wmi_id(buf, buf_len);
|
||||||
|
__entry->buf_len = buf_len;
|
||||||
|
memcpy(__get_dynamic_array(buf), buf, buf_len);
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk(
|
||||||
|
"id %d len %d",
|
||||||
|
__entry->id, __entry->buf_len
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(ath6kl_wmi_event,
|
||||||
|
TP_PROTO(void *buf, size_t buf_len),
|
||||||
|
|
||||||
|
TP_ARGS(buf, buf_len),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(unsigned int, id)
|
||||||
|
__field(size_t, buf_len)
|
||||||
|
__dynamic_array(u8, buf, buf_len)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->id = ath6kl_get_wmi_id(buf, buf_len);
|
||||||
|
__entry->buf_len = buf_len;
|
||||||
|
memcpy(__get_dynamic_array(buf), buf, buf_len);
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk(
|
||||||
|
"id %d len %d",
|
||||||
|
__entry->id, __entry->buf_len
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif /* _ ATH6KL_TRACE_H || TRACE_HEADER_MULTI_READ*/
|
||||||
|
|
||||||
|
/* we don't want to use include/trace/events */
|
||||||
|
#undef TRACE_INCLUDE_PATH
|
||||||
|
#define TRACE_INCLUDE_PATH .
|
||||||
|
#undef TRACE_INCLUDE_FILE
|
||||||
|
#define TRACE_INCLUDE_FILE trace
|
||||||
|
|
||||||
|
/* This part must be outside protection */
|
||||||
|
#include <trace/define_trace.h>
|
|
@ -20,6 +20,7 @@
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "htc-ops.h"
|
#include "htc-ops.h"
|
||||||
|
#include "trace.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tid - tid_mux0..tid_mux3
|
* tid - tid_mux0..tid_mux3
|
||||||
|
@ -288,6 +289,8 @@ int ath6kl_control_tx(void *devt, struct sk_buff *skb,
|
||||||
int status = 0;
|
int status = 0;
|
||||||
struct ath6kl_cookie *cookie = NULL;
|
struct ath6kl_cookie *cookie = NULL;
|
||||||
|
|
||||||
|
trace_ath6kl_wmi_cmd(skb->data, skb->len);
|
||||||
|
|
||||||
if (WARN_ON_ONCE(ar->state == ATH6KL_STATE_WOW)) {
|
if (WARN_ON_ONCE(ar->state == ATH6KL_STATE_WOW)) {
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb(skb);
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "testmode.h"
|
#include "testmode.h"
|
||||||
|
#include "trace.h"
|
||||||
#include "../regd.h"
|
#include "../regd.h"
|
||||||
#include "../regd_common.h"
|
#include "../regd_common.h"
|
||||||
|
|
||||||
|
@ -4086,6 +4087,8 @@ int ath6kl_wmi_control_rx(struct wmi *wmi, struct sk_buff *skb)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace_ath6kl_wmi_event(skb->data, skb->len);
|
||||||
|
|
||||||
return ath6kl_wmi_proc_events(wmi, skb);
|
return ath6kl_wmi_proc_events(wmi, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue