get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 46329,
    "url": "http://patches.dpdk.org/api/patches/46329/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1539076076-19786-9-git-send-email-anoob.joseph@caviumnetworks.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": "<1539076076-19786-9-git-send-email-anoob.joseph@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1539076076-19786-9-git-send-email-anoob.joseph@caviumnetworks.com",
    "date": "2018-10-09T09:07:41",
    "name": "[v4,08/23] crypto/octeontx: add basic dev ops",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "956579dcd1468ced892eb3e8f1d0cc66ab45b906",
    "submitter": {
        "id": 893,
        "url": "http://patches.dpdk.org/api/people/893/?format=api",
        "name": "Anoob Joseph",
        "email": "anoob.joseph@caviumnetworks.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1539076076-19786-9-git-send-email-anoob.joseph@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 1770,
            "url": "http://patches.dpdk.org/api/series/1770/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1770",
            "date": "2018-10-09T09:07:33",
            "name": "Adding Cavium's OCTEON TX crypto PMD",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/1770/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/46329/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/46329/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 E868D1B185;\n\tTue,  9 Oct 2018 11:09:14 +0200 (CEST)",
            "from NAM05-CO1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr720082.outbound.protection.outlook.com [40.107.72.82])\n\tby dpdk.org (Postfix) with ESMTP id 8FEB91B181\n\tfor <dev@dpdk.org>; Tue,  9 Oct 2018 11:09:13 +0200 (CEST)",
            "from ajoseph83.caveonetworks.com.com (115.113.156.2) by\n\tBN7PR07MB4897.namprd07.prod.outlook.com (2603:10b6:406:ef::26) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1207.28; Tue, 9 Oct 2018 09:09:08 +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=sj/8O0mF548G6ueMphrXO1/FIJVdPd1BEYOTJ6EA6ro=;\n\tb=dnnGSZrsfi/TLu/UWdQcwAFcZKkKFTElyOpM8olVTNvjvjzlQosHKCsW86w3NNJjGGZgPDveoEdu2Io4wuEX50T2O0magr9yHInF/sGq8+W1KLwH8VJGhat+Tiyh4Ga+OTvqu0ZMzXLw+SMjJSdXZmzdQnJQ7JsiVdcYr4eG8aQ=",
        "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": "Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tNarayana Prasad <narayanaprasad.athreya@caviumnetworks.com>,\n\tAnkur Dwivedi <ankur.dwivedi@caviumnetworks.com>,\n\tAnoob Joseph <anoob.joseph@caviumnetworks.com>,\n\tNithin Dabilpuram <nithin.dabilpuram@caviumnetworks.com>,\n\tRagothaman Jayaraman <rjayaraman@caviumnetworks.com>,\n\tSrisivasubramanian S <ssrinivasan@caviumnetworks.com>,\n\tTejasree Kondoj <kondoj.tejasree@caviumnetworks.com>, dev@dpdk.org",
        "Date": "Tue,  9 Oct 2018 14:37:41 +0530",
        "Message-Id": "<1539076076-19786-9-git-send-email-anoob.joseph@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1539076076-19786-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "References": "<1538744363-30340-1-git-send-email-anoob.joseph@caviumnetworks.com>\n\t<1539076076-19786-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": "PN1PR0101CA0004.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:c00:e::14) To BN7PR07MB4897.namprd07.prod.outlook.com\n\t(2603:10b6:406:ef::26)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "aef75777-9340-4d2d-5197-08d62dc6e0da",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:BN7PR07MB4897; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN7PR07MB4897;\n\t3:MdpJjDikxQWwYLk2Ub9/QSLu8Ac28pT3g1CUtGmXNo2qBYEfymkOzJKVYwm5nZ212k2TVI92ovh6uJrcVCL0ee48y83S58bVk2u1AlFw0UjgCLr3xkD0DQNN3ZJzaizAomsPX09QIBszP8ejshF42ryG4kbfA+YaQxgH5vnRSUQkK8hA6ns1IvQvhzZKtHdfLTXwLH/nP52abcq3v5gq5K2xMPbHpqUCuz3u28rNaQ39qgugq6Ljw39Aw5Y5hbk/;\n\t25:i8uSx5KW010trQcLtWaa4i8IroG/7ISf37M8gdp+aW8yzymAWYy7+Prutuh5W3T4JVs5VVXZEKAZOqg3UdE6vl1bUMV4c7W6SDThkZUJ1XHcyfhwukIio3uTGUSqj32yWGdt7mYJw/z5nNpXTxRxvNFQ4Xu7fLsWDJFNisPfur9GM1RJE9YhV0+/tBNYsZz2aeunmNZZOT6hzklkL6soRBoR0DZx/iz0Nv5u7MlNae5DWoji1x4BKrMysEGdNVDDNOTUnxf5fUcpAvydAv05G49V9YYvwCDyoZCPDHkyHTrdyAMZCCXfleUEkbvq7TPogiIbyzQzGMLEXin7EbMkTA==;\n\t31:rg2TXjvNdkWoFnbeqPrTAVBpht1gEhw+SpO7VmUxiyhrEYouJSqLxh//Zz6fY9E26HOXdVnpad7hktgDLvts3ubCvsjRRqxS3oKksIFI9KsED9OjB2y4zAYLcrrlhGtD9DonGFYvwKDBpUI70O0OIpnxqXO5PuYCUIMY0liLX097UVB0Cc5IccSVyCrrWlE4RxM3PDJ/aS65sjmg8Em6Qmo/xgLaHBEq/3c4V4cbJzQ=",
            "1; BN7PR07MB4897;\n\t20:NeXpz74M33RUsrOOOntaolNh68WtMLx7prvkg+1gj/sIgCUE+sn0rTrqNgYhVAzIxGrDFQsgUpijp/Wo7i4BIPp4GtShU0ivulCmlBgu/EUMBUYcj5ROgvUKEFakxhekFA+jM1vZbbgcQes8gBYp3Hl6kKaY4lvX3F3HtlizYzKkF/dMg7wp/RoXRNfc24NgGuABqsiwP9wf6HGpq4YYYIiFqwWtrrNRp+Nq+XEQRCK3UeJ7KOo7IwxpUyyfCP/FtGxplvnNhM4G0wP/1/u+2pfEmqJE/b/V+xTtbPtwYPnA0kjOZ9Z7ZV3CoSprQk/z3BRBvKT2ta1H+MBBJjFwjKPROtzJ7/kFrd9LUe0Ro55wHOW9zlYotEpgV1dEYvWpItqzW+mhCB00kzOIncvDuunBzYh/5jmUFyM4BuR5otvNvH0HCRJEuOI0hwdvg1rsp4hVvSRvrIGjViqXG+4kd07eiPHE3oQURyjWZV2ql+wcbjBbLq99UcEAiXdv4tzpZaVz153AoL3UdgPTobAkDTYQmI6QZngfu8xiJa1n4iimvXWYXFtmozGBM2MtVsBhPyXOJwdImv2TjYQAu8Oq/JNGsO/GOIoG0YcNTK3Ed0s=;\n\t4:oLNG1Irvlr7tStjc2Mo6SPTABH8f+bAeN/GRu0GoEwzy5m8tvY7OMkrAcKvej+M8d7T9tIjvdUCOU+aP1eg1Ra+9tcFv04pFKpEmHRXW2R3BpTSOM3ZV0hJRDBI1oPvi4dsVQGlsBQCDVYCxjUPfo4X4zoZCDst/HSpN7kS9i4WLw/oRO5OEUCOjU1jrsxZZzOk9MfKD4crfsx0HMuYP+zL0hakXr2d06pSWz6G6pYLzUutN+gQ1CLf0xxlf5kZIYsV6H9qs6BcIS2MmHnAQIg==",
            "=?us-ascii?Q?1; BN7PR07MB4897;\n\t23:UXyn2Ga5Kdd8YyhuKlPzpBB8bxwglbIpryL7hw1lw?=\n\tqxQ0N9xCfNAL3fywMr0ZbafBI2oPmZF+FWFofRiJYfrVgFUittkg3g1lfWWBVmbgKdJ3sKWEWQI6Bbsxp4d/GX+KRK2sGIZpX7IACmBFibPpBfFh7SgUdRxoF8IDjXk9kQyr2Qig5jK5Ef/Tc33g0q5ZE0XDTx5Cg/RrntWnzdN649u8agc3YRHPVZh7muxE82JtzRZq5b1mpAL5kP/uDFbZqWODrX/2rrWnwnlF5GsRJRZR5BOav6uJvWxCp2W/3EMIW8yXVPyNHZ4jtgZ75WUw8/yXc2amv6fonAAD6Zxm4nKNg0/joVbvm18ifMZSttBkOvnwkG5e4VjzMbkk/7kv8ZssaAuQNt50HXfu71/lYOlpwYjUquZ8+UGIkYAR5eXTQA4TcJrXyahIXJA+nNAIzPXaDyXnhZTfMOBt4dbyv4l5SiX6rUTBtGguquFa40/TRv/3YEoEvRSVGRu3BYU2Er/P0yHUxpVWop9XtKRW18Th1gMZTMWb81rqFC7myYpmHCR9G/T6U/KXJYXBIHBuVlr3x8foGpYjlGpWEvVQt290z8c8yuTamp6DL2oKtlRaTngKKOMtIsS6LaK1pn2+KkdESkpEnU4EFdINXXvhdNWHQQXaS52DZAyuzFKzrpjfoQ0ATFILBXabBmWGqIp4ufxe43A9G08RzljNocZpBYbO3CbOWlEweMIocApUSOp6UoVQqX4luhFXXWPngtENE+AUafiNnD6tjnE387QBp9UabJ3VrtfiMgSfO8L54qVIpJiSbwRyhO/C6cVR5PDPVgTP4DySXeD/HMmxkG6livFRRBqX4QY+2Ms8FFexn5SkGlzq6Kp8+yJppzLV0F3SqFDzQTPLHQLpQ6JRQS9ROhGvhj8W4HH4dKNkCxOcfDa36xZnroSu7QNf77zpYTj9AmOPGHMOG7IkWuTq9EIEHUxEczJpop9KLvopqC4GyqKS/VjqO73GLWcITTGi8p2B7HayFQwSceYUxFYs+moDR8MMQxVF/D6d6eX/L+4rB8Yb+6aOQXh5WIQt8xq7HzX8nC0DiHL/0hKvX30YfvLjBH+LC7+QGzNgnon8sB0NfAWoN+7Kd31+gQw+c9JXjUwxzPqffIHdFbgkshIKSpIaFaBJZg9WP74sa78Anfq0xQJzxwKJdoJwjoem7ovdFiaDmsLz58o00sFq0iNWYon8vWz0drkW/+HFR/8nn4P7MOxuIOvtFVZj1H311WTy0IX",
            "1; BN7PR07MB4897;\n\t6:PBQ3/0Y8donKvMu163HnkVhoAfQLpD3CPR+WQGxyp7NmCSmh43sUswRpBnnYschPa/oHbiVFJ4tNLN8F0ih4jhQ0Wuq4l/cRUi/xRQpW0WFwfuB3bH1oPvGCnsi71VirezBMoS3p9x8e+OyjX0AndbgKwBYGu0EbG0iE++qtWkSgNxTiiWpSOgmeYZmECBntVS4GvPpoK6kfXRvzz/jMldhjcqzl7kmm0USOpgtgXB6eIHBRLnL9vgQfvx1TezMiauPoNzqsXsMy2LHxmcnc1hZ/T9nBMD4WQ5O/fxwYAHBAhGt6K+KECaKMfZsZeXAHJ68hHPiH2nwO909o0FX9X4x0ZF9P2wFwH1p7mv/VQrzocr/88OHsomH74vc7e+TyjmyELrsvdPkoq9YVm4ItisAucwSsJmKi5CrWOJARFYZvhKSSNyXVRfb75zVNuAO5obwQInScJEc4whNq8hVllg==;\n\t5:TGgamWSrTfYpdKDW8z6+imY2J8SOM5US2s0OdVfZkht9sN/Y5fUFHa2RmEw30Mmz3lqdjCudyP0Xb3DmInEeoGk75euGA3PcNxdneu5zGx+SvqWq1bVlhonAX++KCMGBFA4UPfY3WXhHkiNz9bw2d1Aa6ycvVU5o90zkYLXpMlk=;\n\t7:cmLLfA5GIgY6PR2aABwWjy36SU1TbRN60AFTxUBzdFBhsXccKsE3m19mxHHxkhpzx2S5tF5721YpVpKpDZHlNq9FhYCymd95n5OEFtb6PbKwek4XSsFKVRMLPKev0pAIHR2WdawswFgPFOe+QlHfgKdBE78kzuR4Y4yVmCS580w+wEBP7599c6Px3ZJd1N0epoZXHREnvTXyB9GM/x+16AGc9kka+uL5nuQeSlcbny9YKiQP9BkA58MTRkkW5TVZ"
        ],
        "X-MS-TrafficTypeDiagnostic": "BN7PR07MB4897:",
        "X-Microsoft-Antispam-PRVS": "<BN7PR07MB489741D6262802F192740289F8E70@BN7PR07MB4897.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)(5005006)(8121501046)(3002001)(93006095)(10201501046)(3231355)(944501410)(52105095)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(201708071742011)(7699051);\n\tSRVR:BN7PR07MB4897; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4897; ",
        "X-Forefront-PRVS": "08200063E9",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(396003)(366004)(376002)(136003)(346002)(39860400002)(199004)(189003)(42882007)(47776003)(106356001)(6666003)(186003)(5660300001)(26005)(68736007)(16526019)(8936002)(25786009)(6116002)(2906002)(81156014)(50226002)(305945005)(81166006)(7736002)(3846002)(105586002)(478600001)(8676002)(54906003)(110136005)(48376002)(16586007)(14444005)(6486002)(6506007)(50466002)(316002)(53936002)(386003)(51416003)(52116002)(76176011)(11346002)(6512007)(44832011)(446003)(36756003)(55236004)(956004)(2616005)(486006)(4326008)(66066001)(97736004)(72206003)(476003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4897;\n\tH:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "X1hr1uE/Io/fmMY5kmP2NQrtSVKi+wtGCp0LP/j/m/iXEuv/BqZ8kcdHrchU0YXB7nZRGC7A12IHTkXV/nERNd9pxyBbL6gQtHtjPTS6m8pIC6drxYKn/kPSN/Delb2vXWFDm++N7rNTwsz1ETJoPV2owp4PAi1slnL0MmIeGs6BktWo0AfL4BTy983nrGjFYbBgvddbqLccGUMJPQmC0kakpovfO4/IRmUuzmKBPxALQjkVb9QhJmx7uIuuHOGCLc9U1ZXzginrPeBA9soCz4mDb0b/mWy7LPR9jsqVOH2cmmvg/p7etRT3LHVZ3wnYXguiztjw7lsY7u64MDWwzAbrz9oP+TyPxBMC40cYIxM=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "09 Oct 2018 09:09:08.4979\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "aef75777-9340-4d2d-5197-08d62dc6e0da",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN7PR07MB4897",
        "Subject": "[dpdk-dev] [PATCH v4 08/23] crypto/octeontx: add basic dev ops",
        "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://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/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: Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>\n\nAdding the following dev ops,\n- dev_configure\n- dev_start\n- dev_stop\n- dev_close\n- dev_infos_get\n- stats_get\n- stats_reset\n\nSigned-off-by: Ankur Dwivedi <ankur.dwivedi@caviumnetworks.com>\nSigned-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>\nSigned-off-by: Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>\nSigned-off-by: Nithin Dabilpuram <nithin.dabilpuram@caviumnetworks.com>\nSigned-off-by: Ragothaman Jayaraman <rjayaraman@caviumnetworks.com>\nSigned-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>\nSigned-off-by: Tejasree Kondoj <kondoj.tejasree@caviumnetworks.com>\n---\n drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 56 +++++++++++++\n drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 30 +++++++\n drivers/crypto/octeontx/otx_cryptodev_ops.c       | 95 ++++++++++++++++++++++-\n drivers/crypto/octeontx/otx_cryptodev_ops.h       |  4 +\n 4 files changed, 184 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c\nindex eb9fbcf..303bcc0 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c\n+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2018 Cavium, Inc\n  */\n #include <string.h>\n+#include <unistd.h>\n \n #include <rte_branch_prediction.h>\n #include <rte_common.h>\n@@ -260,3 +261,58 @@ otx_cpt_deinit_device(void *dev)\n \n \treturn 0;\n }\n+\n+int\n+otx_cpt_start_device(void *dev)\n+{\n+\tint rc;\n+\tstruct cpt_vf *cptvf = (struct cpt_vf *)dev;\n+\n+\trc = otx_cpt_send_vf_up(cptvf);\n+\tif (rc) {\n+\t\tCPT_LOG_ERR(\"Failed to mark CPT VF device %s UP, rc = %d\",\n+\t\t\t    cptvf->dev_name, rc);\n+\t\treturn -EFAULT;\n+\t}\n+\n+\tif ((cptvf->vftype != SE_TYPE) && (cptvf->vftype != AE_TYPE)) {\n+\t\tCPT_LOG_ERR(\"Fatal error, unexpected vf type %u, for CPT VF \"\n+\t\t\t    \"device %s\", cptvf->vftype, cptvf->dev_name);\n+\t\treturn -ENOENT;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+void\n+otx_cpt_stop_device(void *dev)\n+{\n+\tint rc;\n+\tuint32_t pending, retries = 5;\n+\tstruct cpt_vf *cptvf = (struct cpt_vf *)dev;\n+\n+\t/* Wait for pending entries to complete */\n+\tpending = otx_cpt_read_vq_doorbell(cptvf);\n+\twhile (pending) {\n+\t\tCPT_LOG_DP_DEBUG(\"%s: Waiting for pending %u cmds to complete\",\n+\t\t\t\t cptvf->dev_name, pending);\n+\t\tsleep(1);\n+\t\tpending = otx_cpt_read_vq_doorbell(cptvf);\n+\t\tretries--;\n+\t\tif (!retries)\n+\t\t\tbreak;\n+\t}\n+\n+\tif (!retries && pending) {\n+\t\tCPT_LOG_ERR(\"%s: Timeout waiting for commands(%u)\",\n+\t\t\t    cptvf->dev_name, pending);\n+\t\treturn;\n+\t}\n+\n+\trc = otx_cpt_send_vf_down(cptvf);\n+\tif (rc) {\n+\t\tCPT_LOG_ERR(\"Failed to bring down vf %s, rc %d\",\n+\t\t\t    cptvf->dev_name, rc);\n+\t\treturn;\n+\t}\n+}\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\nindex 6e5731a..b795983 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\n+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\n@@ -11,6 +11,7 @@\n #include <rte_memory.h>\n \n #include \"cpt_common.h\"\n+#include \"cpt_hw_types.h\"\n \n #define CPT_INTR_POLL_INTERVAL_MS\t(50)\n \n@@ -145,4 +146,33 @@ otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name);\n int\n otx_cpt_deinit_device(void *dev);\n \n+int\n+otx_cpt_start_device(void *cptvf);\n+\n+void\n+otx_cpt_stop_device(void *cptvf);\n+\n+/* Write to VQX_DOORBELL register\n+ */\n+static __rte_always_inline void\n+otx_cpt_write_vq_doorbell(struct cpt_vf *cptvf, uint32_t val)\n+{\n+\tcptx_vqx_doorbell_t vqx_dbell;\n+\n+\tvqx_dbell.u = 0;\n+\tvqx_dbell.s.dbell_cnt = val * 8; /* Num of Instructions * 8 words */\n+\tCPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf),\n+\t\t      CPTX_VQX_DOORBELL(0, 0), vqx_dbell.u);\n+}\n+\n+static __rte_always_inline uint32_t\n+otx_cpt_read_vq_doorbell(struct cpt_vf *cptvf)\n+{\n+\tcptx_vqx_doorbell_t vqx_dbell;\n+\n+\tvqx_dbell.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf),\n+\t\t\t\t   CPTX_VQX_DOORBELL(0, 0));\n+\treturn vqx_dbell.s.dbell_cnt;\n+}\n+\n #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c\nindex 68c6b92..905b37a 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_ops.c\n+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c\n@@ -5,12 +5,14 @@\n #include <rte_alarm.h>\n #include <rte_bus_pci.h>\n #include <rte_cryptodev.h>\n+#include <rte_cryptodev_pmd.h>\n #include <rte_malloc.h>\n \n #include \"cpt_pmd_logs.h\"\n #include \"cpt_pmd_ops_helper.h\"\n \n #include \"otx_cryptodev.h\"\n+#include \"otx_cryptodev_capabilities.h\"\n #include \"otx_cryptodev_hw_access.h\"\n #include \"otx_cryptodev_ops.h\"\n \n@@ -95,6 +97,97 @@ otx_cpt_periodic_alarm_stop(void *arg)\n \treturn rte_eal_alarm_cancel(otx_cpt_alarm_cb, arg);\n }\n \n+/* PMD ops */\n+\n+static int\n+otx_cpt_dev_config(struct rte_cryptodev *dev __rte_unused,\n+\t\t   struct rte_cryptodev_config *config __rte_unused)\n+{\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+\treturn 0;\n+}\n+\n+static int\n+otx_cpt_dev_start(struct rte_cryptodev *c_dev)\n+{\n+\tvoid *cptvf = c_dev->data->dev_private;\n+\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+\n+\treturn otx_cpt_start_device(cptvf);\n+}\n+\n+static void\n+otx_cpt_dev_stop(struct rte_cryptodev *c_dev)\n+{\n+\tvoid *cptvf = c_dev->data->dev_private;\n+\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+\n+\totx_cpt_stop_device(cptvf);\n+}\n+\n+static int\n+otx_cpt_dev_close(struct rte_cryptodev *c_dev)\n+{\n+\tvoid *cptvf = c_dev->data->dev_private;\n+\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+\n+\totx_cpt_periodic_alarm_stop(cptvf);\n+\totx_cpt_deinit_device(cptvf);\n+\n+\treturn 0;\n+}\n+\n+static void\n+otx_cpt_dev_info_get(struct rte_cryptodev *dev, struct rte_cryptodev_info *info)\n+{\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+\tif (info != NULL) {\n+\t\tinfo->max_nb_queue_pairs = CPT_NUM_QS_PER_VF;\n+\t\tinfo->feature_flags = dev->feature_flags;\n+\t\tinfo->capabilities = otx_get_capabilities();\n+\t\tinfo->sym.max_nb_sessions = 0;\n+\t\tinfo->driver_id = otx_cryptodev_driver_id;\n+\t\tinfo->min_mbuf_headroom_req = OTX_CPT_MIN_HEADROOM_REQ;\n+\t\tinfo->min_mbuf_tailroom_req = OTX_CPT_MIN_TAILROOM_REQ;\n+\t}\n+}\n+\n+static void\n+otx_cpt_stats_get(struct rte_cryptodev *dev __rte_unused,\n+\t\t  struct rte_cryptodev_stats *stats __rte_unused)\n+{\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+}\n+\n+static void\n+otx_cpt_stats_reset(struct rte_cryptodev *dev __rte_unused)\n+{\n+\tCPT_PMD_INIT_FUNC_TRACE();\n+}\n+\n+static struct rte_cryptodev_ops cptvf_ops = {\n+\t/* Device related operations */\n+\t.dev_configure = otx_cpt_dev_config,\n+\t.dev_start = otx_cpt_dev_start,\n+\t.dev_stop = otx_cpt_dev_stop,\n+\t.dev_close = otx_cpt_dev_close,\n+\t.dev_infos_get = otx_cpt_dev_info_get,\n+\n+\t.stats_get = otx_cpt_stats_get,\n+\t.stats_reset = otx_cpt_stats_reset,\n+\t.queue_pair_setup = NULL,\n+\t.queue_pair_release = NULL,\n+\t.queue_pair_count = NULL,\n+\n+\t/* Crypto related operations */\n+\t.sym_session_get_size = NULL,\n+\t.sym_session_configure = NULL,\n+\t.sym_session_clear = NULL\n+};\n+\n static void\n otx_cpt_common_vars_init(struct cpt_vf *cptvf)\n {\n@@ -164,7 +257,7 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev)\n \t/* Initialize data path variables used by common code */\n \totx_cpt_common_vars_init(cptvf);\n \n-\tc_dev->dev_ops = NULL;\n+\tc_dev->dev_ops = &cptvf_ops;\n \n \tc_dev->enqueue_burst = NULL;\n \tc_dev->dequeue_burst = NULL;\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h\nindex ac88fa5..b3efecf 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_ops.h\n+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h\n@@ -5,6 +5,10 @@\n #ifndef _OTX_CRYPTODEV_OPS_H_\n #define _OTX_CRYPTODEV_OPS_H_\n \n+#define OTX_CPT_MIN_HEADROOM_REQ\t(24)\n+#define OTX_CPT_MIN_TAILROOM_REQ\t(8)\n+#define CPT_NUM_QS_PER_VF\t\t(1)\n+\n void\n cleanup_global_resources(void);\n \n",
    "prefixes": [
        "v4",
        "08/23"
    ]
}