get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 23752,
    "url": "https://patches.dpdk.org/api/patches/23752/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1492616268-6307-8-git-send-email-akhil.goyal@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": "<1492616268-6307-8-git-send-email-akhil.goyal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1492616268-6307-8-git-send-email-akhil.goyal@nxp.com",
    "date": "2017-04-19T15:37:42",
    "name": "[dpdk-dev,v8,07/13] crypto/dpaa2_sec: add basic crypto operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "a859f35500433a448c4eb081d14aa375ee62428e",
    "submitter": {
        "id": 517,
        "url": "https://patches.dpdk.org/api/people/517/?format=api",
        "name": "Akhil Goyal",
        "email": "akhil.goyal@nxp.com"
    },
    "delegate": {
        "id": 22,
        "url": "https://patches.dpdk.org/api/users/22/?format=api",
        "username": "pdelarag",
        "first_name": "Pablo",
        "last_name": "de Lara Guarch",
        "email": "pablo.de.lara.guarch@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1492616268-6307-8-git-send-email-akhil.goyal@nxp.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/23752/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/23752/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 7215369D4;\n\tWed, 19 Apr 2017 17:38:34 +0200 (CEST)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0070.outbound.protection.outlook.com [104.47.32.70])\n\tby dpdk.org (Postfix) with ESMTP id A22BA58EC\n\tfor <dev@dpdk.org>; Wed, 19 Apr 2017 17:38:17 +0200 (CEST)",
            "from BN6PR03CA0070.namprd03.prod.outlook.com (10.173.137.32) by\n\tBN1PR03MB251.namprd03.prod.outlook.com (10.255.200.18) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1034.10; Wed, 19 Apr 2017 15:38:17 +0000",
            "from BY2FFO11FD025.protection.gbl (2a01:111:f400:7c0c::147) by\n\tBN6PR03CA0070.outlook.office365.com (2603:10b6:404:4c::32) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10\n\tvia Frontend Transport; Wed, 19 Apr 2017 15:38:16 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBY2FFO11FD025.mail.protection.outlook.com (10.1.15.214) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14\n\tvia Frontend Transport; Wed, 19 Apr 2017 15:38:15 +0000",
            "from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net\n\t[10.232.134.28])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv3JFbvDU023764; Wed, 19 Apr 2017 08:38:13 -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;",
        "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": "<akhil.goyal@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<declan.doherty@intel.com>, <john.mcnamara@intel.com>,\n\t<hemant.agrawal@nxp.com>",
        "Date": "Wed, 19 Apr 2017 21:07:42 +0530",
        "Message-ID": "<1492616268-6307-8-git-send-email-akhil.goyal@nxp.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1492616268-6307-1-git-send-email-akhil.goyal@nxp.com>",
        "References": "<20170410123108.26305-1-akhil.goyal@nxp.com>\n\t<1492616268-6307-1-git-send-email-akhil.goyal@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131370898961101505;\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)(39450400003)(39850400002)(39410400002)(39400400002)(39380400002)(39860400002)(39840400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(54906002)(2906002)(77096006)(50986999)(76176999)(104016004)(105606002)(2876002)(53936002)(2950100002)(2351001)(6916009)(6666003)(86152003)(81166006)(8676002)(8656002)(106466001)(8936002)(33646002)(48376002)(4326008)(189998001)(47776003)(50466002)(5890100001)(50226002)(85426001)(356003)(38730400002)(305945005)(110136004)(36756003)(5660300001)(575784001)(86362001)(5003940100001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR03MB251;\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; BY2FFO11FD025;\n\t1:s5Ubw42s4celzpunfBYRzb5VPRrn7MaQ7i+ldjJQ21aEaSkcUG9HRcZpIiOnBvTtEyVrbj8wV0zaxU8LgB4WGjSRioDTSy2k6/b/Mx5OGawwf5slNr/u7DVLbuDU7Db2XzzWZUDe7cRJf+pRoxXDFXUGyTbktJewGHfejkDtUFYbT4sRUrpdP2a2ibEtHqA+XglZSBHQ2ozKZ+wxNNrlrmgBzwv6kDhNsrlGkXGySZ78JPBlUxNwN0PV9SohmoilH7C1R54z7DYUbCjp+Dp+uosvbnomFUDkC4teE5uaKtRg2/f53FCeJev9BT+0DPDYLmFDVAl07VSFhsHt4MYz170xwIHrvh7shz0CPQLRK9kLOFjbb+j6JUHlRe7qGAriQjjfaw0nv2eKQ3ld2feNPUeDhxkMIPZkKlH0AXyRUKyMqZEvBM3BfuVDbeY+2PM+pknJV9L9k5DW5gXw34l0HSHwZLiBxPE3TTJCtPySHDDaY7trNfyjJGRvLzG1HN5ITBZra9XHSrVvfSk88BASgUB1VHpXUpPSWgxrpeOC7Hi9fhla+okOJEmoIQtMQfAV/Edfwo2CcMQy0lwi5jkbF35Af2iwBAn01UKk4Nch/BlpMUuU4o4Umb3cvxGTAi4nYPpny7ogisLyLjGYAegmT+CXm+9b6X9Js9rLCC05ond6Qae+15kQvZ9wYYerOxMLxPd0nJhVPulFJ5S60B5A/tFQX5YD0Q0+aiDduG+RkxZHkdj0SEdevgTOD8rLHemB+9tU/CV382HOWV5KD0DWHQ==",
            "1; BN1PR03MB251;\n\t3:6okSLGnZM+JsNLke3Tmjs4Clsz3HNsKWyV34X0yCJwVMPsOmZ5UACn+i1ED2fNppIDPbEzBC/ASwpVejVLSDKf91Suj9sI3t+Pe32+ZQQyoWjeHetPzLA/uJSYDsdzwzlWb5C1+vaU9bhfNSRREA82eYI1GcJmbgBxz6WcDjzNAx3s1O3uaUuD/eT4x3soMJaEw+JQzVp/RxJI0iETxTUqGILwsmGOYbAHWsVEVjQtjyAdbtFJR6tYqpJqVQbmcHv36rT9dPadFQaSG8OwnwPk+X7pUEOwJyTF6o6fo1nL5eweMdtfpprgl/vK7BYIzVXpbnNmHIiZRD+9ZsQcsy6EYtloXSmNC+4WitjmUkJ5LXBsHUJYXFjd5wT3iiAIPvD6fFNO5IePJo6lYeeGO3e3a0WFFgdewiPu6ReDYayGyP8bQ+NGuIRgJmnnXfO5sz;\n\t25:c3mOTpasp/T/4t8O+gbinPfXMxB+MJrrz0/aRdpxYw6DQp9tAX7vtfIAmBb6+wUotiB8QZDXJy/jBcXK1QQYtOHms3pUHJ/PA1NiKWFdJyHmtm9FfSpUZ6uxz9b0HmFZZWZ9Hv2Ul5JZZRecht8Vz6P5MlGRohT6qBEk56Qc0TwD6X3QZu0R09hu4Kp1ihEG8+m4bpOdhjsq7ewqjc8ugELWqJ7ZcuiP3iY6gxmAYnhxgHkw+KQ8ssP5WR01/xUnKaWa1nXOHjh3NfvEnkleM+YWHJ9PNREfNjg9WoBVzaLjLFGxrnl5DrUao+zCTQ5oL4epHRdHIIkLRgSIA6XrfxKvNm40Fj78C7q5xTqC10U5ib2pcMqJrxJ4Zdv87Q/R1ZfSMxXQKEUm8Zv0Yc+zIIlbsQUeAftFrWJgvwkkfy2Us2Eo67Wz/pzc1DiW6UF7wMbnzxuf77vboQA6rb8Avg==",
            "1; BN1PR03MB251;\n\t31:dy+bsVvww/KjHTI7ivthBnG8Ysajs6iNnnBCBoHQrcRamAXYvFGCgtW51iKwnJXcDJE9IYi3TaJ0ON2IoZRNCZ1d39c4zBjdApAPtMOlaDuyw6uwfexlQslx1oR5nf+gm+mxE9j8NCZkKSr+dFvi/cAwUQb2meAeEXdqd0XLyl3P8VdQ7NwrmfXpc4biDBlxkg/4LLrno+cEcxUavKGhzJ+PGq+va6cXrDAXqDkI7jG/UuWqrDw+Yf/dYlrRm6rDcvdIqfxDA8I/TNXx1ZFgcQ==",
            "1; BN1PR03MB251;\n\t4:Rv1zhAyBoH7cMVDYKIUJebJZ7gS32Q3GpPMXMsrwDjcsI0y6eFr/zcRtEiKlcFjIgQb7GcrDlruh+twuXrSG8fbX63FpU1Hql2p/l6FvKyH0m9LCvr2VRmRGoqHC8inqlcBKE4WHUYmzKb8K/qlB9Qo/an3q5AX0sHQNAam011NPNufcv7cvqED5vbBzYxpqP+o0Ii75rsM/7nuPXUiQWeJshFl3cmO7Kgf+15d3PXLG6ytHKM5SgIyAl58i/2dwSNBWet1AfOqWPgU1G0TPNMkd6aaUmN0RNyJo6ZpoN/AuUsorAcGx7bFozArLuiEmJiw/Wa5UiRkuGQmWvNzyBc58vfrflBSdlpH+ZAnZOrmHV02hPl4fV4z/Vlt3GrjoyXooVkjAeRAeRFeH6/m1fxnSEH7S9T1WweTMC6UtyQ2V9dXxLBVYuf+My90tP7w4I/MT6WSCzWX/2hHUFk68CdEVdAL+xC9iFEHhPSeWC962GQzAWNeG+LlR97mo9K8Uvxbm8x9FkX3QmuTVk/xkBsuqfZRutVeiDtDMqIF8BHDmxGB+iJbWPwPpC4xPeCNbF7jVdZ/yEw1vpsC6b8vil2CW+uTm6zP9ccflZRLQLoIRTNtc60Js2DzGJSgVngr8VP0k/hXZcA8yjmGdXzS4hWF9OVwJdEHhC/TeJryA1eQ7GveKSCmHiQak5WZYiMdiUXERnDKsbePZ5VURGpx4ha0CNG8tfAF9fRUn+E6S5T7dFoLfJb+EYC5GOZSsrvDxjZ+2La0RXBSfOTLBP+9gwPVeKvQPLP7kJQf1+v2X6DQLKcrQ6GF5mhxQKfLiuN1+fDVnForMZOlSvzF4To2+2rXNsoPM5O0MB4nrAxKrYvxhKQJL2JYYQ5LCicf4Zj8tlp7OVLWiN90358jsUpqjBA==",
            "=?us-ascii?Q?1; BN1PR03MB251;\n\t23:Sg8xkbcLnP67RtcluM168yMOSAxHBNhyBqHvzT84q7?=\n\txDpcQY9VuwyUWVDYG9ieftDv3S4Fj6Dm0GxnUDEqcb62CIgpa/Cl/RZkigVG0VrJam4fJJ4Y5wPL2HoPpI2hpzqrA4bJCaSDFx97IlVLSVhmspXj8hL10hlqD0E48TMTinRXiuVGMRbZwKANCYKh4pbIkco2jYuURx68UDMJugeGhgBavu+sMogtw8dxNKYCdUUuQbc4n2XhgvyLn10FjL0sMn9olkRYaBkuDTrG64IV4Q5pJsty3VBaweCYDs0lLx1v0rkUxjER2nZOnnjB3NEyiy9novxDhUSWxr+YeHHga07A7/MqL4f73YH6MCR3OAdDi0EiXJt6sajilZbahWGgvm65pAajCwQKhaYCy2uwpMqyLrA4RJjBsKXdsepYmWaELKqPYXDcZKOz698FqCV9m5/P+55uNLb01rDPPMyOlKFOtYqTTJjVHnj2yp+fJBAcBsvK7OjAJINl0ocf7/aPvN+avIdfO3rUPld12jxCP/c/RyO3MiCUWA+6VIz2oVJ3/NM4Fsx0egHhlXerLI+ZsIUQLPERdlaRP5JMrOmZ1b4WVuFt96GzP7lSdzx7/cQ7E+/0YduQTJvKaKaMY5kvZ6WTQMqqrDXbaHsqkmTLb1R6d5tlFVaaIMyv7wBLA3GsoFOnGyBPOuuI1KAPzvuPLtVIHZ4wRBcafI/Yu0MucgRwFdN/u5rJobz/tFeThV6HzdrXgRf+yvYkl2IkhwkcHotxxdQ0yA+YJLoPYwozeLMuNHjSjLptNkHcg1sQB3HLYKR2hvCq/uACy3CZH7HqsEYdaJcwI4kHGdm/vYe6hMT6UGaTjt09EQ4wwmHy+gQr5Fz2DsL9/hFiClHBW61Y6rls82TQW/VXNnTKM5GPSFA6v98iEjEODuTG2cgJyQlGo+w5EfBCs4XI1hAbgTB5NC1WzrqdE3RM2o+S3ieO1GpNlj1py5WlG6ZSmzjz2fm2HtpBDpSEWcj7wWG2esyYxxWhHwRZ9qLHUBDELFupbXXlDF0hPj3uvpAKF9eyMp11ZjkU2fkKYtM/7AHyoxWNf9O+zPra9hV9t06mM+jV4nR4qCTQeJOdJJUvn86TQcav+aO+91HFOFd6krtLVepqXYDU3z7bN/N30D6JIbUqSY6wLGaqmGQ1e9RP8t47Dh2nc59Ji/0W7yGT1ASysogxCjqA8/+64g9mC3UE7+OLOO3QKbD0PRSNWngk2ZqM5Xt1WVewW9GKVrGpt5D6lvhszvIfh/+vHxp/CfB7VArC9zIJL0OHpGERd5EvrWrt4=",
            "1; BN1PR03MB251;\n\t6:E0CSKyFcjQltb8lEtenp7mOBdeo6i3eZHHq7qqnohbUyvFO7WsAPymkBYclFidlOlVRR3A3BI38Y8EVmffGB9ThMujPwsyew5tq0FCSHnlnCvzzZvxLiWR1hRqaWWo0Kf+ShNPhpXPtTlnassEdyS7L2heK6kbakEocBM/bZo9H2aufY9JRGyffg0x9fdEmc1jw/l5PEHaSuHUmc5vIQuKrKq3GvwgN+iNSnahjcg+4ls4fiSEsuSqS8O5iwC4SuH8oTybILmXpnyfu14EbLjyqvS+P5XUrDD8jd1HlG9qoOE2Hhk97+bYAymOygF1eWXVXIkMelwpQZyjWOHBl3z5ZSrqY7L0MPOro43om5S/StjQ/k7UJjwE2/BEeYE0r02R5EkHuegd5o/pu9bPbzo3lAMbdNqjDozEoCsRaGRBAeXKCDbfuT8VoFAumobYJJeTFzDJygZ7boOTS/wZF+q3xOhr95/5Ut4hPsNm5Z0buz7H8zr1SXdU5tSXEY9xJyz9mL6hckLlycgqipdvS0xQ==;\n\t5:ci0dj9OaBukcBdJzjGAZCmBUk4Vgx5h6itBYJ0Xze0w+xbTX2ksIAuFsfw6S15VF4bLfas0a1Eo3NUTuffxYZzyG/JA7J/C3SXVqW8scEDiUu0geblD4Fn0Dqhwu0OypfHxFU+AI3yzQw9tcbM6HQG63MvpxmgLixrnhSDaiKwRjeWikua1d9TDGKh7VFFhW;\n\t24:B9SHys6KRcpIw9SmVa0SRAae/y8gVreCrJONDuU9362MWbRN0lG77OyT2bNzWkO/Ob3LbELwgcnJc4P3AaoxQMwxv6R3m6cTdciXAB5H23U=",
            "1; BN1PR03MB251;\n\t7:BV+UEDzcLH4yG1+cPYYr1zDg12B71AlS5krOEn6QbdPUK1upjKwOKOGGoRxK07uWL4/EskihkUrD4pqayitR4EXxcV2x+lpggZJ1ybMLJWWa7+AV0cOnr8ON1cXuZS91Lw3YkjAHLOU0yAg7+deUnMHj8TJka3brFOAvDZMoPyZsu2UTwUkqSVeqdf+Lg4xEt1JgEMTZqqcjxifvREzU4q+QzKXD70RIbs/jwvdiMb0OeQ+3Fir+8cfxYDeEGnXtrnbizrfpVGbsoH2SI+1LFc4hIM63OX9r/NKf2CnC4cmJztQJZ9zrdp1nq+rGNOSSO5pq8rKlnSpLvgfQGtCXTQ=="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "6d75f579-35f3-4d2d-67c1-08d4873a18ca",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(201703131430075)(201703131517081); SRVR:BN1PR03MB251; ",
        "X-Microsoft-Antispam-PRVS": "<BN1PR03MB251DFD928B40507CAD2F7B4E6180@BN1PR03MB251.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6095135)(601004)(2401047)(13017025)(5005006)(8121501046)(13023025)(13024025)(13015025)(13018025)(93006095)(93001095)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123565025)(20161123556025)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150);\n\tSRVR:BN1PR03MB251; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR03MB251; ",
        "X-Forefront-PRVS": "028256169F",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "19 Apr 2017 15:38:15.7981\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": "BN1PR03MB251",
        "Subject": "[dpdk-dev] [PATCH v8 07/13] crypto/dpaa2_sec: add basic crypto\n\toperations",
        "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": "From: Akhil Goyal <akhil.goyal@nxp.com>\n\nSigned-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\nSigned-off-by: Akhil Goyal <akhil.goyal@nxp.com>\n---\n drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 181 ++++++++++++++++++++++++++++\n 1 file changed, 181 insertions(+)",
    "diff": "diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\nindex 378df4a..e0e8cfb 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n@@ -48,6 +48,8 @@\n #include <fslmc_vfio.h>\n #include <dpaa2_hw_pvt.h>\n #include <dpaa2_hw_dpio.h>\n+#include <fsl_dpseci.h>\n+#include <fsl_mc_sys.h>\n \n #include \"dpaa2_sec_priv.h\"\n #include \"dpaa2_sec_logs.h\"\n@@ -58,6 +60,144 @@\n #define FSL_MC_DPSECI_DEVID     3\n \n static int\n+dpaa2_sec_dev_configure(struct rte_cryptodev *dev __rte_unused,\n+\t\t\tstruct rte_cryptodev_config *config __rte_unused)\n+{\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\treturn -ENOTSUP;\n+}\n+\n+static int\n+dpaa2_sec_dev_start(struct rte_cryptodev *dev)\n+{\n+\tstruct dpaa2_sec_dev_private *priv = dev->data->dev_private;\n+\tstruct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;\n+\tstruct dpseci_attr attr;\n+\tstruct dpaa2_queue *dpaa2_q;\n+\tstruct dpaa2_sec_qp **qp = (struct dpaa2_sec_qp **)\n+\t\t\t\t\tdev->data->queue_pairs;\n+\tstruct dpseci_rx_queue_attr rx_attr;\n+\tstruct dpseci_tx_queue_attr tx_attr;\n+\tint ret, i;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tmemset(&attr, 0, sizeof(struct dpseci_attr));\n+\n+\tret = dpseci_enable(dpseci, CMD_PRI_LOW, priv->token);\n+\tif (ret) {\n+\t\tPMD_INIT_LOG(ERR, \"DPSECI with HW_ID = %d ENABLE FAILED\\n\",\n+\t\t\t     priv->hw_id);\n+\t\tgoto get_attr_failure;\n+\t}\n+\tret = dpseci_get_attributes(dpseci, CMD_PRI_LOW, priv->token, &attr);\n+\tif (ret) {\n+\t\tPMD_INIT_LOG(ERR,\n+\t\t\t     \"DPSEC ATTRIBUTE READ FAILED, disabling DPSEC\\n\");\n+\t\tgoto get_attr_failure;\n+\t}\n+\tfor (i = 0; i < attr.num_rx_queues && qp[i]; i++) {\n+\t\tdpaa2_q = &qp[i]->rx_vq;\n+\t\tdpseci_get_rx_queue(dpseci, CMD_PRI_LOW, priv->token, i,\n+\t\t\t\t    &rx_attr);\n+\t\tdpaa2_q->fqid = rx_attr.fqid;\n+\t\tPMD_INIT_LOG(DEBUG, \"rx_fqid: %d\", dpaa2_q->fqid);\n+\t}\n+\tfor (i = 0; i < attr.num_tx_queues && qp[i]; i++) {\n+\t\tdpaa2_q = &qp[i]->tx_vq;\n+\t\tdpseci_get_tx_queue(dpseci, CMD_PRI_LOW, priv->token, i,\n+\t\t\t\t    &tx_attr);\n+\t\tdpaa2_q->fqid = tx_attr.fqid;\n+\t\tPMD_INIT_LOG(DEBUG, \"tx_fqid: %d\", dpaa2_q->fqid);\n+\t}\n+\n+\treturn 0;\n+get_attr_failure:\n+\tdpseci_disable(dpseci, CMD_PRI_LOW, priv->token);\n+\treturn -1;\n+}\n+\n+static void\n+dpaa2_sec_dev_stop(struct rte_cryptodev *dev)\n+{\n+\tstruct dpaa2_sec_dev_private *priv = dev->data->dev_private;\n+\tstruct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;\n+\tint ret;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tret = dpseci_disable(dpseci, CMD_PRI_LOW, priv->token);\n+\tif (ret) {\n+\t\tPMD_INIT_LOG(ERR, \"Failure in disabling dpseci %d device\",\n+\t\t\t     priv->hw_id);\n+\t\treturn;\n+\t}\n+\n+\tret = dpseci_reset(dpseci, CMD_PRI_LOW, priv->token);\n+\tif (ret < 0) {\n+\t\tPMD_INIT_LOG(ERR, \"SEC Device cannot be reset:Error = %0x\\n\",\n+\t\t\t     ret);\n+\t\treturn;\n+\t}\n+}\n+\n+static int\n+dpaa2_sec_dev_close(struct rte_cryptodev *dev)\n+{\n+\tstruct dpaa2_sec_dev_private *priv = dev->data->dev_private;\n+\tstruct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;\n+\tint ret;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\t/* Function is reverse of dpaa2_sec_dev_init.\n+\t * It does the following:\n+\t * 1. Detach a DPSECI from attached resources i.e. buffer pools, dpbp_id\n+\t * 2. Close the DPSECI device\n+\t * 3. Free the allocated resources.\n+\t */\n+\n+\t/*Close the device at underlying layer*/\n+\tret = dpseci_close(dpseci, CMD_PRI_LOW, priv->token);\n+\tif (ret) {\n+\t\tPMD_INIT_LOG(ERR, \"Failure closing dpseci device with\"\n+\t\t\t     \" error code %d\\n\", ret);\n+\t\treturn -1;\n+\t}\n+\n+\t/*Free the allocated memory for ethernet private data and dpseci*/\n+\tpriv->hw = NULL;\n+\tfree(dpseci);\n+\n+\treturn 0;\n+}\n+\n+static void\n+dpaa2_sec_dev_infos_get(struct rte_cryptodev *dev,\n+\t\t\tstruct rte_cryptodev_info *info)\n+{\n+\tstruct dpaa2_sec_dev_private *internals = dev->data->dev_private;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\tif (info != NULL) {\n+\t\tinfo->max_nb_queue_pairs = internals->max_nb_queue_pairs;\n+\t\tinfo->feature_flags = dev->feature_flags;\n+\t\tinfo->capabilities = dpaa2_sec_capabilities;\n+\t\tinfo->sym.max_nb_sessions = internals->max_nb_sessions;\n+\t\tinfo->dev_type = RTE_CRYPTODEV_DPAA2_SEC_PMD;\n+\t}\n+}\n+\n+static struct rte_cryptodev_ops crypto_ops = {\n+\t.dev_configure\t      = dpaa2_sec_dev_configure,\n+\t.dev_start\t      = dpaa2_sec_dev_start,\n+\t.dev_stop\t      = dpaa2_sec_dev_stop,\n+\t.dev_close\t      = dpaa2_sec_dev_close,\n+\t.dev_infos_get        = dpaa2_sec_dev_infos_get,\n+};\n+\n+static int\n dpaa2_sec_uninit(__attribute__((unused))\n \t\t const struct rte_cryptodev_driver *crypto_drv,\n \t\t struct rte_cryptodev *dev)\n@@ -77,6 +217,10 @@\n \tstruct dpaa2_sec_dev_private *internals;\n \tstruct rte_device *dev = cryptodev->device;\n \tstruct rte_dpaa2_device *dpaa2_dev;\n+\tstruct fsl_mc_io *dpseci;\n+\tuint16_t token;\n+\tstruct dpseci_attr attr;\n+\tint retcode, hw_id;\n \n \tPMD_INIT_FUNC_TRACE();\n \tdpaa2_dev = container_of(dev, struct rte_dpaa2_device, device);\n@@ -84,8 +228,10 @@\n \t\tPMD_INIT_LOG(ERR, \"dpaa2_device not found\\n\");\n \t\treturn -1;\n \t}\n+\thw_id = dpaa2_dev->object_id;\n \n \tcryptodev->dev_type = RTE_CRYPTODEV_DPAA2_SEC_PMD;\n+\tcryptodev->dev_ops = &crypto_ops;\n \n \tcryptodev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |\n \t\t\tRTE_CRYPTODEV_FF_HW_ACCELERATED |\n@@ -103,9 +249,44 @@\n \t\tPMD_INIT_LOG(DEBUG, \"Device already init by primary process\");\n \t\treturn 0;\n \t}\n+\t/*Open the rte device via MC and save the handle for further use*/\n+\tdpseci = (struct fsl_mc_io *)rte_calloc(NULL, 1,\n+\t\t\t\tsizeof(struct fsl_mc_io), 0);\n+\tif (!dpseci) {\n+\t\tPMD_INIT_LOG(ERR,\n+\t\t\t     \"Error in allocating the memory for dpsec object\");\n+\t\treturn -1;\n+\t}\n+\tdpseci->regs = rte_mcp_ptr_list[0];\n+\n+\tretcode = dpseci_open(dpseci, CMD_PRI_LOW, hw_id, &token);\n+\tif (retcode != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Cannot open the dpsec device: Error = %x\",\n+\t\t\t     retcode);\n+\t\tgoto init_error;\n+\t}\n+\tretcode = dpseci_get_attributes(dpseci, CMD_PRI_LOW, token, &attr);\n+\tif (retcode != 0) {\n+\t\tPMD_INIT_LOG(ERR,\n+\t\t\t     \"Cannot get dpsec device attributed: Error = %x\",\n+\t\t\t     retcode);\n+\t\tgoto init_error;\n+\t}\n+\tsprintf(cryptodev->data->name, \"dpsec-%u\", hw_id);\n+\n+\tinternals->max_nb_queue_pairs = attr.num_tx_queues;\n+\tcryptodev->data->nb_queue_pairs = internals->max_nb_queue_pairs;\n+\tinternals->hw = dpseci;\n+\tinternals->token = token;\n \n \tPMD_INIT_LOG(DEBUG, \"driver %s: created\\n\", cryptodev->data->name);\n \treturn 0;\n+\n+init_error:\n+\tPMD_INIT_LOG(ERR, \"driver %s: create failed\\n\", cryptodev->data->name);\n+\n+\t/* dpaa2_sec_uninit(crypto_dev_name); */\n+\treturn -EFAULT;\n }\n \n static int\n",
    "prefixes": [
        "dpdk-dev",
        "v8",
        "07/13"
    ]
}