Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/21201/?format=api
https://patches.dpdk.org/api/patches/21201/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1488545223-25739-36-git-send-email-hemant.agrawal@nxp.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1488545223-25739-36-git-send-email-hemant.agrawal@nxp.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1488545223-25739-36-git-send-email-hemant.agrawal@nxp.com", "date": "2017-03-03T12:46:52", "name": "[dpdk-dev,PATCHv8,35/46] net/dpaa2: link status update", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "625d8e30f4ae5b47f1d374d6d94ad9ca9c48d060", "submitter": { "id": 477, "url": "https://patches.dpdk.org/api/people/477/?format=api", "name": "Hemant Agrawal", "email": "hemant.agrawal@nxp.com" }, "delegate": { "id": 319, "url": "https://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1488545223-25739-36-git-send-email-hemant.agrawal@nxp.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/21201/comments/", "check": "success", "checks": "https://patches.dpdk.org/api/patches/21201/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 7C144FAE6;\n\tFri, 3 Mar 2017 08:15:09 +0100 (CET)", "from NAM01-BN3-obe.outbound.protection.outlook.com\n\t(mail-bn3nam01on0080.outbound.protection.outlook.com [104.47.33.80])\n\tby dpdk.org (Postfix) with ESMTP id AB613FA84\n\tfor <dev@dpdk.org>; Fri, 3 Mar 2017 08:14:55 +0100 (CET)", "from BLUPR0301CA0017.namprd03.prod.outlook.com (10.162.113.155) by\n\tCY1PR0301MB0730.namprd03.prod.outlook.com (10.160.159.148) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12;\n\tFri, 3 Mar 2017 07:14:54 +0000", "from BL2FFO11FD049.protection.gbl (2a01:111:f400:7c09::148) by\n\tBLUPR0301CA0017.outlook.office365.com (2a01:111:e400:5259::27) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12 via\n\tFrontend Transport; Fri, 3 Mar 2017 07:14:53 +0000", "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBL2FFO11FD049.mail.protection.outlook.com (10.173.161.211) with\n\tMicrosoft\n\tSMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id\n\t15.1.933.11 via Frontend Transport; Fri, 3 Mar 2017 07:14:53 +0000", "from bf-netperf1.idc ([10.232.134.28])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv237D50c005035; Fri, 3 Mar 2017 00:14:50 -0700" ], "Authentication-Results": "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; caviumnetworks.com;\n\tdkim=none (message not signed)\n\theader.d=none; caviumnetworks.com;\n\tdmarc=fail action=none header.from=nxp.com; ", "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;", "From": "Hemant Agrawal <hemant.agrawal@nxp.com>", "To": "<dev@dpdk.org>", "CC": "<thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,\n\t<shreyansh.jain@nxp.com>, <john.mcnamara@intel.com>,\n\t<ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>", "Date": "Fri, 3 Mar 2017 18:16:52 +0530", "Message-ID": "<1488545223-25739-36-git-send-email-hemant.agrawal@nxp.com>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com>", "References": "<1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com>\n\t<1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com>", "X-EOPAttributedMessage": "0", "X-Matching-Connectors": "131329988937978509;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()", "X-Forefront-Antispam-Report": "CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(7916002)(336005)(39840400002)(39850400002)(39860400002)(39380400002)(39400400002)(39410400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(626004)(104016004)(105606002)(4326008)(50466002)(48376002)(5003940100001)(110136004)(85426001)(2351001)(86362001)(38730400002)(54906002)(53936002)(81166006)(92566002)(106466001)(8676002)(15650500001)(33646002)(305945005)(50986999)(189998001)(8656002)(36756003)(6916009)(2950100002)(2906002)(76176999)(77096006)(356003)(50226002)(47776003)(8936002)(5660300001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0730;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent;\n\tLANG:en; ", "X-Microsoft-Exchange-Diagnostics": [ "1; BL2FFO11FD049;\n\t1:DqAQ3f3iR8F5l04L7VeO/qj8NTDt9DlDL974kcc4Qny7COqYSJ72T9PB/nOE0rGo7kH3R5GaNaDDscDHGek9EZDpoOEmhLN6qWZv6pfYvzoegC2A0uJ8NnHlAywNekHa2nbSEg7ZjnvvdSVPLLGBfyVy8khsJbZHNOGZP3/oOnsGT3ou/nMy2iWEP+r9TnjmPzm1avEiut36tcdWyNDqVojbxg1gNGQjdPXELLZK5Uls8TEtlGxlI5G7ZxzkmiEWtyMUawTeA8kGC431DbhuMfJ9oI+X41evJSvyQ3cmJdIvsCvBZ0xK4bZP6B7/x2xpPV8GUkT6/3cnA9o7s7SmxiF/YuHB8TAB7FrZZ0KAbZhYVPthUnRCHwc/m6SCaHN+miqPpMTfksOeLB92s2Tv0Ah6ozdY5ZK+nD8PZ5JW5y1dwDZcQP2rYUxr2FB3d7AzpxAmrjthsFi3sPx/BYl0w9bD4QrI7Xj2kjdRYD1laM07Vn1p4b2kni2K68MTFnN74BA+e/JnntZiT9GxmvL8IVqQtILlSmzPT8rddiJyIhfv9iWQCgGbyYVZPGSGoVtX7AXn12A1Z0iY6yYHwFxyD+odv6IqFpQJebcCs5yd1aYD8mMm/91WNsuVxBwnmkCu2BVUqM+5Ddr4rrur1ldGmg==", "1; CY1PR0301MB0730;\n\t3:Jn05JkJu9E7QklVLbMveNEL9A9jMzwMbMRUZsbTfFLeI96opJ12USQnpDrb8DChF1/zW08kAXO2PysWwpiLfjhI+tpuZewOxIMVXmJ0uQ9j2sRJkV08VUgAkai2KmRuF5MYpN5Jv6a8S88vnoJnLkyUzWKMyU1LIQibKy/FE3yux+7dwCd6tFx0mfFvDUV0hGNgtJxxd2G/JPlk6uEy9EPhxR2j/cr5u+0le7BpdIaJx6xP5jRxPts070U9OKdH677+dYKhA8ul1XrO3GD4TfCvNS0uUtKzrT+VYNz+t1pzut20GwDT2LZA7T+XAp5X0u0dgAtWlMAV0iY3Vuvi87ecW4LlhhyvsBEBT26zY7fWNs0K1GESXjNgM/dQgLjRG;\n\t25:DKYoNHfRnCa1nUA5l/jIc0Y3uDA8MlRkzMYOWfyPpsv/ZF8MxanYpG3WiL/B9cCKPDYlpwoAFTLAC0QP7JdplcIR/9tSsatqNVJ0+kfcYXLCmjKMeEwVc9EiwnVaqUAqkuNG4oxHJkMYF5NkoTZtnhNDO+R0dFThTSykjOkZBBPaYJGReYoUQC2sadoubj/pTI3taR+4998rcWgXngxs1fPgMR2WzYAxuZVGZ//0fti4HPwbYCgOPKFeDwPEsVAgg6WL6yxWPRZqqfqxJ7HVcZXMimZwAJ/eKHl8LE1HGJ6D441Ter3RnVUh16xNAqL3W2QmGoflf7nFoeDyKBuQoFFQzyz4aklIeWi7At5+7HY5yLMd1+FS5vggTabXQ8ZeO8pGhCZrnvHetBxvWrhBqqIHU//s8J0tEjvyCCSsJFkse8BknqacDQyLd+YLDxPJpXFwaFEZgjY9K/oalfsuOA==", "1; CY1PR0301MB0730;\n\t31:w6bPQhrU2s9vv+k+q9/G5oK3r+9kVKrmx8WpXrNtHSmknJP1CrkQbt7jTyMJ6rBTzCjTeyLKYQnLoJyO+G0GpE1qkV8xeuJHmXccTWNvHtl9K5n6AOjnZtCboXCCoOat01MmBhJ95r9q5asoEHZMonUG+KaEVt3uop5udPZpSN4t2Cvf7UNFPyjaf+6IDr2BEhJ/JGaza0jnxf02OcJtNZ/vew7PY20BwbnnrIm0p0pznnXH/vjVT3ahk8kuh9FBWcjbDaEX63duUe5e9xynOw==", "1; CY1PR0301MB0730;\n\t4:MFHwGUAUVrikXEcqYb0AZN8pJa2QzcaLCqevoEyrMOxGZOq+SH0CZKBgymq8tU+AmvxlvmnhpdEBdkT46VJDMkoA71WUnYXNZh2nQDR+IshbAWXA+yF090+vRoEPcOExiyBC+cWq2tq6rHazAs0UwiW033hPZ1J3T28QQoMSx7IMGgjmn/Z8RZ7KBtdMWdKaHnKA3T2xF63yNMIKSVcLHzEfLrUGswNiCpX/3CDOztrKDNoopc381KA2vsEhlpGIpfoSMsmzS0XdfsIZxBaFU3Ec2KnrUioacW/Tq4zVF+j2pTV5Xix4Cskl3rVm7rNos22HnxBR3AJZ6ITjCxLzRdbK9jCod7DdbHvJzllqosmSlu9gjF6d2DMG2m0SiR3urZGyC1Po6KaTPBB62sGJO6A00cFo2PRjzLmZBMTN18c4shK7TSn3VghNW7jgDfhb7YDY8whTMAZn9XEszM6IwTomPWB0U3ozg754YHVkArqql0/3yhKTHhdtdqStngfCVrqh7I5dFLlwvkPmAg9asnJdEU/7+iyWN5syDF4g8MjRX3ehhs7zrYRpE2fWB5UsjAx1mY+mEdGqp0lWnXrDMQwaEGQZZCCnkzaWP/mbYS2Ctwul9CR2DH3eNI+K5X+T+/6YcuXVEZ9CE+i1b+aXqhwz1CTf/NwUTNac1BvfKQtnld7U0C3N0bReRDbBmHoeVbofARCGCH7/xYYcLqBPsBDWE50GHnUNbJB2I7j2RM2/OGXEf1oObGXPwVNGhHep", "=?us-ascii?Q?1; CY1PR0301MB0730;\n\t23:RYype66lHFjjG50wg2PEh+3q5oWAkmsd/0YHm9Z?=\n\tJRYmbqhEbebeV52WwK6N8KucOmra8IwSStA/4nFA5skfmX6Z/wNqGqfr88rX+9re8Z0qGBNF3PzdPFWGxlejhtxGyrlJsvzmqGRK8ksLCo7N9jKJ0cPFUsmhNuOxO/DnYV+AOASj4DovE9z9I95XlH5IBH/b/JwgCWO3dXKUsqrtDf6gJ+1R9wOyh+ixj0qHiPsny6LUe7yGBs7/MWmifxC75pFQ4RmMlrSn25vY6Y7TfFXSBUQY+CcFpxQsyX2HIIRhm31WEUNbOaOTBQ1YPIv4E6To3Ual8V1GAiyFbPy3FWG7T13vJ9FWEAZDGcoYU+mXbT1l5hWNNbZtCgoQGmyQKNFvWotPVuix89Ho4R2N5UsHuadDh4OGzTT638Mo1ojGZm0OxAMeXVDzaD2z5nvtp3M2/+Y8QLkz2E/fYyQ99/TGMy3LIl5W4wBVepB94Si5jYn82XIv3Q99dAz1G9H5djRqoX/+n6BjLM7oQSR/ArdK2gJHcgj19dEyxmJJu4hgCF/fV8r9J9UUkBWG6yVuxJVrk6GrZ+BUT9YpycZMZjTxDZ12CqZldmORSdo72Bh+lb0Gdv+i8P5qAIBsrKdP52Z8+qMPmu+p8ayAPHjxoO/zhI7HemHcy5v6bQs286RYecbriMPsjAZWbbE/kBVmt3EaTPU9WpbNzMM2dGxjJeYmfrPxNEg43Ftt/LwCkY31uN41CZWsAwBpHYH/gRnLJUMeJn98YoQuJt8t00E6zMqqta5/wbKYk8RbzlNvSHGa+1AFxZkb37hz6LHwk29UVJiX7fYuUg86unb635hEhcE1lWVj/h0jJ+eByFdSesrvev3S7iRRgfFHlirmMr+G0XEQd9pfWnVoLm/TAhbL344SYMZwkfAlMxgAGVnVAvfphHCJdtGpcqB9WfCGOd8cMuxu1E3nxVf1t8MdTXgnaHzsG0EHEaLVnPNdyvOSMteVlRA4+XjSZgH8jp1QDjZR+ESuaABUqPfwg44p23u1L6+YWsSzRF/doTr4tyDCP/nlLV2qhGv7R6Ve52mAT+Q6v1mg4G5L+AV0xOnwhLfCffVo1h8PlCQOIpFXg/MiBIRr1JL2vp9WLiJj/pBJfPtI5VRMqmj1ffI3zoX5ANA90SXG+Uu2ml39QNEefYmpCYvXNzV2HIOqMD3M8FK6sbwwMcBhRkQKlLu+ubyPzI2ldPyk7RWnvL2og63wiWmElnsIXNB1HF5/svzJZanuyXie/", "1; CY1PR0301MB0730;\n\t6:TWc4/tyFWGGT8kMVjoYcEA/F5Yo9LtSfMz/v9PefFe5gR6fiioOeIOlber8K6qIclq8oruVAt30Eo6hJb5FSVrU4TCjSb5+1Rx3RnJDGU8bd04+WgeQMJ1EhQ3dDDaq8815IsNS4QKt/jZoFJJmG8/bCU2zPrHOLwGzlNPQX1Mf8fjtKLlO/u/J2SNfyzNFnr265V46Vk4unh2QQ8ETki+BPqADt2HSKj+Kh12pRDPYBa0k3qIR6XUhxYVyUGmT/pQA3jMkL0k51bTSdTAMtqC0TwwZxeDhCuE7sqelmQ/8gtlVH8I6rfPyVyk9EiFONeQlfO1hhN9zxZLolnByNn7nwzxzuEZe8Roc93RfMT2nl8cWvt7qC9uROqU5TE2vv3Zo3B4YiaxJze1++E2eKi1IK2a53Il8N/I6X+JySGjM=;\n\t5:FHywj5Y8MMq0rswOh7UAVTM+sy0U6Bw7N1Ma0zSk96NdXazGJukwcoP9GvdXV6pjo9QMohKin7IXKCzR40lpq+p+uuLn7Roey2EY0SoBHQBSV6u99mIWnYfyEUaK26mTcxGBN2ibg51zx4WS/xpjXWbLZC5BF80MbW5ftg3/4jx3QeZS9aXvwECWkc4QXtDB;\n\t24:jti4jpcA2NdFktszdERhTsDE3Y7pCo5zZx2ICIa6kctokc47SUJrAJkz46tSoFz3wSvJ09LNdwSrkwhHawplX1cfp+Oxq6okh1QybGb4Abs=", "1; CY1PR0301MB0730;\n\t7:mNB/LQVZRA2lCJpDelJfXm0x7pIKCMk3zd2AIcpP4UKMW3eryDeMb74TC851Ze7DsYyg676tXxAVOq1eNZwojDszymm03rhzw8PauqaWQpRCgomNQgIFCF5igu4bV7baoVgiZ48xD2uzQmhGZ8jGaXuFggfdw1fZFBbKuOmSndTMXOUQwt9jsZ/GfaVG42LFMThu6QRlPHu4wi3+eUaJZBsEahYwbJ1Ii/kAMjnwD+BVPH7C9u/7+cUsfhehFVmsRz4NZZFA3PwUgIIjt/35XiF5p5guxBvt7nicO0GfTNCKcgF1bb8fDVv1wKO8hoRXbuoMPq33WmDSx093hKhDlA==" ], "MIME-Version": "1.0", "Content-Type": "text/plain", "X-MS-Office365-Filtering-Correlation-Id": "6d811e17-64a4-4b40-b13e-08d46204fd75", "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:CY1PR0301MB0730; ", "X-Microsoft-Antispam-PRVS": "<CY1PR0301MB07301C39DD2644C7BF4B1704892B0@CY1PR0301MB0730.namprd03.prod.outlook.com>", "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);", "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6095060)(601004)(2401047)(8121501046)(5005006)(13015025)(13017025)(13024025)(13018025)(13023025)(10201501046)(3002001)(6055026)(6096035)(20161123559025)(20161123565025)(20161123561025)(20161123556025)(20161123563025);\n\tSRVR:CY1PR0301MB0730; BCL:0; PCL:0; RULEID:(400006);\n\tSRVR:CY1PR0301MB0730; ", "X-Forefront-PRVS": "0235CBE7D0", "SpamDiagnosticOutput": "1:99", "SpamDiagnosticMetadata": "NSPM", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Mar 2017 07:14:53.6106\n\t(UTC)", "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY1PR0301MB0730", "Subject": "[dpdk-dev] [PATCHv8 35/46] net/dpaa2: link status update", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n doc/guides/nics/features/dpaa2.ini | 1 +\n drivers/net/dpaa2/dpaa2_ethdev.c | 107 +++++++++++++++++++++++++++++++++++++\n 2 files changed, 108 insertions(+)", "diff": "diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini\nindex 0746d4b..0660cab 100644\n--- a/doc/guides/nics/features/dpaa2.ini\n+++ b/doc/guides/nics/features/dpaa2.ini\n@@ -4,6 +4,7 @@\n ; Refer to default.ini for the full list of available PMD features.\n ;\n [Features]\n+Link status = Y\n Queue start/stop = Y\n MTU update = Y\n Promiscuous mode = Y\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex c4131e1..14b9654 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -54,6 +54,58 @@\n \n static struct rte_dpaa2_driver rte_dpaa2_pmd;\n \n+/**\n+ * Atomically reads the link status information from global\n+ * structure rte_eth_dev.\n+ *\n+ * @param dev\n+ * - Pointer to the structure rte_eth_dev to read from.\n+ * - Pointer to the buffer to be saved with the link status.\n+ *\n+ * @return\n+ * - On success, zero.\n+ * - On failure, negative value.\n+ */\n+static inline int\n+dpaa2_dev_atomic_read_link_status(struct rte_eth_dev *dev,\n+\t\t\t\t struct rte_eth_link *link)\n+{\n+\tstruct rte_eth_link *dst = link;\n+\tstruct rte_eth_link *src = &dev->data->dev_link;\n+\n+\tif (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,\n+\t\t\t\t*(uint64_t *)src) == 0)\n+\t\treturn -1;\n+\n+\treturn 0;\n+}\n+\n+/**\n+ * Atomically writes the link status information into global\n+ * structure rte_eth_dev.\n+ *\n+ * @param dev\n+ * - Pointer to the structure rte_eth_dev to read from.\n+ * - Pointer to the buffer to be saved with the link status.\n+ *\n+ * @return\n+ * - On success, zero.\n+ * - On failure, negative value.\n+ */\n+static inline int\n+dpaa2_dev_atomic_write_link_status(struct rte_eth_dev *dev,\n+\t\t\t\t struct rte_eth_link *link)\n+{\n+\tstruct rte_eth_link *dst = &dev->data->dev_link;\n+\tstruct rte_eth_link *src = link;\n+\n+\tif (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,\n+\t\t\t\t*(uint64_t *)src) == 0)\n+\t\treturn -1;\n+\n+\treturn 0;\n+}\n+\n static void\n dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n {\n@@ -430,6 +482,7 @@\n \tstruct dpaa2_dev_priv *priv = dev->data->dev_private;\n \tstruct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;\n \tint ret;\n+\tstruct rte_eth_link link;\n \n \tPMD_INIT_FUNC_TRACE();\n \n@@ -439,6 +492,10 @@\n \t\t\t ret, priv->hw_id);\n \t\treturn;\n \t}\n+\n+\t/* clear the recorded link status */\n+\tmemset(&link, 0, sizeof(link));\n+\tdpaa2_dev_atomic_write_link_status(dev, &link);\n }\n \n static void\n@@ -531,6 +588,55 @@\n \treturn 0;\n }\n \n+/* return 0 means link status changed, -1 means not changed */\n+static int\n+dpaa2_dev_link_update(struct rte_eth_dev *dev,\n+\t\t\tint wait_to_complete __rte_unused)\n+{\n+\tint ret;\n+\tstruct dpaa2_dev_priv *priv = dev->data->dev_private;\n+\tstruct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;\n+\tstruct rte_eth_link link, old;\n+\tstruct dpni_link_state state = {0};\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tif (dpni == NULL) {\n+\t\tRTE_LOG(ERR, PMD, \"error : dpni is NULL\");\n+\t\treturn 0;\n+\t}\n+\tmemset(&old, 0, sizeof(old));\n+\tdpaa2_dev_atomic_read_link_status(dev, &old);\n+\n+\tret = dpni_get_link_state(dpni, CMD_PRI_LOW, priv->token, &state);\n+\tif (ret < 0) {\n+\t\tRTE_LOG(ERR, PMD, \"error: dpni_get_link_state %d\", ret);\n+\t\treturn -1;\n+\t}\n+\n+\tif ((old.link_status == state.up) && (old.link_speed == state.rate)) {\n+\t\tRTE_LOG(DEBUG, PMD, \"No change in status\\n\");\n+\t\treturn -1;\n+\t}\n+\n+\tmemset(&link, 0, sizeof(struct rte_eth_link));\n+\tlink.link_status = state.up;\n+\tlink.link_speed = state.rate;\n+\n+\tif (state.options & DPNI_LINK_OPT_HALF_DUPLEX)\n+\t\tlink.link_duplex = ETH_LINK_HALF_DUPLEX;\n+\telse\n+\t\tlink.link_duplex = ETH_LINK_FULL_DUPLEX;\n+\n+\tdpaa2_dev_atomic_write_link_status(dev, &link);\n+\n+\tif (link.link_status)\n+\t\tPMD_DRV_LOG(INFO, \"Port %d Link is Up\\n\", dev->data->port_id);\n+\telse\n+\t\tPMD_DRV_LOG(INFO, \"Port %d Link is Down\\n\", dev->data->port_id);\n+\treturn 0;\n+}\n+\n static struct eth_dev_ops dpaa2_ethdev_ops = {\n \t.dev_configure\t = dpaa2_eth_dev_configure,\n \t.dev_start\t = dpaa2_dev_start,\n@@ -538,6 +644,7 @@\n \t.dev_close\t = dpaa2_dev_close,\n \t.promiscuous_enable = dpaa2_dev_promiscuous_enable,\n \t.promiscuous_disable = dpaa2_dev_promiscuous_disable,\n+\t.link_update\t = dpaa2_dev_link_update,\n \t.dev_infos_get\t = dpaa2_dev_info_get,\n \t.dev_supported_ptypes_get = dpaa2_supported_ptypes_get,\n \t.mtu_set = dpaa2_dev_mtu_set,\n", "prefixes": [ "dpdk-dev", "PATCHv8", "35/46" ] }{ "id": 21201, "url": "