aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanohar@qti.qualcomm.com>2014-10-03 01:02:40 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2014-10-07 10:10:27 -0400
commitbfdd7937ab1a3ee0d02dc2d6876c597539a0d37d (patch)
tree3325bce1eb293d7353596acaffb0cfcac81e3d24
parent90174455ae058a1dcf1f3d344a9752385803c1d8 (diff)
ath10k: add tracing for ath10k_htt_pktlog
This is useful for collecting pktlog statistics of tx, rx and rate information, so add tracing for the API call. Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/ath10k/debug.h1
-rw-r--r--drivers/net/wireless/ath/ath10k/htt.h2
-rw-r--r--drivers/net/wireless/ath/ath10k/htt_rx.c9
-rw-r--r--drivers/net/wireless/ath/ath10k/hw.h9
-rw-r--r--drivers/net/wireless/ath/ath10k/trace.h27
5 files changed, 46 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath10k/debug.h b/drivers/net/wireless/ath/ath10k/debug.h
index ce86ed29e119..0c934a8378db 100644
--- a/drivers/net/wireless/ath/ath10k/debug.h
+++ b/drivers/net/wireless/ath/ath10k/debug.h
@@ -69,7 +69,6 @@ struct ath10k_fw_crash_data *
69ath10k_debug_get_new_fw_crash_data(struct ath10k *ar); 69ath10k_debug_get_new_fw_crash_data(struct ath10k *ar);
70 70
71void ath10k_debug_dbglog_add(struct ath10k *ar, u8 *buffer, int len); 71void ath10k_debug_dbglog_add(struct ath10k *ar, u8 *buffer, int len);
72
73#define ATH10K_DFS_STAT_INC(ar, c) (ar->debug.dfs_stats.c++) 72#define ATH10K_DFS_STAT_INC(ar, c) (ar->debug.dfs_stats.c++)
74 73
75void ath10k_debug_get_et_strings(struct ieee80211_hw *hw, 74void ath10k_debug_get_et_strings(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h
index 3b44217a6c19..15c58e884b6a 100644
--- a/drivers/net/wireless/ath/ath10k/htt.h
+++ b/drivers/net/wireless/ath/ath10k/htt.h
@@ -725,7 +725,7 @@ static inline u8 *htt_rx_test_get_chars(struct htt_rx_test *rx_test)
725 */ 725 */
726struct htt_pktlog_msg { 726struct htt_pktlog_msg {
727 u8 pad[3]; 727 u8 pad[3];
728 __le32 payload[1 /* or more */]; 728 u8 payload[0];
729} __packed; 729} __packed;
730 730
731struct htt_dbg_stats_rx_reorder_stats { 731struct htt_dbg_stats_rx_reorder_stats {
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index 60d40a04508b..a078451b4620 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -1674,6 +1674,15 @@ void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
1674 case HTT_T2H_MSG_TYPE_RX_DELBA: 1674 case HTT_T2H_MSG_TYPE_RX_DELBA:
1675 ath10k_htt_rx_delba(ar, resp); 1675 ath10k_htt_rx_delba(ar, resp);
1676 break; 1676 break;
1677 case HTT_T2H_MSG_TYPE_PKTLOG: {
1678 struct ath10k_pktlog_hdr *hdr =
1679 (struct ath10k_pktlog_hdr *)resp->pktlog_msg.payload;
1680
1681 trace_ath10k_htt_pktlog(ar, resp->pktlog_msg.payload,
1682 sizeof(*hdr) +
1683 __le16_to_cpu(hdr->size));
1684 break;
1685 }
1677 case HTT_T2H_MSG_TYPE_RX_FLUSH: { 1686 case HTT_T2H_MSG_TYPE_RX_FLUSH: {
1678 /* Ignore this event because mac80211 takes care of Rx 1687 /* Ignore this event because mac80211 takes care of Rx
1679 * aggregation reordering. 1688 * aggregation reordering.
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 006a9cbc60b2..4b86ca363b39 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -80,6 +80,15 @@ enum ath10k_mcast2ucast_mode {
80 ATH10K_MCAST2UCAST_ENABLED = 1, 80 ATH10K_MCAST2UCAST_ENABLED = 1,
81}; 81};
82 82
83struct ath10k_pktlog_hdr {
84 __le16 flags;
85 __le16 missed_cnt;
86 __le16 log_type;
87 __le16 size;
88 __le32 timestamp;
89 u8 payload[0];
90} __packed;
91
83/* Target specific defines for MAIN firmware */ 92/* Target specific defines for MAIN firmware */
84#define TARGET_NUM_VDEVS 8 93#define TARGET_NUM_VDEVS 8
85#define TARGET_NUM_PEER_AST 2 94#define TARGET_NUM_PEER_AST 2
diff --git a/drivers/net/wireless/ath/ath10k/trace.h b/drivers/net/wireless/ath/ath10k/trace.h
index 574b75ab2609..971ff23b6007 100644
--- a/drivers/net/wireless/ath/ath10k/trace.h
+++ b/drivers/net/wireless/ath/ath10k/trace.h
@@ -254,6 +254,33 @@ TRACE_EVENT(ath10k_wmi_dbglog,
254 ) 254 )
255); 255);
256 256
257TRACE_EVENT(ath10k_htt_pktlog,
258 TP_PROTO(struct ath10k *ar, void *buf, u16 buf_len),
259
260 TP_ARGS(ar, buf, buf_len),
261
262 TP_STRUCT__entry(
263 __string(device, dev_name(ar->dev))
264 __string(driver, dev_driver_string(ar->dev))
265 __field(u16, buf_len)
266 __dynamic_array(u8, pktlog, buf_len)
267 ),
268
269 TP_fast_assign(
270 __assign_str(device, dev_name(ar->dev));
271 __assign_str(driver, dev_driver_string(ar->dev));
272 __entry->buf_len = buf_len;
273 memcpy(__get_dynamic_array(pktlog), buf, buf_len);
274 ),
275
276 TP_printk(
277 "%s %s size %hu",
278 __get_str(driver),
279 __get_str(device),
280 __entry->buf_len
281 )
282);
283
257#endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ 284#endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/
258 285
259/* we don't want to use include/trace/events */ 286/* we don't want to use include/trace/events */