From patchwork Mon Jul 24 10:10:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 27136 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 DEEAE7CD6; Mon, 24 Jul 2017 12:10:39 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0040.outbound.protection.outlook.com [104.47.38.40]) by dpdk.org (Postfix) with ESMTP id AF3677CD1 for ; Mon, 24 Jul 2017 12:10:35 +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=j8d4gvCi6dV/N4EI7Tj3oZw6sw2suws6VUFWvX4u+2qOBVpvomLuIPFVgqpBVPBJG9HF6GClHC0e8uno9mBvvQnEygPuZBpZFSz09Q6Ql4DLSuU/rDqmGeGVJNDF5bGP4s+CdZ4KZkNmbwPG6IcXxkDKXl1aVy/ZNPLednImH0s= Received: from DM5PR07CA0047.namprd07.prod.outlook.com (10.168.109.33) by SN1PR07MB2190.namprd07.prod.outlook.com (10.164.47.24) 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:10:33 +0000 Received: from BY2FFO11FD023.protection.gbl (2a01:111:f400:7c0c::153) by DM5PR07CA0047.outlook.office365.com (2603:10b6:3:16::33) 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:10:33 +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 BY2FFO11FD023.mail.protection.outlook.com (10.1.15.212) 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:10:32 +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:10:31 -0700 Received: from avluser05.qlc.com (avluser05.qlc.com [10.1.113.115]) by avsmtprelay01.qlc.com (Postfix) with ESMTP id 121338BF705FE; Mon, 24 Jul 2017 03:10:31 -0700 (PDT) Received: (from rmody@localhost) by avluser05.qlc.com (8.14.4/8.14.4/Submit) id v6OAAVSH021673; Mon, 24 Jul 2017 03:10:31 -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:10:11 -0700 Message-ID: <1500891015-21625-3-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1500891015-21625-1-git-send-email-rasesh.mody@cavium.com> References: <1500891015-21625-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)(39450400003)(39400400002)(39850400002)(39410400002)(2980300002)(428002)(189002)(199003)(36756003)(48376002)(50466002)(8676002)(8936002)(50226002)(356003)(69596002)(87636003)(38730400002)(575784001)(107886003)(110136004)(86362001)(53946003)(478600001)(54906002)(5003940100001)(626005)(6666003)(2950100002)(6916009)(305945005)(50986999)(76176999)(189998001)(33646002)(101416001)(4720700003)(47776003)(81166006)(81156014)(2906002)(4326008)(5660300001)(72206003)(105586002)(2351001)(42186005)(106466001)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB2190; 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; BY2FFO11FD023; 1:cSo/8w4eQmhy68rtEB6Aanug/BstkhF1tqAdUPdiXGLaQsMsec3rWM5O++eMrT5eqoE67Uh1/5QhXBgGqC6LW1EEAP6uZZ6gd+xVxQRFzBYTUPXMqS5EeEg5RbO4nUUaWr/1IattwNKLpi8eVhaDplCw7bc9YZLFSGKB7S4StMJo9xu7w1pm36i2nzxzGHa3D162jucNjcyFQgPHaX+LL1CFFc6ZHaiof/qpjUwqKktyoKZyGCH/sBOrMLczIOoynhKs7yQ74CUX061z76maIRVilzLXhIyckqj/o7i+5mWaCId2v2HMRjVPWIdhRtv5uKgPll2Jdj6gk2K5WTGwq1K4pTKhKKvFtP9+U6iwM2xfvYwsQ5nm4ZX2r4KOZztReLdYlaklAjAb0CRj8GHe+4VoIqH1bJt1/0r/1cD3QMO3JDKRx6RIy+rJQGZChUI/rsfQZc5S9Jf5yLUB36EicgFpEz7ZgLMa6q4mmUNPPUqe0do9mQK9Y2DyJE5VUajZC4d1f059MnEzxynucf0D4FQmzX0CM/Q7UV5RztHC7vPeYN+PTTPLTPOtdZcbXMHfrcxOvH4C9E7hpKKmvCjH03Wc2iOWh10smM5uxMVu0Y6v8UVoswO09PYMv4hyglnOc+alcxX81QFCpZQTmi51fVkEtVNflFTPKQ2Oc3EN1S+8qMZ2EK4vez3l8tvhODxy/2G9cIuOBpvnPdOGtASr7K5s6F75tPmp6uFoCmHxsOLr+kuJxUKZcHuhMSafpxSonQaG+yUIxE4yurdAdlb/i0RLAY7Imt1/F7qlbmUZG3cBzDq5NGCpwy9IbxZgMJb0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfa01f0a-e74a-44bf-2015-08d4d27c3886 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:SN1PR07MB2190; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 3:cwePPSv1xiyagczX5fLd3kCmv40fPPx2x8S6Dr62uT6/YZkELgSGenAutHH4EThXhcsgIXfqsKd40GTwYMgDcPMGvwTvlOCbLzjEyOjZ736CrWarNVE/m9DZW8zs+EYtc+HyaQLFTeHqWJi4KIPho5fNr73w2ewwd3eALwX+Gzgfdqc1+LtwF43ddK8Y3vNmGvnAP4Jn3jGXYTHF1KnngmuFTlSSE9PplhdMZPzX2N98rVdO4SzgMQ4pzjqVdAnz7Zfpx55HzDdCpBD4nMXYKWqWkPHW+bgaQuQWy8l8fR+UVzwtHI1G8bdlEwUV1HbDDpGFePazMCgOZfFRnBJTdoHJJo1dso0gDMwwC0pbpd/exFDp4uxs4KEGn0B4we2lM+g3lX6X4rssoevf4HC0FuUmZjfuGBOPfO527eJ46nhPwGTrnUzSdEcYivkutXSCLS6G4tNm3wl4OO74eDS+evdrv5U9woIVR1/AWUJYTIldzioRuLRDJdWB2v2D5B1bomz3MDw3ZWCBrlfrqiY2FuTIyf12LybWS3ih4BKQ7aadItBD2xflXyeLAXA9BkKoA3hJwEczgp0JDuiEHcdcJAU/q4DBUsZnCft+TS2KNDbUoxmZGIpPNHle6MT5tgktQWvEFLqydeIBPo+KpXY4tMVb8gr0zTrO3dimGhDJ5aC2mipxWv+4a/3Z+wx/1U3KL9Nf21K6OchYzKtPGfLz4iGOYRbgNYq3Gd4PhT0Z29TcTke1VdxeoG4ltSlCh5AvF5vYlMh8fqwIk7o9mptLWmgFUvUlxSFsJ8yGY72Jt8Rxa5R3UJj2F1eR+9RPzD6XagL5PphMd8UVpajOiMBv5CXP5Hwgk8Mo6TRYDhZAe2IMd+auBGm0rZmjavecn7DIDxMsN6mlg30dxHi54zYrt6c688PHyhEoG3AJaV9lcu/uHiYGbuZkiNM1XjSJULgd X-MS-TrafficTypeDiagnostic: SN1PR07MB2190: X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 25:FOG8RJfRSBMdwjo24yL3ugTj5nH6X5W8MlMw7yNRDu5aaI8UdRq2bzdDOvqdkgjJ86NWp4RcJtddVNC0KOV/BEjVU+YiB73RJ54QWkVA7N325m+T5xw4n/y6+pxcRgGmwYMlsE4bTQpWVV3hcuya9bCMrlKmqyQSmNQluXjGgA3pEzvV1YZYmhChsGgrZJ31BFtuJ+MEEeWYZ+RNqfzc20FJxQOyjEBh0tYdpTxp2+zq1pG8rKhzKbXMpKh1JPy4lfIGKSQu54vWPCbq+Ur7YJzEMsuyT5RCRQ39LPCH1FYCfL7GUbC/rVsoxmZRRhBckl+LY5AjvQPwCQ0Rr7gpZ7DQR8Wd+Q3mUODTuJDlklDDO6opl9twpi6Q1UToBjSVU9exRCOxIF45Jokz1inlJeJpsf8cdRQC1kbcOd0DvGgBw2Znk+VWnQs0YNR7IvZyAJ+50yiaBdFZjxlnvraRH+ieOGm/Q+EDtgQo11u99v4aX4nHT4R71qELnftYrz4EnBPbvGyZB6cVFoOKj33rbJ4MAWW67acKk9s6FFmGQIF6hUkPZ0ddZ4GONUG2irBEJTdUptwcHMVeyRJV1fvGiB6/Ks2pkpbwIiknnY4a3Hm6Ufl3xgiLE7xtay3miQdmoE/KPYLU2hIHaRdGqBw0LktkR6DQCZDanDIra9fBAzEucDb0J/lVSOlQpq9VAOkNzTe/aLhffJ+iEjYP03AMBjUm31t+cvtZhiW8IugtfeI22oaL7WHTFVSNTJ80C5Rdx1Yf+M0PJJSR97FOAz6wjteJx8odkwImO1KdOOhhZ8j4507nNR0UgMu9Enn7hn114P8/PxVVQqbB8AW21gBN4sP2Kg6ISOrp3ZsmZOMUTyGisSmBZZ2l6R2c0T1NEvDrF3ClRVoogS8tYDO/wxLNDWtcv3Am+kz3Ocw3O6zC99E= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 31:BZQ4D1AI+lZ1p7Z7i79hNiJRktgNYNvOpXuOaU9zmPuJ9XKL53Ek6VQ0Np96rUu3xsvvsvzb59pQhQX/GohacbgCoQvCRZpa3RYKISEJR0iLKNayxDGGPhZFndKO77X3BI+BWSL/OXaBaDSONYbQwJtVzay3sV3hm8bZNCOXMjCO7ckk+zyzBrBZDe0JPj7Qkjg6OrlVnyqBduCCwqgdd0HUQGcAfg51CCvVvq5AylDYjHIctnt4an4qpknDAgCJboqGrdx5+VY7BjYZYk5VhKMGMRK/j8Pww2IbJ0XvRW6RDN/PnqHFJU5Sb31w1HeXS90GzEmPO7cMHPNjApunqc7mPG/UrZC+4100e2lP/AvhUVfGZUk0znDXWaZRYj0rZUjMSauovSRaiirvfXBs2gaGfeenWlYmvqNHQAy6tpsjyC3H+ZyE6aIQ4xVAVeFGxAt2ygxtD+Du9Xugh+KMzDRRntI68OX6GZIKDmATYSj2J2+YnzgB2PdaJZlCAyDGCt5QeXbPzwCm5pG0+vYk4HcIFJMwZOsW1ltOceVF2dHuC8M/SnpsBv5ByQ9VEcQw+FeQEiIGAuUd7CAwFrS8WwyMi+28fx1XXy1vGPnpOgmi4a4vdR5hxv4Rz5L17DX6SPsbD7x/bKFG2uK0iEMzzLfYbPUGcpzSf++Cr/MuM9EkBZrFj+Q28x6KoJBqPufZ X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 20:3dRTm7b95yI6f6SYHDBUtVTypdmMAlVnPp7I9NucKXMOD4dy+Gv4g3afanu8EtqqPKCyzbC91uH7TZqIurcCw9/dliHUGSZD2iuF6vylkYs0XOFQ05tPbazyWMcxPi6ub/+ICpnN3+Pujjf3Mzd/sXEqbHRhlhaVq6nX1XopJy6U1dqabvNw9YkcbE1OpSJd9/BSb28jblcgQfPrQ77R8YhOzgPTky+dKUWOdj7KE9qlscQFSIdsuIwpptUtwRkL0SmTJd0KB7WfbGw8sAkfzZBvl5CEEBtsYb2cHLfXFEifVmGNNPYDQ3De2ikds4DvbLICZvefD86kD4RWWH5gFwctpUdbRuZvoMiInoFq3Yrf4Rl2n8deGeppJYgjXEXx/aCYmro7IKr+pd/dqUOc/kEQaX8uNAi5bV+z4RObbxvJ4UIPOQDbPuRNh657QtMfRl2yg0aAW/glJeXNzz58Fl0gZIy4vGpUDZLK/gM5nvdYJbVY0Qz7ACJ6FpwObIYL 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:SN1PR07MB2190; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1PR07MB2190; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB2190; 4:xDwL+ke6xZUMXNT5uDnKkHQeg49YhnYRcz7e5D6nHj?= atX7T7tvMn6nNR+Ahzv+8nG4oyAgVJKl0wVPtiaboswfHtdqxyaFL04btXd4ot1qNDl3EtIiNVJ+MsTZbewzf8HTTfWjlgJrZ5EbtuBw3oLwn0E1vESWnrlJGIOgIWJpY1822xgtPsUdCYb8dv52RxuXA/99HpTbiGpnt71YUannzc2iCvmevkYvqi/KYoD+/HlbDTR5zRsb8cpfj+nlsCzL7xH+FR/M7sVQGNyebQMT9/0o3FbZTfv01faTmeoDo8QV6OJpsBVJ3cXI8cenkP5DRV/5hOh947QSny3mkz9PKs6CPctFoshN4hRaXID7Py2K7xfUEaOw1vkAxD/2DsUEV5KeEZ0eHn761as0gzdHi+KkYNcd9elaHCvpbbKjEGnlrhESjhHkmai4XdeQJkLUMA61ret0PsDiTMaFppaSrLxjSsJ3WbVqB7cKWN5gsfx8uLjylhUbXK78NMv2Y+42mOeqGKNvDnUZQX78pcsNY5P7TE8xOk6H1G2b9sjoCEezIjauIJnLis1qA2pRC6NaAJ0QwQvvrcyBWvXrLtF6hZubcn6bpsuRc/10HBWZsoFFfs9rseU0FZiuj2sgJB05HsHh84uWvVOnEKMs5nmbEfapviWCnPil6+Ne81gtgpgAyVaiXjPteAFoBlN1JQxaf6vFv21e6iBNpjgNNf0QrczFyZtmXnIeBo7zllgNTrDisojgmSiu/rt18lO3638zqCeNw+92VxchZ9Em/vtP0PQ/2yxF37JkLB9Prf4hgQ50Ig/DP/Op/rQ3UOueeMqmiSdcXL1zZxNudl1Kix7Ue7AJH7AQoqH1FZQOGo/AKH2YoJYRXxEvs+37mY10PtyIrk6qSqLXx06dMTfbvsEeR4RiayuWCWWA3owjvcM+gXvMzz4bgzjIBl/pjnvVB37la0EzJQ8O/EXL3M/+SrMnG1LgI1GlZhq+7vkciTsR+cCLafDicHeqrzMoI5u3Anz5r+xV44SJUEKFYMN+QtNlq/Yih7bjDLdOvw7ZdrsS5pW/46kYlhqyDD0OQSNZ1g2OSGpcJBSvpCp6lXUMF9gAsgXYeK0m0faNfU1LnN/MoNdrZVrEXVyv8KfPCVDwLl9EEOseov57brG7gkL/wZdR8zoFAVOhcu1xuEac4XRVQ= X-Forefront-PRVS: 0378F1E47A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB2190; 23:TJXwj57WD1S8dhv3cmZrVtK/WcBtlqFjgnHviW+lW?= EnALbgZptDVlLUvBSkLV8dB7lqUCcmPWOLsY793a8DiXzLgb39kndEj22R07z9E/ozUL1uI9mDfv4pIOImJ+aspvrZtCr+3q8/SwqaYccoZb2U4FMIgxFgTct+LJtwo9DQpRIuy96u65PnsX07Bwlx456p23b8vM7HHVox6+Alq0wJuay/++dXJcM4S8SXVVrD6drrKGi+ytmDIXXuwLtRELLKqQI/ybCSYdfBK6Ak9gFa6PzrHyXBiVBzJrC97/nB1ECE3lW47Jz4P8kC91T6IOVNKhR8vK5FqJ6czki170fhuopKNDZOUnM+54Yf2C3niYiEOiKGI9huIxG4ECA/m1I2ej+tAXh+inYg35kh3PXnIT6SZvI5rX3OZSucxW/W5ORbk7BW+C0oYn+i+U/IMciiArwBBr1+Jbc6f2zEuxdi1mGola5fc4kErkuAnM32/nNbyEFkr+MeQg5OqJ62Ig8VWaiFVVlixT6gXjLXvAcCOeA+dTXwsxtffyTzPyf4LTh8Zfj6DA4hbPS1ILCk0bZhGOpHYH8px7q/g3eUdoNyT+8CKXy/I3BMfBQBpEdbG8DiP5HJE6ueWp5oBZ6RaVXCwt/REkG0mw2pUxI9U+E0UG6Q+hQDqJ4dpI6nnlApaKmSlpt3u/4IRUJddMylNWaQDerYgrFxuUlj6+0upojUzz1mljyjQp+8GRa/vqLUz3olxynjnAdtKREdp70d7ncYsjTPL05fCZPVDU3IHQP6vNza/qSJLDW4dc9LQdMWNYZm8ywZfOUZvpvxzHeCU0Bizn6Lfudfkf7rNx6Jg7a+FINqLoV8nevGFbf+11xNuB804KBC6Mk6OgbLgsTRPvSmGEWwCmEGhFmw2cS2M5X1eDq3k71plbgsejwwuDe4+dSvqfmD+HI9h8qpC3dWXHYBZdg01au6aeNMS3REZnhPcgPfkYAbW6G1nGixmNJkHwj7TH13060wHDzwDfn0KbyxwFt+fAQHu84W9WO8W8UrKfZ6l/U9yzU+YWNzB/lnI3V+T2KGFg+sJHuFhNdjmeVLI3nnoOwBhQ9kALo5345COSKqXQAEjG4RODdP2tAAhz32idZzTg/KsO+n4SZxMgSwPw8LIMyI5YLP6v10+t5xU+ZLJI4JjRMJufgLcprP8xiMyBZgJBny0tbxnJjua8kztGOboA1jtTviLfXb3nV8D2sUHB/VfPVcywR1a3vo= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB2190; 6:g+KDpU6tYJbncN5Rt55A1IGObeEg7qxleDZlxjRH8M?= iLcwEIe+O2f7ufs6mSz+zqOYrN5Sn3SeDh/ccgYsI+eRDpTNV8I58w/6q2PznqRXrOCMUIiqtMWVX3Z0QEWk/iogzLcrEYBQcU8XMjMaqaxrZ/j6oXPLiRZ/1zKlwwE162strD9QKLPh0n0908IcUmvR2jZNksu6P5GSePDr8lW7sOZl0PhnLglq0/YyepQReMPNepjGs7NUp9Ijmgeb+nOoUZy2ffyBRqvTAEYiAITEKJiBAV++TlaQ/aOyywvg032RVNSXYjIK2SY/B5Gxc0v8TYOZx/WxWtna6ilsk6zkz7fHKSNPS0pXrBWt930GqsmFKKlLjmrFUO3Q/88H9R8xxDJPiALfDViSHdCUj2YNDzzOHeKxAmID4m/oocsSlQ7vja2O8xfNCbY7VFTdLtiehobavf7Mf0h6Bmb7yxgxGu6U1G8WetZ5c4g5cjHGWODBrBl8kXtrRKH8Rf1VLjwHsypNFj9w5lGMT7B41jN+q32/KMgdl0OHlOYfDTHgA9qTiPcinrincT4Ua9n6fHTv4gzDSJK6w/wHs0R0naEmSn94dlgXr4GNldrvCpYkIEUwsImiUANld57qBNb6vJSnK3IaP3LGUS4U7AD47ALW0IiFSuY20jmTMkJYf9s10KcRxo7JcptzoKAQxkR/U8DS3FmZNN4BTwd9dTZZTXjvTUSuRuUYySnuEzQvfV9u8y5aiISp+cAvHR3pwdeUkiAtG6vazNfeBv0w5sxf45x+eMsSDzx3iZ226vvR4UTMvvjhhFreX8DgD5ZX4ga5rI+Q55YfGxi/2s8Jtfk3tT5GfJ7e+osCYS4ki4RwX+1KV6I1XdOzIqoihVd54WXmssP30RUMD8luxV8ZIB/6ubVdKZr4ctfceBHx72edvmSqlzgmeQKln3Fe+W0RImWVNik8Vv8kaNrft4WBqvjaglGu5CGFewcjk69wd2slolSjg= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 5:cquXhYgw49YGmFeZOGxqBWA1R3EK0fsPSzJg4ta8PihSdPr+4wLjDKwe7yYUX7ayxfgYY/hktp8v3ox6pcbSHyafny0BYAcpfUjCT+QuAIlZ0LRhoi43+Te97kQvhQ/KyoH3WrgabRNiAvI1rYr6rlsJhcNriBIjXTS8Ar0H1BbFU1PlPGiPfrTqkBACf1+4j5j9KsP3QxB1ZFQyZRrs/Gd4ouKSmhw3s7rFtJ2ZObso/d9pLhnGBnQNJfUyz44KKPKuxDFY8fJz3mzvuTU/sT23QVX+ie1ifsfLwfGkKuUAN77PgC56wJF/voSM8oUzShIcCxLk83HwD99R6rrjOOO0NNonwuYfABuGFI185w2IfYwnk+ocMoRGm5z9Lx2aAeyDilpzy6uYnCaoB+qKEce8RpLkD6KTvc0A8afqxDaRqOSwifK4QPcjSW9TFUv5HOUxArsBquZp0r9KU/mNFk7tulHbJL0kIjKtIYREpZ4mupCe6n0Be8pzbGovJ4Gk; 24:DtkU9Rf4qiyxbJrWPfA2X0BWlWJdirM0yWXriMyViU1H8YWuzfIh9SuWHrq+OjFhSjW/eBIB9P80cSOWmLoG+9HsVqfvldSKDUZK00Cjcp4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2190; 7:a/pLazTLBaog6k0hrGnGMPoGtq1k+PTsdRRjfadrjWoKzfRrzEjVGA2CDHhcE4zaX6eNahUYU0yi6QQ2a8OTVC1sOKHLUBAT/gjA3NSasQRdLzAwzm3p5MkE8mwNfqvTak/IGYdHNS5ifRV5FcBU4/b0rdRFLwVY8cLZPjyHR/9SJqv4Zztee1IAcnujE3t+T5CBe095OAhHWx1PtJkO2yJGXG6lxzGJbpSluVulq9Txuv1KOWdlKpX1+ceY0KDbcw0VwVOK7cT5zrOpO2Atcrnml1NC1aM+ivllRpzQnvZIyc8lYa5RMkbBiSVv87P+/AVAdovAHU48SkAQd4yeV7LOpEK6enBpy1RzisLMd3L3w9pHq9IA62euw8iSP4rJQdZv8Nja1etv7UQZMbDfeJk4a9ZDKHT0+LjV+wiVCFJ9pU+laqvQ0sOMkJCiR3Ls4GSicX7E3+ToJb28cAi56L0fAArQ7obTZcPNX+SksyOMFOVWa/B/5thuN8S07kqEq8dx9Ifbcnnjnoq4MGXI1Oz7y54aRxvjsQafn72svi5GsEB0i2annGFCvvwCV6iWGoGvssBH4Ix4mr0TVjqOc5cnSyJ/1lKJ6jTSTzrsk2VxCXqNAH0fwK0B4ab15aEMR6yW3YB0AP3Utt79EfAbrZV+HGoYy6Uop0+OiSbzG7GMKqYy5Kw9GJeZsKhXBrNVgpGQVx0HEHicTYJQc/0WdNXwKsjrF2nfMNioDjN3H33ITCe6jbmc5JXIWArIL/lUfsdKVioiUOOPqLFmVxIzao/hGPJr9Gj26AFMB12uo/0= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2017 10:10:32.9990 (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: SN1PR07MB2190 Subject: [dpdk-dev] [INTERNAL REVIEW 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++) {