diff options
author | Rajkumar Manoharan <rmanohar@qti.qualcomm.com> | 2014-10-03 01:02:40 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2014-10-07 10:10:27 -0400 |
commit | bfdd7937ab1a3ee0d02dc2d6876c597539a0d37d (patch) | |
tree | 3325bce1eb293d7353596acaffb0cfcac81e3d24 | |
parent | 90174455ae058a1dcf1f3d344a9752385803c1d8 (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.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/htt.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/htt_rx.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/hw.h | 9 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/trace.h | 27 |
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 * | |||
69 | ath10k_debug_get_new_fw_crash_data(struct ath10k *ar); | 69 | ath10k_debug_get_new_fw_crash_data(struct ath10k *ar); |
70 | 70 | ||
71 | void ath10k_debug_dbglog_add(struct ath10k *ar, u8 *buffer, int len); | 71 | void 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 | ||
75 | void ath10k_debug_get_et_strings(struct ieee80211_hw *hw, | 74 | void 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 | */ |
726 | struct htt_pktlog_msg { | 726 | struct 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 | ||
731 | struct htt_dbg_stats_rx_reorder_stats { | 731 | struct 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 | ||
83 | struct 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 | ||
257 | TRACE_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 */ |