From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0049.outbound.protection.outlook.com [104.47.38.49]) by dpdk.org (Postfix) with ESMTP id D69599B47 for ; Fri, 26 May 2017 08:51:57 +0200 (CEST) Received: from DM2PR03CA0024.namprd03.prod.outlook.com (2a01:111:e400:2428::23) by DM2PR0301MB0909.namprd03.prod.outlook.com (2a01:111:e400:501c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Fri, 26 May 2017 06:51:56 +0000 Received: from BL2FFO11FD039.protection.gbl (2a01:111:f400:7c09::123) by DM2PR03CA0024.outlook.office365.com (2a01:111:e400:2428::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9 via Frontend Transport; Fri, 26 May 2017 06:51:56 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD039.mail.protection.outlook.com (10.173.161.135) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1075.5 via Frontend Transport; Fri, 26 May 2017 06:51:55 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v4Q6pQMe014894; Thu, 25 May 2017 23:51:53 -0700 From: Hemant Agrawal To: CC: , Date: Fri, 26 May 2017 12:21:20 +0530 Message-ID: <1495781485-2236-16-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1495781485-2236-1-git-send-email-hemant.agrawal@nxp.com> References: <1495445969-29199-1-git-send-email-hemant.agrawal@nxp.com> <1495781485-2236-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131402551161313650; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39840400002)(39450400003)(39850400002)(39380400002)(39860400002)(39400400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(77096006)(53936002)(36756003)(69596002)(48376002)(47776003)(50466002)(2950100002)(105606002)(106466001)(8676002)(8936002)(6916009)(6666003)(2351001)(81156014)(81166006)(33646002)(305945005)(50986999)(356003)(2906002)(76176999)(4326008)(86362001)(38730400002)(85426001)(498600001)(5660300001)(8656002)(54906002)(189998001)(50226002)(5003940100001)(104016004)(110136004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0909; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD039; 1:cNfWLBoNisls0fGK1v3dNyGcnoGyCdeGrqmSIxT+ReGvz1L7/wvYm2+fGyDZGAf80UO2/8EAuceY6FgqlmYjaCWGf5I+0rMVaOxQKVVan0HUJvUq2KBYscBrQ7IB6tLa+ujWJpuTk+GzruSJUwoVzlwuo3kt30hr0ZLah1g9s3s7dE8xyk1jTz6GIfq1OGVNsYHrPWzALiS2mquAuhWDyKepc/dsQA+nOdRsRzffiDmFi1ZMZsX7COsIxYT8O83ynQ7SfPq+pTrQm+meIEZiK0sFUUhGIbVM11estt7h2so/ocmqTaU8LAd5D4HX1aC4dHZ5NXG2NoOuuRLShgJK42mWoXGWfdJdRfJbFiQeNzFCZwdTZyg20ZblvUe0xt3shuG30lItDDvXMQwGrzJazan6uCWVq9PoIJDvpKBQkbEHhDky7WAMoq3oaD8jZz1H18aNOZPJGz2XulpX0hzXA+7t1gnTqZske32zENd9DYYYGtX1zNNmuocFqo58TUioSBnhTaaKD5CAaX3kGCm5drv2Lt/uEv3gUxwm3ffy6Ze4GGWaG2EN2Np0qtv1+HItTfbTYRW9tZKQ3ite3QShVpESUit2LnkD5ZvbXExeoz2oQPtJtcKM7TvouU72Z3w0NdbEaM7hhxQPYIVyWIkgpMy2hEVbgq/5R24hor99k/MhgFzQ50QdPxHr+qVbnldZnlPcs+D94XDZje9DucHys9thZIdMhkc5M31/BJFD4FT/AUkZaR6cKR7RZ9YdDzGvIvd51qmQMntgpGBr4f5RrA== MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM2PR0301MB0909: X-MS-Office365-Filtering-Correlation-Id: 96de26f2-ee08-4355-7813-08d4a403b301 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:DM2PR0301MB0909; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0909; 3:sSClSjhkrT7Dhe/fV2a2VJknX29YpzBKCpEZ6cU/taiczFrfYYGYna1tKjFpkuArsYBFd9awezRz4FVJmJ6/60GidRkEDRwzPv7BSnQQ36rxwyY0NTkdQToZjZBPYcPqFqanZYZg+014K5hTfjIgMZfHK3qWtZD8OP495n4W5UNZwOG/MppPL3k5DR6gSorVihwFysBgVqzhC3/BvSrhyV4jC9bejUtwraz/mzwT3oASNLpv6DZjkf68xcVr9nkWzcdTC6XaeVPH2j+neDy3XTZ4lOqftExAEcyTfQh8Z+kqSrGW8Esnk3k68jF6CLO+PUPuX3SG6NcpJMXiotWAKQJx35ZFNjGw3n3ILx923UYZ4UzZcTdi9KrEFCC3aeFVFbEznribVwZb/CFsJEjp9zsJCDterPjGFcHgVAB6CMExP2r8+Pr6D1bG2rgXg3ho; 25:MCMaZZKSrBL9jEY9BMPb6t3ayuJkgDWltkPotF1IF8258dclR2zVN3Ss8OmG2oyobr7tgBe/qTCAsIkVftrsMgAAGUq5l9DU6OMjmcdvAt/BybOMleO7DGpCocdRemE5ZBpiURYVkYCR1dM9+SBXLEQ87nGu2SzYM/gM7w3Q23RxQamZ8e3GNkIhrJb+SIWWS7PCceljLsU6khPFe+LfCq22mD7fv1c5Jq1V2FedZAW+UjQsTvQNEdmrza4t8lk6ykteNFcJgs1If7JywNHSzi6puF4Z+I+bvvxx9n5v61aPws2sP0IgRkzTNYr6KCvDekD2tet9nRkM6MCszqXyREze9dECy7vST/fcnfKN96X7hfjn9E4ktG8JwD82Sh8/9FBSf5HaZm/QFv+YxVWW1vD6323PPi53IRlYS7fZPoVWCI2uQJfTKq3ATrItRXj0AxmzkQGG5oNAtpRWpM1WuNFDuxPpXwdkKx+XzY+wEow= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0909; 31:3gMT/QhflIn/5IZYKkI3Umws1pHGvkSM93Vu29z9e0b7gvLz+Jvuo66YAopzghBhBbX+FMSGavOVFM2SSKg8ikvEroxrELSRiksH154Hq4A+bU54vUD7gQJhlauJhWCdlX7GxFSge/wJrQPp6YF64Vpy2/8jB8ImVH/4XoQlCb47F2/CpZ5VAFTLPVTUYXEqyDyttJYW6EGqgANds/yvOvc2i4zWfeyYrNfg2rtqa5kpphJJlhU5GIK6tG1kJuXDvST7DbrOU0W/19u86UEudw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700061)(100105000095)(100000701061)(100105300095)(100000702061)(100105100095)(6095135)(601004)(2401047)(13018025)(13024025)(13023025)(13017025)(5005006)(8121501046)(13015025)(10201501046)(93006095)(93001095)(100000703061)(100105400095)(3002001)(6055026)(6096035)(20161123556025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123565025)(20161123559100)(20161123563025)(100000704061)(100105200095)(100000705061)(100105500095); SRVR:DM2PR0301MB0909; BCL:0; PCL:0; RULEID:(100000800061)(100110000095)(100000801061)(100110300095)(100000802061)(100110100095)(100000803061)(100110400095)(400006)(100000804061)(100110200095); SRVR:DM2PR0301MB0909; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0909; 4:ENvW2v0Bf4AczNzidfhToJ6CiDzEaupLKcZ7S5GL?= =?us-ascii?Q?iPjcm6ozJsGaRXkJV+Cs1yHtCTlk3yey1RvTNa7Tli4zcXUVOd8saeZYfPSU?= =?us-ascii?Q?5vsjNxiQgAjlmlVb6AdJbJJe3WkO0whhEiJcPGEwk5qJSl5iLG3sFzx8uL+8?= =?us-ascii?Q?tVd3grnBnCooyul/axBebNetSQAaawLKV0m3BLo7neDInACWkCLS8qXfTFEc?= =?us-ascii?Q?v0ge4zdSXXm30S6LhMaX4YkClgi+5lIglNWzUwOBppYh/10zvIhNAOOzlj86?= =?us-ascii?Q?wX6WW6A53zS26yEbz4rpQtm2GElvvmZlrBi6WZRR6x+Tgz6rjDxqL/zz8LRb?= =?us-ascii?Q?MnJhMc28f+7menbtM/FNkFuV8cYNVG/Un9g2kmHhlzpS32EeGN/5ijGccPfD?= =?us-ascii?Q?xKMrmATqLaH35N328QDq3rYVo+Yl+dsLfviMiK8iv3Wqfvf/BcMRPm4M1cI6?= =?us-ascii?Q?/qZ54fAhyxvpuojLh/fdhzsuhgp3CAHMvpJmpLKs04S/VW8LIyEaqvqnEx4L?= =?us-ascii?Q?Gm6jZOaaW9pCs66BZgYsywKGuucizNuvmA9Ln2cK+cjwaRTjsMnmMsJx9PtB?= =?us-ascii?Q?dkb1LwXDaq3HoSJSe2C8QqWVyLb9tEZ37ZwpZeL4DMzm4+61o0kyp1VCkZXy?= =?us-ascii?Q?oGUKsW2KxfwkUA8o9zG/tSPLf8+zYgaQmdjDCiCSzZWJ9hrOgWST0zqRDPa0?= =?us-ascii?Q?yP3CubatIvwvq5hzmNQWGJp7tGIK/REM1Ruu76gRXDYPjV7inF3CJp/UgJ02?= =?us-ascii?Q?EHjukm9Q6iIIx9TQfijBtCYHNTs23j8a93YbNMPilK6BplWjbx8kZeJfXAEf?= =?us-ascii?Q?2vZLsFDdL+FjZK6/ipHYj7OCU4cbxWOXqD7PQtxBhZHBbFokVj3fqs4r2Kjz?= =?us-ascii?Q?zx7EQOA5bIVWe7PBrQqcDI3D8r6PzPG0/YyJ+x2kvxVWUc5ePQrOplnQxIdy?= =?us-ascii?Q?iXtBKHrKSXCA/OZgdr8m5EAqJT/PU1UyRjKO+xShqg3ANqBHPRQHWTQHOZYz?= =?us-ascii?Q?TVe+QpZ04tm537ZC0OPsWBDWHNM1CpyVWrKnuwzv4GXkZRE0XuX5q9/JQzT/?= =?us-ascii?Q?H7oAyMbp3z69gQJc5TNijGCdB5eWDIAbpAv7rviKjABh/SuhQYUf/vIR/j68?= =?us-ascii?Q?WIDCJu5IbhCajTsNrWWnhMlP7rZ9Hlk+8rQLZfyyTHEwqM7TIJmfKyI5KtTy?= =?us-ascii?Q?W9Pdnjr/YBOm9txnCy3zEgf7tMTupt/oivFoJ2OlbS5VGvrKGT+R0LJri+EW?= =?us-ascii?Q?kohfAA2wR8e1XQY+Fq/Urb2gPQzF2kc1PXldIKF7hDCG3RlmnlY2OJejCXnN?= =?us-ascii?Q?+9r716MirVN0SOqEVzxQe8HvE8E7FleG9xehBsHZT73iFhFFRzCInlgeJSPT?= =?us-ascii?Q?qHKB0g=3D=3D?= X-Forefront-PRVS: 031996B7EF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0909; 23:GSEE204Y9n+wDU0Z1wXChcsLK+dGMvvCMgRPFnu?= =?us-ascii?Q?FdrR3BnN1tAVBYRhf+E6tUj3K4GonFiHVk+hgnHBWAZ0ia8uqTX1EodklMUw?= =?us-ascii?Q?hSs+48m05zeuSsW+TBfavYWrwnix+/q7B9VqU2RNpKHIxjPWspzIQgIohXMn?= =?us-ascii?Q?8Se2EYrH9L+wRriYWhmJNIKCmCc+i5TBaslZ7ThOBlAv86HrmLhHCuWzXU/z?= =?us-ascii?Q?iLASnxhMHPp232Lz81uRaElZVTLFumn3JARMURzRK8Jt/oChEd9nfRq1IQxk?= =?us-ascii?Q?4XMn53Kw+Ad8UDfFFnxxEi7devrUFFZIt1dc7pUGUHqX0+43SEC1yV/wxqeY?= =?us-ascii?Q?XEw4i+4cLtnHSy+z1V4j36op4SDw/QtK4oz8zu1tcgrVgaH5trwQFo9JejPO?= =?us-ascii?Q?NYCEu1NU0FHm3571t4DJVuQIvBXoiV/3Uht0OUCJb6LAHIJl1xBiVtQdE2iH?= =?us-ascii?Q?CH6ygL+o7gz7ucEkPK8tDQcA4KK93e9pAd9WYrmYkY4QfDVpMuEiq9Yr8t2f?= =?us-ascii?Q?c5FnpSbwQHf55CKdAKOCw+BbkI5ZMsLaK3XzMVmxUkfPz9DsMTeTjWjWUHai?= =?us-ascii?Q?E39L/Wkty2q7DYtCQf+DAOODgH6fnRu54I1wTs6s6ai1VSNxfdpvPcG/R4uz?= =?us-ascii?Q?NQMLy36vflBrtqWvMueaCpwnFNpA/XPqFXL3jD059EQiKWPvEf5XvScM02e9?= =?us-ascii?Q?lyQ9+a1JQzGNZCjWM73qy+7Fb3h9hDyB/T/MKewSXlSI5M2GSL9++P4ZhEpA?= =?us-ascii?Q?GBKKEi4Yvo3ahJwgJDWyVAcRKqVwi5fW/QuJ4TZwEYRwVk/iYJckAAa6uVEn?= =?us-ascii?Q?aY9HJe+nLVaea3VCmDerVimY7EUiiVv5ICTryarK6W7+fJ78qi7hHDzmZCZ4?= =?us-ascii?Q?cA8zX1F35wDfkD03IkaYilz7pKiv1ttIaL7dyJLJZqeQXL9DYjkCjKC5CC/i?= =?us-ascii?Q?nyJGmQkEP/PSGiRUI0i1WRjP5KMq4GLqauT5Amv4ETFN/NAMtv1YSS6jEP5C?= =?us-ascii?Q?8fFQwQq0gQJPLxfSeM/XZsWmxaxivSbKdAB1BzfYf07aobbkuCiqdZk+p366?= =?us-ascii?Q?BdhyEdIQSdRpFr++uULIe6pSIBfD6sf5Xajc6M5QYTVGzw0zHt/fD3+U7hvy?= =?us-ascii?Q?7m9c5L+OhawJdIXP8fsApPZ/FggFZK+b0BWGq5m2nzU01cPYRO6OZyaUSJn6?= =?us-ascii?Q?UrB/M6I9TW8QHs7vLuLL2GSHbs48hlW86dieDa74pyGJl3u0zJCWtcQT6Okq?= =?us-ascii?Q?rddbJFL4qKuzhP00IVoNDqHc+xFKRmZyMW55OdvPGMPYwEgVIQKBdksC3/4/?= =?us-ascii?Q?JXQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0909; 6:ZwA+OmJ/xnFK7npF5779XmW3PTljHxAUjqlvGBODYlYW9NwoinJ4pxCgnHNyM5RDzuT6AwmJI0SYXdpQg5ODyZNg1Ab76fmk79dQTsHM6vaYhjEmJ3DNr+/7/SBkAfUn9GoxUO8fwOHsSeVnp3cydjgJ6KwGugFItFC5rEFpkORbTz/HsiBFxMTxlVgTkrXHVoP2/Au6K04K8gDMtsIe0EzPrpLh+rVckYjOO+PoitwqUf1x4tPyo/+tzS5qxE2JTIcb8qtgA5A4Y+ao/8cm6ZY/Bn2EOb5nhKqf/OHtGYt4lV4Cssn7d53v0wSO/XEI47Zsj8wrsACb6v0jWXWg3849ZOY07X+vLcG5gQExDVgtFH9pKMzd+zSAoRzNZ/TGxBfbewMbWKPCH7ouo4hPEiFxArBF4fSp5tjeAGm4GETK5LmvoUv06YwLHZI2CrrWCNXH1+kb1+Ao7d4U4BdiDG6Ud9QfqOAVYyIK8pRxB83EtR37dDvZ8IzahC/pV4twRogJv1VQlyVv4CSCmko7ig== X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0909; 5:tvIhfGPl/OpXWUNip75PdHJAot27leC3NsfJrtUQnQfS1p+ahXwVo4j6R5XesvKlS5Fuvh4nSVZdQ7fRP8N2wiH50r0jt/Gn/NGQR6O3SgplKwjf1fgxCG0N2qGnE/0LRmMlgQfUDE1/yp/5EFj6hfksFTPf6z43VIIVH9Stl61s9ktcKzaSKkZ4otfh5Q0DFPqHS1QQvDoeWcOt1Ruce7GT1q/gqdJc/3C0m0R3Wkjvt3L/b+tUFYdh6EBlRiIR+IYgZNeGtulE4uFH0FLwu/+O+WzjwU9SKjuGR6RoKLl9sQ0DAsXBf/NwGjW4ovPD4jWOVKsbxoZ733TMkGTtU9/fe4Lx82EOz/ivL+QM5SpgnzLrP6Xw0Eosgvo4ILCDWlyMWvNMPOj8uBGNQtnnhzJDOHyIlVSrGpMigmObcxqWNBGutt6179+rmMY2lHso/WRx3sFU4FEQwbgmgoL6Ig==; 24:lQIzYuSFxrwGANLnIrBAK4xBRuP2oVmPkDXL2wFTgMOQU0D18E+xwoQNEOIDhx2T6FEqZm0FjbE3NbgOJ/GExGV0/7gN6IOShZkJ3TS2pu4=; 7:DOFn1Itu+GEiKdEj9+YGMFeFq3f5r/doM22tu4XFJJazUz9Y2R4KFEoJhOJdC+E9V4uCOa5bIDDfItvWKjpZUF56zElaF34SHFoGV+Y2XotjwKPuOYogOSKbCTwTOolsuSAoC5NNfFRJXYNes967oaM1cEeJw3efcVymfVvbLEcEPDNV6GTmyCHLi441uFIFs8yBStpmcIVJ5ZLuuqIqw+k3ldrFl7qp1gF6l9DOaQnqEHzzSpBMTeuy0zJXinWIRz90ptt7dLaA3XEdW+x8xw3z2rC4lHzuFwFLdISPG2q3h44aFpd95As+BCpXW7qr1p/fNp1D4p/pvIC2hSL/zg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2017 06:51:55.8973 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0909 Subject: [dpdk-dev] [PATCH v4 15/20] net/dpaa2: add link status config support 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: , X-List-Received-Date: Fri, 26 May 2017 06:51:58 -0000 Signed-off-by: Hemant Agrawal --- drivers/net/dpaa2/dpaa2_ethdev.c | 118 +++++++++++++++++++++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 2 +- drivers/net/dpaa2/dpaa2_rxtx.c | 25 +++++++++ 3 files changed, 144 insertions(+), 1 deletion(-) diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 46532b2..fa9db17 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -55,6 +55,8 @@ static struct rte_dpaa2_driver rte_dpaa2_pmd; static int dpaa2_dev_uninit(struct rte_eth_dev *eth_dev); +static int dpaa2_dev_set_link_up(struct rte_eth_dev *dev); +static int dpaa2_dev_set_link_down(struct rte_eth_dev *dev); /** * Atomically reads the link status information from global @@ -530,6 +532,9 @@ return ret; } + /* Power up the phy. Needed to make the link go Up */ + dpaa2_dev_set_link_up(dev); + ret = dpni_get_qdid(dpni, CMD_PRI_LOW, priv->token, DPNI_QUEUE_TX, &qdid); if (ret) { @@ -613,6 +618,8 @@ PMD_INIT_FUNC_TRACE(); + dpaa2_dev_set_link_down(dev); + ret = dpni_disable(dpni, CMD_PRI_LOW, priv->token); if (ret) { PMD_INIT_LOG(ERR, "Failure (ret %d) in disabling dpni %d dev\n", @@ -632,6 +639,7 @@ struct dpaa2_dev_priv *priv = dev->data->dev_private; struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; int i, ret; + struct rte_eth_link link; struct dpaa2_queue *dpaa2_q; PMD_INIT_FUNC_TRACE(); @@ -651,6 +659,9 @@ " error code %d\n", ret); return; } + + memset(&link, 0, sizeof(link)); + dpaa2_dev_atomic_write_link_status(dev, &link); } static void @@ -989,6 +1000,111 @@ void dpaa2_dev_stats_reset(struct rte_eth_dev *dev) return 0; } +/** + * Toggle the DPNI to enable, if not already enabled. + * This is not strictly PHY up/down - it is more of logical toggling. + */ +static int +dpaa2_dev_set_link_up(struct rte_eth_dev *dev) +{ + int ret = -EINVAL; + struct dpaa2_dev_priv *priv; + struct fsl_mc_io *dpni; + int en = 0; + + PMD_INIT_FUNC_TRACE(); + + priv = dev->data->dev_private; + dpni = (struct fsl_mc_io *)priv->hw; + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "Device has not yet been configured"); + return ret; + } + + /* Check if DPNI is currently enabled */ + ret = dpni_is_enabled(dpni, CMD_PRI_LOW, priv->token, &en); + if (ret) { + /* Unable to obtain dpni status; Not continuing */ + PMD_DRV_LOG(ERR, "Interface Link UP failed (%d)", ret); + return -EINVAL; + } + + /* Enable link if not already enabled */ + if (!en) { + ret = dpni_enable(dpni, CMD_PRI_LOW, priv->token); + if (ret) { + PMD_DRV_LOG(ERR, "Interface Link UP failed (%d)", ret); + return -EINVAL; + } + } + /* changing tx burst function to start enqueues */ + dev->tx_pkt_burst = dpaa2_dev_tx; + dev->data->dev_link.link_status = 1; + + PMD_DRV_LOG(INFO, "Port %d Link UP successful", dev->data->port_id); + return ret; +} + +/** + * Toggle the DPNI to disable, if not already disabled. + * This is not strictly PHY up/down - it is more of logical toggling. + */ +static int +dpaa2_dev_set_link_down(struct rte_eth_dev *dev) +{ + int ret = -EINVAL; + struct dpaa2_dev_priv *priv; + struct fsl_mc_io *dpni; + int dpni_enabled = 0; + int retries = 10; + + PMD_INIT_FUNC_TRACE(); + + priv = dev->data->dev_private; + dpni = (struct fsl_mc_io *)priv->hw; + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "Device has not yet been configured"); + return ret; + } + + /*changing tx burst function to avoid any more enqueues */ + dev->tx_pkt_burst = dummy_dev_tx; + + /* Loop while dpni_disable() attempts to drain the egress FQs + * and confirm them back to us. + */ + do { + ret = dpni_disable(dpni, 0, priv->token); + if (ret) { + PMD_DRV_LOG(ERR, "dpni disable failed (%d)", ret); + return ret; + } + ret = dpni_is_enabled(dpni, 0, priv->token, &dpni_enabled); + if (ret) { + PMD_DRV_LOG(ERR, "dpni_is_enabled failed (%d)", ret); + return ret; + } + if (dpni_enabled) + /* Allow the MC some slack */ + rte_delay_us(100 * 1000); + } while (dpni_enabled && --retries); + + if (!retries) { + PMD_DRV_LOG(WARNING, "Retry count exceeded disabling DPNI\n"); + /* todo- we may have to manually cleanup queues. + */ + } else { + PMD_DRV_LOG(INFO, "Port %d Link DOWN successful", + dev->data->port_id); + } + + dev->data->dev_link.link_status = 0; + + return ret; +} + static struct eth_dev_ops dpaa2_ethdev_ops = { .dev_configure = dpaa2_eth_dev_configure, .dev_start = dpaa2_dev_start, @@ -998,6 +1114,8 @@ void dpaa2_dev_stats_reset(struct rte_eth_dev *dev) .promiscuous_disable = dpaa2_dev_promiscuous_disable, .allmulticast_enable = dpaa2_dev_allmulticast_enable, .allmulticast_disable = dpaa2_dev_allmulticast_disable, + .dev_set_link_up = dpaa2_dev_set_link_up, + .dev_set_link_down = dpaa2_dev_set_link_down, .link_update = dpaa2_dev_link_update, .stats_get = dpaa2_dev_stats_get, .stats_reset = dpaa2_dev_stats_reset, diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h index 3254b99..6b37c00 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.h +++ b/drivers/net/dpaa2/dpaa2_ethdev.h @@ -102,5 +102,5 @@ int dpaa2_remove_flow_dist(struct rte_eth_dev *eth_dev, uint16_t dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts); uint16_t dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts); - +uint16_t dummy_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts); #endif /* _DPAA2_ETHDEV_H */ diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index d7e18ad..b2dfcce 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -458,3 +458,28 @@ static inline int __attribute__((hot)) skip_tx: return num_tx; } + +/** + * Dummy DPDK callback for TX. + * + * This function is used to temporarily replace the real callback during + * unsafe control operations on the queue, or in case of error. + * + * @param dpdk_txq + * Generic pointer to TX queue structure. + * @param[in] pkts + * Packets to transmit. + * @param pkts_n + * Number of packets in array. + * + * @return + * Number of packets successfully transmitted (<= pkts_n). + */ +uint16_t +dummy_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) +{ + (void)queue; + (void)bufs; + (void)nb_pkts; + return 0; +} -- 1.9.1