get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/19814/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 19814,
    "url": "http://patches.dpdk.org/api/patches/19814/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1484832240-2048-30-git-send-email-hemant.agrawal@nxp.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1484832240-2048-30-git-send-email-hemant.agrawal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1484832240-2048-30-git-send-email-hemant.agrawal@nxp.com",
    "date": "2017-01-19T13:23:54",
    "name": "[dpdk-dev,PATCHv5,27/33] net/dpaa2: link status update",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b3185a7a5d12d0814cfa33cc4abaf357210cba2d",
    "submitter": {
        "id": 477,
        "url": "http://patches.dpdk.org/api/people/477/?format=api",
        "name": "Hemant Agrawal",
        "email": "hemant.agrawal@nxp.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1484832240-2048-30-git-send-email-hemant.agrawal@nxp.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/19814/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/19814/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 CB10AFAED;\n\tThu, 19 Jan 2017 14:26:17 +0100 (CET)",
            "from NAM03-CO1-obe.outbound.protection.outlook.com\n\t(mail-co1nam03on0049.outbound.protection.outlook.com [104.47.40.49])\n\tby dpdk.org (Postfix) with ESMTP id 232B9FA41\n\tfor <dev@dpdk.org>; Thu, 19 Jan 2017 14:25:44 +0100 (CET)",
            "from BN6PR03CA0014.namprd03.prod.outlook.com (10.168.230.152) by\n\tMWHPR03MB2479.namprd03.prod.outlook.com (10.169.200.149) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.860.13; Thu, 19 Jan 2017 13:25:43 +0000",
            "from BY2FFO11FD029.protection.gbl (2a01:111:f400:7c0c::150) by\n\tBN6PR03CA0014.outlook.office365.com (2603:10b6:404:23::24) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via\n\tFrontend Transport; Thu, 19 Jan 2017 13:25:43 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBY2FFO11FD029.mail.protection.outlook.com (10.1.14.212) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8\n\tvia Frontend Transport; Thu, 19 Jan 2017 13:25:42 +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\tv0JDO4f5015351; Thu, 19 Jan 2017 06:25:39 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com;\n\tnxp.com; \n\tdkim=none (message not signed) header.d=none;",
        "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>,\n\tHemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Thu, 19 Jan 2017 18:53:54 +0530",
        "Message-ID": "<1484832240-2048-30-git-send-email-hemant.agrawal@nxp.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1484832240-2048-1-git-send-email-hemant.agrawal@nxp.com>",
        "References": "<1484679174-4174-1-git-send-email-hemant.agrawal@nxp.com>\n\t<1484832240-2048-1-git-send-email-hemant.agrawal@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131293059423221628;\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)(336005)(7916002)(39850400002)(39400400002)(39410400002)(39450400003)(39380400002)(39840400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(97736004)(8656002)(54906002)(2906002)(4326007)(50226002)(47776003)(105606002)(68736007)(36756003)(189998001)(86362001)(8936002)(53936002)(92566002)(85426001)(8676002)(81156014)(81166006)(76176999)(50986999)(5003940100001)(104016004)(6916009)(6666003)(356003)(5660300001)(2950100002)(2351001)(106466001)(77096006)(305945005)(33646002)(50466002)(15650500001)(110136003)(48376002)(38730400001)(626004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2479;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BY2FFO11FD029;\n\t1:uOVSkywBL27DUpnuqWNu665KkinQcRWEUpymwtHe3GyxCnJyNtpht2S3tbaQa8ey1sc48roSCnjcgaEfk5O7Q0C/S4aiH+6R5qmerdylgIE8e3ICPaIbCAf9yWG8X+MXTCZUZ7IXXBjGQnQv4rtVBscnpVjS7Mrk9Uu/N1qeJzgvKat1lZ27ZbOo59OngBkmQWzyRacGRQXlkJcwOpJnMXGwm/xa94vMdncv/DbRYf7V7oQF+4qtH3RkVcb9p6+XxeELnCvPT75nc7zabiPcLx5msAEI2UFKCpmrANGsPBfmSdUZImqHer7BEpEfg2AmsrwQ9CA4S20Yw1fwq1wDAU8YTAhKXPIf+htP7xOANee/1wX2m9rONC+CcXTdgEdYP8cEJw+NaqhPHRttIvYF+APn9VEQNiZFc2iOMK4N4TjhsJ7vzMWp8s7ldOry75Me316VfumbGdoswTDxfRzew5l9CR7KfWEQ+XBUuye7LOFiyzT07WwELlNbhcYxkkNeqbPOV1XwTCEpxp6mPtvjd+SFACL7vZG20u3oc/3ae8pxB9n14HNO3t3shjQUdOxX5rwzIi6Bvt79ZgVPOuo5zriX4Z6+e4naPdJ3Ui4GN+p2RXpnqCatwwgIRBUcGOuluNf+IkgzJp8o9uKyjTAxXMefamKUxyDeQ6gX3Fel9wafMOaNZxhQFy/aFcuvIfoqHefpSwziUgEtQBIUv44Fx4KgRJJ9exJebHUs5Knei+lqg+72Vk9FEqrzBG6N4fVC",
            "1; MWHPR03MB2479;\n\t3:/hAmN9uHxu8YpyGJnEVozVuLbGr4w4dCsuUbXoVNrbZyGZKHRdLF4zMxQ9Fg//TrHzxodobjqw6d//H+KPVTLRVeoyF+XCked9GVFCLTbaLJubnjMW/c3zKUhydbCdrEzPJlymZXY7IyryzRHWNwa3nt9OYOFKQFHaFmwbPOG153qRdP9g8ZMgPKqCt5lTFFlZfmmoohAdnbm3FXEeJ/WgPTFhDGRLc2DAxGcL05i1bOkr8NJ9FIxrn1+Pf4pnwA+zMnwMnpl19XJ7bc5xVtwJbdSRaMinbdEhezlM/P1y16ZZ+gpsih8IJT+OZU9cAJ7xDf0kNoOffSu3G2UbeKGhqCLTBlKAeez+CWO/93Xd13rpLS37EdyaOJJqWZQSVR;\n\t25:4Vq+SWLeZkhKY3yu57vfN9slumBkRRVpknprE8TVmwtPM5EFRaL18aO7DXhTW+Vh86AGFlggea2KDoZxEhuq21NVgxOM+P1OqmF534H3kloYCCuFdBV8FMmbQJPdbV8p/IUyw+Dgd47ap8X/G/CubcrePjUPpznv9sMV6VfIqW3BjO3NQTGVHrHwMl+ZBDW38l7u0MQ3x2pTK1FfNKv1jsUUCxR3AFp60BLbhltMEignvuBvAKPOQgO4ZSvbXgXl6fcvihqgtFJBG3FdnLhZX9LIVO/N2MJyCaSn3zxfI7xik/zFvcm+mlbN7hXpx9QiTNu1US1qrge7Ifcty1o+L78ENg965iz+NejeKt1x3jskAGjkYZzMPu2VRf6ToxGWE11o1To58ptBdDEXSdCpszMTZN/ikJ8+63smxYK0qroFxUFpXokFcH5u736ET17tuB1LVGe5WRXpEe4ypzWNFg==",
            "1; MWHPR03MB2479;\n\t31:OapdbwZVQzQvkqjT6o0EAyTAx4zHYGuMeQk3bGMEyu3YoTx/PKfr/yfbPNFM1Y5J44BsNc24o37dL9dgwGqqVkszuNpf2khN2sPXeHj8zDUu4LLNSgf6ZFcfpdKM+LfQpT5+oMlP+8mbrZ4po+XxCnm/Sx0L/GgGnj6YsFCjxeUS3QbCCJDQot/XrfelfaFWDKZgPx5yhoeFNGAo38WPtknrlOCK99H5meErPBdjR4tZCo3oJ1LkAi0C6qhx5vxN1avM3sLSfxQ5+0Cx6FpeOA==",
            "1; MWHPR03MB2479;\n\t4:ZNAmbxpMgezNMWUYsGX61OmKYSTTppoRMe6f5bxjrhkL4g76i7DuRMPi4NF0GzkjlDQjye8AdPqF7h9+5xQXbLdcOD6lNqUErl9rnNm2q6nfDrZLdnPtpMGz8VNE8Y58I0w7CoNR9Vu72IhB37G5Ki/WPveEesNRUAw2oQ3v2YdGM2pN3HZ3k30jn7prdzGZfSAZY3hM+4wRf2LQ/P+/Us7UoRV7qx3KSGrgHtP0DyTFFHWX2h0I3wKIliFjuDWzRoXHBztsHzupkawJ8H1eyMxIVocZuszcvVS5wpcaAKHl9dO6E4V/0qr8/bObouiMWbLFPM8IcQ43XXMsr72IcdsX6BJLL+kY7Wo075Qo+ZDuT1Lb24kHHTS/baBhHOn7giFmAu2anOB0xRdYQVIoMmCTlyXKJ7piTXOATH41mXDDZbvbDwSV2T6s1GKMeglt+BdUXcznbrZDZCD3siVwkIJ5B0IdDIh2dF+2cshG4XKXi9txHw8bsvnJVT6IbrbBGx0o+Z+drI0UEE5NmMLz/8kJiqpXLocbrgbwFszDRqCey4caWMsKWT1aVwNCv1JWt6P7lrlNcX57LkbiJIaPkrdbu+Hmo6tpnfcwkFzfs9KDXzuV95Vfv7v0UqfnWTwAZlYhGo3/cFHvCMcWvwp1y1ZqzgdyNVu5ZTzzcs9czA1Fwyo7ZzoAMxAM4hghGlpOotZtj6VIkJ5zZ9xFtSkS6PFsswA8XFJfHh9bzvRsXY7dAakEJTWeUpDFyK3P7Y2h",
            "=?us-ascii?Q?1; MWHPR03MB2479;\n\t23:VeZ4X4u7Yb5Qg+7ktp5YA5gP4X/57uCE7hNjhvJt2?=\n\tDDFJmxjLBjI6ART4tMmpe8JNBtzrom0gnOP6+hlpDEwKAyQek6bB4DGu93DawZYmgiuSoT8/c9Qe5udjD5a0NUBhzHhyA5Kab5lulcH07LCT1uu+C2p+6mAKpDCjIMkqweHtD8ddzKUqLN1kTym2Klj1wr7B1gVUPgEzY33soxctYmur4i1FhHlqVHO6UrU8klG/hxVXx2vvqLlKcooHbRZ1R+Q2m2hAmk3IoBBd3EkUUe9iXai9qneMz6TWAvtBSIjvuByF202VuGAS0t0zysDcHAiM42EgSeM1bkDERHv95GE1FRiOhYTCYduqCEvK9mrfWiHbUcqB4j7G9mbjeyjsDuAoYKNWRv7TNeLoCi5f9+YCaMQpoWjsYWOorkbAmsGgbqx4dPr7pr5Hdd59qCSgXQ8Z57qi795Bpl7XgMEvGsgiGjwtl7oGS41ykXNF1ngIX+G2LjfNe5mVcToIwMcDShv4xNzuhyfdGMrxWaZLjZwvfk6iPVZ6EODF2ysFZR8pI+CulL6CmvZndEPIdnBOXTvNiYQGhVixtSnaYgmWaGJwfRJUp2yDd08fVWwEEVODeyp0kbESZ1e/H2a8XzLEQIKUEZK5Qy81UcVdMq2InmlT8NjnJ5YXa+ZFl/xOMB73e2kQaUOpeE9u3vWk9L8BUWjh8Vu1dQZnmrL/9xEDqg9reaJZPRMmz6xmYaoG/h/NPEGTupW7WAmSvT9pT1xkI1EjBuUCJh8PFQqjosrSoIjG8qwVZklS8gW+OUv7vqS4bxxpfETReKUgxNyvUE+6Z4/x7e1p/U1T9MhlOW52Lc12KwI0Oe+439H5Eirb6+AinPlQ0wSSOr2YVce8euyJ3MCEWJm7RoYmTHRnO7I4eju6eg9ulA1s1WeONjQEttt/Ler2b09i6VZm14q7aD2inEMGr9Dc2GjzR6bPWDLwsluTT31uhemuAG1WfIeHbxJjQPOPmvGLTZG0KxGt6N22P7wAW0Mxn1HcXYv+KrAC5vWaaLCiW1/dsJxATOay/vpT2sGtEx7dxpB42Mxq+7J5Mho2mfoPVZIaxATdaRkSgTMPgmOyd7p1obInAbrOblSNr2L7f4TS7vloSNDSjRqc+o7RyrydTP0cslZeU/56T8h/g2l+IeBUKP0XooaNWXOT130spN5z6NEE7oTKRgDI/8ahpGTSTe1L09P+RnXTRMixveZbMbbKErEVOgp/eD0vSUHvaD81+wAr2PX3zID2vMyS/XInIA1CXVvcKsNMXg4F6GcaKGQ+oBFDGyyFt/12c5zbNfetFzd241JgPz8",
            "1; MWHPR03MB2479;\n\t6:t7H/F2SDNcp/VKSwpHxASgP1LfgEZkH37W1/DqpJy3dBIJ6XNLr7L6qC9Zt8HLfFz5s9dqc+pykbzTIvB1JT8hcKHtXmuL66wSOkQkYB0BE/wbCEMTURWEU8l/YxedzYgl9yssAO6BbKxOpJraYmTkjuDeXtLSKZYunl+yEVD0Ss0Qi3a/2U54E12bO4MJOc4XJh0Gabal92wCR6C4FWHhZs3eD21Uajw9o9IQ/8p0DPvuqIjOuAZoke2bVDk0jbYBX6xa1zfFfQxmT+VIT+WrO3gsHIgl6mLxDL3Qim4ozoonAadXFu4ABgxpb01ACJmIHgVluiJhlxIDJXFrUUuBb0RBaWDlqn6QQG07Ez4ojtE3r06DfsJUNl6ea97vMRmvVfwlps6ebPzZDGHxw3ySvy1hOTiShXbIELvWVUoFrJmdedJnXdXijNDk1EYV5h;\n\t5:x4q1QWm+qII+mnGGoABjIVFcuT9P2CRvH/SBDDrRUEGsnnwgFlh1wgeFy37qrtf/u0VAY3YD/p9/bxvYI6AEum2H/R+TmfB7WM+elawWj2LRwzgNtRSfb2VLNJkVRQabNW11dCWeqlRmGParg9CPdMIaqcSvp+fzG7dYB7M26Y/qcj+eVEtGEfi6bd1GMWr6;\n\t24:+Godg7Pgw2OB0mFTgvwZp75O3L6b1wLBD3Xvc4NPYiIFiFN0L5/ZA8NqBM5eL8/G87mqOTl17LaI4yWNOkc25w45cwiIvkjjIJOKq5anuPg=",
            "1; MWHPR03MB2479;\n\t7:13eNR8o0/X8WQHMPufttQl/mvQ2PvD+Rl1oVCYlryQSzEO0ux8tfY37rCWhGLIbsKe2gZexhBj5pMfAQ3TUqXWYAWfSb71wBNNjz3gfFklbpjpMc+Tz3ZfiLN7LNU23FId+mw+y0TbVhaKNF14VjTB4qCO+cA9dNzEu8CPh4KKco0bSSQvfLhjQq30kCrgwuJQcqz5P5Ds+0P23lwTqTkEx6NBuZ6V3x9UwGDxCXHdSPbuZ2B3XnoHYgZ2xdEenyVL+IR7A1FN5xTva5Lih9mldkq2kKiE5axbjnfSDXjAAW5sBv8t8i0Tp9tIi3HXdsAW0leoBEuaCQlcyQ57IIsABhECcUeKoBxoMn2p7mFKgadDq6AugLXwM/hK41z6WuOol1sY2W690pV3d0oZBhCZtEJw6vtZCnenAQeJrNnpUygcPd8H9jVvT6LBUZTSLtHklSdfTL0xPV6bGIDqKdwA=="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "7f5cd3d2-ecf3-49da-377c-08d4406eaadc",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:MWHPR03MB2479; ",
        "X-Microsoft-Antispam-PRVS": "<MWHPR03MB24793609E6CF6D0FD3DCA70C897E0@MWHPR03MB2479.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)(13015025)(13017025)(13023025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123559025)(20161123561025);\n\tSRVR:MWHPR03MB2479; BCL:0; PCL:0; RULEID:(400006); SRVR:MWHPR03MB2479;",
        "X-Forefront-PRVS": "0192E812EC",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "19 Jan 2017 13:25:42.1193\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": "MWHPR03MB2479",
        "Subject": "[dpdk-dev] [PATCHv5 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 <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 cbcf806..70264b6 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -55,6 +55,58 @@\n /* Name of the DPAA2 Net PMD */\n static const char *drivername = \"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@@ -431,6 +483,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@@ -440,6 +493,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@@ -532,6 +589,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@@ -539,6 +645,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",
        "PATCHv5",
        "27/33"
    ]
}