From patchwork Fri Aug 18 14:03:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 803244 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=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="RQCfgee2"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xYlDh06P3z9s82 for ; Sat, 19 Aug 2017 00:03:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753712AbdHRODp (ORCPT ); Fri, 18 Aug 2017 10:03:45 -0400 Received: from mail-by2nam03on0042.outbound.protection.outlook.com ([104.47.42.42]:20081 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753597AbdHRODl (ORCPT ); Fri, 18 Aug 2017 10:03:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ZEwoc7+OYRHpFUf3uW9FVKrywdG1EWyuROz8I17Tszc=; b=RQCfgee2HfiYHQZhC7s5fuN2Tiue3X7y8sDaiehOmv3JorLwoLsqRb0QJ6tlj3seQiQH08J7pzGXxqgCOx7DrYT6u4pU47zrlu0AuUkoppkqNK8zmmfMPs666A+6VX40lxhhuhifGzBvn9/eC4pEaACldbQjd7GZNO5+hlaGbOo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by MWHPR12MB1151.namprd12.prod.outlook.com (10.169.204.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Fri, 18 Aug 2017 14:03:38 +0000 From: Tom Lendacky Subject: [PATCH net-next v2 09/13] amd-xgbe: Add per queue Tx and Rx statistics To: netdev@vger.kernel.org Cc: David Miller Date: Fri, 18 Aug 2017 09:03:35 -0500 Message-ID: <20170818140335.14804.26480.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170818140209.14804.94997.stgit@tlendack-t1.amdoffice.net> References: <20170818140209.14804.94997.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR21CA0018.namprd21.prod.outlook.com (10.172.122.156) To MWHPR12MB1151.namprd12.prod.outlook.com (10.169.204.15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cc547e7d-fa70-41df-061b-08d4e641ed21 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:MWHPR12MB1151; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1151; 3:u5wwCaMJ71HeQFnJ7zG5li3aNB+ix3wdwwGQ7nIRhc7mRoRHmJmY8sewz3nbulolwc299qMvMYXyYAZdqMoDFnHuF3Swi4idAtKlM+bQHbrpA9gAFVrL6+mMHDjNMPfyHTZI45S6LXotLveFwHwYjrmcC9aR6uD2O/aKA+fgn7y3Lj8QVrGvku/fGtReQeawXqcIbkebpHEc7UJMyWgPgDxBTLpdtOLOV3I1KXSuxYnp6ZNiLSSh/XUf2fguvOqg; 25:MUIjZpaVHpIxmfgv94/hIUM5RQyCV8B4lBWI4ujoVNiYmvdpk+OK5GX7XhLq87YU3cYFcocsxdlpwXTcus1az5peccOUMfSSUgRPQDvs04SQ8ekmAviGviGwJ5Yg7HbzUXmX7WFrDw1DOPOLgspUqmCYGmT9xB+XGbSFKfXrZkmg9PA5/RnX0oxVpnMGynV3HgfxCwdW2O9o142WYUchJFGwcBv98NQMzm66tQ+CWinTVHLlZKalX7IIaiMIW6LIkfNNo5uLltNGPJvIPbuNtUnaPFzj7cwlhnVD6v78WCYSeD5f9sl/LlkxsPUtLepOVVG4jZ35s2eeplw+V+kJ8Q==; 31:H3juGkjjqrWGfzorCmxO76K9ZnMZaRradgSjgm3v04yHhA+WGMhtF7ETlQHQdptDuUj8XG5v4actbKBVG4qjLpHfoy9Dl9gaIFq9MQw7ZFhUXdz1HXTCH1Go/BTPQlH3Ii5ZkXyrLwfwG3Ue1TbuRMIlMzSRWj0BhYZFM0mM6UQsEuJMdx9uXQuo1zanb10+mN+9h9phFjEdqu9xOx2HZg3lGSec9UwyJnDXKMUzYfU= X-MS-TrafficTypeDiagnostic: MWHPR12MB1151: X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1151; 20:1f4UhBsGhIvwHFITrSyhcPRkhATboW7StqF6I2Abq+IlYptphbIdh6zp3DSfuUf+BTvQh3R/uNjCbgWmFuKMfC4on0KbD/i/VkTRGYkcB+FQ+QU4CMvg8pEdql/yT7KvgWbrPUvkEM/LtUlVMiHOzvkrfUIJgALteSKQgchyMYWa83ItznvPZs/HS1CLhVEqUC49VFDCr6TDczOWQP6oOR4mok3apVerSjaQU2BV+KukqoDxQgmBbxLBTiAZo0e6TeSvrUX/ssp/suQNiGTf2b/GkN8wV92EMqoTxb2jAqA5mJS0aY5dRKhzcagtQp3hSbytZTrT+QaUHSkzQEh4KZLWJJDUH5KnZn94Fw0qOgRB2XOzkLuRTp1uzIEOp9DfeRrddRG5rw+khKTnuMoRJfevowUBJQRxre9I8kwGBUmRLo4P8DolxkRL9jONFFrONLY7cGvDr45dRsIEcth9vhXZXjGTZaFJlMgaE7aDjMEMdU8UCNMWdAuhM7yXRK/v; 4:kKwkgcSny22MxkHguXGBwrELsmfGIG9MtclF3/2nPsukPFC13nDiS1xGoa2PhNlCkGzxgMzNdswTc7i+hI1TKR/Mpu9X8FRa9juAC0Z0zX5TG05t/3xkei05iFAkrGeuoqafhPP9i+c2dghRjPOX/JJlobyg/QdOMh7Co5tPoa1PLgp7IByjEhcuHcnsYKXbFCvw8x1L9Ox9eSa3uzf3I5vyPqPizZvtDMUwCahUJ8PbLYrU0EL83m/xK9HqS+ozWzv7NtBGq7H+NYzvICD8lEVCq/g51/C8S8BkbZkQY4Q= X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR12MB1151; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR12MB1151; X-Forefront-PRVS: 040359335D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(39860400002)(189002)(199003)(1076002)(9686003)(47776003)(305945005)(2351001)(66066001)(55016002)(6666003)(110136004)(83506001)(6916009)(97736004)(4001350100001)(106356001)(2950100002)(7350300001)(230700001)(105586002)(7736002)(478600001)(2906002)(23676002)(103116003)(33646002)(2361001)(6506006)(50466002)(50986999)(53936002)(5660300001)(76176999)(54356999)(69596002)(81166006)(81156014)(72206003)(3846002)(6116002)(8676002)(101416001)(4326008)(68736007)(97746001)(86362001)(189998001)(42186005)(53416004)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1151; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUxOzIzOkVUcjhvcDNjK2xTcDlpOVNwZWhaMFIxeHlr?= =?utf-8?B?T1BDelBFR2s2VWF2Qk5mSVhaRlBVU3NmSXZoZ1ppSk1KSHNONHc2TktzOEdM?= =?utf-8?B?THNCa3pPRDJDOVd1bnYzRVhBVlkvMFVxVkU3SFBkNkhMMWFBeWtUeVRMNXpK?= =?utf-8?B?L1dXcER0YUdtWGtOL3VVV2x6RTFiSjNCRE1UQmtIa0pNREJqUjdOdnJOTHVi?= =?utf-8?B?c0VvS1Jjdm15aThDZnRwaW1HK2ljWHJwZXgwRElPZlg2N1NtVGx6SVJaVHE5?= =?utf-8?B?M1diUmNtSjNwY3FwOE5POVFST1hPeTRoOWxmNC9yNVF1UTgyR1pXN0p0OElr?= =?utf-8?B?Y09zNkFvWWNyRXZkZ0NWRENEVkdJQk9lU1FXc0lDdWNLakovNUlOaCtvTWpS?= =?utf-8?B?QkhhZUJ0MkRoMEhMY3lVbmNLaVpodnFXeSthdTRRNFRkVE85YmFPQW5qam9y?= =?utf-8?B?VmxrUUNEdEFDN0hDVTV3RFQ0ZmFkRDRsMUJScFk1SGRlZmR0QnhuRkViVVQw?= =?utf-8?B?cGtZNlhlemRNYWFpc3crVzM4OWI2RjVudENMVmRDVXFPWnQzOXNwT1I5RkJi?= =?utf-8?B?ZVROaTIvSmMvY3R3Qzk4WEhoQ29hTGNoUkdJR0diREIreUFzUWJhS2tBRklM?= =?utf-8?B?YzhnSDgrOEdIcjNzak5GMHcvWmN2VVVhMk1udEpEZDJGbzgvODNrdk5aWFUx?= =?utf-8?B?bnp3SDFoSjBDeWJnUnJlVU1oTHZLa0d5dGtnanc4dEpEdUpKcjVGbnB3SkJN?= =?utf-8?B?Y1lCUjVrNVFMdTc0b3UxVGE4bU5rUndxV1NkbTRqMFN1Z3ZKOWc2SklsdEkv?= =?utf-8?B?R3I5V0pneFZpMU1iTVFjcGg1a2xqbTE5QkNxakt5c1ltY1E5TTB1OGVyRjRt?= =?utf-8?B?Mkk0MGRTUEY0dkQzZ2FpaDNkbzhQY0dYa1hoNEpVWlU2L2pkT3dIZG4wbjR6?= =?utf-8?B?U0hYYjVvWGl4N0NXbWlEcHk1OVR5OVBpaFRUdnhWUk5pQXJCVkhyUExBak5U?= =?utf-8?B?WGpiaWVWU3NvbnRRK2pZa2xKV0pRcG5Qa2gvempXY0NiMUlKVFNBL2xjWG1F?= =?utf-8?B?VXA5KzdFVWYwaW8yNVlSYlBTWHgzNm92MU4yTUo3UlhkMno0TG9iQ1Erbk9I?= =?utf-8?B?QzdWQWxkU2ZIK1RoYzJoY091aytvcFU4RkJzRWN4S283NHVPL3RaUElGU2E1?= =?utf-8?B?ZGtyTHl6aXk3VmhCejhQb2ZpOGIwT01LQzBVVUppNVlLaGJyc3VwT082OUtM?= =?utf-8?B?MFo3dzNpR2daSmJsb0dmai9ScXlpbmpEN1NXRmtDTG5FaHc5OFRpQkpxY0xH?= =?utf-8?B?OVlZMGlFOFk2S2RJZVVJbmp0dG45NnRMZGxaM3U3RzdZY0VxZ0tCc1JPMkpn?= =?utf-8?B?Q0NrT3haQTlDUWRXZVMrLzZQMi96RHoyODRxeWdhc0U3a3lMZkpNdGFQNktt?= =?utf-8?B?aHVVODdndWdFclkzT0kzYXBVejdtSnhLL25VWW8wdjRGNEJaTXhEcXJOYVlO?= =?utf-8?B?NkxQL3lyaGpXU0RtcGpyZnh2NnZwK1A0K1NOUzJuWGtteGdJcEovR1poMXhL?= =?utf-8?B?TW1GaXpVZUlVQjRIemg1d3RvUTlaTnFxbDdaamloTHJUL0p0d1hIOHVyWTNY?= =?utf-8?B?dWlSUEF3a2V4ekE1SXlDcGFyMXNzc0Uyem9HNVk2VnM0ekJpeHZWd0FOUDkz?= =?utf-8?B?TmJjZFdlTDVOOW9waVlOTXpzS2dVRWUrWS9WUVloWmY0Z25CL0I5NzV0YWdz?= =?utf-8?B?TC9pUHgrZ3l6U1NmaHN6Zz09?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1151; 6:ewtzMM7C4vPRzKktzmLqejUJwvytE2YWIJ49SFDS6txzv9eCDf6/ulF3RGiIaf9AIZIEiaj8OxsgC57C9a9d7PTQGnP/wkPenb8RAbVzbS7/Wym8WzByDekzdQ8QC8hEOwNs2cgDCA9AARveuAWYXMFzDH2e3zpAN7ptN/Bw5mwKnLJEWygE5GH+FxyASVBD4gg4LTTt3Ak07R46v3l2xLZLrge5F5b7zDd1YyKJuymIQSkLJz162gQPHXU4ek53eU1qi/I4LO+FkAG3gqzDVydpw1waEoQyY/AMY3z3gyI82B7HGiTg/8abK21TXjJQi4Iv2JBwwiItbZS5UwbXvA==; 5:E90M5Mbpbhhz6ZoAfEStN+bzzyi2lTHbwySDq0R64z/qyOutyxdzHFUDbIFsKZMs8S221H2V0FPZyBt4e3HLPSRq/vZo5v2UAXlN8cguSukU5TGOxxa/v3N5WDjVNDJ2EfEM7KvvAoOjS9YoAoXO7Q==; 24:VSY2Twro/7FdJKa2YIK7Rm9MNtkVnRPQW89sf/wtyWoyjfr11DTGbIISXXbQi5flEvRoSQsHSfVnt7/mzP+atJJhAfTiuAT+sF7Wyx5oW6I=; 7:eVIVBTi8nJUlaH+tGQV8yJf5sqQKN2xIBOXMAkeGGZNWTjM9Tbx5VedqRoZPnOnnB2EmG2icBrqzlWLbgKkV2IQmncQ4pFFJxHCsHtkTTtmf8Q/9U1389QMa9PVKzTpWrZBYqts8Wo36LvvVs1j4RORWeAzr2RXHbRVEroi+yW+4hftAb7klK3163HjQflFSf/ge/fHG3g3bjCbEELrRdeqRdvStCditnwIUbmD5CIg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1151; 20:UK3n5gK9XWb1xwFaJZRCMViNbB7fJY81bPmNnjyiFX9KUFFiXxtCZtNfGG53bYCDOlB5OrOdOesyJsCIyLmaxirD7Bs4SXAo5W9rx0aAr+7qVdnFo8sccUeAoJ/ti4FLGprrugP5PNFHspYBMJ011cWxEB6/u/DAeM9EoMRGD6BcdPR9EfI0kROX2h7cqEBcgiMqG5+O/bdbLlI5K6PmGDTVS0tG5Qn5FIA9OGzPLYtaVIWc+7VFiYiQIqaslcTL X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2017 14:03:38.8428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1151 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add per queue Tx and Rx packet and byte counts. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 23 ++++++++++++++++------- drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 26 +++++++++++++++++++++++++- drivers/net/ethernet/amd/xgbe/xgbe.h | 5 +++++ 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c index 75a479c..a978408 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c @@ -1609,6 +1609,7 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel) struct xgbe_ring_data *rdata; struct xgbe_ring_desc *rdesc; struct xgbe_packet_data *packet = &ring->packet_data; + unsigned int tx_packets, tx_bytes; unsigned int csum, tso, vlan; unsigned int tso_context, vlan_context; unsigned int tx_set_ic; @@ -1618,6 +1619,9 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel) DBGPR("-->xgbe_dev_xmit\n"); + tx_packets = packet->tx_packets; + tx_bytes = packet->tx_bytes; + csum = XGMAC_GET_BITS(packet->attributes, TX_PACKET_ATTRIBUTES, CSUM_ENABLE); tso = XGMAC_GET_BITS(packet->attributes, TX_PACKET_ATTRIBUTES, @@ -1645,13 +1649,12 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel) * - Addition of Tx frame count to the frame count since the * last interrupt was set does not exceed the frame count setting */ - ring->coalesce_count += packet->tx_packets; + ring->coalesce_count += tx_packets; if (!pdata->tx_frames) tx_set_ic = 0; - else if (packet->tx_packets > pdata->tx_frames) + else if (tx_packets > pdata->tx_frames) tx_set_ic = 1; - else if ((ring->coalesce_count % pdata->tx_frames) < - packet->tx_packets) + else if ((ring->coalesce_count % pdata->tx_frames) < tx_packets) tx_set_ic = 1; else tx_set_ic = 0; @@ -1741,7 +1744,7 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel) XGMAC_SET_BITS_LE(rdesc->desc3, TX_NORMAL_DESC3, TCPHDRLEN, packet->tcp_header_len / 4); - pdata->ext_stats.tx_tso_packets += packet->tx_packets; + pdata->ext_stats.tx_tso_packets += tx_packets; } else { /* Enable CRC and Pad Insertion */ XGMAC_SET_BITS_LE(rdesc->desc3, TX_NORMAL_DESC3, CPC, 0); @@ -1789,8 +1792,11 @@ static void xgbe_dev_xmit(struct xgbe_channel *channel) XGMAC_SET_BITS_LE(rdesc->desc2, TX_NORMAL_DESC2, IC, 1); /* Save the Tx info to report back during cleanup */ - rdata->tx.packets = packet->tx_packets; - rdata->tx.bytes = packet->tx_bytes; + rdata->tx.packets = tx_packets; + rdata->tx.bytes = tx_bytes; + + pdata->ext_stats.txq_packets[channel->queue_index] += tx_packets; + pdata->ext_stats.txq_bytes[channel->queue_index] += tx_bytes; /* In case the Tx DMA engine is running, make sure everything * is written to the descriptor(s) before setting the OWN bit @@ -1944,6 +1950,9 @@ static int xgbe_dev_read(struct xgbe_channel *channel) FRAME, 1); } + pdata->ext_stats.rxq_packets[channel->queue_index]++; + pdata->ext_stats.rxq_bytes[channel->queue_index] += rdata->rx.len; + DBGPR("<--xgbe_dev_read: %s - descriptor=%u (cur=%d)\n", channel->name, ring->cur & (ring->rdesc_count - 1), ring->cur); diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index 67a2e52..f80b186 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -186,6 +186,7 @@ struct xgbe_stats { static void xgbe_get_strings(struct net_device *netdev, u32 stringset, u8 *data) { + struct xgbe_prv_data *pdata = netdev_priv(netdev); int i; switch (stringset) { @@ -195,6 +196,18 @@ static void xgbe_get_strings(struct net_device *netdev, u32 stringset, u8 *data) ETH_GSTRING_LEN); data += ETH_GSTRING_LEN; } + for (i = 0; i < pdata->tx_ring_count; i++) { + sprintf(data, "txq_%u_packets", i); + data += ETH_GSTRING_LEN; + sprintf(data, "txq_%u_bytes", i); + data += ETH_GSTRING_LEN; + } + for (i = 0; i < pdata->rx_ring_count; i++) { + sprintf(data, "rxq_%u_packets", i); + data += ETH_GSTRING_LEN; + sprintf(data, "rxq_%u_bytes", i); + data += ETH_GSTRING_LEN; + } break; } } @@ -211,15 +224,26 @@ static void xgbe_get_ethtool_stats(struct net_device *netdev, stat = (u8 *)pdata + xgbe_gstring_stats[i].stat_offset; *data++ = *(u64 *)stat; } + for (i = 0; i < pdata->tx_ring_count; i++) { + *data++ = pdata->ext_stats.txq_packets[i]; + *data++ = pdata->ext_stats.txq_bytes[i]; + } + for (i = 0; i < pdata->rx_ring_count; i++) { + *data++ = pdata->ext_stats.rxq_packets[i]; + *data++ = pdata->ext_stats.rxq_bytes[i]; + } } static int xgbe_get_sset_count(struct net_device *netdev, int stringset) { + struct xgbe_prv_data *pdata = netdev_priv(netdev); int ret; switch (stringset) { case ETH_SS_STATS: - ret = XGBE_STATS_COUNT; + ret = XGBE_STATS_COUNT + + (pdata->tx_ring_count * 2) + + (pdata->rx_ring_count * 2); break; default: diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 58bb455..0e93155 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -668,6 +668,11 @@ struct xgbe_ext_stats { u64 tx_tso_packets; u64 rx_split_header_packets; u64 rx_buffer_unavailable; + + u64 txq_packets[XGBE_MAX_DMA_CHANNELS]; + u64 txq_bytes[XGBE_MAX_DMA_CHANNELS]; + u64 rxq_packets[XGBE_MAX_DMA_CHANNELS]; + u64 rxq_bytes[XGBE_MAX_DMA_CHANNELS]; }; struct xgbe_hw_if {