From patchwork Tue Nov 15 08:41:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 694888 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tJ1Nt0W1dz9t1h for ; Tue, 15 Nov 2016 19:52:30 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3tJ1Ns6pr3zDw58 for ; Tue, 15 Nov 2016 19:52:29 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0084.outbound.protection.outlook.com [104.47.33.84]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3tJ18N5wJLzDvjD for ; Tue, 15 Nov 2016 19:41:40 +1100 (AEDT) Received: from BN3PR0301CA0081.namprd03.prod.outlook.com (10.160.152.177) by BN6PR03MB2466.namprd03.prod.outlook.com (10.168.223.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10; Tue, 15 Nov 2016 08:41:31 +0000 Received: from BN1BFFO11FD010.protection.gbl (2a01:111:f400:7c10::1:198) by BN3PR0301CA0081.outlook.office365.com (2a01:111:e400:401e::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via Frontend Transport; Tue, 15 Nov 2016 08:41:31 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; infinera.com; dkim=none (message not signed) header.d=none; infinera.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1BFFO11FD010.mail.protection.outlook.com (10.58.144.73) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.721.5 via Frontend Transport; Tue, 15 Nov 2016 08:41:31 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:871; Count:11 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uAF8fA9U021609; Tue, 15 Nov 2016 01:41:28 -0700 From: Madalin Bucur To: Subject: [PATCH net-next v8 6/9] dpaa_eth: add trace points Date: Tue, 15 Nov 2016 10:41:06 +0200 Message-ID: <1479199269-9748-7-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1479199269-9748-1-git-send-email-madalin.bucur@nxp.com> References: <1479199269-9748-1-git-send-email-madalin.bucur@nxp.com> X-IncomingHeaderCount: 11 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131236728919883522; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(336004)(339900001)(199003)(189002)(2351001)(87936001)(356003)(105606002)(36756003)(3450700001)(7846002)(106466001)(305945005)(104016004)(33646002)(50986999)(43066003)(5003940100001)(69596002)(97736004)(76176999)(53806999)(8936002)(77096005)(4326007)(2906002)(189998001)(47776003)(8676002)(85426001)(2950100002)(6916009)(50466002)(626004)(110136003)(5660300001)(48376002)(6666003)(81156014)(86362001)(81166006)(68736007)(50226002)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2466; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD010; 1:LKDjpZHTskD+Xzi8noTrj7ovK3bq/0Y783LmhdlTHmsUZB+4nps/fTvMZeSdzC4Mfg/tjycZTlGa6Khuz5jBG/NG1o2kuvkqcKoqicRyabUWgVi7OQuKmLpcQbCodIm9OiqWv+7ZG0gzgTr2Ga41t8jf8XLIdH4bs89CJ2Obaes9EUSX3cBeMHqI7PoXS7zIqnlI7LOjf8zK3UXr0TlpdPoDVEm9EcECkqm91gJgqUFSGH8roPVDvl29nUtqGYfS1sV4FWKABJ2+of8I4w0HLaXsofYLN0FN9Pb+7Z/nn12PImfBW5hm/QFUSDhG37hyRTQREVKoy9AbYLByKpJuvcg6b+cpsuxzaYXTfT6h5dTu5MCKEchNMOiTVeP+/v4c7ePWTUzUskm0Mvxjjy49gbx+q/jPXG6Z5dEdbn7wQWs1xT+uMvsITRX4H3PWyVHSkQvpHEZY9MeaWYod7E+XxBdmv4qteaBCn6GnnSq2561yB4/0jDlHrv+I9GM6GSgBDxjBvNQCaAr4WwtmKYuyX4fR0ZZpkhbP6z6a36h9V88eQQJ4nBUSUak3oQkhSj5r/c86GWKq40NaPZgLffbMfMuVNROgOTpW0uFmu96faSo8X3XBLkQkXMbXTEgxEOb4 MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2466; 2:IMnDzy5QRdNInBdjNESYsrI5J2KdWLoQOiKP4AjZR4YKb8zVQcqxCT5UEJErmqeSLLrm4DxgaJZEAcwysypE577zzQKSRROrIaf3sQh+3V20cubCi0tCWm3qFqtyjsWv5OToJOkIoVQHyJRoBYj914AAc7aY9lMTruuRdBw7k8U=; 3:I82GJT3P9CVBOccUI0zm0LSH2wrOm6bT4ptWRnb1rwTCd09zLkKIaxvbaqt2J7gVqbYHHYozvfnJOox+z/hQckik1FCgNZND8nhwo1/4E6t/zLR1ktxi2H33panSJglElYuZywkYuMAbJU4Bs7Y1bOeVv5Q0DUmoo7Y74o/wWOdQiKKo6wvTmJwOFcddvOHF+tu5lyBedi6GWBxjTImNIDqcBKG2V9W5cCGVBHkt5BXNc/SUEh+rq2wupL29IDdDKdOSC6zXems5y2ZoA8m1FA== X-MS-Office365-Filtering-Correlation-Id: 40b19add-7126-4c17-9da1-08d40d333335 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN6PR03MB2466; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2466; 25:MHcQg304ak/RWxsFRvNSeOJJLym4NaL502rUCU1oN6w8Kleovs02P1FGkbrhmKLd42+GW0DMqqBEF38k7s7AVFGcsPqGs7W+KWI9Y3NCPqW6boETr92iPuulGq5YslycD+pYxLSEuARkLaOu2lNh2UVjDQ/5AyG6ksozsnI9OS214+8viJ6ax5TZi8w5LSQv77G+5Z1sZWUw6adH14iTROta01Uy4zxI5y/XMkedz7oUz7hgjLRBvw4qAixmhf6b1ANKj1CvMtl7OXnqwX0MWU+Vs+gyVqFm5BZKNb2RiB0b6HckIk93iwgwbn5Ce2rodY166HcN6YQEdGuSEyRyc+Xj8te4/D/m9HzMZhfSueeOPMDqNc5E74ZIu2nN7YlSupK3RPoODIdNdJXBSJcsbINEtoif+u0WcTMr386LAFkrUfXDgzXui+DQaKgffluxxrtpCNp5C2iEu38+7AQqcCGiI9M1UondvAsYuJnxhS6JEE0Gszdmv2WUhuvr9e5Y2j6M4kgLfrRfKi0mABITYQtKXXTxTY8ibviF3ITlV4z73SRVhSpeOIdrwTkWy5vQ1dtBlGzto+4Qm8O9jMI43cSegbzHrQ9y+n3G7gy2HHVRmi5HVs1OlOpkBQz5K/OR5/BwG+PWUzOF0+t2IhNaSeLJ8Di8oq3aXGRKHFDiHtaBUdDzdeSIF9LVRZ8STi+3iAzmoYAGybXAfsyPRXDYoqY75qP/FJeKSj7bmlx6EFStu9izS+xrEJePjNTxEVZ/mAmL4Th/OPZvJ+X9ZP4cqk2GiSU6Wwy5BfoNSz7Rf85uktFSs3vVy56w5wkMggTP X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2466; 31:7juSixuvNolklgPvxyhYQCuuBZdQzu8+aobpB0ht+Y7pReIS6yEVdYOzUfiy60qiNPK5mjXh/mYV1LL8Fuv6UNm5KsESRiEZ2Uou7U3mgCv91biP8+5FkE6cRYKOL7VAt1hs99Yy2Jet6IvF8u8uwE03yWiHcsVVw0I0Uzr0jRp7LNRcib00IukWfWlopZde1HvlQcKreMwpxJ9IYQKGB99N6SJZqn4p5lIsIZIhkW0csgzzuFvS7c1s5eyMdZpqFeObOO/mChpUBovAxIujXg==; 4:bbfmAW2mphYsnjh7lhzuFzKjg4efYREOJS7sT/GZNS/pxRYfRo79B17dIxv0Fnqkwzih9qlvHz77Lp9/A3HjeXSXYiDYqCfOeLmmIH6JYgVU9yT4BBnI/O3ZfAoQ84FxQJ+pTc+Cny2sC0sgzT++00K1gnAwEYScipDAYjd6d0B19ufTqrPbwf9ODlvjdPo87sEzciHmusBz9M3xAjI9MxfQaomvNoX9J9XqJD7aJOKJU3CNP7GP40he/x04Wa9IljsPgkWE/1eqsrUPg+2RXNeUi74B8NzH507Vvfz273xTw2cZVi93sxgyC/70o1vdMemYh5eEDUp+7nNBZKKqLp8gtyrBjdfplhfg1imUXsE2fgBa3fpWQ9jzbPEeeli/+mk7npE1MNhhYvgQLt7nmT9kiEUTeCoA4oExeIKGfep5lvTR64ALY2oCVJkq7WEX3DADJeY4wj61frPex49+LVE6Do+94s+s1iVD3wgaIY26HO6c6yGi5fXWo955dfSihaK9p0EfA1aFhUeBrk9Y1WPqxbb25eAR96N/NTDBtAuUzBE3e6dd0acJU2BQr2ELyWpHotxU7hNPz3XdQMpY3y5GyczK7UcdNX5LqrgsOTw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095035)(601004)(2401047)(13017025)(5005006)(13024025)(13015025)(13018025)(13023025)(8121501046)(3002001)(10201501046)(6055026)(6096035); SRVR:BN6PR03MB2466; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2466; X-Forefront-PRVS: 012792EC17 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2466; 23:gtC132ccH578ipuSSTax7HbG5qWoAMiyn5GtXzfvh?= =?us-ascii?Q?TWuk3k+yeet47gD3CQZkdgV910gp1Mm42+u0cJ/JcxlWiKm7f92ydEJFM832?= =?us-ascii?Q?5YBvVcpturTvOtxxE8ps4w3OPCTxva1uziFU5ei3fU2mAZDwidWPVscSQc2+?= =?us-ascii?Q?1jiyiWjI7bEVgM7lgbOfnDocV7wjjTB4lYxZ54W0qg+exjO8OaU177tKi1kQ?= =?us-ascii?Q?awJacMxsTd7inUUCc3hWksLCCPRAH+93cznqYLNSdlTWxDzfJamy5XIK8rdt?= =?us-ascii?Q?wxQJarvJMHSHxQgSIBNU7lIIKeHCgur3Hh74dhOFgrY+FSMkxtW6rDmpgzZ7?= =?us-ascii?Q?H43kAr1UsNGKbSR6a4of3b1q75aG3E/Wt/9zopXlG+EUdLUdDtoxnsok2HvO?= =?us-ascii?Q?xUpw9QBTg2MbqO1rYE/NCqziRcb2UTReATpXg8q/piT8Rxyj/bQioAdDDXJn?= =?us-ascii?Q?znUKijbQMTPatBjb1f838c1QPV7ZmhwgW3QapTq8aMB5uDowPbsq3eja5fHV?= =?us-ascii?Q?nfG7p+TzXyscKlbOaDU17Ely3whdAlF9GlCvUOCiY+lpOF58VpyiyzHOt1h1?= =?us-ascii?Q?K1ct4hqpnlDRFUiRDM7uX7t/tQqZ4HVetxDyWezT9liLFA6Aju/dqyYxN6UP?= =?us-ascii?Q?I1ze+B81S5osDpsdQQgco/GpddMYui7bPHnQByYLCXJfMoWKvBbAcrGwFkqz?= =?us-ascii?Q?Zbv3kjdFz90lto+Ul6R6CCZ65o9IC4IGEKzr7MAmwGxXIfa6tSzTKOjYimiw?= =?us-ascii?Q?BsMRtGEIrWfxvUyJiHb7B+mzf1/DsuGanFuA5ysqDxEREzDjQWcWrnDH5qWS?= =?us-ascii?Q?130O2TYP8nMyvqjipDi57O/s1GUBduekxXjDMLDBzaf0+aw/eZKzi68L1OVD?= =?us-ascii?Q?eEYwjCNAZsLd4tmlsXCLg4wTapx6VzbPcTsGgO3HWmrxjIWAAJqSMBa55HA4?= =?us-ascii?Q?IUPdrRC+M5GduZd98pJoLHfG0d+G7aledU1clt3RkVwCYiBlVcZW81/Z+fGo?= =?us-ascii?Q?1evmzV8WwZ3kP5y5TmNqzaJTiJhK+sLSdPMecZS4tOB4CCEx5/YYd8GmLiCK?= =?us-ascii?Q?Rba933JdfZJrCBPepHlJhfIwQ6lwoNtjBnFXWxIhPQHBMMaCdfFQmAYfPhAJ?= =?us-ascii?Q?mq1kiFeZcdcMM6zgq2Ui8NAIVuHtsyTzUgPIURlhU+8Ud8k4RAbhQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2466; 6:XBiCUKrlSLn//q7Dp4g4audOKZDIrVN8TPRkviHgMF8yrz1P53aZpI6LUMlNmuPoqIhX8bWsbdSp+PkU91SRKb6WHKMPnRwY+qW4rN0Ib4vVcCFZazXpy+/tLoY49KVB7pBYCTldK2rD9PRuMdKt70i0EB5PxDAbLZVyzK4troxSo7uOE4Mt7Nf6vjJsuYiRvq7m3L7KHJncgIyi3oP1zZ3n2e/YaB5zmNyiBC0dh/sH2lNJPeyINEvDks1dXfPCCI8NLHWJ69rP9s6KV1cZPgwH+pR64Jp/QrjK+NguAc+VsnhGeqAnVvQXwtq7gQDjNX6LUEo8LlQ7ydGRmfmVAg==; 5:ng6eM7ma1d/SR40QCj/ql5EeTF1ixreIgLKhsCmgCURPq04TGVmwWBfkIiF77P4PSYjRfrQUH1q8KTRMyd1vuUC2R0tyPT7vbJsj8oSRjw/84nqvSVQTb93fajn43/Cjx3hznd3i9JYJfWelMSfHsWNvsbt/ebmsrSMwx5hSgHMseA3DYSjjqmZiRyj5lSsn; 24:pUs5D5DDV/dFFopf/E7kzWJ+tQMvD1RepSvNiBH/meNpZ/9S+PInUM10gKE/MQcM/gX1vfi1bWsSVt3WJr+CQQeHV486WVsUgRYCqBhjCh8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2466; 7:D/4FSCy/ArJsfoB/5BqdJDu604HJUcOQBPCtEJ2rIfnBGEjgnCTKMK5ddjuP0kC1PHod0dTadF6JpgEyw1YhQnROfh2PGYrm1SRDVaEQW/zD2Ox3ZamnS7v1UY+UAqr6MngOoK+gBZUYrU32bCWJDM0Bgqs2OAts6B5+ucE6jxDfHzqr3NKSmd08jJ8BEa6SlnFwvFW4cfQAcqJX9rjwY9y0BnhIx/tocBxmL2QblLYePJmZPqZp88qYqoLks/WozEsyOnLTUh4ALCMP7QoKr4NnqYTqRSNa566GgZJt61knx8TUBi7pwr9RL9A9QineUUGSieaoyQnLQKu0dHgjLstcur1tG4Jpz07kQ6J+d4w= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2016 08:41:31.7387 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2466 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: madalin.bucur@nxp.com Cc: pebolle@tiscali.nl, linux-kernel@vger.kernel.org, ppc@mindchasers.com, oss@buserror.net, joe@perches.com, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Add trace points on the hot processing path. Signed-off-by: Ruxandra Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa/Makefile | 1 + drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 15 +++ drivers/net/ethernet/freescale/dpaa/dpaa_eth.h | 1 + .../net/ethernet/freescale/dpaa/dpaa_eth_trace.h | 141 +++++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h diff --git a/drivers/net/ethernet/freescale/dpaa/Makefile b/drivers/net/ethernet/freescale/dpaa/Makefile index bfb03d4..7db50bc 100644 --- a/drivers/net/ethernet/freescale/dpaa/Makefile +++ b/drivers/net/ethernet/freescale/dpaa/Makefile @@ -9,3 +9,4 @@ ccflags-y += -I$(FMAN) obj-$(CONFIG_FSL_DPAA_ETH) += fsl_dpa.o fsl_dpa-objs += dpaa_eth.o dpaa_ethtool.o dpaa_eth_sysfs.o +CFLAGS_dpaa_eth.o := -I$(src) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 07ec2fe..3c48a84 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -59,6 +59,12 @@ #include "mac.h" #include "dpaa_eth.h" +/* CREATE_TRACE_POINTS only needs to be defined once. Other dpaa files + * using trace events only need to #include + */ +#define CREATE_TRACE_POINTS +#include "dpaa_eth_trace.h" + static int debug = -1; module_param(debug, int, 0444); MODULE_PARM_DESC(debug, "Module/Driver verbosity level (0=none,...,16=all)"); @@ -1863,6 +1869,9 @@ static inline int dpaa_xmit(struct dpaa_priv *priv, if (fd->bpid == FSL_DPAA_BPID_INV) fd->cmd |= qman_fq_fqid(priv->conf_fqs[queue]); + /* Trace this Tx fd */ + trace_dpaa_tx_fd(priv->net_dev, egress_fq, fd); + for (i = 0; i < DPAA_ENQUEUE_RETRIES; i++) { err = qman_enqueue(egress_fq, fd); if (err != -EBUSY) @@ -2097,6 +2106,9 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal, if (!dpaa_bp) return qman_cb_dqrr_consume; + /* Trace the Rx fd */ + trace_dpaa_rx_fd(net_dev, fq, &dq->fd); + percpu_priv = this_cpu_ptr(priv->percpu_priv); percpu_stats = &percpu_priv->stats; @@ -2194,6 +2206,9 @@ static enum qman_cb_dqrr_result conf_dflt_dqrr(struct qman_portal *portal, net_dev = ((struct dpaa_fq *)fq)->net_dev; priv = netdev_priv(net_dev); + /* Trace the fd */ + trace_dpaa_tx_conf_fd(net_dev, fq, &dq->fd); + percpu_priv = this_cpu_ptr(priv->percpu_priv); if (dpaa_eth_napi_schedule(percpu_priv, portal)) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h index 44323e2..1f9aebf 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h @@ -37,6 +37,7 @@ #include "fman.h" #include "mac.h" +#include "dpaa_eth_trace.h" #define DPAA_ETH_TXQ_NUM NR_CPUS diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h new file mode 100644 index 0000000..409c1dc --- /dev/null +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h @@ -0,0 +1,141 @@ +/* Copyright 2013-2015 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM dpaa_eth + +#if !defined(_DPAA_ETH_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _DPAA_ETH_TRACE_H + +#include +#include +#include "dpaa_eth.h" +#include + +#define fd_format_name(format) { qm_fd_##format, #format } +#define fd_format_list \ + fd_format_name(contig), \ + fd_format_name(sg) + +/* This is used to declare a class of events. + * individual events of this type will be defined below. + */ + +/* Store details about a frame descriptor and the FQ on which it was + * transmitted/received. + */ +DECLARE_EVENT_CLASS(dpaa_eth_fd, + /* Trace function prototype */ + TP_PROTO(struct net_device *netdev, + struct qman_fq *fq, + const struct qm_fd *fd), + + /* Repeat argument list here */ + TP_ARGS(netdev, fq, fd), + + /* A structure containing the relevant information we want to record. + * Declare name and type for each normal element, name, type and size + * for arrays. Use __string for variable length strings. + */ + TP_STRUCT__entry( + __field(u32, fqid) + __field(u64, fd_addr) + __field(u8, fd_format) + __field(u16, fd_offset) + __field(u32, fd_length) + __field(u32, fd_status) + __string(name, netdev->name) + ), + + /* The function that assigns values to the above declared fields */ + TP_fast_assign( + __entry->fqid = fq->fqid; + __entry->fd_addr = qm_fd_addr_get64(fd); + __entry->fd_format = qm_fd_get_format(fd); + __entry->fd_offset = qm_fd_get_offset(fd); + __entry->fd_length = qm_fd_get_length(fd); + __entry->fd_status = fd->status; + __assign_str(name, netdev->name); + ), + + /* This is what gets printed when the trace event is triggered */ + TP_printk("[%s] fqid=%d, fd: addr=0x%llx, format=%s, off=%u, len=%u, status=0x%08x", + __get_str(name), __entry->fqid, __entry->fd_addr, + __print_symbolic(__entry->fd_format, fd_format_list), + __entry->fd_offset, __entry->fd_length, __entry->fd_status) +); + +/* Now declare events of the above type. Format is: + * DEFINE_EVENT(class, name, proto, args), with proto and args same as for class + */ + +/* Tx (egress) fd */ +DEFINE_EVENT(dpaa_eth_fd, dpaa_tx_fd, + + TP_PROTO(struct net_device *netdev, + struct qman_fq *fq, + const struct qm_fd *fd), + + TP_ARGS(netdev, fq, fd) +); + +/* Rx fd */ +DEFINE_EVENT(dpaa_eth_fd, dpaa_rx_fd, + + TP_PROTO(struct net_device *netdev, + struct qman_fq *fq, + const struct qm_fd *fd), + + TP_ARGS(netdev, fq, fd) +); + +/* Tx confirmation fd */ +DEFINE_EVENT(dpaa_eth_fd, dpaa_tx_conf_fd, + + TP_PROTO(struct net_device *netdev, + struct qman_fq *fq, + const struct qm_fd *fd), + + TP_ARGS(netdev, fq, fd) +); + +/* If only one event of a certain type needs to be declared, use TRACE_EVENT(). + * The syntax is the same as for DECLARE_EVENT_CLASS(). + */ + +#endif /* _DPAA_ETH_TRACE_H */ + +/* This must be outside ifdef _DPAA_ETH_TRACE_H */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE dpaa_eth_trace +#include