From patchwork Thu Dec 29 05:16:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 18656 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 F3CD1F980; Thu, 29 Dec 2016 06:16:39 +0100 (CET) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0047.outbound.protection.outlook.com [104.47.40.47]) by dpdk.org (Postfix) with ESMTP id ED002F936 for ; Thu, 29 Dec 2016 06:15:46 +0100 (CET) Received: from BN6PR03CA0017.namprd03.prod.outlook.com (10.168.230.155) by CY4PR03MB2471.namprd03.prod.outlook.com (10.168.165.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Thu, 29 Dec 2016 05:15:45 +0000 Received: from BN1AFFO11OLC003.protection.gbl (2a01:111:f400:7c10::161) by BN6PR03CA0017.outlook.office365.com (2603:10b6:404:23::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.817.10 via Frontend Transport; Thu, 29 Dec 2016 05:15:45 +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; nxp.com; dkim=none (message not signed) header.d=none; 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 BN1AFFO11OLC003.mail.protection.outlook.com (10.58.53.74) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10 via Frontend Transport; Thu, 29 Dec 2016 05:15:44 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.87]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBT5DOI9010218; Wed, 28 Dec 2016 22:15:41 -0700 From: Shreyansh Jain To: CC: , , , , , Hemant Agrawal Date: Thu, 29 Dec 2016 10:46:46 +0530 Message-ID: <1482988612-6638-28-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1482988612-6638-1-git-send-email-shreyansh.jain@nxp.com> References: <1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com> <1482988612-6638-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131274621450557968; (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)(7916002)(336005)(39860400002)(39450400003)(39840400002)(39410400002)(39380400002)(39400400002)(39850400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(2351001)(69596002)(2906002)(50986999)(4326007)(105606002)(86362001)(48376002)(50466002)(77096006)(15650500001)(5003940100001)(106466001)(68736007)(104016004)(6916009)(97736004)(189998001)(81166006)(38730400001)(110136003)(5660300001)(2950100002)(76176999)(47776003)(81156014)(8936002)(85426001)(36756003)(33646002)(8676002)(50226002)(356003)(8656002)(305945005)(92566002)(626004)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB2471; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11OLC003; 1:XX6WoSgHOBUtTGErROdVLYf38c+UrH+vSZ2ivfWaXITqRJGwQaV88s6tlajb1w6RXBBINBeSgTLrP27dZDojgkATo/XurSH0hu7jSnZB/snMSxxDEq1OaeEyQDpm8eK1fNfXkaw230Rzz9sU+d2asWEexEKqshmJHxajgPwQmH8GG3xwzxUAD1j3yKfAVw5OMjqRtHht16JyVAq14zHwiL6IEp/xOjlDigBN/mfLHhar6QOwC66BkfY+pgj57DxYPMzxa/pHHnZCt0oPe14uwH+/b6M6QO/CRfkgcx/d1Gj2Z+dAUuxozD6ypM5kGLzMCPVuWE2+JbbDqkQ+hmBJ73hACG0rX46GDCE+8xAiSnW6sGruxc3wPWLpSqdjVUPRF0n313uNizTdnnJokTc/X26ixjqPvdINqpfO3UzoG47mAqPcE4MDNVvQIVTtItbs/lMwe29DLIQoiFhv57crrrHFsbkVCYQ0UqqL1TQqqdWQnzKKkh+dvOosMpp2R59NfcY9gxCEvfQs2UTZc/9R4TnYzPbuzy9A2EIsgZxZtLFsHOUwgP8aFFEkgiIMUxkGlOU4nZQdzmQZdiSg9I7CUpM01L8lHrIi8f6dqf6VSLBLZTht6xjd8rI81fbzv6d3DeIYcBVonuzjzeuPeLuzc5j2Wm2sbiXMLu6M3IYSbUpLyjLNh22fhWRNbVVNn3S09/tF+FkqUjcpN7hUO+g1dKJQCLvws5x4g8/55NuK+dzBs496rpfvjrJYK6Hmy1oOLcOkmrmHIBq7XKDiulZTww== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 83dc7df9-2b8f-4754-8f28-08d42fa9bdf9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY4PR03MB2471; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 3:MKkIBvuVTZzFhqwT4uMf7FZp/RD7zTzZE47+yzs44XaFB0el5MX1QPyu4XY3MExE2+agA1FZfThiGYAcaJif7VgsmcKxXDiHheN20u0WxeiaIIrPdhZTthVba3KNhuIZkrrJc6fQJc+hpXYwhqfOIPFnq1St9XhQWJZHal1tAsb5EaU1vvluBlHRx0YTaD5hoyHTkGGbOlwfQWGCbatcMbjb4OyMjMjsrKgC9GbWcqFWlrRkxbPWkxpIufHlfLrxq/JsPdvNqwPG9uI8KdQEwYFiglF8JDqn64XrIj4xHQatzPhhRGF6qHrHk49EvZB76oqb2MAuZDNXaq8XDReea2dwMIyEKumAI3TRPJLZUAk= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 25:MxQe/4kq+MfjjAuPw6GSR6J9Hph34SU3fR93Eup9eXZSG/7WW7pyZsqhQpj0HVbyYhmWVJ+AYHtndFvssau6DFHYSe4/HBcubBeuMuRMWAMW4+vz+cBN541iPyINYY3YxruZqmmAoD/R+zEnUI7fFjOqTWgIEtIFluCg/vmJhxXUrnTbRy7G04zrfDZ1mPylw88w5Qeb6OGelRBFu2xoqcByyf0UWgL8k4jf/xZJLQ5ZsBx0oP99ImYBspkB6QT8TW6EmW2608ey7DKWRVKe8uXCWsS2IXhvqnQL2JrXZ0X/GXfAc/Nd2HRvMfppehywLMohebLIS7n6v3A/PvTr4a5++xlsgyaELhGmY5CLCVrQJNsRFl9wXbjWxUv8JmqkeNqDClobdA/H+XxYOy5hegkBPEskVzoKzDjH/d/rwdttRFGy+vzGetajZVdC+Qf2yliSVdGxKBSSZcW7vi3Aa+nAHl7WnGG7csX8MU3msEn0lXGl7lQrJC1fMr4jT1NAE+92bbjCAP0afeBzB7enVK0xHHSRGT1yiFh2e0775znH7PeY8fls0Kes5r5V4VpUifqDueFuikd2ghhQJV4eMwjFOW5ch3j7eWBAyv9MiWxruN8NS2spFy242f9EluEtuFvLG9L56srv8rdna2rM+KWCEJyiQeCVUXRNHVaJfDM5RCiMYS3Uq3fV6M2CQo255GkPX8I2TldvwB5kx3sXrBZeI+SimLhhr0NTrQehu3l8CjE8fpvM4Uo2CXJGTYrvLntsZ6CZSTmt6vqr/OOrxg== X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 31:KnsC43bM2hUnod2GD+1cAcm1OULammsn3dYRXL0VgSB7jxdP1LTt8qgRC+maYX+CPFa1eSESIy8orxJcgeujFt9OfuIc8yRLRXbHcyjzRz2qX8Y0GJ+hETCcUiX+888Wv5E482oGU9CL5OzWA3blCUB7hHOThKO/b19mf7SXBgDtRhZPHFCjHLPG04WFrmltEC4Gx1NgHCFVSTxV9fehAvR+ok6bah+oT7lhpgJ2XSxbk6JPtJwFXW9hRKjMrdwANYzaS/EyDPCV8oyyqjen7R3+A+6LB6TVfv7ae+NhaAGSWuTctepcUXRADq4C2bCp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13017025)(13024025)(13023025)(13015025)(13018025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123563025)(20161123565025); SRVR:CY4PR03MB2471; BCL:0; PCL:0; RULEID:(400006); SRVR:CY4PR03MB2471; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 4:WDvGqdu/MZKXnEtuvnJVU462xI8ajc5vVEbuTpSlzrySG92uHy0W2G6/Q77yqVb6+AF7ldk8bCM9rtvJtRj/AP59efNb3q9ZrJ9DgNMqG8bl05IhoqPp3OY3ws/JGvgzxCEfrYk4pkoiVp/NpWCPysxEobqvZjgWdEPHjROGKhdA0EGfCgwoTYzY2DSQHSmMn8lvt2lViKtJxGMWni/1UtSTURhAvqqY3EAjZ6PFx5qrmEqp4t3s4voPCv5H9d24nh8EYYDxu73qgq3rnQDACPLlaw/6h6chuYHW3D6e5R9WLdoSS76RibMnn0A7vVkbPDdmzQ9OCtx7Jx5P/s4/15QAIGROoyTYfVXpRFb8WwVfqtq2+Y8cKOSCsDRvaCmGCAgFz4h9hcwPbztwKPZT3dY1h8i0XiJ3gI0Rs2zBgJqNHGAQon3w6+A8Q9Ebi6x99Iq5FtCAWNljLb8py9TAduvFUH2oiCFV3Ei5htfR4o4H0K1RdJfbDAGceiUeAhRSnUqEoas5ZGllS6b3fHeWN1wYeVIGQUc/p0LdG5xY8kZntESNqH0lpQNAQPgNAyiu1MBwcsE4/T+HYqAVswEbJMe8iwuRxhCDYPikNY2rzqZYN/ap3SwV9BBkzq7mpSa+LcduxR3fxhm+g/2PSmgQ72pUkdvdF77Zif3ugSFH/SOGOWwYheKrS8pVSvB21G3DbUzmFJdz8QiRdHuGe/tpbdcdChb9MCzYdWMOIqFkNLgilhfci1V7AquCJF/p0AaH X-Forefront-PRVS: 01713B2841 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2471; 23:vovypZKa/QIFK2aon4YeelgV1UB1D9poDRQbh7aO8?= Cjxu7+AMnOdSeV5ftVhh0aIiElGicJvidv4k9ED/vmIRcPv+SFsANXACnm7JfAaTbQro88hjdbqWpMCowTCGbienqcRGKnWRml1qkWd6m6WUakRFZsWNQwvKgcaGIa9IwIH6LcGbzfUc/WFUXjvF5Xc+oNEazgnw/jknKRTe2JQiJOoCeq56d9sLa6LzmErpu+uvRbAd+Mw3kkBKkAebNCs7Qv8H13A8P0ETFNUpiKDOqPDaODu8K7xnyQQL5XhPaPz4ClFcJj9QUYJAB2BdbH0VErMHH8s6YTWq/Zar4n1FkxfBLyylnOJUFisds1kHPdVE6VECsQ8AyhvjUBkqWktGHywU5nw2qH0f8JPxt5P+PyAZ8Ppj2Su+ZJJgu1UcDc6V+x1gnPDaqTX5K0KYx3003fxvGlPo37mekvHESHmpA0o363SM4v3MPgB3C/CnZJvA1ovxfnwIx9uSeB8b6WNu+8H5wahHCKiwb5yg4JSvR+9plZilsV5xrZmHtlF938q86YWyZWLt/1rK5ww3A1n1h92q4IAUjiXzO3b7U/uKuv5WIc/1XUUvnObkYiSnSdBZCijGl6AjOnZNgymCLMRUrJqQcssoYUzxbOzxKH2k4EyhEtbPKqo/Dgr9Wg2Pw4RxYVeIwn7FopMbjUP7Xn4WnNPyCcbW1aJXvjHt7QA4etM8GlAehoJ8kS61LZN2j4u7aRKkZCZyH09k83mbXGdCFkJI+74EcNLlpB5PS/zTJ6gBTVa3Isoitq9/D9BVQQgRoM7ZBLCvNND5kldbmRJ2rVH5DlfehqlgIha45trTprvlf5w5jfgXaax5rk8X+2LTadonq5wFM4EHZ9yHmY6wVbpurM3XmPGdk0qp3pflTNoIlbeeTIikXPtg4tUVlOwsfX3GswWW09JMp2ODh4iyOeyO9Ma+4HMxMSK2QGg3C6qqc25LlbPQS7BZ8Cd30rPIELGX00zUMUMBO3zump9C4Puvb0IEvGhmpCi0hQWodaZdvVaNpQ64ezvV1+I17GSywbA8mc6x4/DtcWvItT+AN0aniVWzaqsD0lgfOVTl0dEtK10bIsFs0jm/6HzclwSQxWiOy7j7pvrmZ5mgwZfrCNHHfloaNbdlQOiCa8eEfhxbXvbIYs574OKDpTBEYHkKEIN0TbM5as8s/ZJF0TWiQohNqF+iP/GH9y/TM3rTrp+jSsoeTeYQXpoGqh8TAMRMbzT49v/ZxqQpzrdu9MWEathZCQ8B2weVyPQrYfXoRm1kMtQ0K33LYAlt2rEYlA= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 6:qN9frU0RuLdkPmckQ9Z14MuBBwaToQVvkBoZZ5KCF3IEGiBaJct77+LEbCkzaYg99Z4ZwyzdKPvInqz1IPUIHC+UaBp10WaF/qfUwLU1kF+pnvZTjCuL73vnqUzZDz+1fKy/ensSxA1l/7iWmnliiHwCV141OX914qKzwKgJGEhbZNRuC5H5RqOLZYVxfh3i9bufRpXCArItKib52iZxrEObanT9cjOlJ3JuquuEbHSUQf1ZRAgvZSlS3QinWy1ZarA9sV9R+K0uPaXyuMeEaoy6T9X/21dgyJVOtmjP31Cmpypu09nKJ4fYMV4MACs4GSqHtcxBaT+0xb75Sfa4M63nFP+Kj1q5SCG9mrMz1mmJ862EpNh5OpDwU3p65c5vuTy0oizHyw4Liy69wy71WqUFUgIYhTYT5zgQYymSLPmpTTUePtMsMg8hjwo832/A; 5:X4smpPMgzN0ngdr5QMlhcMePEjEc2ReRJiqPSf6ZgQ/W1PKkCkBTZTJuWBc1jEbhXAcgscfm8pBpf7NI8BKf60nVTEK/edqzAMUZrXMVuovLhFSR9aHiduZvqOgiUykYRsseM+1dfB1P37dMPuqxFIIrMhZ7nsdjBhT2iFX6Vsn6trgoSd6ut/v5knim3pZ4; 24:86tDAzZrGXVV+CqFDW29qYrGqiMCKJ3WsoR2Th9cJvFmzwH3Oxj2EL+MRo6N0OIIn+CVZYR3B61uge4mxIaW5npgg2gmRrHx3YM6fExryno= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 7:00RThmF5PdavFEnStgvMzTjQf8MagHJyMQGW5fwWEftMNS3N0H9N0UefQM49d4bq9aMjbxPFfF/ven/xqHHrveqHiQlqMDDUXRDgHpCuxDGBs+j6A9Fun4Xnz10Bp5EeZY+cbRyGmZ3UEO3zP8GyVDXbuxt2NTW97JO7ypNxHWp+9CEV1RaUAWD437kKRJOaiXAKXnceEE8vyV/H/VBClLpKNULGgQLslE9cWZT+EnkUO1Qg7eh3tEMIQ6h5sg7OIaUoMRMfsCsdgXGV4YGlXpS/kt4cATCver4yAzKZ0hjWERN+8SJSKfodWIARryiZN5EqYdf0cJ9uNB1Ly5+bpnNRAjjTQ75BFqV9Mega9z2Nf9WrnM074aV8w7rZy0LTzNqC1wFvMU/5413WL3Hx+W+4AUmBviKptqk+HJocdtd4MwRcKzphFRlpes8u6B3vGOAo0aPP/nltbrr3rGjaGQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Dec 2016 05:15:44.6970 (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: CY4PR03MB2471 Subject: [dpdk-dev] [PATCH v3 27/33] net/dpaa2: link status update 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" From: Hemant Agrawal Signed-off-by: Hemant Agrawal --- doc/guides/nics/features/dpaa2.ini | 1 + drivers/net/dpaa2/dpaa2_ethdev.c | 107 +++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index 0746d4b..0660cab 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -4,6 +4,7 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] +Link status = Y Queue start/stop = Y MTU update = Y Promiscuous mode = Y diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index c705014..0d53003 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -55,6 +55,58 @@ /* Name of the DPAA2 Net PMD */ static const char *drivername = "DPAA2 PMD"; +/** + * Atomically reads the link status information from global + * structure rte_eth_dev. + * + * @param dev + * - Pointer to the structure rte_eth_dev to read from. + * - Pointer to the buffer to be saved with the link status. + * + * @return + * - On success, zero. + * - On failure, negative value. + */ +static inline int +dpaa2_dev_atomic_read_link_status(struct rte_eth_dev *dev, + struct rte_eth_link *link) +{ + struct rte_eth_link *dst = link; + struct rte_eth_link *src = &dev->data->dev_link; + + if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, + *(uint64_t *)src) == 0) + return -1; + + return 0; +} + +/** + * Atomically writes the link status information into global + * structure rte_eth_dev. + * + * @param dev + * - Pointer to the structure rte_eth_dev to read from. + * - Pointer to the buffer to be saved with the link status. + * + * @return + * - On success, zero. + * - On failure, negative value. + */ +static inline int +dpaa2_dev_atomic_write_link_status(struct rte_eth_dev *dev, + struct rte_eth_link *link) +{ + struct rte_eth_link *dst = &dev->data->dev_link; + struct rte_eth_link *src = link; + + if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, + *(uint64_t *)src) == 0) + return -1; + + return 0; +} + static void dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -431,6 +483,7 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) struct dpaa2_dev_priv *priv = dev->data->dev_private; struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; int ret; + struct rte_eth_link link; PMD_INIT_FUNC_TRACE(); @@ -440,6 +493,10 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) ret, priv->hw_id); return; } + + /* clear the recorded link status */ + memset(&link, 0, sizeof(link)); + dpaa2_dev_atomic_write_link_status(dev, &link); } static void @@ -532,6 +589,55 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) return 0; } +/* return 0 means link status changed, -1 means not changed */ +static int +dpaa2_dev_link_update(struct rte_eth_dev *dev, + int wait_to_complete __rte_unused) +{ + int ret; + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; + struct rte_eth_link link, old; + struct dpni_link_state state = {0}; + + PMD_INIT_FUNC_TRACE(); + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "error : dpni is NULL"); + return 0; + } + memset(&old, 0, sizeof(old)); + dpaa2_dev_atomic_read_link_status(dev, &old); + + ret = dpni_get_link_state(dpni, CMD_PRI_LOW, priv->token, &state); + if (ret < 0) { + RTE_LOG(ERR, PMD, "error: dpni_get_link_state %d", ret); + return -1; + } + + if ((old.link_status == state.up) && (old.link_speed == state.rate)) { + RTE_LOG(DEBUG, PMD, "No change in status\n"); + return -1; + } + + memset(&link, 0, sizeof(struct rte_eth_link)); + link.link_status = state.up; + link.link_speed = state.rate; + + if (state.options & DPNI_LINK_OPT_HALF_DUPLEX) + link.link_duplex = ETH_LINK_HALF_DUPLEX; + else + link.link_duplex = ETH_LINK_FULL_DUPLEX; + + dpaa2_dev_atomic_write_link_status(dev, &link); + + if (link.link_status) + PMD_DRV_LOG(INFO, "Port %d Link is Up\n", dev->data->port_id); + else + PMD_DRV_LOG(INFO, "Port %d Link is Down\n", dev->data->port_id); + return 0; +} + static struct eth_dev_ops dpaa2_ethdev_ops = { .dev_configure = dpaa2_eth_dev_configure, .dev_start = dpaa2_dev_start, @@ -539,6 +645,7 @@ static struct eth_dev_ops dpaa2_ethdev_ops = { .dev_close = dpaa2_dev_close, .promiscuous_enable = dpaa2_dev_promiscuous_enable, .promiscuous_disable = dpaa2_dev_promiscuous_disable, + .link_update = dpaa2_dev_link_update, .dev_infos_get = dpaa2_dev_info_get, .dev_supported_ptypes_get = dpaa2_supported_ptypes_get, .mtu_set = dpaa2_dev_mtu_set,