get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40871,
    "url": "https://patches.dpdk.org/api/patches/40871/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1528476325-15585-11-git-send-email-anoob.joseph@caviumnetworks.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": "<1528476325-15585-11-git-send-email-anoob.joseph@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528476325-15585-11-git-send-email-anoob.joseph@caviumnetworks.com",
    "date": "2018-06-08T16:45:19",
    "name": "[dpdk-dev,10/16] crypto/cpt: add driver initializations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "204df76f52c4f2ddbc636f9881fa07c3bbe4c0cf",
    "submitter": {
        "id": 893,
        "url": "https://patches.dpdk.org/api/people/893/?format=api",
        "name": "Anoob Joseph",
        "email": "anoob.joseph@caviumnetworks.com"
    },
    "delegate": {
        "id": 6690,
        "url": "https://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1528476325-15585-11-git-send-email-anoob.joseph@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 58,
            "url": "https://patches.dpdk.org/api/series/58/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=58",
            "date": "2018-06-08T16:45:09",
            "name": "Adding Cavium's crypto device(CPT) driver",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/58/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/40871/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/40871/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 589D75F30;\n\tFri,  8 Jun 2018 18:49:27 +0200 (CEST)",
            "from NAM04-SN1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr700079.outbound.protection.outlook.com [40.107.70.79])\n\tby dpdk.org (Postfix) with ESMTP id B4ED55F1B\n\tfor <dev@dpdk.org>; Fri,  8 Jun 2018 18:49:23 +0200 (CEST)",
            "from ajoseph83.caveonetworks.com.caveonetworks.com (115.113.156.2)\n\tby SN6PR07MB4911.namprd07.prod.outlook.com (2603:10b6:805:3c::29)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.15;\n\tFri, 8 Jun 2018 16:49:18 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=mf3TpAbm0U5xDQEdjiDGKcpPC2nOsu3+YltjtK4WH0A=;\n\tb=cZbg0OosVJKD9dGwflRPb2LQRX0W+gmOLRudBdTey0v3cIFk1lJIQkEcC7s3uCFqoPHkVulERI14t9wlkTKGJLCgXl0IkMt1E+1KyuhXOQ7bSrN+VEVoe+v17RpgQlyvomRoIwjt76YY3DZUEU9qoCpV1Do9aqLlYpw0aDGzFQA=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Anoob.Joseph@cavium.com; ",
        "From": "Anoob Joseph <anoob.joseph@caviumnetworks.com>",
        "To": "Akhil Goyal <akhil.goyal@nxp.com>,\n\tPablo de Lara <pablo.de.lara.guarch@intel.com>,\n\tThomas Monjalon <thomas@monjalon.net>",
        "Cc": "Srisivasubramanian Srinivasan <Srisivasubramanian.Srinivasan@cavium.com>,\n\tAnkur Dwivedi <ankur.dwivedi@cavium.com>,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tMurthy NSSR <Nidadavolu.Murthy@cavium.com>,\n\tNarayana Prasad <narayanaprasad.athreya@caviumnetworks.com>,\n\tNithin Dabilpuram <nithin.dabilpuram@cavium.com>,\n\tRagothaman Jayaraman <Ragothaman.Jayaraman@cavium.com>, dev@dpdk.org",
        "Date": "Fri,  8 Jun 2018 22:15:19 +0530",
        "Message-Id": "<1528476325-15585-11-git-send-email-anoob.joseph@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "References": "<1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "BM1PR01CA0071.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:1::11) To SN6PR07MB4911.namprd07.prod.outlook.com\n\t(2603:10b6:805:3c::29)",
        "X-MS-PublicTrafficType": "Email",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:SN6PR07MB4911; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; SN6PR07MB4911;\n\t3:VtZ7VwcPf5eWcnA/Ulb7BJAo56JmL2zTt/hBvPF7+0YccrPtF1zZ11WAjhbu87qnFpfujmh5TGYF0XRJC9GaWa5sP1fgKliJDW1ksWTGt/+TkMUCDEnpL4OSMf8W0+ZbbW1Nh1ooW3VrWi3M87M9/wUFkgjGZlv9u0pEaXe3a/j/MWrAWAW5NeCXcTuCNOoG7/QBqJiu2dUHUmfMYlYXpiRxdcaVMzUBgD5ASdT5s6zyAXDTTj0DpgWNFM75CPUs;\n\t25:7HQKnhYPmbZsv+j3QeZKJY7ylpLLDZEhrB2KzjznbX+HzxtJgODkFYnq6bfPEyGE8sziV5l8mgUQOek/r25kml/rfUCA50IrsNTsgxsUS4BUEYFJsjKj/8KtjkbptqDEjGKzAqrG7MroOaXBmRJOWxTtxOR/fQZ1rDQuYiuDQ4KutvvNfmK7x7VQXPWtc+iAtOestQRHjlChDYLdc0PKlU7TH5hbggaoIaKTgK2VROYBne58eERO15j72nSINtvUXNzRxSY50l+HOU353Ba80ZsVszrayMTVtw9m3wbZO8RIRxrZyfv/lOvUFuk2L3U7Ji7CPhRf6/uwOxNiwoQfMg==;\n\t31:GLc8SO27QckGJIMhsvv/gd28afg1IFIB7mDkpc5iQVVjw74ffaz5scWSBgjAtH42kmnzlW6sSVfStkrRpmB+Potqh/QQFtD5EtHA4uAdXGiK8aQZZee/Odv/QIQTV+Ibt0Wke0ZxmUWjWRKGK8Uuej09I12b3rKarRGwU6HkR5ZeaRzP5pJgY+8+MTnSJOqwUgWIhoVri43X3zwpcJwOB+5vrCY6yKKjWOef9H2HHSo=",
            "1; SN6PR07MB4911;\n\t20:adVGx/XRtAgnKaoqZT8G6pBzFZ5UdyP4eP0vCkY7rc17ns30hJwMILTb5TsN9cgPw/1nVCP3f3MZp28iqZIIWL5j/ZmPVC8ATTYxdrirlS9rkkrelpgFxb00YmMj1oAj0OPZs24BRpKotSLfxvk0sqYKAwQNrnX3emtdFJdSDjlVs/L+tGtxc5lVHd+IjQJmXqtwA486B8/TuesgZdFHmkFKETGCuW5LwqiP2HUFKXLQQxFM53jRdaQGgmjDkRKBBemcG8eiuxuJ1jo64TgeFyGhLM/MG3Y2Vj5PO4QHG5dTM5n/Y4qJavNlGlEIc/fZiaCJ2P4SKAl5B4M+wvXfjcwjzjAzx/o1N9UeSYNCCkXqeFw+YM2425073UgMaCk1fYWhFmn7NkU1IFeu/j1eq56OkS1BT26ezFjOm9vwV+ZzqAIO6ad942/W+J4OZvjr7uMuh6hVWyhXfojuucWXmmeyNSf0pwFAy/O9dFudWTUlob2Odep6WJL3QN9CNt1x913t2VOrBlxRCSdeO2sDr2JEUx9pi/dpPdsLls1Uam0yjsRHq/MlEjHk61IYdyhHSKV4IUnEFHq/g52ON1v2iFKCK5ByiI6Lvor+of1G2Hw=;\n\t4:3cMT1NiI1z+g3HtEKyF7XtsWA0Jb2NPpji0/hMusVDQDXm72gp4m+sMqFpGQC9eit9thi8CzaFtX+rYpGwZePMheCj5Ve3PtekEmoKmX78uJt8s39ywBQb0Yqs/gTlmXANzo/oOzMuJBnuWKn+4XDmg4/o+1TEuFIgDUYLc2l4iee9EkinecbvOm6CntgCN6Al1C+zdv4+OUaqhum8swTIgE/h1fCaL3QTAyWIaQ2ul1F1gNH78MXdZx+J3keRl9NJXMOCOz/26gEHd0zNM2Qw==",
            "=?us-ascii?Q?1; SN6PR07MB4911;\n\t23:NlYGN3Agq3RSi3PBAEWM4JqsaLekyGiGjG5xbr6p4?=\n\tLQj59JorpyAa5m9M91WPLj4zNz+RsdRYm15dMkx2mohp9NkWwOfsHMdFIclLWs9o8SkpIxtdvy1cG2/UTKm56/vWoMME5Kg21AO9NCvHCVQXV0gpjmYErB4uDKYsgvmUi3+8eJ57i226h4tO1FUOXH9xBT75rC8djIh7HGECNx3Ui+eH+XH2mRN59nXPT34fbSkNio7P16H0L5hhXs4ryhifVG5lo+m9fqWXwG2IadYSGxSVClNCLwZMYHdNGPmWyZ26AIsfwN/a/Bi/uEB7XGg1qz65INon6mLGYjQ9eWYrJr6ZrCzecmg/Bo48DU0ZIMUhnlYmpP8f4NguSAxgGEIT+0uepiNL96x+pDG6m+0DnVXa4FS/fYg+9VtGi3Qmd+mRxIRo9BlyhjFxdNALYP5IQ/9RuTuROnff4/xVSb19o6Nh9HN2PGxDOcAM/troCjRzjTQJTv91y0hUGKkap6NXF1ay+XVFADoaBhPNqUTwXt6PxIPlJPGk0buTtwRcdBIhiAkpviZiWYa6B1pi7zpmYaVWMnKzycIAyQqdL0ptRF29jqicwZRhesumj9Dq3IvixJvtzbUjwOd/Ku8JUNk3PKIDpNsZINGeL4/egNSrtbyder003zNt+bcJTwd/uHmlDLdY0hh0AzhCvA4O4Jxa2y06HAfBnm5BH1lg6njxWHYUtDLEZDFIyawmDucczV8KnnYL150Krgs8C2+Ghyqm1rdQw09zDB04vB8wmxL55jhhteBug3rN1YYu5PSSMcu6O8eudW8dbFM2lkLtB2ucmZbLGPP7L8hkH9aVZSwMkSleSq8MS9UoUSZqRRt/kAEJ4llG68/VDdxFS8rW0pxrbAxBA/B3OupCqF6m87dCcvdqx8bUy8K2PlBEcbLKaVb5JCwZ2BbwcLwioCKlwJ5YTP2C7DD5M8SI50UfcPMQM6RJuVS+3EUR3u+hosqL9oZeL4il9x5HXJXl/jP/DuI+1z3Om79nQe0r8u4NRNDWdyj9VYBZF2hJh4F/V+UDX930K/AGB1JVKCUbAin3GhsD+ncA0HRZyxUELRjyVGz3ysxUNDlg864qgXKJbdMlBQMKtE3fibn9XTvZIeRmdjf4zzEWnATjolmp7KNUgUbDseMxV+Nk6I2w1nuHKShttQeNIb/zH8VHXut0jJcpJJq0ikuMM/sPpZWq716U10fVARpXR16HRP1sJfysSWNvCCC71VA9M1zdTlt0kT0q2gETmDaaAzxbQeiZBpoHe2AY+uBq5zy/9nlrxqOPtVqL8Y=",
            "1; SN6PR07MB4911;\n\t6:68kXeC0cxcZQDkGkPY6DnsLozYBZWoOY65He8OX7TmnnJcMdYtrZktaSW/ppCHLvkJuVIOVna68aKh2JlpqfoHmyMmAk4H+3nmt/VJI7+ggg94iLxaufVXTl/uL8S+E1nwYmMuaPOiyahw1ujrnX4Jj51UrwOEUm0hME8NDGH0PFzAYB/ve975hXA56anA7yNtFilV9oKQmt5x/aNQTwErlRcd9SHR26k+o+TrzZ85cIz8jR+7Vf2caIHjPu4PxiTZCVXdMwZCX44UIDJydAqXGA5FBnriXdnYB9z5Nw6TAiwIRxSupdrB426LPC7qmTMI06a9BQOc3/L5AZ0rifNNniTFztjFJmmNlN1ZUV2J/0JbwOtL0lwLURIp4SjFHGzGKOFWkbKLuh9wirnMPpDDwU0DmGb2nbjhkMYLKSFBuG/mcotu5dJ1IjUem8SKL8kPTYEwIYokC86RKmEaqT9w==;\n\t5:XVA+d0Mj5ctSBO1AVvvcCm+to5Q5hlFDU0aHzrkPuR6yKxvdk6hFwOW2jfYOFoGNUC7UPp7n6wrStEC8DKTe02JTemfUsP38AOt8jxfGNr3wpyJZ+eQZShAnHQ9qe2CdjGPrQJST8ftMDJDvpyqT3yik0iPvskQPGTofbkFsLBw=;\n\t24:DVkKPuSnYHvPhhrvD3VJ0/jKGzvVOhL/iiYSLqHmbwbycP3lJWZGAXmq7TDv0D1fXI+NOsULQQomo3ZlrlopyFleK6StflpdvP/lUsNowSk=",
            "1; SN6PR07MB4911;\n\t7:ACayBhcGjQjmOqsgjn4gleWcESasLq2JVlAXY2pPT50dYbfOd0JlaAj7TalDfb/wtRZ4+D2BRo5FmOZmTyjJjq6bkT5/nKhZhYFwTPgNs0hVvSbOeUTKM2xrX8pFMfGifFCHHS6yHO2wYDQ/ebvfZD1u6BdlFmksofjrE5CPqGwGOTklpxEO99gP59R/S+ef0eEM6FjXOWOjPy5w0zF4UcHFlDiFy7vPISB9esPlFRU1zd0VXEnZLHSzPm8dV0PG"
        ],
        "X-MS-TrafficTypeDiagnostic": "SN6PR07MB4911:",
        "X-Microsoft-Antispam-PRVS": "<SN6PR07MB491163F7B35817E3DE799A7AF87B0@SN6PR07MB4911.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016);\n\tSRVR:SN6PR07MB4911; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4911; ",
        "X-Forefront-PRVS": "06973FFAD3",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(396003)(346002)(39380400002)(366004)(39860400002)(189003)(199004)(26005)(52116002)(956004)(305945005)(8676002)(81156014)(50226002)(8936002)(81166006)(7736002)(68736007)(105586002)(106356001)(3846002)(6116002)(72206003)(478600001)(6486002)(97736004)(6506007)(16586007)(6512007)(53936002)(47776003)(486006)(25786009)(5660300001)(50466002)(48376002)(4326008)(54906003)(76176011)(36756003)(110136005)(66066001)(8656006)(2906002)(316002)(55236004)(5890100001)(11346002)(16526019)(386003)(186003)(59450400001)(446003)(476003)(42882007)(44832011)(2616005)(51416003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4911;\n\tH:ajoseph83.caveonetworks.com.caveonetworks.com; FPR:; SPF:None;\n\tLANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "leaZ+fieZUczAesPaBFqsGSCATMjNcgEeMdQuFDgd9msQYmnpnuxv/SPcDU3B2oVaDu4fztTAKk5wIft1bzEhiouBdRBC1b3Xa42Wms2mCdLpXEHvN7FKqYYegr+Set0thJwBDyBK92bQiGcpw56r8XVA2zt2jO2tBpK4efT5jebJ6C/IOx8AGwCDSKLzFKe",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Office365-Filtering-Correlation-Id": "18d27c20-09e3-4d78-3270-08d5cd5fc8e2",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 Jun 2018 16:49:18.3370\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "18d27c20-09e3-4d78-3270-08d5cd5fc8e2",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SN6PR07MB4911",
        "Subject": "[dpdk-dev] [PATCH 10/16] crypto/cpt: add driver initializations",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://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": "<https://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: Srisivasubramanian Srinivasan <Srisivasubramanian.Srinivasan@cavium.com>\n\nIntroduce driver initialization and enable build infrastructure.\n\nSigned-off-by: Ankur Dwivedi <ankur.dwivedi@cavium.com>\nSigned-off-by: Murthy NSSR <Nidadavolu.Murthy@cavium.com>\nSigned-off-by: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>\nSigned-off-by: Ragothaman Jayaraman <Ragothaman.Jayaraman@cavium.com>\nSigned-off-by: Srisivasubramanian Srinivasan <Srisivasubramanian.Srinivasan@cavium.com>\n---\n drivers/crypto/cpt/Makefile            |   9 +-\n drivers/crypto/cpt/cpt_pmd_cryptodev.c | 270 +++++++++++++++++++++++++++++++++\n drivers/crypto/cpt/cpt_pmd_logs.h      |  50 ++++++\n 3 files changed, 328 insertions(+), 1 deletion(-)\n create mode 100644 drivers/crypto/cpt/cpt_pmd_cryptodev.c\n create mode 100644 drivers/crypto/cpt/cpt_pmd_logs.h",
    "diff": "diff --git a/drivers/crypto/cpt/Makefile b/drivers/crypto/cpt/Makefile\nindex b2d950d..40ec9e2 100644\n--- a/drivers/crypto/cpt/Makefile\n+++ b/drivers/crypto/cpt/Makefile\n@@ -23,7 +23,14 @@ CFLAGS += -O3\n #CFLAGS += -DAUTH_SOFT_COMPUTE_IPAD_OPAD\n #CFLAGS += -DCPT_DEBUG\n \n-SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) +=\n+# PMD code\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt_pmd_cryptodev.c\n+\n+# Base code\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt_device.c\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt_ops.c\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt8xxx_device.c\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt_vf_mbox.c\n \n # export include files\n SYMLINK-y-include +=\ndiff --git a/drivers/crypto/cpt/cpt_pmd_cryptodev.c b/drivers/crypto/cpt/cpt_pmd_cryptodev.c\nnew file mode 100644\nindex 0000000..addddd8\n--- /dev/null\n+++ b/drivers/crypto/cpt/cpt_pmd_cryptodev.c\n@@ -0,0 +1,270 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2017 Cavium, Inc\n+ */\n+\n+#include <rte_common.h>\n+#include <rte_dev.h>\n+#include <rte_pci.h>\n+#include <rte_crypto.h>\n+#include <rte_cryptodev.h>\n+#include <rte_cryptodev_pmd.h>\n+#include <rte_alarm.h>\n+#include <rte_bus_pci.h>\n+\n+#include \"base/cpt_device.h\"\n+#include \"cpt_pmd_logs.h\"\n+\n+#define CSP_INTR_POLL_INTERVAL_MS 50\n+\n+static int global_init_done;\n+uint8_t cryptodev_cpt_driver_id;\n+struct rte_mempool *cpt_meta_pool;\n+int cpt_op_mlen;\n+int cpt_op_sb_mlen;\n+\n+static void\n+cpt_pmd_alarm_cb(void *arg)\n+{\n+\tstruct cpt_vf *cptvf = arg;\n+\tcptvf_poll_misc(cptvf);\n+\trte_eal_alarm_set(CSP_INTR_POLL_INTERVAL_MS * 1000,\n+\t\t\t  cpt_pmd_alarm_cb, cptvf);\n+}\n+\n+static int\n+cpt_pmd_periodic_alarm_start(void *arg)\n+{\n+\treturn rte_eal_alarm_set(CSP_INTR_POLL_INTERVAL_MS * 1000,\n+\t\t\t\t cpt_pmd_alarm_cb, arg);\n+}\n+\n+static int\n+cpt_pmd_periodic_alarm_stop(void *arg)\n+{\n+\treturn rte_eal_alarm_cancel(cpt_pmd_alarm_cb, arg);\n+}\n+\n+static struct rte_cryptodev_ops cptvf_ops = {\n+\t/* Device related operations */\n+\t.dev_configure = NULL,\n+\t.dev_start = NULL,\n+\t.dev_stop = NULL,\n+\t.dev_close = NULL,\n+\t.dev_infos_get = NULL,\n+\n+\t.stats_get = NULL,\n+\t.stats_reset = NULL,\n+\t.queue_pair_setup = NULL,\n+\t.queue_pair_release = NULL,\n+\t.queue_pair_start = NULL,\n+\t.queue_pair_stop = NULL,\n+\t.queue_pair_count = NULL,\n+\n+\t/* Crypto related operations */\n+\t.session_get_size = NULL,\n+\t.session_configure = NULL,\n+\t.session_clear = NULL\n+};\n+\n+static int init_global_resources(void)\n+{\n+\t/* In future consider rte_security and asym. 4B extra for app use */\n+\tcpt_op_mlen = cpt_fc_get_op_meta_len() + 4 * sizeof(uint64_t);\n+\tcpt_meta_pool = rte_mempool_create(\"cpt_metabuf-pool\", 4096 * 16,\n+\t\t\t\t\t   cpt_op_mlen, 512, 0,\n+\t\t\t\t\t   NULL, NULL, NULL, NULL,\n+\t\t\t\t\t   SOCKET_ID_ANY, 0);\n+\tif (!cpt_meta_pool) {\n+\t\tPMD_DRV_LOG(ERR, \"cpt metabuf pool not created\\n\");\n+\t\treturn -ENOMEM;\n+\t}\n+\tcpt_op_sb_mlen = cpt_fc_get_op_sb_meta_len() + 4 * sizeof(uint64_t);\n+\n+\treturn 0;\n+}\n+\n+static int\n+cptvf_dev_init(struct rte_pci_driver *c_drv __rte_unused,\n+\t\t struct rte_cryptodev *c_dev)\n+{\n+\tstruct rte_pci_device *pdev = RTE_DEV_TO_PCI(c_dev->device);\n+\tstruct cpt_vf *cptvf = c_dev->data->dev_private;\n+\tvoid *reg_base;\n+\tchar dev_name[32];\n+\tint ret;\n+\n+\tPMD_DRV_LOG(DEBUG, \">>>\");\n+\n+\tif (pdev->mem_resource[0].phys_addr == 0ULL)\n+\t\treturn -EIO;\n+\n+\t/* for secondary processes, we don't initialise any further as primary\n+\t * has already done this work.\n+\t */\n+\tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n+\t\treturn 0;\n+\n+\tsnprintf(dev_name, 32, \"%02x:%02x.%x\",\n+\t\t\tpdev->addr.bus, pdev->addr.devid, pdev->addr.function);\n+\tPMD_DRV_LOG(DEBUG, \"Found CPT device %s\", dev_name);\n+\n+\treg_base = pdev->mem_resource[0].addr;\n+\tif (!reg_base) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to map BAR0 of %s\", dev_name);\n+\t\tret = -ENODEV;\n+\t\tgoto fail;\n+\t}\n+\n+\tret = cptvf_init_device(cptvf, pdev, reg_base, dev_name, 0);\n+\tif (ret) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to init cptvf %s\", dev_name);\n+\t\treturn -EIO;\n+\t}\n+\n+\t/* Start off timer for mailbox interrupts */\n+\tcpt_pmd_periodic_alarm_start(cptvf);\n+\t/* TODO Do we really need this to poll for mbox ?? */\n+\t/* cptvf_enable_mbox_interrupts(cptvf); */\n+\n+\tif (!global_init_done) {\n+\t\t/* cpt_set_debug_level(debug); */\n+\t\tret = init_global_resources();\n+\t\tif (ret)\n+\t\t\tgoto init_fail;\n+\t\tglobal_init_done = 1;\n+\t}\n+\n+\tc_dev->dev_ops = &cptvf_ops;\n+\n+\tc_dev->enqueue_burst = NULL;\n+\tc_dev->dequeue_burst = NULL;\n+\n+\tc_dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |\n+\t\t\tRTE_CRYPTODEV_FF_HW_ACCELERATED |\n+\t\t\tRTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING;\n+\n+\treturn 0;\n+\n+init_fail:\n+\tcpt_pmd_periodic_alarm_stop(cptvf);\n+\tcptvf_deinit_device(cptvf);\n+\treturn ret;\n+\n+fail:\n+\treturn ret;\n+}\n+\n+static int\n+rte_cptdev_pci_probe(struct rte_pci_driver *pci_drv,\n+\t\t\tstruct rte_pci_device *pci_dev)\n+{\n+\tstruct rte_cryptodev *cryptodev;\n+\n+\tchar cryptodev_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n+\n+\tint retval;\n+\n+\tif (pci_drv == NULL)\n+\t\treturn -ENODEV;\n+\n+\trte_pci_device_name(&pci_dev->addr, cryptodev_name,\n+\t\t\tsizeof(cryptodev_name));\n+\n+\tcryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id());\n+\tif (cryptodev == NULL)\n+\t\treturn -ENOMEM;\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY) {\n+\t\tcryptodev->data->dev_private =\n+\t\t\t\trte_zmalloc_socket(\n+\t\t\t\t\t\t\"cryptodev private structure\",\n+\t\t\t\t\t\tsizeof(struct cpt_vf),\n+\t\t\t\t\t\tRTE_CACHE_LINE_SIZE,\n+\t\t\t\t\t\trte_socket_id());\n+\n+\t\tif (cryptodev->data->dev_private == NULL)\n+\t\t\trte_panic(\"Cannot allocate memzone for private \"\n+\t\t\t\t\t\"device data\");\n+\t}\n+\n+\tcryptodev->device = &pci_dev->device;\n+\tcryptodev->device->driver = &pci_drv->driver;\n+\tcryptodev->driver_id = cryptodev_cpt_driver_id;\n+\n+\t/* init user callbacks */\n+\tTAILQ_INIT(&(cryptodev->link_intr_cbs));\n+\n+\t/* Invoke PMD device initialization function */\n+\tretval = cptvf_dev_init(pci_drv, cryptodev);\n+\tif (retval == 0)\n+\t\treturn 0;\n+\n+\tPMD_DRV_LOG(ERR, \"driver %s: crypto_dev_init(vendor_id=0x%x device_id=\"\n+\t\t\t\"0x%x) failed\", pci_drv->driver.name,\n+\t\t\t(unsigned int) pci_dev->id.vendor_id,\n+\t\t\t(unsigned int) pci_dev->id.device_id);\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY)\n+\t\trte_free(cryptodev->data->dev_private);\n+\n+\tcryptodev->attached = RTE_CRYPTODEV_DETACHED;\n+\n+\treturn -ENXIO;\n+}\n+\n+static int\n+rte_cptdev_pci_remove(struct rte_pci_device *pci_dev)\n+{\n+\tstruct rte_cryptodev *cryptodev;\n+\tchar cryptodev_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n+\n+\tif (pci_dev == NULL)\n+\t\treturn -EINVAL;\n+\n+\trte_pci_device_name(&pci_dev->addr, cryptodev_name,\n+\t\t\tsizeof(cryptodev_name));\n+\n+\tcryptodev = rte_cryptodev_pmd_get_named_dev(cryptodev_name);\n+\tif (cryptodev == NULL)\n+\t\treturn -ENODEV;\n+\n+\tif (pci_dev->driver == NULL)\n+\t\treturn -ENODEV;\n+\n+\t/* free crypto device */\n+\trte_cryptodev_pmd_release_device(cryptodev);\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY)\n+\t\trte_free(cryptodev->data->dev_private);\n+\n+\tcryptodev->device = NULL;\n+\tcryptodev->device->driver = NULL;\n+\tcryptodev->data = NULL;\n+\n+\treturn 0;\n+}\n+static struct rte_pci_id pci_id_cpt_table[] = {\n+\t{\n+\t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, CPT_81XX_PCI_VF_DEVICE_ID),\n+\t},\n+\t/* sentinel */\n+\t{\n+\t.device_id = 0\n+\t},\n+};\n+\n+static struct rte_pci_driver cptvf_pmd = {\n+\t\t.id_table = pci_id_cpt_table,\n+\t\t.drv_flags = RTE_PCI_DRV_NEED_MAPPING,\n+\t\t.probe = rte_cptdev_pci_probe,\n+\t\t.remove = rte_cptdev_pci_remove,\n+};\n+static struct cryptodev_driver cpt_crypto_drv;\n+\n+#define CRYPTODEV_NAME_CPT_SYM_PMD\tcrypto_cpt\n+/* Cavium CPT Symmetric Crypto PMD device name */\n+\n+RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_CPT_SYM_PMD, cptvf_pmd);\n+RTE_PMD_REGISTER_PCI_TABLE(CRYPTODEV_NAME_CPT_SYM_PMD, pci_id_cpt_table);\n+RTE_PMD_REGISTER_CRYPTO_DRIVER(cpt_crypto_drv, cptvf_pmd.driver,\n+\t\tcryptodev_cpt_driver_id);\ndiff --git a/drivers/crypto/cpt/cpt_pmd_logs.h b/drivers/crypto/cpt/cpt_pmd_logs.h\nnew file mode 100644\nindex 0000000..d245d62\n--- /dev/null\n+++ b/drivers/crypto/cpt/cpt_pmd_logs.h\n@@ -0,0 +1,50 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2017 Cavium, Inc\n+ */\n+\n+#ifndef _CPT_PMD_LOGS_H_\n+#define _CPT_PMD_LOGS_H_\n+\n+#include <rte_log.h>\n+\n+#define PMD_DRV_LOG_RAW(level, fmt, args...) \\\n+\t\trte_log(RTE_LOG_ ## level, RTE_LOGTYPE_PMD, \\\n+\t\t\t\"PMD: %s(): \" fmt \"\\n\", __func__, ##args)\n+\n+#ifdef RTE_LIBRTE_PMD_CPT_DEBUG_INIT\n+\n+#define PMD_INIT_FUNC_TRACE() PMD_DRV_LOG_RAW(DEBUG, \" >>\")\n+#define PMD_DRV_LOG(level, args...) \\\n+\tPMD_DRV_LOG_RAW(level, ##args)\n+#else\n+\n+#define PMD_DRV_LOG(...)  do { } while (0)\n+#define PMD_INIT_FUNC_TRACE() do { } while (0)\n+#endif\n+\n+#ifdef RTE_LIBRTE_PMD_CPT_DEBUG_RX\n+\n+#define CPT_DEBUG\n+#define CPTVF_STRICT_PARAM_CHECK\n+#define PMD_RX_LOG(level, args...) \\\n+\tPMD_DRV_LOG_RAW(level, ##args)\n+#else\n+\n+#define PMD_RX_LOG(...)  do { } while (0)\n+#endif\n+\n+#ifdef RTE_LIBRTE_PMD_CPT_DEBUG_TX\n+\n+#define CPT_DEBUG\n+#define CPTVF_STRICT_PARAM_CHECK\n+\n+#define PMD_TX_LOG(level, args...) \\\n+\tPMD_DRV_LOG_RAW(level, ##args)\n+#else\n+\n+#define PMD_TX_LOG(...)  do { } while (0)\n+#endif\n+\n+#define PRINT printf\n+\n+#endif\n",
    "prefixes": [
        "dpdk-dev",
        "10/16"
    ]
}