From patchwork Mon May 6 14:58:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anilkumar Kolli X-Patchwork-Id: 10931203 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A9C1D13AD for ; Mon, 6 May 2019 14:58:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9722F287C8 for ; Mon, 6 May 2019 14:58:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8A82F287CF; Mon, 6 May 2019 14:58:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E1099287C8 for ; Mon, 6 May 2019 14:58:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:To: From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=mXuTKbM21V0cN67IRuI4c2V8NDGtunMQ0ZiUBrm/jbU=; b=aMg+Kiwq2GQvl/ VcNFMHbsRtJSx7ltSuQKH4OQpgeLMBMFJK7JmQv12Rk0cdtZNMFti7wQMbZz3EXgwTxJJK2PsxOqE zrpynDImoEKcz+RpMksaKfvkJs5cCzioWZdyJsdQ9Mv4u1T9BQ0ON9isQDYT0EU8ntYolRraYvUKf tahhWTpMtVCvNVJ2SS2aMslBH4LJGNvy52/UY241FEYs+Nfh8KEippulyf13IottrfcK2yZDtAypb r4kndLnWFhFL/ACdAW9rSEHmE0+8us3mzjt3B2O+ZVaAin+TQsgH8uaN27DknqrRUOERUfZXcaxd1 laLQmRNNfDFS+f7p0NeQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNf4S-0003Pu-BJ; Mon, 06 May 2019 14:58:24 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNf4N-0003Nt-Tl for ath11k@lists.infradead.org; Mon, 06 May 2019 14:58:23 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BEF2A60CEC; Mon, 6 May 2019 14:58:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1557154697; bh=r24BkmRW2dZ75qQ4ToE7Xz46P0R9NMA+uKz1mkYh+pE=; h=From:To:Cc:Subject:Date:From; b=ll03js3bfBKCDS5ujuIsDmxlGSzBRzOBFH1KziCtLKdjqhVqMZ3Jb4y9p2n7GnprA lzEsGHCagfOWIxUftjxGuuA1OnO+EJXwCIsrPQ2yZNJNlcq1lDI2RI4CyOU2/Nr3Ci l4KxQ2ZK5/W2Fv+fbuWP+5RfIiI1+vzF4t0a7nw8= Received: from localhost (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: akolli@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id D8FFB60590; Mon, 6 May 2019 14:58:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1557154697; bh=r24BkmRW2dZ75qQ4ToE7Xz46P0R9NMA+uKz1mkYh+pE=; h=From:To:Cc:Subject:Date:From; b=ll03js3bfBKCDS5ujuIsDmxlGSzBRzOBFH1KziCtLKdjqhVqMZ3Jb4y9p2n7GnprA lzEsGHCagfOWIxUftjxGuuA1OnO+EJXwCIsrPQ2yZNJNlcq1lDI2RI4CyOU2/Nr3Ci l4KxQ2ZK5/W2Fv+fbuWP+5RfIiI1+vzF4t0a7nw8= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org D8FFB60590 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=akolli@codeaurora.org From: Anilkumar Kolli To: ath11k@lists.infradead.org Subject: [PATCH] ath11k: add tracing support for pktlog Date: Mon, 6 May 2019 20:28:05 +0530 Message-Id: <1557154685-15867-1-git-send-email-akolli@codeaurora.org> X-Mailer: git-send-email 1.9.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190506_075821_608761_3E7CE89F X-CRM114-Status: GOOD ( 15.65 ) X-BeenThere: ath11k@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "ath11k" Errors-To: ath11k-bounces+patchwork-ath11k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add trace events on htt_pktlog and htt_ppdu_stats and rx statistics. Signed-off-by: Anilkumar Kolli --- drivers/net/wireless/ath/ath11k/Kconfig | 6 ++ drivers/net/wireless/ath/ath11k/Makefile | 4 ++ drivers/net/wireless/ath/ath11k/debug.h | 1 + drivers/net/wireless/ath/ath11k/dp_rx.c | 11 ++-- drivers/net/wireless/ath/ath11k/trace.c | 9 +++ drivers/net/wireless/ath/ath11k/trace.h | 110 +++++++++++++++++++++++++++++++ 6 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 drivers/net/wireless/ath/ath11k/trace.c create mode 100644 drivers/net/wireless/ath/ath11k/trace.h diff --git a/drivers/net/wireless/ath/ath11k/Kconfig b/drivers/net/wireless/ath/ath11k/Kconfig index 8a409ff2c8f5..26bf98fa648e 100644 --- a/drivers/net/wireless/ath/ath11k/Kconfig +++ b/drivers/net/wireless/ath/ath11k/Kconfig @@ -26,3 +26,9 @@ config ATH11K_DEBUGFS Enable ath11k debugfs support If unsure, say Y to make it easier to debug problems. + +config ATH11K_TRACING + bool "ath11k tracing support" + depends on ATH11K && EVENT_TRACING + ---help--- + Select this to ath11k use tracing infrastructure. diff --git a/drivers/net/wireless/ath/ath11k/Makefile b/drivers/net/wireless/ath/ath11k/Makefile index 4f1343f253a1..4f86b1841e55 100644 --- a/drivers/net/wireless/ath/ath11k/Makefile +++ b/drivers/net/wireless/ath/ath11k/Makefile @@ -19,3 +19,7 @@ ath11k-y += core.o \ ath11k-$(CONFIG_ATH11K_DEBUGFS) += debug_htt_stats.o ath11k-$(CONFIG_MAC80211_DEBUGFS) += debugfs_sta.o ath11k-$(CONFIG_NL80211_TESTMODE) += testmode.o +ath11k-$(CONFIG_ATH11K_TRACING) += trace.o + +# for tracing framework to find trace.h +CFLAGS_trace.o := -I$(src) diff --git a/drivers/net/wireless/ath/ath11k/debug.h b/drivers/net/wireless/ath/ath11k/debug.h index 7f62da8d8b8b..e51235f62536 100644 --- a/drivers/net/wireless/ath/ath11k/debug.h +++ b/drivers/net/wireless/ath/ath11k/debug.h @@ -7,6 +7,7 @@ #define _ATH11K_DEBUG_H_ #include "hal_tx.h" +#include "trace.h" enum ath11k_debug_mask { ATH11K_DBG_AHB = 0x00000001, diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c index 257dd97275d8..0851b2a0076f 100644 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -989,7 +989,7 @@ static int ath11k_htt_pull_ppdu_stats(struct ath11k_base *ab, ar = ab->pdevs[pdev_id].ar; if (ath11k_debug_is_pktlog_lite_mode_enabled(ar)) { - /* TODO update the pktlog tracing */ + trace_ath11k_htt_ppdu_stats(ar, skb->data, len); } /* TLV info starts after 16bytes of header */ @@ -1014,10 +1014,9 @@ static int ath11k_htt_pull_ppdu_stats(struct ath11k_base *ab, static void ath11k_htt_pktlog(struct ath11k_base *ab, struct sk_buff *skb) { - u32 *data = (u32 *)skb->data; + u32 *data = (u32 *)skb->data, len; struct ath11k *ar; u8 pdev_id; - u32 len; len = FIELD_GET(HTT_T2H_PPDU_STATS_PAYLOAD_SIZE_M, *data); pdev_id = FIELD_GET(HTT_T2H_PPDU_STATS_PDEV_ID_M, *data); @@ -1025,7 +1024,7 @@ static void ath11k_htt_pktlog(struct ath11k_base *ab, ar = ab->pdevs[pdev_id].ar; ++data; - /* TODO add pktlog tracing */ + trace_ath11k_htt_pktlog(ar, data, len); } void ath11k_dp_htt_htc_t2h_msg_handler(struct ath11k_base *ab, @@ -2301,7 +2300,7 @@ int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id, ppdu_info.peer_id = HAL_INVALID_PEERID; if (ath11k_debug_is_pktlog_rx_stats_enabled(ar)) { - /* TODO update the pktlog tracing */ + trace_ath11k_htt_rxdesc(ar, skb->data, DP_RX_BUFFER_SIZE); } hal_status = ath11k_hal_rx_parse_mon_status(ab, &ppdu_info, @@ -2330,7 +2329,7 @@ int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id, ath11k_dp_rx_update_peer_stats(arsta, &ppdu_info); if (ath11k_debug_is_pktlog_peer_vaild(ar, peer->addr)) { - /* TODO update the pktlog tracing for one peer*/ + trace_ath11k_htt_rxdesc(ar, skb->data, DP_RX_BUFFER_SIZE); } spin_unlock_bh(&ab->data_lock); rcu_read_unlock(); diff --git a/drivers/net/wireless/ath/ath11k/trace.c b/drivers/net/wireless/ath/ath11k/trace.c new file mode 100644 index 000000000000..df56457b7cbf --- /dev/null +++ b/drivers/net/wireless/ath/ath11k/trace.c @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: ISC +/* + * Copyright (c) 2019 The Linux Foundation. All rights reserved. + */ + +#include + +#define CREATE_TRACE_POINTS +#include "trace.h" diff --git a/drivers/net/wireless/ath/ath11k/trace.h b/drivers/net/wireless/ath/ath11k/trace.h new file mode 100644 index 000000000000..f369db153282 --- /dev/null +++ b/drivers/net/wireless/ath/ath11k/trace.h @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: ISC +/* + * Copyright (c) 2019 The Linux Foundation. All rights reserved. + */ + +#if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) + +#include +#include "core.h" + +#define _TRACE_H_ + +/* create empty functions when tracing is disabled */ +#if !defined(CONFIG_ATH11K_TRACING) +#undef TRACE_EVENT +#define TRACE_EVENT(name, proto, ...) \ +static inline void trace_ ## name(proto) {} +#endif /* !CONFIG_ATH11K_TRACING || __CHECKER__ */ + +TRACE_EVENT(ath11k_htt_pktlog, + TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len), + + TP_ARGS(ar, buf, buf_len), + + TP_STRUCT__entry( + __string(device, dev_name(ar->ab->dev)) + __string(driver, dev_driver_string(ar->ab->dev)) + __field(u16, buf_len) + __dynamic_array(u8, pktlog, buf_len) + ), + + TP_fast_assign( + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); + __entry->buf_len = buf_len; + memcpy(__get_dynamic_array(pktlog), buf, buf_len); + ), + + TP_printk( + "%s %s size %hu", + __get_str(driver), + __get_str(device), + __entry->buf_len + ) +); + +TRACE_EVENT(ath11k_htt_ppdu_stats, + TP_PROTO(struct ath11k *ar, const void *data, size_t len), + + TP_ARGS(ar, data, len), + + TP_STRUCT__entry( + __string(device, dev_name(ar->ab->dev)) + __string(driver, dev_driver_string(ar->ab->dev)) + __field(u16, len) + __dynamic_array(u8, ppdu, len) + ), + + TP_fast_assign( + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); + __entry->len = len; + memcpy(__get_dynamic_array(ppdu), data, len); + ), + + TP_printk( + "%s %s ppdu len %d", + __get_str(driver), + __get_str(device), + __entry->len + ) +); + +TRACE_EVENT(ath11k_htt_rxdesc, + TP_PROTO(struct ath11k *ar, const void *data, size_t len), + + TP_ARGS(ar, data, len), + + TP_STRUCT__entry( + __string(device, dev_name(ar->ab->dev)) + __string(driver, dev_driver_string(ar->ab->dev)) + __field(u16, len) + __dynamic_array(u8, rxdesc, len) + ), + + TP_fast_assign( + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); + __entry->len = len; + memcpy(__get_dynamic_array(rxdesc), data, len); + ), + + TP_printk( + "%s %s rxdesc len %d", + __get_str(driver), + __get_str(device), + __entry->len + ) +); + +#endif /* _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