From patchwork Mon Jul 24 10:19:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 27143 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 495F47CDA; Mon, 24 Jul 2017 12:19:51 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0085.outbound.protection.outlook.com [104.47.41.85]) by dpdk.org (Postfix) with ESMTP id 05A765905 for ; Mon, 24 Jul 2017 12:19:42 +0200 (CEST) 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=LK1STbZrlb1YYxYyfK46K+dpm2V3EA42xb9VwuwVUtE=; b=SQYHWYywsCyHvPfvixjnCRQZX3n/HzmQ/wYQVhVHBdsL0gGZc0CD5O5vZbhRuWbDHSU7KqB5cZCVWAXpT7bvlHo//ORsO5dnh/NCcDB8ALt+dKvkuqhOohkqv4CJ+t6vgGUIRkkJjUE+CKYXpQGyk3xxKaxD8xdcOgShBkSoVrg= Received: from CY1PR07CA0027.namprd07.prod.outlook.com (10.166.202.37) by SN2PR07MB2512.namprd07.prod.outlook.com (10.167.14.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Mon, 24 Jul 2017 10:19:40 +0000 Received: from BY2FFO11FD007.protection.gbl (2a01:111:f400:7c0c::122) by CY1PR07CA0027.outlook.office365.com (2a01:111:e400:c60a::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10 via Frontend Transport; Mon, 24 Jul 2017 10:19:41 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; dpdk.org; dkim=none (message not signed) header.d=none; dpdk.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BY2FFO11FD007.mail.protection.outlook.com (10.1.14.128) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1240.9 via Frontend Transport; Mon, 24 Jul 2017 10:19:40 +0000 Received: from avsmtprelay01.qlc.com (10.1.112.194) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Mon, 24 Jul 2017 03:19:38 -0700 Received: from avluser05.qlc.com (avluser05.qlc.com [10.1.113.115]) by avsmtprelay01.qlc.com (Postfix) with ESMTP id 39EE08BF705FF; Mon, 24 Jul 2017 03:19:38 -0700 (PDT) Received: (from rmody@localhost) by avluser05.qlc.com (8.14.4/8.14.4/Submit) id v6OAJcaK021947; Mon, 24 Jul 2017 03:19:38 -0700 X-Authentication-Warning: avluser05.qlc.com: rmody set sender to rasesh.mody@cavium.com using -f From: Rasesh Mody To: CC: Rasesh Mody , Date: Mon, 24 Jul 2017 03:19:04 -0700 Message-ID: <1500891548-21896-3-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1500891548-21896-1-git-send-email-rasesh.mody@cavium.com> References: <1500891548-21896-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39840400002)(39850400002)(39410400002)(39400400002)(39450400003)(2980300002)(428002)(189002)(199003)(38730400002)(54906002)(105586002)(6666003)(107886003)(36756003)(5003940100001)(2351001)(50466002)(69596002)(50226002)(8936002)(305945005)(478600001)(87636003)(48376002)(47776003)(356003)(189998001)(4720700003)(4326008)(110136004)(81166006)(42186005)(575784001)(6916009)(2950100002)(33646002)(81156014)(76176999)(86362001)(50986999)(2906002)(106466001)(626005)(101416001)(72206003)(8676002)(53946003)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB2512; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD007; 1:ZIkWfC/FCDuegX/LiLz3c0Vf4cOC2opTrrLeLMe9HfiwWyKWu9YjHveh6KA5B8lK/jrP9fkjUS6nE7vGziHAMLLRQ6Eod/T8YOknJhccI+9yyhAWnRE5iLbFrjkuw/Yj42A0Gx1n/u3UnDfz4BdUFv0fumTut6KrkEcXcpOIcsukq9VrhQKuftHxPp30tFpgxWkrlT3+DIBqWOKUMel1cR61XS5kMHOgDAEBbg+bXfmvIb0E7zFWa5qPON6+6b1lV/emM3dwS5ssP/FVI3aoE++QUTxaHTIjUIjaPBx1jfld8TLc1qVq/zysuvkMq7GNWzRxSTBkMs/by5kbz8RtvoMEfMONJUAgc4eBewoHCUt79zzma1rut1X0EfhrbJDVNhV4lyyOiPHW3sypTuxVK50qiyucbsK61we3WL7X2nOT2GVhNy1BSA58kJWEjGf/du6suRB+gruHUwPElIsTY7IMKE1LkCwixqF84/Xh6mZqnR98u+6dPirIsLonDsf0XxMSRyqoNlwvtA02cIWdYMx1WTm3trxYpv7skRM3HoFciLdUaomqP1k58ocZuDhNLkW4VkZ/1u+Q7V9fk/6PQCd1YS7C7ull9M5hb9zF3wghIUMUHEQ7E7fpdzee2AyMChTwfIy9OJZqiJ4Tix5xtVqFHLeOSgF1up58XzaYPvetYvrgsyn7AqP2QBtqufPHrCc+xFekWg94Th4BPRY+mGXIxVjQJyruDB9bbvOe/cp0VY5F1AlKc3fCNJh31yfBArSVo8dMAMKMVo/O8AMDAmbuNWJqB8Ukn8IeQPSUkZMSPphP8wzwiBK852EuhLzC X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a4e28899-42ed-423b-79bc-08d4d27d7ec0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN2PR07MB2512; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 3:RAZQYM4NseUtNcPX5fgE1McKocbeHaNTkqF8Pf/dKIQ3xSIEo0RN8D8QmgxG/uL6d/PhnRsN6EGkZuiVygg+uJrclPm7VBKeflFMSJeOQYGJpnM0c8+JB9TyRZb5K58F9m5QwTd1fIW3e9CVUQX/3IBgsRenrpMwX6DH9rBFiR4IlHglTZ897epzoOvZsUY3+d0ytdEA8ybS4mkmw6EKfeXpj3Te5CwIqvyLX4drmekTLkYhOGX5DN4lho3WemzSzkHJ0WjyKSJiHn5zwSmcmyKyn+yoLBAhpPUYxjdCXUVLKinby2HDsHxr69k2G/wMZ0P7bkqqwpWUEZrNvZ41yMqJl+O4heL3bhGNP0H+JdB+jvI9OIgV2T9TFWBfbjbrUaiZ3cuJGJGrLk60bBfdS5pefyH1Dp89IQQ5VWgfj5R9cMbPJrON9r/JVgjRpFOndke3nW3nQw47Uf91xRx38kRwF2YAkUvCEv0oSgonFML4C1lCaIXBUTdzah06IJpazrXj73ckno9dTmr/R1R7Fcl3rXCLyjjy8ym55Kx1MSgrtjrfPwTIH6cdG/WqIdP6rwg2IHnywtcDO144eEleuj6B0tSRm5PQ43tocx4K0r3YpajpjUhFVdsDbqL1u3aXydcCnmAUXhAfwhGrzx4tO65W3Fye0QvCny5iYYBqfm2OUIg7mIKEjyj+lnwByTjN2GxsGXqqsV7/6w+LFUjiNbfZeOUw4os8xIR/6HVdfjHacw+uETtjFIvTD47+jc6M0TpNQLmA5WYj0CJUpC1qjaHKcz0Noz64s8Y5JyTN1kqapxXhPtVBo+/sxRipuB3r3WGW56z1IVnLcppwkTTa156OsD+1Kp4mFGqHIRq6mCXwXtRzgfHLHAmh7PcSBI/Gc+4zG+dEmG+1ffX/ULvIng/Pp3a9wtPCUxlzQe5lsAFMeA1l5GGI/xt30XfWpX3v X-MS-TrafficTypeDiagnostic: SN2PR07MB2512: X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 25:JoSBV42Kh2DK5qT8RKQ/DWaHJMH4ZVJZ+lZrXaomZ3vjj9AVOy+SLbJxP3CIpYQX+M43IUG5KE9lLMRcsCaNwwIZbCJYifgcE4uqTFFsYK9U9wE3SwEv1nn+oOWHO+bNNFQQL9NldQYD5/lLtA0fGBbUgU4MTd/73yXewurndm9AjOQhQjVf4fPQuz6O5ZvfPvV2A5dWkLyCQr+eYCKTc/IFG/D1N79GA7YSjYyX3po++wl3opYbtd156u0c31c2SvoNLauoyhBP5srUOGR7PuEaOdq0KTa5Zpz2idh7n2LwV4yj/5t+yS/60bfq/03J1P56wSVMRyL+CpVqoVfOuU94RUPtxa1o4qDtHDZ5VzriSxMw+Wlm1Wi2qs8hc9fayy50HyPjvyZ+YywY1mtOK2B0LALFHEIOEdTvx1WLUFT2LsBPcNMncnTHJj6Jew6hMSO3dz3izlh1oLMrAroN8huL4KYCOQFGwx5LquDARdKmKGkBaTgaJx5STjZFnHLVfZSepV7vSYLn6/0S6szyucTD5suRoJ0F4OCRW9FTioY2BVn0Iv4zX/z/D3URNZq8rvafyimz1mJHlQURRExvOmc1X4L2MJ9PN0FjM64/qw6PVmSV7U9++tAIorChgp48Ld4PGzMWfssoTataxKh96OKwMcj8a6bRisRcz179HZS3NVBinVbDz7i6KfW0HZziFdJSpWmgrbZbEQ3tMRtASFJbueFsaBxCmDhp8xSTYy529b8rRqkFhqgsRI93xNU4Ecko4bQzYUfJuSTj4D9bdKUllbrNpUE3PcikPkbshew+wNdCPSrzpBcZEy3eWXRSArB4ddDAcPaB8P2Bpv1ZCpbCyFAs8afZhBtETsTy+wiuvcrd5tSmuXLSHImgrplp0YGB5SGfnan/eACgTxUdrVTOpZcy6U3etye80B8BuX4= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 31:SH+KjnTqy7ho8q1sY8pJbx++kGpry8/hkMe4Mq1My4QhyI7A1pXgEdNa9+qxhvlNpsex63wwcQ/bzUJmqhA6HtuVjGG1bpi12dQFjdvNiucWOeMso3X/IoiJGxcZBQRnOqeJAc4/CwMjnXbwCfjOEQcjB+yL9ZweHd+y0Pn2ZoMwoJq8N3T+oducmx/CVxfY1EQxaarVGC3/39Rq/0Oe/IfxoajLLSBGM30YCX4khvQAit/4o/P2YIRP4iGSUbvs2xaQmeNCG0CNpS3ntLL5b5oDMPDXMl5/fc+EStghRMY8zsn4fwxKWVQLpvSKf7V5lzAHK+MS6rdcK1zdnIxkJH88foomxTqbc4/Mhnf1RHdoHnBEPO4PyHxsgW0QqTo6d6zH+IwreulyBa2FJpouIAoRTATb4yAftG7idqNh8wjTZKqlSz3OMgUDgqXKuGv+TFMbknoYCZiPoOk0nkefpX5P+UCeXNpOznLEV6ghnEEwlYhoaBP2rUIRQwjrsUfCjKq6HOkJxfRYPy9y77MVW/oviCts+9nVcsMRClrCB7Vmc0AHP26OvjdgUGfiID/0mgChgkXW2GMe6svKwoAUuCuG2fKm1R3ZQf6JFt+xvKWPcs0WzVEGgJyR4EebHP1l9o2BUAU/kHbe8WVt0UhN2YU18wcQsV5+RuKupePynhdwUUoqQ8n6vl8WQ516Ohfk X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 20:AXmXwYupjjuZUK/kipMWPgyb+l8a392AQgH0wB8W0fmMoIjkM7SGnWZTyhTrfdCNXJfMDc+hC0bAY0CVt/2GzywNPx6vzSnHviZA6y+CNCqzWJLYXPjbE4/g7urPgUA5pst2WVku/Di+7RyodpSWNqLzvQBIlhywDHcgp/aZjkPnORLtnSbHWT4XbxWDh2aGbHW9lRdBbwDxqHMrBTfXFzpuqGfgyfipLBR6r535pX8UaKwggFHXygQAxPNubK+Tqy1oYKBmHiZ1SL2E6P+5y91+ys7Yuzy2FmDqXqn83+t6sryCtyCHvbhAMg6eSabt6kRouwbh51KkoQCbtIIlJuC+Z4vctcqFr0ERs+M6pq/G3ry5RUCJ7AulyJ8IEeTR0+WMthGydGtUZI8QO9xDUAZUBCpVjXS7RNX9Gb5SbWJFsmT6ZQFiFU46X6UB5kYGtmnKo7oPOwBboS5+DkHe0rPcuwC+W/HmiQo/m1O8p2hYOLR+K7x5YhzVQT6KjYqt 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)(601004)(2401047)(13016025)(5005006)(13018025)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6041248)(20161123562025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN2PR07MB2512; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN2PR07MB2512; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR07MB2512; 4:gSp1N+0VwnH9S2MrqoDZPNEoI4AB5zlcvQIhqomAN+?= joZQOmPC5ivi7M6G/a4YsfqogpLKcqnjP3c0P+g23xx5QGqIpxrEUH8cboM/PjhoK+7f3eYIOhDnHq1rKLBg3uM+ak5LFKlskGbNfCkh8npMyVZkaF2mylA9XxXRv0JiTNiuewiXbb4SXQ6k9Uucz7uZdpqXiKpoej8YZhhdeGy59jQwPpBfVtyNZYhIvhRQTpzubPlkyeCeFy7E8s76GuibwHKaAA5qCfkPdq+X2DSHqGyQHFeCzFij4qJcbt9A5a5dCb2//Q46ltWlfGOL27I55MakbOM3hPmFl5lP1PxZxmdyApi3Ju+BUP1SBg+JLuprxcYL0V2fX0E8bqzeKTjgirWh6PBWun7wkLXPdy84QXdOSjnhWJuuPYsmEpxM4q+QkD8wURDDS7uPY05rK8oJyY2L4RvAIzn/ageptOhaY4Lcst8YO2PulM8wLdgScjWb22+Hw1JzaXPHn476gmvHYspMXkUNLqPc73eXm1DefGscQTwKl+gH856Av+lZ1POeFQUitTllMxRowR5qA95z2/ogp7MOasys04+7GvtBSm2hm7xplNl3h3bS7wjdEg9PCkWCCMkfGPjQMa5GOHiB9t7MF+mob+WT1YFHEBcRqbeT0Pt7y/2h/3tZH5TR56TxhPPfCTT6hGHoI1Wuq9hWZHd+DWlWjGCTSg2P690HLP2l377ApWBTcuyjmAIEsnteL3933gSkrHILBK3BY5sOhR8U4hF6zvyNxHPs2jKRZGfyLtc/BaUTDp2UR9NpKjKH4D1obSVxYs3X/z0MozjO8TsD/GRV831L64Yk0qPYODq42l21wQkaM+2drVvu+bbBSoDufao0Ok/M3QSvHm7FcWX/oYK4kYz2IMLXTLVrabGsxlm+hEV//4/mpZogEf4cqVvxM52jyHRgyyx8SQR88wpzhzPZlhGACSRGNTXg7fEln7OX8KV/9IFMotMl3rp5k0eYE0Re7KFhOb26RJPf0dODWFM72P8BnItapviXRxFsw0W+bKRtB+f6E5Fi/hM09vNPDRXMYQ/FuwQQV517LjT8srVSHTEF2Vch+BZTI1zPIQB84/mQRspKwd2iyhV6RpSWOYhxV4R8d9QsaFbqIzttwZDtlvo7rVOmWR8dmzf3ao7P24e9qWxGyit3I= X-Forefront-PRVS: 0378F1E47A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR07MB2512; 23:wL4jtk6j44LHAxpvHRqaD5nFeNGdvY7jwtDv1LLzp?= jxeXGcfAMYN2/Von7Dn+RkTQU6sYtHb8LSC5Dva/BnDMYqAwmMONm8ahepHYaIf+fhMnFEYaYVXgTVUQX6QBkPlpww0/+zLKdBDy3jd/IJAQnSXxfmef8K55+inVnxUkXVUU0SlYzY+Xb3W3Jl1hu25ppCxfWIX4qdWUi6rwBF22wNGArbYuFsuoIpyYmrYuYhpT+SqXGBB59WfjvDpRTvTKl05Ca3lukybGwnjAQjQUlFdjzi+nER5aVt8BtdCp/F63UBeV8Ig2kRswyg7up5juHCsAg0mYD74wEnLNlOCON5fmH4ZpqUAoPdArMSpBTBpGZkkuh8MsBgfT/iY6TUuSQPViPR6+wnC7pFaYvFJYuQADNdYuJKocEo7l82lzfjwIfW7vKto00ww6BKyjj17tlmV0au7dKpXnuTPebAf9Bm+rWVbxr6XELakG1we2cW0O5OOnjNayxxWQ3b3XPN3fmAZah6GNlrBnOkxFcjJJTcM1ZlvqM5By48SPVog7gdfzFDdYOvWVpCgrUNOd/kQ/6nJILz317A1W8Z7Qlly5MGRPL62bdHCrGIv2Sxjthy8EVqRht+zF8N1iahnZRyMU3S9BIf8KEIYTp/zSg7vlWGq+wDn8OUGAzGVKtsMlvTA+XrN7SYW/f8dtHhAcTee94bW4ASWCyC9rzHZkeSWDskyBvuLOIlhleY4i1Y0DIA6UDZQQQvT7+Pujy/ZRHGFOhs4xDCItIZAtzcLNUmQTz5hroVhWLgQNr3tGDkHu0MJztXvu0ISaubPU/MnF5cVAs9vezG+I3dNFHE0hCd8uNshxWnW7IhcGdsb9a5Dke9j2wBWl0vI7bFK325ScyaHLQeY4xVxaICGOTBpLF/4BpPVevjyOant77R2oH3sVkp2QvvTj8DcgdDm3+NH/onRyki+iXit9nB+/a7vZFHQYiyaWqFAUydK+eCd5MKbYTqauJnPcyri5Fe6v38oolYJU23sVPUP3JY0qKFifIfNDEq1t+3ynSmXoFa6W9xvRrsZf2NwteN7dxre4zQiCk9WI8MxsIDLesAkHv2IzWMZz6GNcHauOFaewFlcYe9ik6LUr5fO5j4XrX8xmXgvtzSvh3LOkomiKHdXlyEghrIYyaLTZkgVZMbZHBKNj2reZmfR3CvhSiGwuWsWVyzaLZyd+rHnr+JMw1St0olyW8DyzQ== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR07MB2512; 6:xqn0SeZGrUafeWZElKz3ZFWjrKEoxVSBJBGVhoN62e?= kX9ltRiRedxKzCyayMH/Kvx5S1bMA1eOWYCSpNUBLt9kXKN0Dppq7p9GkxvFYKoK3xhnakLdEQnIbai17C6alQp1ENSVxxnRu+8iaoLExiU1wpi4yym0SZDKS+JAUSue5/WX0Wh/aPnAe2IKtypUAopZO1m5DnTHrwQAQ8czsKfMEtDVIU5Ha6D1RCy5rMvpQivhqnjIWLaBjqHD/QmwVk95B8V0p9InZqsdhUXlrgrFxEY/08drKnLf1LDUMoK5QHuvtMOq+FT7lkJs6yO9Oq+KEgEyLdRs/yC0UilU3KRCNE67LX21XcCwa4jRrK2ekg6vuYmvdEfhbFzlKt2rGIH4lg4Ovkx5YZSdAg3sGuAsWMY/edbMXqe4rBGOlOYMXR9K9Y4hufqfmqtKbmKuOf+j9nNKet8bAuy9LnFeRI/3H0Bm9RHQQIw4DHa9CostGuR6wIEktdlBqJf3wzO9EpssT3eshYTd3M1/BGdF34Z39HmM7otfb37eetAQfUCtB3mXcGMbBBsnxD3N+Q6XSWP3pB0u/l82Bv82TvfXU1pBYxIAE186W+RawHzSwVsKF6/aG1ITtc+QnquZJm2AJOjiaimkTP7NqxTf5E7M2gDLRwMNJBDDk/guzlhPMW/ooxpC3XO51nqPqf3s74LxFLrK6qO2DRmahy+dzGRxcaUQBi8gac9U/vZ2E6G60nK1TTxSGP3ql3KshGqNTX16mGrnRSTvQ0xB/RPSekuwRR/QirZLW1lTwQ7Efe1DZbV6l/7YUQslhcQPp6KNb1Dgyja+rOvVbb7nCcFV5GYQwf/9gzi2xlWp0ibwKG954HLBMOUB0RkBp2+IejdJcZG04BQLokiWnyLznApp6IFMXF1n5r3IeadiyFsjpNj9lJlyu1XL+KhDjhTqRIyQodZf1ZRvt5g58l6ca/8nvn+u2uoauiuoeZcIGXljhjGv8KzIw= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 5:kOEkT4fBvLUSlRZ1+mCFssGXawfnz8M6IShO/+wWAW+3ojao1SJaiE7HGGlJR1lmkhVz56k09ghVWgNUFQw+1VWMA9cZ46l5q4Bv5x0za/DyOevtb5zwU2qFS4I1rFUAATYh2v/nOoTXGT3qP+hz2BAZByWHVJbRnRMDUfrR1cOxufe8OGi41Hv1Smc5k+zx0A1EvkNMW6D8kHfL///WNvnOvlOkL4ahcJ3udLxie/Ib1QN1MX44Lvakq2F/ru5f/3FliNHcA2C7E/70N+ylEIElPyrEwCgsN4J7OB20IcbGCrzTWqQsl+KuyK/wOjwLoo0zflLPkItPA4+fnkgMnOhVzfpYsxcYh2FHM6H0j2qYOarr6Q6JesIwghYgHEuBpQ/I0RzcoMiYYuwTdil0q/cSk5r7tuMjkrQPdLxY5CQcbRMvD+vtxG7PYehp1cnQ/Rr0WuOTfB6AZ5oL/epeXH3F+YWRqDJlVV7w3ObZLwQ9AMNOtDkTWVhd2696E9Zw; 24:dioQq2ktZIYRQkrS4xMbcAU5BjLoarmd4Mct/eH0hhTWCbUImm6u/xbCKWFd0Ku40iXtLHbLrkwOqOv+3tYbHy40YkSw2fJjNVzhwF36cNg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2512; 7:tzXg8JrmYZMURQRNZvLmSDc02fQIU080LRS7JQonSBChQCW+Zgvi7mpLlp7ZTrkMg4dV4VqhCIsQGRYZ2Vbdv3cEe8KLEIyI+HPqF/0tv7IXKCgJs4VbpcMVlQNvYFKsT3tI4idMi8QpaaIwtjU8EYDCDVbSXM6U9YT5rc97Z+rqQpiUckh7yt05ODpuoaYxyPaOgjAVC2NAne9ggbXDm1KqG9vZY5UxXerTrf8dS3zJ+UHTuaO/NMD3Wf9IXpb1YRQmTwjIJvzQJFy2RSW39b1kqKyjOCOZj2YIObMMZ/fSYMovgennIxox8bsS7YZo4OIdCeMbKdxWO+u7cGpiPn5nOln6xKAtBjBZUxHw7YHLQmvL1NRdGtHIewzLwbXHBa354YIntT5f1896Vo1lEP+1EVpWxmUT8zKwJ7ZM4Kb+4Q0UqVhAYdkjRXrckZWZ++3DB0yoA+FxNGR/EixqQW6qi5srLxFlQ1SuOZTLcXS0hfcvhfdNRY1hBzZ2KhdfnCUmllEy1pnB87I0bQsXl87UzkF4WiRqukKaxEGur2/u48Tzw9EubKriAsrIQH09Zwmcki6MVv220eLVQEoZvvoDuxD9QPDi7vZPNkot/E9uQSQBLIP+ffPtfjuWFckVejqYlVnZEEM04kVIMIB+hGc/Nsnmf0YePixRI3Lasqk5wQghCynaT8QCcaK6qkmQGuJYSvOxpDCkO2oX2oVHpi7ZplVp1sgQ94cxDTlmAwAzMUM2UPcremTnS9xB3EN5tsRMbpp/Nl14CWqj8HAX+560I6lB4gGf9i3KNrpEMrk= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2017 10:19:40.3342 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR07MB2512 Subject: [dpdk-dev] [PATCH 3/7] net/qede/base: fix for adapter specific stats X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Handle different MAC statistic fields between two chip variants by reading the MAC counters from the adapter suitable statistics bins. Fixes: ec94dbc57362 ("qede: add base driver") Signed-off-by: Rasesh Mody --- drivers/net/qede/base/bcm_osal.c | 7 +- drivers/net/qede/base/ecore_dev_api.h | 40 +++-- drivers/net/qede/base/ecore_l2.c | 188 ++++++++++++-------- drivers/net/qede/base/mcp_public.h | 58 ++++-- drivers/net/qede/qede_ethdev.c | 312 ++++++++++++++++++++++----------- 5 files changed, 400 insertions(+), 205 deletions(-) diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c index 968fb76..2603a8b 100644 --- a/drivers/net/qede/base/bcm_osal.c +++ b/drivers/net/qede/base/bcm_osal.c @@ -249,8 +249,11 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len, if (type == ECORE_MCP_LAN_STATS) { ecore_get_vport_stats(edev, &lan_stats); - stats->lan_stats.ucast_rx_pkts = lan_stats.rx_ucast_pkts; - stats->lan_stats.ucast_tx_pkts = lan_stats.tx_ucast_pkts; + + /* @DPDK */ + stats->lan_stats.ucast_rx_pkts = lan_stats.common.rx_ucast_pkts; + stats->lan_stats.ucast_tx_pkts = lan_stats.common.tx_ucast_pkts; + stats->lan_stats.fcs_err = -1; } else { DP_INFO(edev, "Statistics request type %d not supported\n", diff --git a/drivers/net/qede/base/ecore_dev_api.h b/drivers/net/qede/base/ecore_dev_api.h index eea22e0..9126cf9 100644 --- a/drivers/net/qede/base/ecore_dev_api.h +++ b/drivers/net/qede/base/ecore_dev_api.h @@ -241,7 +241,7 @@ void ecore_ptt_release(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt); #ifndef __EXTRACT__LINUX__ -struct ecore_eth_stats { +struct ecore_eth_stats_common { u64 no_buff_discards; u64 packet_too_big_discard; u64 ttl0_discard; @@ -273,11 +273,6 @@ struct ecore_eth_stats { u64 rx_256_to_511_byte_packets; u64 rx_512_to_1023_byte_packets; u64 rx_1024_to_1518_byte_packets; - u64 rx_1519_to_1522_byte_packets; - u64 rx_1519_to_2047_byte_packets; - u64 rx_2048_to_4095_byte_packets; - u64 rx_4096_to_9216_byte_packets; - u64 rx_9217_to_16383_byte_packets; u64 rx_crc_errors; u64 rx_mac_crtl_frames; u64 rx_pause_frames; @@ -294,14 +289,8 @@ struct ecore_eth_stats { u64 tx_256_to_511_byte_packets; u64 tx_512_to_1023_byte_packets; u64 tx_1024_to_1518_byte_packets; - u64 tx_1519_to_2047_byte_packets; - u64 tx_2048_to_4095_byte_packets; - u64 tx_4096_to_9216_byte_packets; - u64 tx_9217_to_16383_byte_packets; u64 tx_pause_frames; u64 tx_pfc_frames; - u64 tx_lpi_entry_count; - u64 tx_total_collisions; u64 brb_truncates; u64 brb_discards; u64 rx_mac_bytes; @@ -315,6 +304,33 @@ struct ecore_eth_stats { u64 tx_mac_bc_packets; u64 tx_mac_ctrl_frames; }; + +struct ecore_eth_stats_bb { + u64 rx_1519_to_1522_byte_packets; + u64 rx_1519_to_2047_byte_packets; + u64 rx_2048_to_4095_byte_packets; + u64 rx_4096_to_9216_byte_packets; + u64 rx_9217_to_16383_byte_packets; + u64 tx_1519_to_2047_byte_packets; + u64 tx_2048_to_4095_byte_packets; + u64 tx_4096_to_9216_byte_packets; + u64 tx_9217_to_16383_byte_packets; + u64 tx_lpi_entry_count; + u64 tx_total_collisions; +}; + +struct ecore_eth_stats_ah { + u64 rx_1519_to_max_byte_packets; + u64 tx_1519_to_max_byte_packets; +}; + +struct ecore_eth_stats { + struct ecore_eth_stats_common common; + union { + struct ecore_eth_stats_bb bb; + struct ecore_eth_stats_ah ah; + }; +}; #endif enum ecore_dmae_address_type_t { diff --git a/drivers/net/qede/base/ecore_l2.c b/drivers/net/qede/base/ecore_l2.c index 4ab8fd5..e58b8fa 100644 --- a/drivers/net/qede/base/ecore_l2.c +++ b/drivers/net/qede/base/ecore_l2.c @@ -1714,13 +1714,20 @@ static void __ecore_get_vport_pstats(struct ecore_hwfn *p_hwfn, OSAL_MEMSET(&pstats, 0, sizeof(pstats)); ecore_memcpy_from(p_hwfn, p_ptt, &pstats, pstats_addr, pstats_len); - p_stats->tx_ucast_bytes += HILO_64_REGPAIR(pstats.sent_ucast_bytes); - p_stats->tx_mcast_bytes += HILO_64_REGPAIR(pstats.sent_mcast_bytes); - p_stats->tx_bcast_bytes += HILO_64_REGPAIR(pstats.sent_bcast_bytes); - p_stats->tx_ucast_pkts += HILO_64_REGPAIR(pstats.sent_ucast_pkts); - p_stats->tx_mcast_pkts += HILO_64_REGPAIR(pstats.sent_mcast_pkts); - p_stats->tx_bcast_pkts += HILO_64_REGPAIR(pstats.sent_bcast_pkts); - p_stats->tx_err_drop_pkts += HILO_64_REGPAIR(pstats.error_drop_pkts); + p_stats->common.tx_ucast_bytes += + HILO_64_REGPAIR(pstats.sent_ucast_bytes); + p_stats->common.tx_mcast_bytes += + HILO_64_REGPAIR(pstats.sent_mcast_bytes); + p_stats->common.tx_bcast_bytes += + HILO_64_REGPAIR(pstats.sent_bcast_bytes); + p_stats->common.tx_ucast_pkts += + HILO_64_REGPAIR(pstats.sent_ucast_pkts); + p_stats->common.tx_mcast_pkts += + HILO_64_REGPAIR(pstats.sent_mcast_pkts); + p_stats->common.tx_bcast_pkts += + HILO_64_REGPAIR(pstats.sent_bcast_pkts); + p_stats->common.tx_err_drop_pkts += + HILO_64_REGPAIR(pstats.error_drop_pkts); } static void __ecore_get_vport_tstats(struct ecore_hwfn *p_hwfn, @@ -1746,10 +1753,10 @@ static void __ecore_get_vport_tstats(struct ecore_hwfn *p_hwfn, OSAL_MEMSET(&tstats, 0, sizeof(tstats)); ecore_memcpy_from(p_hwfn, p_ptt, &tstats, tstats_addr, tstats_len); - p_stats->mftag_filter_discards += - HILO_64_REGPAIR(tstats.mftag_filter_discard); - p_stats->mac_filter_discards += - HILO_64_REGPAIR(tstats.eth_mac_filter_discard); + p_stats->common.mftag_filter_discards += + HILO_64_REGPAIR(tstats.mftag_filter_discard); + p_stats->common.mac_filter_discards += + HILO_64_REGPAIR(tstats.eth_mac_filter_discard); } static void __ecore_get_vport_ustats_addrlen(struct ecore_hwfn *p_hwfn, @@ -1783,12 +1790,18 @@ static void __ecore_get_vport_ustats(struct ecore_hwfn *p_hwfn, OSAL_MEMSET(&ustats, 0, sizeof(ustats)); ecore_memcpy_from(p_hwfn, p_ptt, &ustats, ustats_addr, ustats_len); - p_stats->rx_ucast_bytes += HILO_64_REGPAIR(ustats.rcv_ucast_bytes); - p_stats->rx_mcast_bytes += HILO_64_REGPAIR(ustats.rcv_mcast_bytes); - p_stats->rx_bcast_bytes += HILO_64_REGPAIR(ustats.rcv_bcast_bytes); - p_stats->rx_ucast_pkts += HILO_64_REGPAIR(ustats.rcv_ucast_pkts); - p_stats->rx_mcast_pkts += HILO_64_REGPAIR(ustats.rcv_mcast_pkts); - p_stats->rx_bcast_pkts += HILO_64_REGPAIR(ustats.rcv_bcast_pkts); + p_stats->common.rx_ucast_bytes += + HILO_64_REGPAIR(ustats.rcv_ucast_bytes); + p_stats->common.rx_mcast_bytes += + HILO_64_REGPAIR(ustats.rcv_mcast_bytes); + p_stats->common.rx_bcast_bytes += + HILO_64_REGPAIR(ustats.rcv_bcast_bytes); + p_stats->common.rx_ucast_pkts += + HILO_64_REGPAIR(ustats.rcv_ucast_pkts); + p_stats->common.rx_mcast_pkts += + HILO_64_REGPAIR(ustats.rcv_mcast_pkts); + p_stats->common.rx_bcast_pkts += + HILO_64_REGPAIR(ustats.rcv_bcast_pkts); } static void __ecore_get_vport_mstats_addrlen(struct ecore_hwfn *p_hwfn, @@ -1822,23 +1835,27 @@ static void __ecore_get_vport_mstats(struct ecore_hwfn *p_hwfn, OSAL_MEMSET(&mstats, 0, sizeof(mstats)); ecore_memcpy_from(p_hwfn, p_ptt, &mstats, mstats_addr, mstats_len); - p_stats->no_buff_discards += HILO_64_REGPAIR(mstats.no_buff_discard); - p_stats->packet_too_big_discard += - HILO_64_REGPAIR(mstats.packet_too_big_discard); - p_stats->ttl0_discard += HILO_64_REGPAIR(mstats.ttl0_discard); - p_stats->tpa_coalesced_pkts += - HILO_64_REGPAIR(mstats.tpa_coalesced_pkts); - p_stats->tpa_coalesced_events += - HILO_64_REGPAIR(mstats.tpa_coalesced_events); - p_stats->tpa_aborts_num += HILO_64_REGPAIR(mstats.tpa_aborts_num); - p_stats->tpa_coalesced_bytes += - HILO_64_REGPAIR(mstats.tpa_coalesced_bytes); + p_stats->common.no_buff_discards += + HILO_64_REGPAIR(mstats.no_buff_discard); + p_stats->common.packet_too_big_discard += + HILO_64_REGPAIR(mstats.packet_too_big_discard); + p_stats->common.ttl0_discard += + HILO_64_REGPAIR(mstats.ttl0_discard); + p_stats->common.tpa_coalesced_pkts += + HILO_64_REGPAIR(mstats.tpa_coalesced_pkts); + p_stats->common.tpa_coalesced_events += + HILO_64_REGPAIR(mstats.tpa_coalesced_events); + p_stats->common.tpa_aborts_num += + HILO_64_REGPAIR(mstats.tpa_aborts_num); + p_stats->common.tpa_coalesced_bytes += + HILO_64_REGPAIR(mstats.tpa_coalesced_bytes); } static void __ecore_get_vport_port_stats(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, struct ecore_eth_stats *p_stats) { + struct ecore_eth_stats_common *p_common = &p_stats->common; struct port_stats port_stats; int j; @@ -1849,54 +1866,75 @@ static void __ecore_get_vport_port_stats(struct ecore_hwfn *p_hwfn, OFFSETOF(struct public_port, stats), sizeof(port_stats)); - p_stats->rx_64_byte_packets += port_stats.eth.r64; - p_stats->rx_65_to_127_byte_packets += port_stats.eth.r127; - p_stats->rx_128_to_255_byte_packets += port_stats.eth.r255; - p_stats->rx_256_to_511_byte_packets += port_stats.eth.r511; - p_stats->rx_512_to_1023_byte_packets += port_stats.eth.r1023; - p_stats->rx_1024_to_1518_byte_packets += port_stats.eth.r1518; - p_stats->rx_1519_to_1522_byte_packets += port_stats.eth.r1522; - p_stats->rx_1519_to_2047_byte_packets += port_stats.eth.r2047; - p_stats->rx_2048_to_4095_byte_packets += port_stats.eth.r4095; - p_stats->rx_4096_to_9216_byte_packets += port_stats.eth.r9216; - p_stats->rx_9217_to_16383_byte_packets += port_stats.eth.r16383; - p_stats->rx_crc_errors += port_stats.eth.rfcs; - p_stats->rx_mac_crtl_frames += port_stats.eth.rxcf; - p_stats->rx_pause_frames += port_stats.eth.rxpf; - p_stats->rx_pfc_frames += port_stats.eth.rxpp; - p_stats->rx_align_errors += port_stats.eth.raln; - p_stats->rx_carrier_errors += port_stats.eth.rfcr; - p_stats->rx_oversize_packets += port_stats.eth.rovr; - p_stats->rx_jabbers += port_stats.eth.rjbr; - p_stats->rx_undersize_packets += port_stats.eth.rund; - p_stats->rx_fragments += port_stats.eth.rfrg; - p_stats->tx_64_byte_packets += port_stats.eth.t64; - p_stats->tx_65_to_127_byte_packets += port_stats.eth.t127; - p_stats->tx_128_to_255_byte_packets += port_stats.eth.t255; - p_stats->tx_256_to_511_byte_packets += port_stats.eth.t511; - p_stats->tx_512_to_1023_byte_packets += port_stats.eth.t1023; - p_stats->tx_1024_to_1518_byte_packets += port_stats.eth.t1518; - p_stats->tx_1519_to_2047_byte_packets += port_stats.eth.t2047; - p_stats->tx_2048_to_4095_byte_packets += port_stats.eth.t4095; - p_stats->tx_4096_to_9216_byte_packets += port_stats.eth.t9216; - p_stats->tx_9217_to_16383_byte_packets += port_stats.eth.t16383; - p_stats->tx_pause_frames += port_stats.eth.txpf; - p_stats->tx_pfc_frames += port_stats.eth.txpp; - p_stats->tx_lpi_entry_count += port_stats.eth.tlpiec; - p_stats->tx_total_collisions += port_stats.eth.tncl; - p_stats->rx_mac_bytes += port_stats.eth.rbyte; - p_stats->rx_mac_uc_packets += port_stats.eth.rxuca; - p_stats->rx_mac_mc_packets += port_stats.eth.rxmca; - p_stats->rx_mac_bc_packets += port_stats.eth.rxbca; - p_stats->rx_mac_frames_ok += port_stats.eth.rxpok; - p_stats->tx_mac_bytes += port_stats.eth.tbyte; - p_stats->tx_mac_uc_packets += port_stats.eth.txuca; - p_stats->tx_mac_mc_packets += port_stats.eth.txmca; - p_stats->tx_mac_bc_packets += port_stats.eth.txbca; - p_stats->tx_mac_ctrl_frames += port_stats.eth.txcf; + p_common->rx_64_byte_packets += port_stats.eth.r64; + p_common->rx_65_to_127_byte_packets += port_stats.eth.r127; + p_common->rx_128_to_255_byte_packets += port_stats.eth.r255; + p_common->rx_256_to_511_byte_packets += port_stats.eth.r511; + p_common->rx_512_to_1023_byte_packets += port_stats.eth.r1023; + p_common->rx_1024_to_1518_byte_packets += port_stats.eth.r1518; + p_common->rx_crc_errors += port_stats.eth.rfcs; + p_common->rx_mac_crtl_frames += port_stats.eth.rxcf; + p_common->rx_pause_frames += port_stats.eth.rxpf; + p_common->rx_pfc_frames += port_stats.eth.rxpp; + p_common->rx_align_errors += port_stats.eth.raln; + p_common->rx_carrier_errors += port_stats.eth.rfcr; + p_common->rx_oversize_packets += port_stats.eth.rovr; + p_common->rx_jabbers += port_stats.eth.rjbr; + p_common->rx_undersize_packets += port_stats.eth.rund; + p_common->rx_fragments += port_stats.eth.rfrg; + p_common->tx_64_byte_packets += port_stats.eth.t64; + p_common->tx_65_to_127_byte_packets += port_stats.eth.t127; + p_common->tx_128_to_255_byte_packets += port_stats.eth.t255; + p_common->tx_256_to_511_byte_packets += port_stats.eth.t511; + p_common->tx_512_to_1023_byte_packets += port_stats.eth.t1023; + p_common->tx_1024_to_1518_byte_packets += port_stats.eth.t1518; + p_common->tx_pause_frames += port_stats.eth.txpf; + p_common->tx_pfc_frames += port_stats.eth.txpp; + p_common->rx_mac_bytes += port_stats.eth.rbyte; + p_common->rx_mac_uc_packets += port_stats.eth.rxuca; + p_common->rx_mac_mc_packets += port_stats.eth.rxmca; + p_common->rx_mac_bc_packets += port_stats.eth.rxbca; + p_common->rx_mac_frames_ok += port_stats.eth.rxpok; + p_common->tx_mac_bytes += port_stats.eth.tbyte; + p_common->tx_mac_uc_packets += port_stats.eth.txuca; + p_common->tx_mac_mc_packets += port_stats.eth.txmca; + p_common->tx_mac_bc_packets += port_stats.eth.txbca; + p_common->tx_mac_ctrl_frames += port_stats.eth.txcf; for (j = 0; j < 8; j++) { - p_stats->brb_truncates += port_stats.brb.brb_truncate[j]; - p_stats->brb_discards += port_stats.brb.brb_discard[j]; + p_common->brb_truncates += port_stats.brb.brb_truncate[j]; + p_common->brb_discards += port_stats.brb.brb_discard[j]; + } + + if (ECORE_IS_BB(p_hwfn->p_dev)) { + struct ecore_eth_stats_bb *p_bb = &p_stats->bb; + + p_bb->rx_1519_to_1522_byte_packets += + port_stats.eth.u0.bb0.r1522; + p_bb->rx_1519_to_2047_byte_packets += + port_stats.eth.u0.bb0.r2047; + p_bb->rx_2048_to_4095_byte_packets += + port_stats.eth.u0.bb0.r4095; + p_bb->rx_4096_to_9216_byte_packets += + port_stats.eth.u0.bb0.r9216; + p_bb->rx_9217_to_16383_byte_packets += + port_stats.eth.u0.bb0.r16383; + p_bb->tx_1519_to_2047_byte_packets += + port_stats.eth.u1.bb1.t2047; + p_bb->tx_2048_to_4095_byte_packets += + port_stats.eth.u1.bb1.t4095; + p_bb->tx_4096_to_9216_byte_packets += + port_stats.eth.u1.bb1.t9216; + p_bb->tx_9217_to_16383_byte_packets += + port_stats.eth.u1.bb1.t16383; + p_bb->tx_lpi_entry_count += port_stats.eth.u2.bb2.tlpiec; + p_bb->tx_total_collisions += port_stats.eth.u2.bb2.tncl; + } else { + struct ecore_eth_stats_ah *p_ah = &p_stats->ah; + + p_ah->rx_1519_to_max_byte_packets += + port_stats.eth.u0.ah0.r1519_to_max; + p_ah->tx_1519_to_max_byte_packets = + port_stats.eth.u1.ah1.t1519_to_max; } } diff --git a/drivers/net/qede/base/mcp_public.h b/drivers/net/qede/base/mcp_public.h index fcf9847..1ad8a96 100644 --- a/drivers/net/qede/base/mcp_public.h +++ b/drivers/net/qede/base/mcp_public.h @@ -132,13 +132,28 @@ struct eth_stats { u64 r1023; /* 0x04 (Offset 0x20 ) RX 512 to 1023 byte frame counter*/ /* 0x05 (Offset 0x28 ) RX 1024 to 1518 byte frame counter */ u64 r1518; + union { + struct { /* bb */ /* 0x06 (Offset 0x30 ) RX 1519 to 1522 byte VLAN-tagged frame counter */ - u64 r1522; - u64 r2047; /* 0x07 (Offset 0x38 ) RX 1519 to 2047 byte frame counter*/ - u64 r4095; /* 0x08 (Offset 0x40 ) RX 2048 to 4095 byte frame counter*/ - u64 r9216; /* 0x09 (Offset 0x48 ) RX 4096 to 9216 byte frame counter*/ + u64 r1522; +/* 0x07 (Offset 0x38 ) RX 1519 to 2047 byte frame counter*/ + u64 r2047; +/* 0x08 (Offset 0x40 ) RX 2048 to 4095 byte frame counter*/ + u64 r4095; +/* 0x09 (Offset 0x48 ) RX 4096 to 9216 byte frame counter*/ + u64 r9216; /* 0x0A (Offset 0x50 ) RX 9217 to 16383 byte frame counter */ - u64 r16383; + u64 r16383; + } bb0; + struct { /* ah */ + u64 unused1; +/* 0x07 (Offset 0x38 ) RX 1519 to max byte frame counter*/ + u64 r1519_to_max; + u64 unused2; + u64 unused3; + u64 unused4; + } ah0; + } u0; u64 rfcs; /* 0x0F (Offset 0x58 ) RX FCS error frame counter*/ u64 rxcf; /* 0x10 (Offset 0x60 ) RX control frame counter*/ u64 rxpf; /* 0x11 (Offset 0x68 ) RX pause frame counter*/ @@ -156,19 +171,40 @@ struct eth_stats { u64 t1023; /* 0x44 (Offset 0xc8 ) TX 512 to 1023 byte frame counter*/ /* 0x45 (Offset 0xd0 ) TX 1024 to 1518 byte frame counter */ u64 t1518; + union { + struct { /* bb */ /* 0x47 (Offset 0xd8 ) TX 1519 to 2047 byte frame counter */ - u64 t2047; + u64 t2047; /* 0x48 (Offset 0xe0 ) TX 2048 to 4095 byte frame counter */ - u64 t4095; + u64 t4095; /* 0x49 (Offset 0xe8 ) TX 4096 to 9216 byte frame counter */ - u64 t9216; + u64 t9216; /* 0x4A (Offset 0xf0 ) TX 9217 to 16383 byte frame counter */ - u64 t16383; + u64 t16383; + } bb1; + struct { /* ah */ +/* 0x47 (Offset 0xd8 ) TX 1519 to max byte frame counter */ + u64 t1519_to_max; + u64 unused6; + u64 unused7; + u64 unused8; + } ah1; + } u1; u64 txpf; /* 0x50 (Offset 0xf8 ) TX pause frame counter */ u64 txpp; /* 0x51 (Offset 0x100) TX PFC frame counter */ /* 0x6C (Offset 0x108) Transmit Logical Type LLFC message counter */ - u64 tlpiec; - u64 tncl; /* 0x6E (Offset 0x110) Transmit Total Collision Counter */ + union { + struct { /* bb */ +/* 0x6C (Offset 0x108) Transmit Logical Type LLFC message counter */ + u64 tlpiec; +/* 0x6E (Offset 0x110) Transmit Total Collision Counter */ + u64 tncl; + } bb2; + struct { /* ah */ + u64 unused9; + u64 unused10; + } ah2; + } u2; u64 rbyte; /* 0x3d (Offset 0x118) RX byte counter */ u64 rxuca; /* 0x0c (Offset 0x120) RX UC frame counter */ u64 rxmca; /* 0x0d (Offset 0x128) RX MC frame counter */ diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index a0616a4..ac58ae5 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -125,143 +125,199 @@ struct rte_qede_xstats_name_off { }; static const struct rte_qede_xstats_name_off qede_xstats_strings[] = { - {"rx_unicast_bytes", offsetof(struct ecore_eth_stats, rx_ucast_bytes)}, + {"rx_unicast_bytes", + offsetof(struct ecore_eth_stats_common, rx_ucast_bytes)}, {"rx_multicast_bytes", - offsetof(struct ecore_eth_stats, rx_mcast_bytes)}, + offsetof(struct ecore_eth_stats_common, rx_mcast_bytes)}, {"rx_broadcast_bytes", - offsetof(struct ecore_eth_stats, rx_bcast_bytes)}, - {"rx_unicast_packets", offsetof(struct ecore_eth_stats, rx_ucast_pkts)}, + offsetof(struct ecore_eth_stats_common, rx_bcast_bytes)}, + {"rx_unicast_packets", + offsetof(struct ecore_eth_stats_common, rx_ucast_pkts)}, {"rx_multicast_packets", - offsetof(struct ecore_eth_stats, rx_mcast_pkts)}, + offsetof(struct ecore_eth_stats_common, rx_mcast_pkts)}, {"rx_broadcast_packets", - offsetof(struct ecore_eth_stats, rx_bcast_pkts)}, + offsetof(struct ecore_eth_stats_common, rx_bcast_pkts)}, - {"tx_unicast_bytes", offsetof(struct ecore_eth_stats, tx_ucast_bytes)}, + {"tx_unicast_bytes", + offsetof(struct ecore_eth_stats_common, tx_ucast_bytes)}, {"tx_multicast_bytes", - offsetof(struct ecore_eth_stats, tx_mcast_bytes)}, + offsetof(struct ecore_eth_stats_common, tx_mcast_bytes)}, {"tx_broadcast_bytes", - offsetof(struct ecore_eth_stats, tx_bcast_bytes)}, - {"tx_unicast_packets", offsetof(struct ecore_eth_stats, tx_ucast_pkts)}, + offsetof(struct ecore_eth_stats_common, tx_bcast_bytes)}, + {"tx_unicast_packets", + offsetof(struct ecore_eth_stats_common, tx_ucast_pkts)}, {"tx_multicast_packets", - offsetof(struct ecore_eth_stats, tx_mcast_pkts)}, + offsetof(struct ecore_eth_stats_common, tx_mcast_pkts)}, {"tx_broadcast_packets", - offsetof(struct ecore_eth_stats, tx_bcast_pkts)}, + offsetof(struct ecore_eth_stats_common, tx_bcast_pkts)}, {"rx_64_byte_packets", - offsetof(struct ecore_eth_stats, rx_64_byte_packets)}, + offsetof(struct ecore_eth_stats_common, rx_64_byte_packets)}, {"rx_65_to_127_byte_packets", - offsetof(struct ecore_eth_stats, rx_65_to_127_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + rx_65_to_127_byte_packets)}, {"rx_128_to_255_byte_packets", - offsetof(struct ecore_eth_stats, rx_128_to_255_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + rx_128_to_255_byte_packets)}, {"rx_256_to_511_byte_packets", - offsetof(struct ecore_eth_stats, rx_256_to_511_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + rx_256_to_511_byte_packets)}, {"rx_512_to_1023_byte_packets", - offsetof(struct ecore_eth_stats, rx_512_to_1023_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + rx_512_to_1023_byte_packets)}, {"rx_1024_to_1518_byte_packets", - offsetof(struct ecore_eth_stats, rx_1024_to_1518_byte_packets)}, - {"rx_1519_to_1522_byte_packets", - offsetof(struct ecore_eth_stats, rx_1519_to_1522_byte_packets)}, - {"rx_1519_to_2047_byte_packets", - offsetof(struct ecore_eth_stats, rx_1519_to_2047_byte_packets)}, - {"rx_2048_to_4095_byte_packets", - offsetof(struct ecore_eth_stats, rx_2048_to_4095_byte_packets)}, - {"rx_4096_to_9216_byte_packets", - offsetof(struct ecore_eth_stats, rx_4096_to_9216_byte_packets)}, - {"rx_9217_to_16383_byte_packets", - offsetof(struct ecore_eth_stats, - rx_9217_to_16383_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + rx_1024_to_1518_byte_packets)}, {"tx_64_byte_packets", - offsetof(struct ecore_eth_stats, tx_64_byte_packets)}, + offsetof(struct ecore_eth_stats_common, tx_64_byte_packets)}, {"tx_65_to_127_byte_packets", - offsetof(struct ecore_eth_stats, tx_65_to_127_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + tx_65_to_127_byte_packets)}, {"tx_128_to_255_byte_packets", - offsetof(struct ecore_eth_stats, tx_128_to_255_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + tx_128_to_255_byte_packets)}, {"tx_256_to_511_byte_packets", - offsetof(struct ecore_eth_stats, tx_256_to_511_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + tx_256_to_511_byte_packets)}, {"tx_512_to_1023_byte_packets", - offsetof(struct ecore_eth_stats, tx_512_to_1023_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + tx_512_to_1023_byte_packets)}, {"tx_1024_to_1518_byte_packets", - offsetof(struct ecore_eth_stats, tx_1024_to_1518_byte_packets)}, - {"trx_1519_to_1522_byte_packets", - offsetof(struct ecore_eth_stats, tx_1519_to_2047_byte_packets)}, - {"tx_2048_to_4095_byte_packets", - offsetof(struct ecore_eth_stats, tx_2048_to_4095_byte_packets)}, - {"tx_4096_to_9216_byte_packets", - offsetof(struct ecore_eth_stats, tx_4096_to_9216_byte_packets)}, - {"tx_9217_to_16383_byte_packets", - offsetof(struct ecore_eth_stats, - tx_9217_to_16383_byte_packets)}, + offsetof(struct ecore_eth_stats_common, + tx_1024_to_1518_byte_packets)}, {"rx_mac_crtl_frames", - offsetof(struct ecore_eth_stats, rx_mac_crtl_frames)}, + offsetof(struct ecore_eth_stats_common, rx_mac_crtl_frames)}, {"tx_mac_control_frames", - offsetof(struct ecore_eth_stats, tx_mac_ctrl_frames)}, - {"rx_pause_frames", offsetof(struct ecore_eth_stats, rx_pause_frames)}, - {"tx_pause_frames", offsetof(struct ecore_eth_stats, tx_pause_frames)}, + offsetof(struct ecore_eth_stats_common, tx_mac_ctrl_frames)}, + {"rx_pause_frames", + offsetof(struct ecore_eth_stats_common, rx_pause_frames)}, + {"tx_pause_frames", + offsetof(struct ecore_eth_stats_common, tx_pause_frames)}, {"rx_priority_flow_control_frames", - offsetof(struct ecore_eth_stats, rx_pfc_frames)}, + offsetof(struct ecore_eth_stats_common, rx_pfc_frames)}, {"tx_priority_flow_control_frames", - offsetof(struct ecore_eth_stats, tx_pfc_frames)}, + offsetof(struct ecore_eth_stats_common, tx_pfc_frames)}, - {"rx_crc_errors", offsetof(struct ecore_eth_stats, rx_crc_errors)}, - {"rx_align_errors", offsetof(struct ecore_eth_stats, rx_align_errors)}, + {"rx_crc_errors", + offsetof(struct ecore_eth_stats_common, rx_crc_errors)}, + {"rx_align_errors", + offsetof(struct ecore_eth_stats_common, rx_align_errors)}, {"rx_carrier_errors", - offsetof(struct ecore_eth_stats, rx_carrier_errors)}, + offsetof(struct ecore_eth_stats_common, rx_carrier_errors)}, {"rx_oversize_packet_errors", - offsetof(struct ecore_eth_stats, rx_oversize_packets)}, - {"rx_jabber_errors", offsetof(struct ecore_eth_stats, rx_jabbers)}, + offsetof(struct ecore_eth_stats_common, rx_oversize_packets)}, + {"rx_jabber_errors", + offsetof(struct ecore_eth_stats_common, rx_jabbers)}, {"rx_undersize_packet_errors", - offsetof(struct ecore_eth_stats, rx_undersize_packets)}, - {"rx_fragments", offsetof(struct ecore_eth_stats, rx_fragments)}, + offsetof(struct ecore_eth_stats_common, rx_undersize_packets)}, + {"rx_fragments", offsetof(struct ecore_eth_stats_common, rx_fragments)}, {"rx_host_buffer_not_available", - offsetof(struct ecore_eth_stats, no_buff_discards)}, + offsetof(struct ecore_eth_stats_common, no_buff_discards)}, /* Number of packets discarded because they are bigger than MTU */ {"rx_packet_too_big_discards", - offsetof(struct ecore_eth_stats, packet_too_big_discard)}, + offsetof(struct ecore_eth_stats_common, + packet_too_big_discard)}, {"rx_ttl_zero_discards", - offsetof(struct ecore_eth_stats, ttl0_discard)}, + offsetof(struct ecore_eth_stats_common, ttl0_discard)}, {"rx_multi_function_tag_filter_discards", - offsetof(struct ecore_eth_stats, mftag_filter_discards)}, + offsetof(struct ecore_eth_stats_common, mftag_filter_discards)}, {"rx_mac_filter_discards", - offsetof(struct ecore_eth_stats, mac_filter_discards)}, + offsetof(struct ecore_eth_stats_common, mac_filter_discards)}, {"rx_hw_buffer_truncates", - offsetof(struct ecore_eth_stats, brb_truncates)}, + offsetof(struct ecore_eth_stats_common, brb_truncates)}, {"rx_hw_buffer_discards", - offsetof(struct ecore_eth_stats, brb_discards)}, - {"tx_lpi_entry_count", - offsetof(struct ecore_eth_stats, tx_lpi_entry_count)}, - {"tx_total_collisions", - offsetof(struct ecore_eth_stats, tx_total_collisions)}, + offsetof(struct ecore_eth_stats_common, brb_discards)}, {"tx_error_drop_packets", - offsetof(struct ecore_eth_stats, tx_err_drop_pkts)}, + offsetof(struct ecore_eth_stats_common, tx_err_drop_pkts)}, - {"rx_mac_bytes", offsetof(struct ecore_eth_stats, rx_mac_bytes)}, + {"rx_mac_bytes", offsetof(struct ecore_eth_stats_common, rx_mac_bytes)}, {"rx_mac_unicast_packets", - offsetof(struct ecore_eth_stats, rx_mac_uc_packets)}, + offsetof(struct ecore_eth_stats_common, rx_mac_uc_packets)}, {"rx_mac_multicast_packets", - offsetof(struct ecore_eth_stats, rx_mac_mc_packets)}, + offsetof(struct ecore_eth_stats_common, rx_mac_mc_packets)}, {"rx_mac_broadcast_packets", - offsetof(struct ecore_eth_stats, rx_mac_bc_packets)}, + offsetof(struct ecore_eth_stats_common, rx_mac_bc_packets)}, {"rx_mac_frames_ok", - offsetof(struct ecore_eth_stats, rx_mac_frames_ok)}, - {"tx_mac_bytes", offsetof(struct ecore_eth_stats, tx_mac_bytes)}, + offsetof(struct ecore_eth_stats_common, rx_mac_frames_ok)}, + {"tx_mac_bytes", offsetof(struct ecore_eth_stats_common, tx_mac_bytes)}, {"tx_mac_unicast_packets", - offsetof(struct ecore_eth_stats, tx_mac_uc_packets)}, + offsetof(struct ecore_eth_stats_common, tx_mac_uc_packets)}, {"tx_mac_multicast_packets", - offsetof(struct ecore_eth_stats, tx_mac_mc_packets)}, + offsetof(struct ecore_eth_stats_common, tx_mac_mc_packets)}, {"tx_mac_broadcast_packets", - offsetof(struct ecore_eth_stats, tx_mac_bc_packets)}, + offsetof(struct ecore_eth_stats_common, tx_mac_bc_packets)}, {"lro_coalesced_packets", - offsetof(struct ecore_eth_stats, tpa_coalesced_pkts)}, + offsetof(struct ecore_eth_stats_common, tpa_coalesced_pkts)}, {"lro_coalesced_events", - offsetof(struct ecore_eth_stats, tpa_coalesced_events)}, + offsetof(struct ecore_eth_stats_common, tpa_coalesced_events)}, {"lro_aborts_num", - offsetof(struct ecore_eth_stats, tpa_aborts_num)}, + offsetof(struct ecore_eth_stats_common, tpa_aborts_num)}, {"lro_not_coalesced_packets", - offsetof(struct ecore_eth_stats, tpa_not_coalesced_pkts)}, + offsetof(struct ecore_eth_stats_common, + tpa_not_coalesced_pkts)}, {"lro_coalesced_bytes", - offsetof(struct ecore_eth_stats, tpa_coalesced_bytes)}, + offsetof(struct ecore_eth_stats_common, + tpa_coalesced_bytes)}, +}; + +static const struct rte_qede_xstats_name_off qede_bb_xstats_strings[] = { + {"rx_1519_to_1522_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + rx_1519_to_1522_byte_packets)}, + {"rx_1519_to_2047_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + rx_1519_to_2047_byte_packets)}, + {"rx_2048_to_4095_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + rx_2048_to_4095_byte_packets)}, + {"rx_4096_to_9216_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + rx_4096_to_9216_byte_packets)}, + {"rx_9217_to_16383_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + rx_9217_to_16383_byte_packets)}, + + {"tx_1519_to_2047_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + tx_1519_to_2047_byte_packets)}, + {"tx_2048_to_4095_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + tx_2048_to_4095_byte_packets)}, + {"tx_4096_to_9216_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + tx_4096_to_9216_byte_packets)}, + {"tx_9217_to_16383_byte_packets", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, + tx_9217_to_16383_byte_packets)}, + + {"tx_lpi_entry_count", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, tx_lpi_entry_count)}, + {"tx_total_collisions", + offsetof(struct ecore_eth_stats, bb) + + offsetof(struct ecore_eth_stats_bb, tx_total_collisions)}, +}; + +static const struct rte_qede_xstats_name_off qede_ah_xstats_strings[] = { + {"rx_1519_to_max_byte_packets", + offsetof(struct ecore_eth_stats, ah) + + offsetof(struct ecore_eth_stats_ah, + rx_1519_to_max_byte_packets)}, + {"tx_1519_to_max_byte_packets", + offsetof(struct ecore_eth_stats, ah) + + offsetof(struct ecore_eth_stats_ah, + tx_1519_to_max_byte_packets)}, }; static const struct rte_qede_xstats_name_off qede_rxq_xstats_strings[] = { @@ -1416,32 +1472,33 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) ecore_get_vport_stats(edev, &stats); /* RX Stats */ - eth_stats->ipackets = stats.rx_ucast_pkts + - stats.rx_mcast_pkts + stats.rx_bcast_pkts; + eth_stats->ipackets = stats.common.rx_ucast_pkts + + stats.common.rx_mcast_pkts + stats.common.rx_bcast_pkts; - eth_stats->ibytes = stats.rx_ucast_bytes + - stats.rx_mcast_bytes + stats.rx_bcast_bytes; + eth_stats->ibytes = stats.common.rx_ucast_bytes + + stats.common.rx_mcast_bytes + stats.common.rx_bcast_bytes; - eth_stats->ierrors = stats.rx_crc_errors + - stats.rx_align_errors + - stats.rx_carrier_errors + - stats.rx_oversize_packets + - stats.rx_jabbers + stats.rx_undersize_packets; + eth_stats->ierrors = stats.common.rx_crc_errors + + stats.common.rx_align_errors + + stats.common.rx_carrier_errors + + stats.common.rx_oversize_packets + + stats.common.rx_jabbers + stats.common.rx_undersize_packets; - eth_stats->rx_nombuf = stats.no_buff_discards; + eth_stats->rx_nombuf = stats.common.no_buff_discards; - eth_stats->imissed = stats.mftag_filter_discards + - stats.mac_filter_discards + - stats.no_buff_discards + stats.brb_truncates + stats.brb_discards; + eth_stats->imissed = stats.common.mftag_filter_discards + + stats.common.mac_filter_discards + + stats.common.no_buff_discards + + stats.common.brb_truncates + stats.common.brb_discards; /* TX stats */ - eth_stats->opackets = stats.tx_ucast_pkts + - stats.tx_mcast_pkts + stats.tx_bcast_pkts; + eth_stats->opackets = stats.common.tx_ucast_pkts + + stats.common.tx_mcast_pkts + stats.common.tx_bcast_pkts; - eth_stats->obytes = stats.tx_ucast_bytes + - stats.tx_mcast_bytes + stats.tx_bcast_bytes; + eth_stats->obytes = stats.common.tx_ucast_bytes + + stats.common.tx_mcast_bytes + stats.common.tx_bcast_bytes; - eth_stats->oerrors = stats.tx_err_drop_pkts; + eth_stats->oerrors = stats.common.tx_err_drop_pkts; /* Queue stats */ rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev), @@ -1490,10 +1547,18 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) static unsigned qede_get_xstats_count(struct qede_dev *qdev) { - return RTE_DIM(qede_xstats_strings) + - (RTE_DIM(qede_rxq_xstats_strings) * - RTE_MIN(QEDE_RSS_COUNT(qdev), - RTE_ETHDEV_QUEUE_STAT_CNTRS)); + if (ECORE_IS_BB(&qdev->edev)) + return RTE_DIM(qede_xstats_strings) + + RTE_DIM(qede_bb_xstats_strings) + + (RTE_DIM(qede_rxq_xstats_strings) * + RTE_MIN(QEDE_RSS_COUNT(qdev), + RTE_ETHDEV_QUEUE_STAT_CNTRS)); + else + return RTE_DIM(qede_xstats_strings) + + RTE_DIM(qede_ah_xstats_strings) + + (RTE_DIM(qede_rxq_xstats_strings) * + RTE_MIN(QEDE_RSS_COUNT(qdev), + RTE_ETHDEV_QUEUE_STAT_CNTRS)); } static int @@ -1502,6 +1567,7 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) __rte_unused unsigned int limit) { struct qede_dev *qdev = dev->data->dev_private; + struct ecore_dev *edev = &qdev->edev; const unsigned int stat_cnt = qede_get_xstats_count(qdev); unsigned int i, qid, stat_idx = 0; unsigned int rxq_stat_cntrs; @@ -1515,6 +1581,24 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) stat_idx++; } + if (ECORE_IS_BB(edev)) { + for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) { + snprintf(xstats_names[stat_idx].name, + sizeof(xstats_names[stat_idx].name), + "%s", + qede_bb_xstats_strings[i].name); + stat_idx++; + } + } else { + for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) { + snprintf(xstats_names[stat_idx].name, + sizeof(xstats_names[stat_idx].name), + "%s", + qede_ah_xstats_strings[i].name); + stat_idx++; + } + } + rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev), RTE_ETHDEV_QUEUE_STAT_CNTRS); for (qid = 0; qid < rxq_stat_cntrs; qid++) { @@ -1555,6 +1639,24 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) stat_idx++; } + if (ECORE_IS_BB(edev)) { + for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) { + xstats[stat_idx].value = + *(uint64_t *)(((char *)&stats) + + qede_bb_xstats_strings[i].offset); + xstats[stat_idx].id = stat_idx; + stat_idx++; + } + } else { + for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) { + xstats[stat_idx].value = + *(uint64_t *)(((char *)&stats) + + qede_ah_xstats_strings[i].offset); + xstats[stat_idx].id = stat_idx; + stat_idx++; + } + } + rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev), RTE_ETHDEV_QUEUE_STAT_CNTRS); for (qid = 0; qid < rxq_stat_cntrs; qid++) {