diff options
author | Rajkumar Manoharan <rmanohar@qti.qualcomm.com> | 2014-10-03 01:02:47 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2014-10-07 10:10:40 -0400 |
commit | a0883cf7e75af66917c5ceff7a81ebb6d11b14af (patch) | |
tree | 44f4f03177d002b5ffe1e4172f9a4d228854a60b | |
parent | bfdd7937ab1a3ee0d02dc2d6876c597539a0d37d (diff) |
ath10k: add tracing for rx descriptor
Upon the reception of frame, the descriptor status are reported
to user space by tracepoint. This is useful for collecting rx
statistics.
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/htt_rx.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/trace.h | 29 |
2 files changed, 33 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c index a078451b4620..7add88ea0e2e 100644 --- a/drivers/net/wireless/ath/ath10k/htt_rx.c +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c | |||
@@ -316,6 +316,7 @@ static int ath10k_htt_rx_amsdu_pop(struct ath10k_htt *htt, | |||
316 | int msdu_len, msdu_chaining = 0; | 316 | int msdu_len, msdu_chaining = 0; |
317 | struct sk_buff *msdu, *next; | 317 | struct sk_buff *msdu, *next; |
318 | struct htt_rx_desc *rx_desc; | 318 | struct htt_rx_desc *rx_desc; |
319 | u32 tsf; | ||
319 | 320 | ||
320 | lockdep_assert_held(&htt->rx_ring.lock); | 321 | lockdep_assert_held(&htt->rx_ring.lock); |
321 | 322 | ||
@@ -447,6 +448,9 @@ static int ath10k_htt_rx_amsdu_pop(struct ath10k_htt *htt, | |||
447 | last_msdu = __le32_to_cpu(rx_desc->msdu_end.info0) & | 448 | last_msdu = __le32_to_cpu(rx_desc->msdu_end.info0) & |
448 | RX_MSDU_END_INFO0_LAST_MSDU; | 449 | RX_MSDU_END_INFO0_LAST_MSDU; |
449 | 450 | ||
451 | tsf = __le32_to_cpu(rx_desc->ppdu_end.tsf_timestamp); | ||
452 | trace_ath10k_htt_rx_desc(ar, tsf, &rx_desc->attention, | ||
453 | sizeof(*rx_desc) - sizeof(u32)); | ||
450 | if (last_msdu) { | 454 | if (last_msdu) { |
451 | msdu->next = NULL; | 455 | msdu->next = NULL; |
452 | break; | 456 | break; |
diff --git a/drivers/net/wireless/ath/ath10k/trace.h b/drivers/net/wireless/ath/ath10k/trace.h index 971ff23b6007..3841667e3a85 100644 --- a/drivers/net/wireless/ath/ath10k/trace.h +++ b/drivers/net/wireless/ath/ath10k/trace.h | |||
@@ -281,6 +281,35 @@ TRACE_EVENT(ath10k_htt_pktlog, | |||
281 | ) | 281 | ) |
282 | ); | 282 | ); |
283 | 283 | ||
284 | TRACE_EVENT(ath10k_htt_rx_desc, | ||
285 | TP_PROTO(struct ath10k *ar, u32 tsf, void *rxdesc, u16 len), | ||
286 | |||
287 | TP_ARGS(ar, tsf, rxdesc, len), | ||
288 | |||
289 | TP_STRUCT__entry( | ||
290 | __string(device, dev_name(ar->dev)) | ||
291 | __string(driver, dev_driver_string(ar->dev)) | ||
292 | __field(u32, tsf) | ||
293 | __field(u16, len) | ||
294 | __dynamic_array(u8, rxdesc, len) | ||
295 | ), | ||
296 | |||
297 | TP_fast_assign( | ||
298 | __assign_str(device, dev_name(ar->dev)); | ||
299 | __assign_str(driver, dev_driver_string(ar->dev)); | ||
300 | __entry->tsf = tsf; | ||
301 | __entry->len = len; | ||
302 | memcpy(__get_dynamic_array(rxdesc), rxdesc, len); | ||
303 | ), | ||
304 | |||
305 | TP_printk( | ||
306 | "%s %s %u len %hu", | ||
307 | __get_str(driver), | ||
308 | __get_str(device), | ||
309 | __entry->tsf, | ||
310 | __entry->len | ||
311 | ) | ||
312 | ); | ||
284 | #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ | 313 | #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ |
285 | 314 | ||
286 | /* we don't want to use include/trace/events */ | 315 | /* we don't want to use include/trace/events */ |