get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42160,
    "url": "http://patches.dpdk.org/api/patches/42160/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1530631466-26427-4-git-send-email-shally.verma@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": "<1530631466-26427-4-git-send-email-shally.verma@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1530631466-26427-4-git-send-email-shally.verma@caviumnetworks.com",
    "date": "2018-07-03T15:24:25",
    "name": "[v4,3/4] lib/cryptodev: add asymmetric crypto capability in cryptodev",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b634ab95a6e622bd64c4ed0abfe427bcef7d53e0",
    "submitter": {
        "id": 960,
        "url": "http://patches.dpdk.org/api/people/960/?format=api",
        "name": "Shally Verma",
        "email": "shally.verma@caviumnetworks.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/1530631466-26427-4-git-send-email-shally.verma@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 375,
            "url": "http://patches.dpdk.org/api/series/375/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=375",
            "date": "2018-07-03T15:24:22",
            "name": "crypto: add asym crypto support",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/375/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/42160/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/42160/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 506B61BF60;\n\tTue,  3 Jul 2018 17:25:27 +0200 (CEST)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam02on0077.outbound.protection.outlook.com [104.47.36.77])\n\tby dpdk.org (Postfix) with ESMTP id 04A331BF5B\n\tfor <dev@dpdk.org>; Tue,  3 Jul 2018 17:25:24 +0200 (CEST)",
            "from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by\n\tDM5PR0701MB3640.namprd07.prod.outlook.com (2603:10b6:4:7e::12) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.906.24; Tue, 3 Jul 2018 15:25:21 +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=xKw+Z9TcD6OJLDsT6R4225IOk/z+nrfPAykknR+VYNQ=;\n\tb=endhRjKfW7SyvMLOKLSkV9/X0cCtoJlwKMvExyPenGcjchmg3p3zzCF2IdO8H+mSyjFmDVUKB2ZYCz2dNTsHJGEpIlrm3fCmPF3Imfpnbj55PhnJSKvqEMCarLUUx7CC/4P+/SoB0J/zwUTW0y1ba1PsmirRqjBoEPTbmAd9Ad8=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Shally.Verma@cavium.com; ",
        "From": "Shally Verma <shally.verma@caviumnetworks.com>",
        "To": "pablo.de.lara.guarch@intel.com",
        "Cc": "dev@dpdk.org, pathreya@caviumnetworks.com, nmurthy@caviumnetworks.com,\n\tAshish Gupta <ashish.gupta@caviumnetworks.com>,\n\tSunila Sahu <sunila.sahu@caviumnetworks.com>,\n\tUmesh Kartha <umesh.kartha@caviumnetworks.com>",
        "Date": "Tue,  3 Jul 2018 20:54:25 +0530",
        "Message-Id": "<1530631466-26427-4-git-send-email-shally.verma@caviumnetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1530631466-26427-1-git-send-email-shally.verma@caviumnetworks.com>",
        "References": "<1530631466-26427-1-git-send-email-shally.verma@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "PN1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:c00:e::24) To DM5PR0701MB3640.namprd07.prod.outlook.com\n\t(2603:10b6:4:7e::12)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "ff10f81a-d532-4fc6-e4ef-08d5e0f93246",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:DM5PR0701MB3640; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM5PR0701MB3640;\n\t3:c2wmadbc0mdRKekLw+jUl7tzLoBph7IqS1Rr4JZFcFPbB29oxjb0yAYD9Fg2jOH1I6TEzzRIJy4yNWfB4sXY1atldu2xeakQEYjRHjGjVfSN2MKurnCpNc7QdK4YaQo/BxmnMo+hKSOcJARNj+WsHQZYxAozNMgbRZ0uLxFwFAQSW0Oz5tmZ7YkJ/mhRmDl+DVgaI0wVolv+0CwgCkzXDSrZKacKpAAEArTf7IqlVwdoQQFJonDsJUgLGx5e3Qqa;\n\t25:aOP3k2GTMBrGaVY8PF9jHW43U8AZobpqQ62NGENj7+7C3TN2SDbFkkmoy3YWf+6U2bka+Vn7XkoGcjh5qNap2KvD4g8St06EAV0K/lQZRZzFYv3hBvRmAXgSvHIlTaWVS1RtsILcr6H22zFSFAmySv+Icnjni98PWNjROjIOlzi1j0pPhMZzXVcDXHpL7bhXgDYzXLrt8eV9JYUgyJbvbKx3p34iLOmcSH5np2LANOcM93LQptQYI55HIw1N3HWSyPQrWe7oZkUm/w1yA3rxgrXipexf9Yqy5hl0mC6TebxjxtJn2IxNbcb1TTderG7CAItqkXbLn78cUCcemZFK+Q==;\n\t31:X9ptpFqUc2PLHDBH5zl8kiazpCV7LIlE6bEtE6eIVjPINMTMmDQh2WUzp+XUO9r0Ldk4NwHnhjDxI8foDNDWYW7C4FlydspC3BtFIbJ33CbZAzj56dC5tSZctp9CoZnZqPW8MB1NBmdcOiQHrOUDQPRMTPZqb42ctIAV2fpsRT6/nvI6gfXi9WARhMvKCvjBViS99CbzBQB0ijt83DUPX39l0IrVljrhsyXgKhVftBA=",
            "1; DM5PR0701MB3640;\n\t20:zC66eO5TnvECYy2JDlRKCQvtRsAnGCpWTv+DOJyXWrJapPpPrL44ewUn6AM9GP4dGmJzK4ekmwh2+WRwwDNrEoFJwDSzKXYv+qx4t4sowJGdVzqp5xCarFo13iWdUDEHVNywk7YmVMSZ6kXMc8/uvjmNRWGf/1oKeRpATFPpU6SBU0BGYw4FSY64y+cYMGhktSkQtgNtSh5P6uzRax2AtsE/fYQTgR4ezT9vVo+AFnKFOkS0nsZrJou3xFgNpKUgvwTzVfgvJPQkKqdUxphvZ4Y2Pj5fjK0HYf4o8ptz3w/um3/KHzm538ayBnSnao3dpe9DPhmvjTlY/E+xbfMK7p1ryaUFQh4+dw8e/Mhu1WPwG7BM2LIIzBd8g2JhNPQjSo8klG7RoTfoWVQhSjGKj4FtV2ssMQZHeHDT2W6eQcaIjoyyBA8gFyaiVuh6qu8TIQZrQ25P7V4C+25rXN8BHrLeH4X9FTeTDnMe3l4bySmK84AJhcHNa6glSmsx1gunhmjSnNtFCH3CRXEy0q7pGxP3GnGHcRVxBFc8fECfmDGNZRgl8YBc1F8x2x3sG1tjsL/gNCOP0WPJEISvakSy14YZvDi/hVTn4nYPkpoes0k=;\n\t4:wByLIfRRcDPyA+lxuk8k2mMhH2o5TauDAfAgI1YFfEZVesoR269dnxWRYrK3lh4qDA9pn1RyOoW6NKBuCZmd+xg9HhRIZOwDOzU3OcqPpaA8wOg2CcdKJn7J71YEu18OTY4QwTsWNNA6BYw2KGxCYAOolnhJlpLBJgho2k9Ijq+MljAI40P9wVmsgIBSVoDyrj78h8HWl9lWRniETOcwL2o9OP1xkKOuHGgClE6lI7U6+un0FD1nZ+p9+6/YFzFzQ4fmJR55Uy6vEyOTL7aAbQ==",
            "=?us-ascii?Q?1; DM5PR0701MB3640;\n\t23:MCtYL4W/sVMzlE1YPK+UatxfFYWBNywaEgeQuLE?=\n\tvtwsjw/22RQm2hPVeX+DvbZYtUv06Arn+qBlgB0JfZCdlEbrzgP9DQTnKXoRk20T3Hk5SlYwrc3oZoKgjE2nNXb2NIaCdRSICso91Z7EzhCjmcAfvwOffY8Z3ehHsyEReDypnSAcIp9C2/Rj/QElkAqStRpv+RKGL1BlGcVririaxqu7grXu6jtgKkD4KO/Mz3qicMS7s8mI2uJ51GVCamUyIqdHQkoFjKAHowi+2WVxuw6Yjy2prXpr+7WF6FgZyuqI7ycnvH65TA1N96aBgSlK8N8uuqEC0fhsALgOJuqVvfIS5IB1iXVyZpambGS+BXr8SyqO6OpCNljvPRqhZQm66EvnaunSLIY0sL06w5WRmlsF8bJcJrUWG+GGC+2a9RIqnv0j50m5uSnIFsNDkLScudUKzEKLJuvna0u7CK7bVxsZQmash5xewvFiMm2ZKxi09mu2Cm5U0EeL9f58YCPdeftpZ9bTNbYBUQ9bx3sAwvRxvQ9vhSovqYBJk0cQi0vq3TsAjaY4Eo6DCG9rOyTiB++0/LBQCM7PxWx8INU5n8uhWU0wDtFHyQDjj71F2xraFH3G6lkt9ttTpnu/4zSfEiV7vRdZ2e0aiuKIyEnUbpZb0ZSMd/v7Agc1G61C1XXIYnrGj0mT36EcF4/M/pK8UqDUJusGouAFKgX0tLXYROB24/MkPc4flHvwDDEEA73IFZ/5BZRnEk+9QxSMXpcUEXKaC4BhTGxj/XY3DOX749PN4X9Wen59LsnCRxXR398TZiQ7tswfrEHgFsnKeXsQAoUzvtPUucl8SKA39kKcadfMMJ8sQgoqPdvwknWD55rypeRZ6AG+YqP/htN8XfHExpPeI4uJMIPoDv8IgrVLrSQHwwtF2k9LVEh4QaOjvEvzSo3SCooohmouuBfxL739LcBSHCfC3WnWmmCa9YOifKPfvnlzDVB7KF/k7bcM7a35P4vQMz1UBKWzuyjbZdOhNaf1RWQXvv0/K0yCDDvQ8tlN9frtICw5R+yyc4fauEdWZ9ZMw+LHXYGSBeQW59rbrQGEDOnuelI5OscpN9pizrWsLnT/ikdH5UsMxNmDvZL6dkGNismvq++QVou7nwcL8rA96gNX27YsX2x4aueM4JO7kuqrfn1+FEhEhMYGAxbdsGXP5UJlJLqlVkzrqIbde+eYhTMM/K2xb4zAOmpq6OCee+iK+pbJWNe0YhomzzHFYbheVuWKNSodFURTjLrXV0lRsNZ8puKh2fwx+cGVHnpqEvf2YWa5Cz+F+f4sqt79IXCFzvEiJutVtdfFVXxPgYoKHoJEHIQ93X8+utgvFo8SlPWBu6/s8rFWYxdmm5FA=",
            "1; DM5PR0701MB3640;\n\t6:/a6OhbvFu6ouzqZyM1cFvJdBmVNJvgfYUNlsQUJyPDRz0wUcnoW7pA4QUrCM0Xk3FRvLYq1/kbqDQgawZseqkbZBcmr/+Jb72nayWl/fAWqJ157AGg7jrBnwv6yyn1pYumTzPv5XipE0rgnZTeDKC5yOo8eRfIe8YWwINE/J6br2Vyzod6GSU0Zi43S478mOW3Eef3jYah1zJUPbl+SCS4I78Jz0meZ82DZfYPGE2ECDwGpl/+ZxOC27ph6XTx6TMjQ1dQXcC5Pf8msdrkEMYtyMTAc1wssCXFnvPob3Djd1jpil3wX4mJqylwsJHuQDNdNh7uY/vRz7RBBLKRmFA4TKF295BdxmFJPJdT91RJjQogSa9PrrVF3PqKcLjLFvJIWy5gUfbHaMfBDCsCLV/ex+8GG1rCup4DUUAj8Btrad4+J7BpcwDLAwomLm3fCr2s1MowVseh3zOSAZ/pe59A==;\n\t5:fyiY9XWJfXNNqGsyoF4irMO0XBJC7v9QxOywmnBMoXVJvfjC8opsxjwDolS7FAXzTQvbOLQyrcEa9DClaHWskYHn2QhtFO7gqEc7Ae7UymHRGSeGJmuXl/oa7mLkrvjL+mT5HNgl8H7CJZmZn5QgVfLpfuYmL3kd57RhZyXiymE=;\n\t24:VwSHAZsuX8NVii6PwlrK1viWuukwstf07B+3M0HYAEi/A75Ms7WnPLZtFY5MhTs81pNbCKAmzUszV3bYLngCt33BFX4DoRIE73BRYBV8Am8=",
            "1; DM5PR0701MB3640;\n\t7:xoo3j7LCjQCj7DIAm5IxFTApa62kq+KkI1alOrczUnVCg5PsTtGxblxjkumSRCi3YjmitCDz+scU7SBOlBYXCKYkbRXemN/KXEiDlaljuLQkqE+aaZAJ25BOv7BHxAhb+hdhmBD+zMHrP3qcVJno+gq+Z3rptV260K/BhmKT2vGetW6rpGcKJfabDqcvQ+JbLgMXPGPszJvtKFKtSBGrfZuKzXoTox3GS6z+au3NCKTp9i2uyJpDoACw39+exjKm"
        ],
        "X-MS-TrafficTypeDiagnostic": "DM5PR0701MB3640:",
        "X-Microsoft-Antispam-PRVS": "<DM5PR0701MB364097C28A94925D420BAF26F0420@DM5PR0701MB3640.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)(93006095)(10201501046)(3231254)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016);\n\tSRVR:DM5PR0701MB3640; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3640; ",
        "X-Forefront-PRVS": "0722981D2A",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(136003)(346002)(376002)(39860400002)(396003)(366004)(199004)(189003)(50226002)(53936002)(55236004)(316002)(6506007)(107886003)(54906003)(42882007)(305945005)(386003)(68736007)(51416003)(575784001)(7736002)(4326008)(72206003)(8676002)(6486002)(478600001)(25786009)(81156014)(81166006)(76176011)(2361001)(6512007)(97736004)(69596002)(6116002)(16526019)(3846002)(186003)(2351001)(44832011)(5660300001)(6916009)(53416004)(8936002)(66066001)(47776003)(476003)(106356001)(16586007)(956004)(2616005)(11346002)(105586002)(2906002)(52116002)(446003)(50466002)(14444005)(26005)(48376002)(36756003)(486006);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3640;\n\tH:hyd1sverma-dt.caveonetworks.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": "y2qT7XzgsctMF84d8GPISroTMgg5KrQEWYPaH2jA9RsyOF4YL+DDBVJUJ88hziUnXKaCjt5Mc4Ik47x5qaw3fWePc1PBr6zfSh8yBTQGtv3IAD4UfiM/wlRaZJf1D1hGsYUV8dsxUw/dSrj2Yyw70JTAVfXZw13v+3fkzbx3C4WIXThKIxLGsAkbSffXO04Fg+Kdqf5K24kyx+Ntpt8SBqBQjEDhoOCi/DRYGMA4oHDiau5AOafVKa3BQyl/q7tsVpdznQakaBObJKeg59X46ITVWJLKCSK3jHS5L5ecPdpGUAmwyGz08nsp/IwBXcO1w6poKGgE481fc2vNMtSnrTp4Wl7iN/1uA5WFzmCV+oA=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Jul 2018 15:25:21.3921\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "ff10f81a-d532-4fc6-e4ef-08d5e0f93246",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM5PR0701MB3640",
        "Subject": "[dpdk-dev] [PATCH v4 3/4] lib/cryptodev: add asymmetric crypto\n\tcapability in cryptodev",
        "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: Ashish Gupta <ashish.gupta@caviumnetworks.com>\n\nExtend cryptodev with asymmetric capability APIs and\ndefinitions.\n\nSigned-off-by: Shally Verma <shally.verma@caviumnetworks.com>\nSigned-off-by: Sunila Sahu <sunila.sahu@caviumnetworks.com>\nSigned-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>\nSigned-off-by: Umesh Kartha <umesh.kartha@caviumnetworks.com>\n---\n lib/librte_cryptodev/rte_cryptodev.c           |  76 ++++++++++++++++++\n lib/librte_cryptodev/rte_cryptodev.h           | 103 ++++++++++++++++++++++++-\n lib/librte_cryptodev/rte_cryptodev_version.map |   5 ++\n 3 files changed, 183 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex 47fc2e5..2e4b128 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -242,6 +242,24 @@ rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum,\n \treturn -1;\n }\n \n+int __rte_experimental\n+rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,\n+\t\tconst char *xform_string)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 1; i < RTE_DIM(rte_crypto_asym_xform_strings); i++) {\n+\t\tif (strcmp(xform_string,\n+\t\t\t   rte_crypto_asym_xform_strings[i]) == 0) {\n+\t\t\t*xform_enum = (enum rte_crypto_asym_xform_type) i;\n+\t\t\treturn 0;\n+\t\t}\n+\t}\n+\n+\t/* Invalid string */\n+\treturn -1;\n+}\n+\n /**\n  * The crypto auth operation strings identifiers.\n  * It could be used in application command line.\n@@ -312,6 +330,28 @@ param_range_check(uint16_t size, const struct rte_crypto_param_range *range)\n \treturn -1;\n }\n \n+const struct rte_cryptodev_asymmetric_xform_capability * __rte_experimental\n+rte_cryptodev_asym_capability_get(uint8_t dev_id,\n+\t\tconst struct rte_cryptodev_asym_capability_idx *idx)\n+{\n+\tconst struct rte_cryptodev_capabilities *capability;\n+\tstruct rte_cryptodev_info dev_info;\n+\tunsigned int i = 0;\n+\n+\tmemset(&dev_info, 0, sizeof(struct rte_cryptodev_info));\n+\trte_cryptodev_info_get(dev_id, &dev_info);\n+\n+\twhile ((capability = &dev_info.capabilities[i++])->op !=\n+\t\t\tRTE_CRYPTO_OP_TYPE_UNDEFINED) {\n+\t\tif (capability->op != RTE_CRYPTO_OP_TYPE_ASYMMETRIC)\n+\t\t\tcontinue;\n+\n+\t\tif (capability->asym.xform_capa.xform_type == idx->type)\n+\t\t\treturn &capability->asym.xform_capa;\n+\t}\n+\treturn NULL;\n+};\n+\n int\n rte_cryptodev_sym_capability_check_cipher(\n \t\tconst struct rte_cryptodev_symmetric_capability *capability,\n@@ -363,6 +403,42 @@ rte_cryptodev_sym_capability_check_aead(\n \n \treturn 0;\n }\n+int __rte_experimental\n+rte_cryptodev_asym_xform_capability_check_optype(\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n+\tenum rte_crypto_asym_op_type op_type)\n+{\n+\tif (capability->op_types & (1 << op_type))\n+\t\treturn 1;\n+\n+\treturn 0;\n+}\n+\n+int __rte_experimental\n+rte_cryptodev_asym_xform_capability_check_modlen(\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n+\tuint16_t modlen)\n+{\n+\t/* no need to check for limits, if min or max = 0 */\n+\tif (capability->modlen.min != 0) {\n+\t\tif (modlen < capability->modlen.min)\n+\t\t\treturn -1;\n+\t}\n+\n+\tif (capability->modlen.max != 0) {\n+\t\tif (modlen > capability->modlen.max)\n+\t\t\treturn -1;\n+\t}\n+\n+\t/* in any case, check if given modlen is module increment */\n+\tif (capability->modlen.increment != 0) {\n+\t\tif (modlen % (capability->modlen.increment))\n+\t\t\treturn -1;\n+\t}\n+\n+\treturn 0;\n+}\n+\n \n const char *\n rte_cryptodev_get_feature_name(uint64_t flag)\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h\nindex 89dcd40..ec87a77 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.h\n+++ b/lib/librte_cryptodev/rte_cryptodev.h\n@@ -143,6 +143,35 @@ struct rte_cryptodev_symmetric_capability {\n \t};\n };\n \n+/**\n+ * Asymmetric Xform Crypto Capability\n+ *\n+ */\n+struct rte_cryptodev_asymmetric_xform_capability {\n+\tenum rte_crypto_asym_xform_type xform_type;\n+\t/**< Transform type: RSA/MODEXP/DH/DSA/MODINV */\n+\n+\tuint32_t op_types;\n+\t/**< bitmask for supported rte_crypto_asym_op_type */\n+\n+\t__extension__\n+\tunion {\n+\t\tstruct rte_crypto_param_range modlen;\n+\t\t/**< Range of modulus length supported by modulus based xform.\n+\t\t * Value 0 mean implementation default\n+\t\t */\n+\t};\n+};\n+\n+/**\n+ * Asymmetric Crypto Capability\n+ *\n+ */\n+struct rte_cryptodev_asymmetric_capability {\n+\tstruct rte_cryptodev_asymmetric_xform_capability xform_capa;\n+};\n+\n+\n /** Structure used to capture a capability of a crypto device */\n struct rte_cryptodev_capabilities {\n \tenum rte_crypto_op_type op;\n@@ -152,6 +181,8 @@ struct rte_cryptodev_capabilities {\n \tunion {\n \t\tstruct rte_cryptodev_symmetric_capability sym;\n \t\t/**< Symmetric operation capability parameters */\n+\t\tstruct rte_cryptodev_asymmetric_capability asym;\n+\t\t/**< Asymmetric operation capability parameters */\n \t};\n };\n \n@@ -166,7 +197,17 @@ struct rte_cryptodev_sym_capability_idx {\n };\n \n /**\n- *  Provide capabilities available for defined device and algorithm\n+ * Structure used to describe asymmetric crypto xforms\n+ * Each xform maps to one asym algorithm.\n+ *\n+ */\n+struct rte_cryptodev_asym_capability_idx {\n+\tenum rte_crypto_asym_xform_type type;\n+\t/**< Asymmetric xform (algo) type */\n+};\n+\n+/**\n+ * Provide capabilities available for defined device and algorithm\n  *\n  * @param\tdev_id\t\tThe identifier of the device.\n  * @param\tidx\t\tDescription of crypto algorithms.\n@@ -180,6 +221,20 @@ rte_cryptodev_sym_capability_get(uint8_t dev_id,\n \t\tconst struct rte_cryptodev_sym_capability_idx *idx);\n \n /**\n+ *  Provide capabilities available for defined device and algorithm\n+ *\n+ * @param\tdev_id\t\tThe identifier of the device.\n+ * @param\talgo\t\tDescription of crypto algorithms.\n+ *\n+ * @return\n+ *   - Return description of the asymmetric crypto capability if exist.\n+ *   - Return NULL if the capability not exist.\n+ */\n+const struct rte_cryptodev_asymmetric_xform_capability * __rte_experimental\n+rte_cryptodev_asym_capability_get(uint8_t dev_id,\n+\t\tconst struct rte_cryptodev_asym_capability_idx *idx);\n+\n+/**\n  * Check if key size and initial vector are supported\n  * in crypto cipher capability\n  *\n@@ -235,6 +290,36 @@ rte_cryptodev_sym_capability_check_aead(\n \t\tuint16_t iv_size);\n \n /**\n+ * Check if op type is supported\n+ *\n+ * @param\tcapability\tDescription of the asymmetric crypto capability.\n+ * @param\top_type\t\top type\n+ *\n+ * @return\n+ *   - Return 1 if the op type is supported\n+ *   - Return 0 if unsupported\n+ */\n+int __rte_experimental\n+rte_cryptodev_asym_xform_capability_check_optype(\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n+\t\tenum rte_crypto_asym_op_type op_type);\n+\n+/**\n+ * Check if modulus length is in supported range\n+ *\n+ * @param\tcapability\tDescription of the asymmetric crypto capability.\n+ * @param\tmodlen\t\tmodulus length.\n+ *\n+ * @return\n+ *   - Return 0 if the parameters are in range of the capability.\n+ *   - Return -1 if the parameters are out of range of the capability.\n+ */\n+int __rte_experimental\n+rte_cryptodev_asym_xform_capability_check_modlen(\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n+\t\tuint16_t modlen);\n+\n+/**\n  * Provide the cipher algorithm enum, given an algorithm string\n  *\n  * @param\talgo_enum\tA pointer to the cipher algorithm\n@@ -279,6 +364,22 @@ int\n rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum,\n \t\tconst char *algo_string);\n \n+/**\n+ * Provide the Asymmetric xform enum, given an xform string\n+ *\n+ * @param\txform_enum\tA pointer to the xform type\n+ *\t\t\t\tenum to be filled\n+ * @param\txform_string\txform string\n+ *\n+ * @return\n+ * - Return -1 if string is not valid\n+ * - Return 0 if the string is valid\n+ */\n+int __rte_experimental\n+rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,\n+\t\tconst char *xform_string);\n+\n+\n /** Macro used at end of crypto PMD list */\n #define RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() \\\n \t{ RTE_CRYPTO_OP_TYPE_UNDEFINED }\ndiff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map\nindex 9cdc0ee..aac1498 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_version.map\n+++ b/lib/librte_cryptodev/rte_cryptodev_version.map\n@@ -97,14 +97,19 @@ DPDK_18.05 {\n EXPERIMENTAL {\n \tglobal:\n \n+\trte_cryptodev_asym_capability_get;\n \trte_cryptodev_asym_get_header_session_size;\n \trte_cryptodev_asym_get_private_session_size;\n+\trte_cryptodev_asym_get_xform_enum;\n \trte_cryptodev_asym_session_clear;\n \trte_cryptodev_asym_session_create;\n \trte_cryptodev_asym_session_free;\n \trte_cryptodev_asym_session_get_app_private_data;\n \trte_cryptodev_asym_session_init;\n \trte_cryptodev_asym_session_set_private_data;\n+\trte_cryptodev_asym_xform_capability_check_optype;\n \trte_cryptodev_sym_session_get_private_data;\n \trte_cryptodev_sym_session_set_private_data;\n+\trte_crypto_asym_op_strings;\n+\trte_crypto_asym_xform_strings;\n };\n",
    "prefixes": [
        "v4",
        "3/4"
    ]
}