get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 21319,
    "url": "http://patches.dpdk.org/api/patches/21319/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20170303194935.30831-5-akhil.goyal@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": "<20170303194935.30831-5-akhil.goyal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170303194935.30831-5-akhil.goyal@nxp.com",
    "date": "2017-03-03T19:49:27",
    "name": "[dpdk-dev,v5,04/12] crypto/dpaa2_sec: add basic crypto operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d0cc5e3acbf872475cfb053e80b1d3afcf65e532",
    "submitter": {
        "id": 517,
        "url": "http://patches.dpdk.org/api/people/517/?format=api",
        "name": "Akhil Goyal",
        "email": "akhil.goyal@nxp.com"
    },
    "delegate": {
        "id": 22,
        "url": "http://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": "http://patches.dpdk.org/project/dpdk/patch/20170303194935.30831-5-akhil.goyal@nxp.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/21319/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/21319/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 3BCE0F951;\n\tFri,  3 Mar 2017 15:24:24 +0100 (CET)",
            "from NAM02-CY1-obe.outbound.protection.outlook.com\n\t(mail-cys01nam02on0066.outbound.protection.outlook.com\n\t[104.47.37.66]) by dpdk.org (Postfix) with ESMTP id 85A1B6787\n\tfor <dev@dpdk.org>; Fri,  3 Mar 2017 15:24:04 +0100 (CET)",
            "from BN6PR03CA0027.namprd03.prod.outlook.com (10.175.124.13) by\n\tMWHPR03MB2958.namprd03.prod.outlook.com (10.175.136.139) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.947.12; Fri, 3 Mar 2017 14:24:02 +0000",
            "from BY2FFO11FD030.protection.gbl (2a01:111:f400:7c0c::116) by\n\tBN6PR03CA0027.outlook.office365.com (2603:10b6:404:10c::13) 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 14:24:02 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBY2FFO11FD030.mail.protection.outlook.com (10.1.14.211) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.947.7\n\tvia Frontend Transport; Fri, 3 Mar 2017 14:24:02 +0000",
            "from netperf2.ap.freescale.net ([10.232.133.164])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv23ENi6X000351; Fri, 3 Mar 2017 07:23:58 -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 <akhil.goyal@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas.monjalon@6wind.com>, <declan.doherty@intel.com>,\n\t<pablo.de.lara.guarch@intel.com>, <john.mcnamara@intel.com>,\n\t<nhorman@tuxdriver.com>, <hemant.agrawal@nxp.com>, Akhil Goyal\n\t<akhil.goyal@nxp.com>",
        "Date": "Sat, 4 Mar 2017 01:19:27 +0530",
        "Message-ID": "<20170303194935.30831-5-akhil.goyal@nxp.com>",
        "X-Mailer": "git-send-email 2.9.3",
        "In-Reply-To": "<20170303194935.30831-1-akhil.goyal@nxp.com>",
        "References": "<20170303193648.30665-1-akhil.goyal@nxp.com>\n\t<20170303194935.30831-1-akhil.goyal@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131330246425083673;\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)(39380400002)(39400400002)(39850400002)(39410400002)(39840400002)(39860400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(305945005)(36756003)(356003)(8656002)(5003940100001)(2906002)(104016004)(5660300001)(2950100002)(6666003)(6916009)(77096006)(1076002)(110136004)(2351001)(38730400002)(189998001)(53936002)(33646002)(54906002)(5890100001)(105606002)(4326008)(81166006)(86362001)(50466002)(48376002)(626004)(47776003)(85426001)(92566002)(50226002)(8676002)(76176999)(8936002)(50986999)(106466001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2958;\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; BY2FFO11FD030;\n\t1:nBKxJCTp5wDR4Hy7fI5nX54mBRdWA++Czf6tVLR9RjtMKqMVnDsirLYk1jkLbCrUfYFHp2z+gYzRi5r+o5QSapx7w2Ceii1MF+PNTssNGST6AX4PAx7cCMY0PoiTz4+qztKU/wSKuupQNN9mEq0QdiKQPGqYqUt5exV78RTib74drXNyUzIA7F54iVisrFOxQPJj6/MeMvPQTvUQbgueieQ1vtdIunOPzjkFJFo3rXnPXpnLf7fapkO+AFoY0vCwgSc/VXizfg+kXWI5N8BVEKSiWd5FEoqiVujoJY7bWg0PmzrZPVJIQ20J/U2MPP3UFV/YRdNFM954ITTUvB+U7kbQmaA0X06SwX0E7Roc4l7rjZgw1QCwQG74YU0muHFpT5Almx6fKhxeE60PnrDKdbMWjidrWlaRzUszArGc73dVJrtVRQ7XbbxABNfn5l0Eqq+LEhkAndgTL55Urn90DGdkficeylEJpAhOO77rwC/pgNZW6knSAiNUh7PWDpSBVOG4SG+garH6w/WlmRJ7oDtRBgezXfrgb8nrpqjArgw/5IhwmzE5lN/vJldCxnZWUEoAcCEFu5KaUiyVPadx0MVLRrAgEpsggw4jJ9ivKWqMAp3Fbj67QYc4LMpjmYCEWyVWbq+2BfZtbEiTudWRfFXUeXkw+Q4B0O1L5BegdKgAAB/geyyVlaZHXZbwq5kSjltVt094YKhiYqhKFuA7WJm5XzCLkNkByXRXFHaS2hemai5OfYJG7T1rzzuLGabi",
            "1; MWHPR03MB2958;\n\t3:pMFQLHII7jNjnbv5YX7uMyR5IwhRZReWEgXJ+J+qx6I/NTyZlGJNcE17p9plrm87X6B4LIWPdjhhKHA9v4GyXphpH61OCpF3ApXFX1o7P23PDPwsIJeoordaG4r7ceuuKW2RvG+jPiPGHnYdQCIQUR+gVKpQvsAFDloHbuRVQljjan11kbSdkjdRjB6JBad41/evmwnCM8KzurLVR1s9yzWLBLpNtcOiFlH5L84bYxG8B7XwKfYyZPgmZ1SGuv1zv5QU/Z3mP6gSNhyAiQgsUFxk0II30lTduDwUZHv31iYFv3L7ulOXzobMJUOToZGRmqEPzaePT5SAE/4w0zwRjHtB61FGGvPBBFoIswXveu0RcnLiAlaqHFKWceHs4Dsk;\n\t25:oXlP92++KJNOkVSBzsh0b1kxAzjmwLgvzGCPdCJ1UseFtL6ECeaqmHxSPPlUYBjvK/yv13qCF46BAG3bH9DWM6ZT7jUhTtlM6AxI5d1Bc3AM1vRK6a4XyyT479BsqDBdB2EZi6TTKRpjXt+cWd4aK9znwJyPjuG8xfFpnDACQtS0wcBFPvufhMpyLxyR7/3ffa8zkGZK0XGKtBPMCDhxgh3jKtJaHpSwHwjk8QU0kI2HBnxhY1xqO/jWAXZp2ftFdwnI3zWNWGJQQAfq8cVqaj7uKzLou1lWOuSAERaBSuc83Fys38bSwd0QY8lF+gX2yt/aaalvZ1xF8Y/IIRwlHM4HPlhWDX1EnTb4SJ+Sf34Gqk000Y2FvCoKnJCszV+6ImkX/0r5GwJJRBRa4tIt1G0TH2EpTKMmVerSPSQxX4BkODC0N01gwdOBzwcebXLUXAshWrZxDizAKlP67DRF/Q==",
            "1; MWHPR03MB2958;\n\t31:IuSfIKyJANUcrufwPYgS90F0CQsThdqLQje5jAZr41whELRQsShnNhOGvjHYLUquJrkJynDn83B2oZg6CvcqfrURqdavASNw6WgMhVQEhb1H5mlaOfDp02kQpVwchr3SkCmp7vwdYsk3B8vnKNuAHhH/JegL1C/s1O1Zf7yB6eO2wFpAZbqmzr5XHWqSU2U8x7IVy7zFtiMVQCN4or2uxUQrkrJWxVpcfmw1rbClC5kI25nPBg41MfOmxVwhG1gwQt/3f9aZpVHuCtoeDZ8mXQ==",
            "1; MWHPR03MB2958;\n\t4:87ZrDzU0kKQx5c8fRRp6A1Hfv+uxUcw3hrKoIRKaKXBZfYEIHtbBFY7Xzua/rB3oDiLbomeYw39IrAiZi8dCAosT4CTOpiBhkgLFYlnxVrJBfSDEh8rHm44iV2Fg2WIZW07uo63xU1zn+1uKNgGAaEG7Xd/pjJkhH1/snKXy8KrFEB8hc2HNXR60qJ/V2wzgDpwzrjq1ccFbkMF2sMcwwIoGt3FPJKrm2LQjfe5/JEvF4GKI/fV1YKT1bMHfizgiBbVMokV0kp2wjLayEXVqR0TsCVTsn91fVnr2BMG+bVaUjn2EFifftMZD+IWZWokD7Am2sd+oi0G7pZmaj+z71C3ZSgDzRlhHxiylgVqGL04UOiwoLAthS2stvJpN+TASOEmWdgFbgQBXPLtFTAcocwDViFjEH4Mj0BMz48y34Mg4TkBLvpPJ64QzEFGTJF9BtgmhoxSquJrk69V6bPq4qsl20oA9PCMJYqn8qgHwwj3BpUdK0A9P06pGw0CEKSXx3uccF9fCqD6RSdOgNjlSZlEmLurowxQ7LlKWa+FPF7kl/C/XslQTOxaIEITzNSzVHC5pTSPJiS3P7W8dNrVKFwPp5uTrk1bW5LKgQtzB1/StBqqXS+QFgU7P8vgdkIUAovYYbwpr/TiojeVwXbTxsi6ZyS4G2aZFhHzP9t9QG3SC6E3q7N1paRnsg7fF8H4qisQH6Aqct5uM8FwQLnSVnKpbmkEzUMcrI5Z9GbROx7ZQ7FiGJCTH7BMWCKz4ttZE",
            "=?us-ascii?Q?1; MWHPR03MB2958;\n\t23:ZMwMBre+x4/E1rG0RGeBi4gNxi92bXpWDGVfhVtoV?=\n\tvZrBM9obRWH+9tjFDtuFKSR/VXxT1Wstg//tgdLzJXYjPe+RHE6X6/bPLz9zwpskFNlOghLBqxMZuXJOozj0akxwDR34wHC4HxdSSeoUu8uOnj+LUEF02oTNjv850KlmhIwaoyZmAQPbLq9C3kkpqqTXxIld84Gx2Wi1ALueoeh6e66WEhfkkD4A45YhkNH/pdwbaYx0oSPEOv4aq9fIN28AGOwI/kIa5KLO08qHa6cgvHtsDw7mRCCQH4hieabdXsncqNIG+yV6oHsXGCsLmVaCFACYdsE37iXfX4uMRYdaM7unLqIdZm2XW11iQRffnjPav8U9dRpIl/zygoHae+klBIKthJOxbyi7bYjsdjaou3pab4eq0MmugYqxyIo5wBTh8xGdKcxLlcS3xYFjXVaqUClkR5X+9K3a4cr5+2yS6764ayprlxwSAf8hPfFsBBoqw8NiabFB6c6ba/WnHRkiHpS573dMQSdETrmh8in1GyKEBpx92Rmw464hXx8MpUqDrAkf2xTkhkBqsSDMk0uiLSBvIVlPRfIM3VjQe9xdlhfd5AW+rsfV54/5nD6a4CuJJePC8x/5ejQPHbIbVPx6JH20BepDtGBs3sgbu0cfYQYakG+deUBh+QI6yVrAEEbyPphhsw58zfL2XFoZvl1X6BIxGIo6lwWVx5pYJToZdA+HsCyC/RX/Og7OafbOw3mf7wJyFSN68imJq3RKZvDIau7k+ZiXMPROLYBvfVmdiXuDWs69ANA8KhIY0z6S4JUGaHU1yZuKAmoAJtg7xVgtwlc5F93/3NuyfIQekzZHKsY0v7RwumSyGnR4jJcWQMMAfPWSlG1LqRWZN8mNQYiksxL79ix7CEu83cc7zbkkj27HoOT3XOvAy1oPyG2eUWA6Mb3HSIhKcePUlbH5zOaQrU6PIyA2413S399+5PWkJQ+YKGJYm1AvCb41vIfAXRDMd5txZhp5anDuUMrBRe81X/q0CYydZDqBPZ6MVMtI11ItH9CD/MCgTm4yVc2Y/JY7bdwkM9eG40mwyKE5VxkzBEJdiMwyE8QDZaXBhuYbEXhlZeGYtwPjCWAODSM0OO4kmu8JsEfr4Mx30Dx5z7kLdURRBW0D3DZlm9JOfyEn7SpEuZFWzUbJJ43BwipBXenCEfEG/zCr5KDQNgu83U7ImFM9jHzXMmh4alRvcQaaom48HwkKTXTaRL6bQkuOzjs8pAkTEEI7pLCtlW1mJgH0p8ZnSe9NmPbVLs9Pn9E5mIQ5jkshdchvUj7q8ZVoQ4=",
            "1; MWHPR03MB2958;\n\t6:76ScV4daz1BZNsCEc4uYWKMg5cnrDlSl4sWI8xNgAEfCIB4NUVJLnuRvIS3/bT/lZlTDZBPGCvTl+Z70MaCCmngubvaiAzrKafOpKdr8fwe79au/+yFNgPpoABV+X2Nv66RimdCHoRxJ2vSUbKXS9EVjEKVLV1k9Ykj6wykl5gO7P7KgLcJqM97eCc7Zcsaq/uQWti2pTNofII+Zi3U9SVj8Te/k66Yi9OW3H3XLCI+ZoMvJdYlV/zMW8w28t5EA3+V1HRLuE6dVd3AGV8QxqjIiBEarz2P4my7jIhSrG77O+YNhBnMR8/hPQsbOcYr85A96b6q8K2tfkb6s1IjRGtSjMbuTcVHFR/1TfHpAdXpY/CceaiVuHWiefFl6oUfnILcUrKZ4pusCtQV5BtiQLTZJOIxvxiGy70UdELPsbxA=;\n\t5:4AkyWB3NM8fHFpJV2WOlMIcnLe75g/Mi21gDwAE4eLxv+fTYz+UzwLTJOPw+Zmo65ZFNAL0q0UoubIFHqUZ9aV8iMS4ewmZaH7Pd1N259iQwCorb8pXH07vKTn5ej7YGc1jfxua0AoaR9UFYg+gG1Wal6iieNO16XBqvyvEYD+fV2lw/GBbXq9K50TJZntCY;\n\t24:WlGJ9O4js1Liitq+IcKaA/eqti457WGqeSXcX3W89juR0poP/X8z2bdkE82uZ6MybJVJOrrjYEb8sIej7VWyGyWl93M144AEABdIXtiXOn0=",
            "1; MWHPR03MB2958;\n\t7:m4qGB+hgE72BhRZm4Mig4F9eLn428XSjRugFJImeLL6prK5DCithGeaTWinx1/PpQ4jmCRnWNmZsffeQeW11vHlk7DdObcb743dwIQf3SXfNyalKlfk2Y3hu/VCsiUbU5gXBpwiQvRBjyASRGzZ960ZQCff8Ovi4d+C8KzsEAzD5xKtOG9RRqYmfW+XXgmD3xPOZAz9STryUqVUM4bIGxh8doN3qhMG1mGM8pIl4H5cGB/Oix5EBthm/9NSn3fAuGs00ManBD13BVXMh+/nQAlzQbr2mpAN1+0awqtPdQA/gFZJWYb+ITdpzqJYMDj8JKRwXUUIZqZ4MsqvHLS8T+Q=="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "2a446319-4f8f-43dd-12a7-08d46240f0d0",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:MWHPR03MB2958; ",
        "X-Microsoft-Antispam-PRVS": "<MWHPR03MB295844612EC1826A5EB60F6EE62B0@MWHPR03MB2958.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)(5005006)(8121501046)(13015025)(13023025)(13017025)(13024025)(13018025)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(20161123559025)(20161123556025)(20161123561025)(20161123565025);\n\tSRVR:MWHPR03MB2958; BCL:0; PCL:0; RULEID:(400006); SRVR:MWHPR03MB2958;",
        "X-Forefront-PRVS": "0235CBE7D0",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Mar 2017 14:24:02.1807\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": "MWHPR03MB2958",
        "Subject": "[dpdk-dev] [PATCH v5 04/12] 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": "Signed-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 34ca776..7287c53 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n@@ -47,6 +47,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@@ -56,6 +58,144 @@\n #define FSL_SUBSYSTEM_SEC       1\n #define FSL_MC_DPSECI_DEVID     3\n \n+\n+static int\n+dpaa2_sec_dev_configure(struct rte_cryptodev *dev __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@@ -76,6 +216,10 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)\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@@ -83,8 +227,10 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)\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@@ -102,9 +248,44 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)\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",
        "v5",
        "04/12"
    ]
}