From patchwork Wed Nov 2 20:17:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 690583 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3t8KRV42Rhz9t9b for ; Thu, 3 Nov 2016 07:28:06 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3t8KRV33NvzDvmx for ; Thu, 3 Nov 2016 07:28:06 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0044.outbound.protection.outlook.com [104.47.37.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3t8KCs0x07zDvPp for ; Thu, 3 Nov 2016 07:18:00 +1100 (AEDT) Received: from CY1PR03CA0042.namprd03.prod.outlook.com (10.174.128.52) by SN1PR0301MB1630.namprd03.prod.outlook.com (10.162.130.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12; Wed, 2 Nov 2016 20:17:56 +0000 Received: from BL2FFO11FD044.protection.gbl (2a01:111:f400:7c09::141) by CY1PR03CA0042.outlook.office365.com (2603:10b6:600::52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12 via Frontend Transport; Wed, 2 Nov 2016 20:17:56 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; transmode.se; dkim=none (message not signed) header.d=none; transmode.se; 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 BL2FFO11FD044.mail.protection.outlook.com (10.173.161.140) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.693.6 via Frontend Transport; Wed, 2 Nov 2016 20:17:55 +0000 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 uA2KHZDk017745; Wed, 2 Nov 2016 13:17:53 -0700 From: Madalin Bucur To: Subject: [PATCH net-next v6 06/10] dpaa_eth: add sysfs exports Date: Wed, 2 Nov 2016 22:17:30 +0200 Message-ID: <1478117854-8952-7-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1478117854-8952-1-git-send-email-madalin.bucur@nxp.com> References: <1478117854-8952-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131225914758746651; (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)(339900001)(199003)(189002)(356003)(81166006)(6666003)(4326007)(189998001)(85426001)(7846002)(87936001)(50226002)(2950100002)(8936002)(2906002)(5003940100001)(105606002)(586003)(69596002)(110136003)(97736004)(229853001)(305945005)(106466001)(6916009)(2351001)(626004)(48376002)(86362001)(50466002)(76176999)(43066003)(53806999)(50986999)(11100500001)(81156014)(36756003)(33646002)(19580405001)(77096005)(68736007)(104016004)(5660300001)(19580395003)(8676002)(47776003)(3450700001)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0301MB1630; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD044; 1:MIqfSyfPds0C7Ok4WzFzo6+bcESwS6ii6oR3sj0sUFDWbb/xjo2mD4dRdAHtmFPYjZzPW6lcEvbZhnK1gt/+cI2b1sWYEv09fQlO3yOFLuK5oEf/PKUUoGG86Q8weSNzLh2thgRY7JIhqY24FcQVV8/MZ5ptaCQAjtLeyNqCnLCuo6JQJ7ycAYFmhiY/FTsSdWFcdCpN848HCP/f2N6yDRNw8xTGBopn4TBrYpQ0TQfwL+tGs1P3Ga9i5q5fGAUbYnK4p9FgcygCgT0wEjelxsNAFb3BLpnGk2llaaKLc6w+Sp8vjXAPpdDzJ8IBbgkZwbzVC5Hc7xu1xh3WoVyPP4tRYH5NlCpn/qvNrg+1wvWsQQ+dXDuE7dvQTu4IHOoIx1XiK1EnMF0sbOkfqRQKN7jOJ+z1ydAj02SMPyJZ4UARX1xIubUBixjtAScNFE2C/twM6h2lOxtQPnU6XNY2ShxFzJfgt0tnL3PQrSPGBXglnXUX7B9Gz1WLgN9EpOM9xiyn+vHh1KMCm2Gi/zB3JezS9Hv4elmKxiIxVQ0Cpumt7PBlh7unNgZx9YmFYd5ftCQ/HfVyjwozfKELIjC7Z0Q4y+YaPBtVHQqRDLIKRjfZnsqlWMoIccJsW3ZZ7f4W MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 42b236a2-06f0-4c22-f0ba-08d4035d54f9 X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1630; 2:yLb4LDBBUUKenT6T6DxvGnK4hqzS4xxrfyYimzMMsMUYfTkRrbGjodjfbteiXGTy0b+nh1dIbvF95NINOt+gpGXWf7JJSPZz1L/1Vwpob4cMYS+voWDH+OVWd0GWj+g0lrZTe+vBKWvfG1Vvsyxxq/pigZfjFTbdEd1VktcC+wptq3V9Jd7Wk86Y0NuXitCDUnWpS8g9KBW3/4CB+/ch5Q==; 3:vdlULkhBtEcVODoZLHCCRmow/TC35ZvpOK/FAnxT6vABiPQrZKsc2ThZbIXJoKKyiXZSIMaC2M/JyLSIJY6JYPBv0+xlcYnHSYlX7EkIw3DE2xW4qW3/dGtfFBAwuixUAjbi+k212RAJjcTwQ/DzyXNheb955pEoyN43UTopeQrqoHvo8jNrNdl7OIMLKIzAGDbJmJ/+f7ELYxCrIGx2lt2ZOEvJT7hk5vpt3JEW1uicuetjJBY9xZ/xpEQ7+2rW X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0301MB1630; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1630; 25:MRxKlfkNqxBV48kUyz5yZy8JTdwHBlZrIA+3uc3wXzjuEQ7c2cyipOEWcjbmRh1WauFJIVDK/5wxtaaQNau9aLrE6xWGNfaE9u37bi3/Q38EGbCTTpqz5SFA3nEbCMLpO+1Un8PoarBEh4s5dC6vOrBhMDXEW8WS/sxlz7zlFTK/3xRqcY+4YjpoqnbwskPdtWnsyzbTuwUCoqrrHs2z0SABCamtPD+QCtfX71VEScCZ9S/4L8gRcFwFNhSi/7MkkYyMhcU6PLjveoWZ+WTbFoXu7ICxcna5C0Qpk20P90BsitNz/S1tmzkPgIBIcGRtvhrgXrboB+Z/lRrWZ+VNtGotpKEseM10ZPKs6w0fiezPyAyONZUB4o4k/EMk3d6vqF/iwkPM0q5yBIILSqdcAKyRW8ZcQHAp3OjPO7CJBS1+7sNrubHVpNspCCqVzYF2nIJhjn2VRib5XyuwHlRtTVElZWddMl0Fh/TJeKGYVbJad9Zv2ITCKCwGzoUbiOPV+jmWQIoqbIT9KnYMuZiw8eALZFpbDcMmPYsN4t1cPTnT8dgOIvApsG5jpbLNsKFU6gvBhS9VVrb9IyKOJgOi3MG4ojCNgRZ2YzhVG3se0PDWUAN90zUbrJUs8QkxKoUUdhyKFRDoCR97U5/C11zcddTffOW4/HIk/szYyg23zYk8ia3nB5jRXBa7DrGACOw6SN6DacS9NgEyvuymbKWHRC8wbKXx57Np+c98UR8rTWmrZcD8OqQuHVebFGcGrWAIrbwivsyQMgqELG+vicXXJ4kGZL5BIPj7seI9bfcaTechBV/3VgPdDORafZC6V47m X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1630; 31:u66iFO2+zwuLkOBmTnUeUQkXwAHgF6mExSwuWcBP0uSYLTzqmflQd1XMRmGtGgWx50QCqPYHsSuuwuwjr6lTLYnpSck+OFCUoDqygZF5rgF18DXvuaKby9/24myVd1ONH0rM9fCCub8miYmNxC5hFePxk3k10gNi7IIUcy7U+x8T/bnSu47wRyd8dzfO0at0MoGOJNJ/PA1SoyVtDF97khA+/bqM9fz00pBuV9ng2sAq/vQNEv1Cu+rpjMPUFJiTFKSDrOvid72VnLSg2Pmcwg==; 4:UMODdhCCrpau4MNmzlj/4AkMJWfbtANWOaE5vNx3txi4dc1Xam+CUpmF487yf48j3uikkbpeFy08Pi496ax/7hJiY8eagMzymRAIkeUbGXX6gZinAu2Njlv0HbRsStPwxzPxnYQBWtmuOd+pFSov3/0Pm/37dIq72QwAvzEoD4hs3Uw5edSYLGA9eaFZsJVgwzEU9PZNrWDTnuEY43KLskgZCGp2f3Nnyykwq6IgRKtPGwLPu0Mq7y+vGTO7j/Q+JrXqZm17ycUlTUvgFL0/eeTgx624hjtJigkk0zNNCBK6CjKaGsuh9l6CyK4Ow/PB3XDV+zkwOBHFnv6zeOLiMCju55DGUNqWdIjU5q2Nsf8lVNbaPz7+rtr3g6yuMJLu6B5wSEdLS0jzrVTnbl3kYNipOLvQldiwP7zL7EEqGTjkgwjtbri3loByyimanqi4RVFMbZ5k/jYZateZOWtc2T0K+VGJYDk4NTI+2mjVWYN26sUdFC3Uw0CqygkM8TC1fdywQdxJ+k3XYGYCSpMfJWDXpJNn5R8sBngLXtAhxU+ExS6SSKg/QXowNkuw2vJJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(13017025)(13024025)(13023025)(13015025)(13018025)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:SN1PR0301MB1630; BCL:0; PCL:0; RULEID:(400006); SRVR:SN1PR0301MB1630; X-Forefront-PRVS: 0114FF88F6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1630; 23:c6FaignpaZR8iGD3ca/83mBSeH7PqZKzD3bayEs?= =?us-ascii?Q?HrWWXIUxI6r0XAhKsIFSe3tyxI6WbTHhCuCpacfoXquTIZ/HjbP/CY5UCy4t?= =?us-ascii?Q?Qf2yxcSE7518KYxp+i/kv/Vm+Gps+a6xxH2nvLYWmghhd26Z8McFbvVCLeFq?= =?us-ascii?Q?jmTZH25JBYOyCtTm6UXKrr7FBIBZsfpfRlqaPwvN/18jOr5ZARrbtKDqjnKK?= =?us-ascii?Q?3mt51NQkpZ4+Po4pLy/ii++JjyBct1+AUSMVTT2mY3qpCygH6juk7uJzhcYF?= =?us-ascii?Q?D+SOZRsqAesRFNOXKWWaZ0tmkf5MSxsGslSb4JZojm3aEUQUlMRMuMhsYpps?= =?us-ascii?Q?w2IMO/QRwIjrHtIU+Za9qf6vbpILAlcJgk7EEnuIJASONo/4CrfKKFa0/hWJ?= =?us-ascii?Q?mpZLuP/7TLCKCaohn+Jo4SbW/J99hheoWSPlLPxL7Ag7/8lIQ1LDydgq47ql?= =?us-ascii?Q?c2zFvsWlPTv5fxfnrT+U1PlrbkrH0pTStap5LJ4xt2Uf0tDF+2Xr0hV8mCiP?= =?us-ascii?Q?Nqgf/1P8jOcGmdQ6giyjSOQiVPC16N9r4pbQ8OzMdiXcFZ4AMZykRm+ERFeg?= =?us-ascii?Q?2rWzxfSRkvDgj4YnaMeiNtdLWze9WiKYHMj738IJIw5paVYMYRxcgApzso2m?= =?us-ascii?Q?XorNrLBcAmI/dkFX5uxGXHFo/09mId9fQDut3Y90JuX/Y83i6KPqAZ+r0ouj?= =?us-ascii?Q?X3dxJB+FVG2Yb4Z4Tf4X3OAnJMrN4DEGDmnt0GqYrPzilpyVTSoV62fXrhai?= =?us-ascii?Q?WlnZ5Tb93rvYkB0QhhuatB8k9dzEksIifq8aJxlfrt/08nqujR3ozItzSZXT?= =?us-ascii?Q?C4BbeKfZvrTHoSmRfSLwAOp0tam26uU0Qb8Bo2kaxxGqFXQsoUWpNIknbfNU?= =?us-ascii?Q?UqLxaHs3TZDvOtHUmLamSSwJ+9An0ksULtCryUpZH1L95+tsVxyw/WuCoNSi?= =?us-ascii?Q?GfGFac1/9/nOAlNL5kQucjfpurDhg3Vtt6EAUK5ZfseGgF+CNe2w/G39t+LM?= =?us-ascii?Q?GpoMBU+y3T3WvAZ9PknIf0jsSH7Jr3CxTSWIycXZdHP72lMzr2wB+UmylQuO?= =?us-ascii?Q?A0IPSdjFup5JQ//qGNFkKiYKcLthyQIC2R97cJKKZPs5AURwkjPdqsvixKwv?= =?us-ascii?Q?xP//LT5V+uJ8WcilDVOh9298fzfhqYISrEEAAEBV8MkHiaN9avmfk9cdUQUi?= =?us-ascii?Q?PrldAayZVAXA0UdV0/U0w9o3ZHEP4V2yq+1xbyOwXHlMfnWehfHtoQZhxmTQ?= =?us-ascii?Q?tS9OKTMU5M10+EvPv7eXALYsfL5WqNWeQHof4DG9w?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1630; 6:hTO9IU4tkrPlQ/9xV+Qj3/pZlIzxoH+nOoEYw9qmjDaMMqg9X3EdGowO/uaz0wYWDv20NdFfzmmWEca1zo/4MdtL1gYkf2K4yqGBfb4zWYyA9MJfVim/dskkkw7PVozyJsckInNo5zBfHFhhEGNmhxnFyRmHeHkvAdbP+pqKE7BdqbpgjZvRJCaXGUyAFxeYZr3h52KiHeUqA0OrO1Ezb32gn46AAyXbxLrs7HutcK3vaMXj8SL/AOFdmRWtE3EwYRkMQlo8lsrcujSCOzuEWgCP6be1aDLawNUIJ7D9wyAiJ7Mbt26BHsV0NKNS63ST; 5:ZObhNHbnZZr9u+vaTTmiQ9JxzSWXykr8XQ5cm//8G5jU1ouXJZd2AG+0kqDsEtFnCgtI9B9t7BtSMQJ3ugKQna8Uh5GfpPuLwTu5/zm25ET3rRnc2oL972qD/IBeVOGBqy5IBc7CJ0QnoNZa978xJ2Bc+XU4x3ds364Bo8vtN93oGjIkfDdQnMYPZ1rW5R2p; 24:LJZtv9bNbrVvKdionNEc644F1voPeR6d9D7odvK8NitsEHw4qCEdUJJPBzdVNRGoOj2qZjzop14P/UWJUN6xZ90GMT6DUiYALoouKibnx8o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1630; 7:XRR+vrpDQ4im+IbUjQr3Cxm5lCOFXrgxQt6Oa86n4c8n7wueNL4gwhRlR6f6FAozYAmGbU7FhR35z5dR2BeO7F+tFT7cvCltG2Sp2D7aEADpfpDKASXlkskDzyhFpzaKXGF6S1rwVKHaRS+3bmjZCBZvMrlUmczqwK4LcMHjJOC4ybfHk6Qm9xwTcXIEUKfiVgTUscXpIAjmS80X0JXIzQXkUxbnUCtQUx+GFzqA/qXqRCHhxKJAV+0zSDfanSrBNLEIB62KePpgIdDqxiH3WlmMSsli2QimNLkRs0Y6movCTCAtg0MYGDNw+xQs4gG9M4Hoc3jxV4EgR3KbN4gn6gHPD0ZyZ5p+y+Ygh0tx2HU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2016 20:17:55.6406 (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: SN1PR0301MB1630 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, joakim.tjernlund@transmode.se, 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" Export Frame Queue and Buffer Pool IDs through sysfs. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/Makefile | 2 +- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 4 + drivers/net/ethernet/freescale/dpaa/dpaa_eth.h | 4 + .../net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c | 165 +++++++++++++++++++++ 4 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c diff --git a/drivers/net/ethernet/freescale/dpaa/Makefile b/drivers/net/ethernet/freescale/dpaa/Makefile index 43a4cfd..bfb03d4 100644 --- a/drivers/net/ethernet/freescale/dpaa/Makefile +++ b/drivers/net/ethernet/freescale/dpaa/Makefile @@ -8,4 +8,4 @@ ccflags-y += -I$(FMAN) obj-$(CONFIG_FSL_DPAA_ETH) += fsl_dpa.o -fsl_dpa-objs += dpaa_eth.o dpaa_ethtool.o +fsl_dpa-objs += dpaa_eth.o dpaa_ethtool.o dpaa_eth_sysfs.o diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 3deb240..045b23b 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -2692,6 +2692,8 @@ static int dpaa_eth_probe(struct platform_device *pdev) if (err < 0) goto netdev_init_failed; + dpaa_eth_sysfs_init(&net_dev->dev); + netif_info(priv, probe, net_dev, "Probed interface %s\n", net_dev->name); @@ -2737,6 +2739,8 @@ static int dpaa_remove(struct platform_device *pdev) priv = netdev_priv(net_dev); + dpaa_eth_sysfs_remove(dev); + dev_set_drvdata(dev, NULL); unregister_netdev(net_dev); diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h index 711fb06..44323e2 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h @@ -177,4 +177,8 @@ struct dpaa_priv { /* from dpaa_ethtool.c */ extern const struct ethtool_ops dpaa_ethtool_ops; + +/* from dpaa_eth_sysfs.c */ +void dpaa_eth_sysfs_remove(struct device *dev); +void dpaa_eth_sysfs_init(struct device *dev); #endif /* __DPAA_H */ diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c new file mode 100644 index 0000000..93f0251 --- /dev/null +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c @@ -0,0 +1,165 @@ +/* Copyright 2008-2016 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. + */ + +#include +#include +#include +#include +#include "dpaa_eth.h" +#include "mac.h" + +static ssize_t dpaa_eth_show_addr(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + struct mac_device *mac_dev = priv->mac_dev; + + if (mac_dev) + return sprintf(buf, "%llx", + (unsigned long long)mac_dev->res->start); + else + return sprintf(buf, "none"); +} + +static ssize_t dpaa_eth_show_fqids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + ssize_t bytes = 0; + int i = 0; + char *str; + struct dpaa_fq *fq; + struct dpaa_fq *tmp; + struct dpaa_fq *prev = NULL; + u32 first_fqid = 0; + u32 last_fqid = 0; + char *prevstr = NULL; + + list_for_each_entry_safe(fq, tmp, &priv->dpaa_fq_list, list) { + switch (fq->fq_type) { + case FQ_TYPE_RX_DEFAULT: + str = "Rx default"; + break; + case FQ_TYPE_RX_ERROR: + str = "Rx error"; + break; + case FQ_TYPE_TX_CONFIRM: + str = "Tx default confirmation"; + break; + case FQ_TYPE_TX_CONF_MQ: + str = "Tx confirmation (mq)"; + break; + case FQ_TYPE_TX_ERROR: + str = "Tx error"; + break; + case FQ_TYPE_TX: + str = "Tx"; + break; + default: + str = "Unknown"; + } + + if (prev && (abs(fq->fqid - prev->fqid) != 1 || + str != prevstr)) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, + "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, + "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + if (prev && abs(fq->fqid - prev->fqid) == 1 && + str == prevstr) { + last_fqid = fq->fqid; + } else { + first_fqid = fq->fqid; + last_fqid = fq->fqid; + } + + prev = fq; + prevstr = str; + i++; + } + + if (prev) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, "%s: %d\n", prevstr, + prev->fqid); + else + bytes += sprintf(buf + bytes, "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + return bytes; +} + +static ssize_t dpaa_eth_show_bpids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + ssize_t bytes = 0; + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + int i = 0; + + for (i = 0; i < DPAA_BPS_NUM; i++) + bytes += snprintf(buf + bytes, PAGE_SIZE - bytes, "%u\n", + priv->dpaa_bps[i]->bpid); + + return bytes; +} + +static struct device_attribute dpaa_eth_attrs[] = { + __ATTR(device_addr, S_IRUGO, dpaa_eth_show_addr, NULL), + __ATTR(fqids, S_IRUGO, dpaa_eth_show_fqids, NULL), + __ATTR(bpids, S_IRUGO, dpaa_eth_show_bpids, NULL), +}; + +void dpaa_eth_sysfs_init(struct device *dev) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(dpaa_eth_attrs); i++) + if (device_create_file(dev, &dpaa_eth_attrs[i])) { + dev_err(dev, "Error creating sysfs file\n"); + while (i > 0) + device_remove_file(dev, &dpaa_eth_attrs[--i]); + return; + } +} + +void dpaa_eth_sysfs_remove(struct device *dev) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(dpaa_eth_attrs); i++) + device_remove_file(dev, &dpaa_eth_attrs[i]); +}