From patchwork Thu Oct 26 05:37:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 830450 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="glqQwgXZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yMwl453gjz9t3p for ; Thu, 26 Oct 2017 16:37:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932205AbdJZFhp (ORCPT ); Thu, 26 Oct 2017 01:37:45 -0400 Received: from mail-bn3nam01on0066.outbound.protection.outlook.com ([104.47.33.66]:43456 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932194AbdJZFhn (ORCPT ); Thu, 26 Oct 2017 01:37:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0ALGS4surSWoTMXPwgERmvbYUmXoY87mAJjxLJ0BLDU=; b=glqQwgXZXrhvlRvNhQ/iVMDGxpqXm4TWDMSC6MrTTZX4xEpxZDjKgaCLmOio4ZSyJgmVkssB87vCbRCUsgOFAwcBgBVkV5e8EMtBt0ZfGV3Sn7cj9aW6CJSw5WBhp3W7YZ6YmLyBVIZ7EvFg0M4a3Vgw9ZIHCi2ffMRWoGk6M6E= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN6PR07MB3172.namprd07.prod.outlook.com (10.172.105.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.4; Thu, 26 Oct 2017 05:37:40 +0000 Date: Wed, 25 Oct 2017 22:37:35 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, vijaya.guvva@cavium.com Subject: [PATCH net-next 3/3] liquidio: ethtool support for switchdev ports Message-ID: <20171026053735.GA17901@felix-thinkpad.cavium.com> References: <20171026053641.GA17861@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20171026053641.GA17861@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: MWHPR08CA0030.namprd08.prod.outlook.com (10.174.103.171) To BN6PR07MB3172.namprd07.prod.outlook.com (10.172.105.142) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1c69642-6afe-4a33-96be-08d51c33ac91 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199); SRVR:BN6PR07MB3172; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3172; 3:hnT6fHtMJTMy/4XAQGQjPQb3rnPJlHum7lKd/o64AHsMcM+ZIAuCaQA83zFPUwR3cuV35V2aZtrH2UXWnDiSrAqZAnLVcm0ScWWPNB2SOlfj/jBlc5zSFiJiS3brmYXs3MtQBfQOqwdyVYkdPjfvT/ddEJs45ouYSbA6pAia5HmYCX2sQ8QMrHGyMbNjRKmM9m3+GetsBRp0cxNJewadot5osQ76bp4ElKvksY3O9PsnGOKBY9xWq/SwfY+gMh6N; 25:k1rrtHq4PXFA7PyDLFy4luaqbTW3CRVYmkA0qtu3eVp98wpb5DYB7Hh4BznAQWbYwmKTU1P4NNYpvXu/SZ5ulFYzIWa7UD9c+7vtVrQ5G9Cjkp26m7j+L3UhnInCuXynerJOz+axDapMDYTYZctQIgywx8VkGYTyIcSOXltVaP0aL0hHkkgJcytL2j1zf4kuw2Ky1pkM5sQEAMRXB/lrgndW6r960aYc3i7EII4I9hlvid9jiff/NIEmVLJx8D5r/IDqYoDfLGUSDvVNveBSSxz4QBvjaZApFpAxu4gNvf0l0n4yRV0XUPoOO1lmN84X7/looIYZcyeQQHy2BqU/rQ==; 31:v6yFMybUWSnXnHW/u5T383wW8RW2HZbxxy8GWNh3CypFphShOujVaQ+gyP9Snom7bJ9qzhW5LXMcjxs9QkWyJUnVOlgVvi5t+WMrIwIA68qtfWTeCc0u3ckx9uESLyQryGD5VS+pGun4PM5Lvby4n2kgnj4aXNPiDm6/MK11G95+C2BlLh9+8SNrMebECKAuM7YDf9m2wUMSnfmKrd0n3Cm7bEnER7TWXja5AUXLmVs= X-MS-TrafficTypeDiagnostic: BN6PR07MB3172: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3172; 20:xVliWoXdQy3iis67obtFK4YQ9LNWwQ276P7+FxYPiSe+K7FNfPSDXHa4/XoaVBbSdgW+/DR2j+bbMfAjTeC5YvOvWPcWNZ9vXP+jmTwIqdKB23+GJgGWfziWhP4SGp6sdcXLowqs26JQgEjwTacLBDOA/hRYqKQo7c/vf3YSsgu5s8tyoiQs11HpaujOY4OT+1shwWCw2Hl2dLWt3f3isy6fz/PtyOkj4h333O+knBr8pC3AkZQRjzo3BT6GK9bsNa31uZ7evxja1KvGJcoxpboJWbunVY8i2vAoUhQC2S4h4sXwemV14eEsDE4QBIFT2F9LbbvtghqsiuT1UOwuJq9V7ANfWY+uM/AymuvmoSZosW0H65bALgwUFoc3eMERBEJmTicRzPhLbdSvKhkdSEq38D+wm2RCY8HIB0LrySO3hQ3Z0VkThuTZsvXmYaEJmhfdGoFkDRx8nrg83jl+2+flaFuRFoZRyXL5UKXdifkBl80+mA9AZ04/PfTwr4u9; 4:+byWgYqk3OGLrOgZXmxvca8V0Nrs8RZRD+FUTmcQGWwUYRLuxERtbvFDlPtNwY2QejHxri38qNgh88QmdsrqVZXMto/MOszWIM07/qNNGxjQqnIbtyTcLK1lPPaxDuVTVe0BCMeQ4letxKp+kMOIhK9nct8/2pTRWgTIyAl7RHm9UqPuCxxjIyQtcAyZuJguWWNV6z9bZeI3jP0BOue0Wk7PywSjud3VMDv/VJZlitfa7jE3srkDTbLDSkKOjsun X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3231020)(3002001)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3172; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3172; X-Forefront-PRVS: 04724A515E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(376002)(346002)(189002)(199003)(6666003)(5660300001)(8676002)(478600001)(81156014)(81166006)(189998001)(8936002)(101416001)(72206003)(305945005)(25786009)(68736007)(50986999)(107886003)(6496005)(76176999)(58126008)(4326008)(6486002)(16586007)(2950100002)(7736002)(316002)(83506002)(86362001)(54356999)(3846002)(6116002)(23726003)(1076002)(50466002)(97736004)(6916009)(16526018)(2906002)(2351001)(2361001)(53936002)(76506005)(33656002)(47776003)(106356001)(66066001)(105586002)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3172; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3172; 23:WUZcdpI0NzKkxKnP6XCQiy9QKxIpWMSnp1co7fYFJYo5ko++bB6Vql9IVCfHbH2dLS+IXHA2LvX05VCVGkvBsb20AOHR4Jd3znnIVDP39Lf5q2oTqqgKsjtFDZ1avUSCWFhm8UOs4BACOO0qXjL5PD6o3RsA2fzAM/9VMywJzclUvV+3dm1EHZ6yQFNTC5LfEIRXUboHAB29jVQlXlA/s1NwsTqmgb8LowWLbxy74sCd04kdlKgJoLpellOyBBXGD2u8SloBzlCTrw+F4h6OyQ6mXQl1OW6lx2Yu8ebHdyUDZIWO/jHC5KvgdlMcGg55SMTR3EpMTd+S1W6OpoiEIDnvJSZqxFUBNwKrWtU92fQk8tD6Hlqi0w5QBa5HjsKYii/efd/jEKVv/P/7cpAEp94liSshHze11y8p5zQvERb/O/wKJxqTy4PgWWiCm1FdSf+U40GWqXg2MwgPU+ODr77JtzwHlpVT4ixkRTOj+FOC5cWcojjcKGu1OjVVLo3Q7dpdMNfV9T+mAL9cgHqh2YzbYwKfk6ZwtWZ0CySpoxoRksEPQl3+SSkcRn9Ls6GIU4Udu9qQspNd671IbsxsGZ7Mavg0sy+7HNOvw+qECvVhB3bGXthiSKLR04uI8gURmQblxgIaDH7eFIIkdsanyW2QCihknuwWlF7PLrH2mJbIOM2d6mTORYn4TSdYOOIZ/G83n2Os21mDuYSbHJU2sZRNw6Go5NGNDhVt1oB9foKfCfZ1UAnHIimQ+neghpo9LJN2IXAALTkIv3QsWBY0zX/qgdrNDRuOziZkZFfz4FzfrA33hi77CjzD8ZNQ7Z4Y1ywKWcKawrp1k1cjR5j8yACQ/usKB1VlzS8hthVebWAykLC8EnllK6kGw9x1dY04BqErWpQoCr5rmengZAyCRgJxPEieroIIBZzqQg5L6qsJp2Jr8n7/DKcoVcWTwMF/oAXo/J6eTqBMAsIahm3djQ9ZVH5O5yrdjNGmTjXsbqZkYFoC1SeEIkMnltEXShnXVpirhXYH3fXwvZj7RsbeBRxMI/7PjE6xHEL0siyySum9JVVLJTM2LV1RAVZfS+RFAY8L8wIoZkFF7XdvSsPucWB7k9M0dnTVEb7SKdH3DYzidk1UmP7nZ2HbUvULfV1zersDHqdbMnDI0V403PIJCe941/uPNbo3uf5r/BE1N4aE4dppd54X8h2U75qI34yN X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3172; 6:LiBxO8RVjaaE1hfQ7uDfmemWHlqkXSYrxDUOeMB+GhTt4AHJuP5zoR0sJ51KzFhfJJGOnYJ70R5W3x+GoKQvEm7ohCllqN87BRe4KCQ1uev0qPAf9OqPP/5R2y57J/3ni70uc3CNhs3lygeo8yVqypFNfUwYnoU287Cjh4gKXK9ixplyyh7IsgzXHgYvnraqTPlb1G7F8/mifPAxfYsAy28jZMhYLehrS5PaGH6HQooNRSZGTc0vndjBxON9HA+3yoKREvkhzJVsD9a56BDWIDa9iUNmxRqzLFMuIyYQsEs5YGjM6vCmUS07P/DWNBxZLzjrEVw4opamEyRcM2e0Sw==; 5:pgp//jKImB72McB1+X1rEwO0icRHnuy+TxaEZ01Js8CzGTWOAKEyljkkjE4wJBW99teUOh368f/NeSkxmL27dtx20T+XLz5FoUxSDql0l7eyNIARJP9yW0cS3ddkMPZbPciaNrJaqxHeXKUEcOqZSQ==; 24:nW8Cci1Nnxwk0J/PvP+mbzPrY2HwGWgor/MlKoyVO2I9eNlKwe8S7yqXkSvMCdLbgNm+4JWRKAGuaDNtWI7l7lN0h1Vu4uMBdayTN5IFqBo=; 7:z1j0bArVzrs7CpbGXC6UyatDf5Vnw4Oq5o9o9n5KUsGg8gKf5jCDKv9OSiuXWB3OwVvuH499YoI31z1p0T1L3+Zpd2GTuoKSRRqh0FwLvSiR4EUhVZ4Vbo3r7nYZu72EMyYval/QN7/RmKTtTTzVUmek9oxJqvoP7JgpwxMyE+ZagsZtXvgGFX31U3xzQa+V5w/bHPl6qBCOVWInfF/3iRx5yOtrhZM0vNQWuoytU6s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2017 05:37:40.4425 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f1c69642-6afe-4a33-96be-08d51c33ac91 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3172 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vijaya Mohan Guvva Added ethtool support for vf representor ports to return port stats and driver info. Signed-off-by: Vijaya Mohan Guvva Signed-off-by: Satanand Burla Signed-off-by: Raghu Vatsavayi Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c | 87 +++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c index 2207956..92dcf54 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c @@ -26,6 +26,7 @@ #include "octeon_main.h" #include "octeon_network.h" #include +#include #include "lio_vf_rep.h" #include "octeon_network.h" @@ -39,6 +40,91 @@ static void lio_vf_rep_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64); static int lio_vf_rep_change_mtu(struct net_device *ndev, int new_mtu); +static const char lio_vf_rep_stats_strings[][ETH_GSTRING_LEN] = { + "rx_packets", + "tx_packets", + "rx_bytes", + "tx_bytes", + "rx_dropped", + "tx_dropped", +}; + +static void +lio_vf_rep_get_drvinfo(struct net_device *ndev, + struct ethtool_drvinfo *drvinfo) +{ + struct lio_vf_rep_desc *vf_rep = netdev_priv(ndev); + struct octeon_device *oct; + + oct = vf_rep->oct; + + memset(drvinfo, 0, sizeof(struct ethtool_drvinfo)); + strcpy(drvinfo->driver, "liquidio"); + strcpy(drvinfo->version, LIQUIDIO_VERSION); + strncpy(drvinfo->fw_version, oct->fw_info.liquidio_firmware_version, + ETHTOOL_FWVERS_LEN); +} + +static void +lio_vf_rep_get_ethtool_stats(struct net_device *ndev, + struct ethtool_stats *stats, + u64 *data) +{ + struct rtnl_link_stats64 *stats_ptr, net_stats; + int i = 0; + + stats_ptr = dev_get_stats(ndev, &net_stats); + + data[i++] = stats_ptr->rx_packets; + data[i++] = stats_ptr->tx_packets; + data[i++] = stats_ptr->rx_bytes; + data[i++] = stats_ptr->tx_bytes; + data[i++] = stats_ptr->rx_dropped; + data[i++] = stats_ptr->tx_dropped; +} + +static int +lio_vf_rep_get_sset_count(struct net_device *ndev, int sset) +{ + switch (sset) { + case ETH_SS_STATS: + return ARRAY_SIZE(lio_vf_rep_stats_strings); + + default: + return -EOPNOTSUPP; + } +} + +static void +lio_vf_rep_get_strings(struct net_device *ndev, u32 stringset, u8 *data) +{ + struct lio_vf_rep_desc *vf_rep = netdev_priv(ndev); + struct octeon_device *oct = vf_rep->oct; + int i, num_stats; + + switch (stringset) { + case ETH_SS_STATS: + num_stats = ARRAY_SIZE(lio_vf_rep_stats_strings); + for (i = 0; i < num_stats; i++) { + sprintf(data, "%s", lio_vf_rep_stats_strings[i]); + data += ETH_GSTRING_LEN; + } + break; + + default: + dev_err(&oct->pci_dev->dev, "Unknown Stringset !!\n"); + break; + } +} + +static const struct ethtool_ops lio_vf_rep_ethtool_ops = { + .get_drvinfo = lio_vf_rep_get_drvinfo, + .get_link = ethtool_op_get_link, + .get_strings = lio_vf_rep_get_strings, + .get_sset_count = lio_vf_rep_get_sset_count, + .get_ethtool_stats = lio_vf_rep_get_ethtool_stats, +}; + static const struct net_device_ops lio_vf_rep_ndev_ops = { .ndo_open = lio_vf_rep_open, .ndo_stop = lio_vf_rep_stop, @@ -537,6 +623,7 @@ lio_vf_rep_create(struct octeon_device *oct) ndev->max_mtu = LIO_MAX_MTU_SIZE; ndev->netdev_ops = &lio_vf_rep_ndev_ops; SWITCHDEV_SET_OPS(ndev, &lio_vf_rep_switchdev_ops); + ndev->ethtool_ops = &lio_vf_rep_ethtool_ops; vf_rep = netdev_priv(ndev); memset(vf_rep, 0, sizeof(*vf_rep));