get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42723,
    "url": "http://patches.dpdk.org/api/patches/42723/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1531236801-5931-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": "<1531236801-5931-4-git-send-email-shally.verma@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1531236801-5931-4-git-send-email-shally.verma@caviumnetworks.com",
    "date": "2018-07-10T15:33:20",
    "name": "[v5,3/4] cryptodev: add asymmetric capability",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "6728271ca146b649df507d6c171dda7a813b51e2",
    "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/1531236801-5931-4-git-send-email-shally.verma@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 499,
            "url": "http://patches.dpdk.org/api/series/499/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=499",
            "date": "2018-07-10T15:33:17",
            "name": "crypto: add asym crypto support",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/499/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/42723/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/42723/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 3C86F1B4CB;\n\tTue, 10 Jul 2018 17:34:10 +0200 (CEST)",
            "from NAM03-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam03on0047.outbound.protection.outlook.com [104.47.42.47])\n\tby dpdk.org (Postfix) with ESMTP id CD1451B4B5\n\tfor <dev@dpdk.org>; Tue, 10 Jul 2018 17:34:06 +0200 (CEST)",
            "from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by\n\tDM5PR0701MB3639.namprd07.prod.outlook.com (2603:10b6:4:7e::11) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.930.20; Tue, 10 Jul 2018 15:34:03 +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=I3VPYDTQK4KdwpT74M19ULHE2Uu20txdQ3z2gKg54ZA=;\n\tb=oCCUMWfOAUGRrPsABP+AIh3SCL/7oIdEiqScrJ1g6sva451vGJc21o9SOq+E+nvMd98v3kQW8MnGzQXIzIu+SsYEk2IsB4CEO2kc+vRYXmtObsqwfjSWEYVRFX6uXZOey3C7EjzBHFWtkY4x3HpfGrHK1Rv54xXlUfT9RWHimXE=",
        "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\tSunila Sahu <sunila.sahu@caviumnetworks.com>,\n\tAshish Gupta <ashish.gupta@caviumnetworks.com>,\n\tUmesh Kartha <umesh.kartha@caviumnetworks.com>",
        "Date": "Tue, 10 Jul 2018 21:03:20 +0530",
        "Message-Id": "<1531236801-5931-4-git-send-email-shally.verma@caviumnetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1531236801-5931-1-git-send-email-shally.verma@caviumnetworks.com>",
        "References": "<1531236801-5931-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": "BM1PR0101CA0007.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:18::17) To DM5PR0701MB3639.namprd07.prod.outlook.com\n\t(2603:10b6:4:7e::11)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "d1e4a617-4d24-4f97-4b05-08d5e67a9218",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);\n\tSRVR:DM5PR0701MB3639; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM5PR0701MB3639;\n\t3:Ee+vGNykVR7CfgbqJcgmN8VQKhQY1Ush0sMZ5mk6jhtJFu4M/hKr3gOFMhA6jycea5/sZcrFyuHEncMA9n5aUajUq/PoPlanzl6YKfuomYdPSm/znwCXMAxhDRs0LX58v32rml5ZX4564a/XeDw6bIttRTQ43L2LBt/hrC2J2nPQeHx2pMDlY9kLdHQaOcU2vBXH140d3SIc3JsUSxt8GKoI3OkV2Pm3KZyFNY07QyJLISG3DZtUEXhF8weOQ+PX;\n\t25:4tbjaaoAEAXEwf4MGpzA5MF8Gv3PcA0umKCnZtS7QD6ckbJEf/JeKP0/ce3kr2C4B/XsjdH1Z8IM2J8c6PLVwPO9KLHyOay85X8RuS3NKfrPh4VeykdIJmJtJxFbvEzm69++FTNQsca0S1VzZFB/2h6codv8x4zUfWCYN8YFc+Pa71S746wrJfQv4w2rsClPoUZZ525fYBTwLMYnap21QVOrhAgSHNwmKd4ZGMDSvIqvi0F5o0p0bJGMwIaQpCnJZLdKmg8X9aH31bT9ZRVQTEQu1mHJ3eIaGlyltxLMro5AUMK7z6ONzKmKZ/ZTXcHQk+34Z0nnDPe5SOlPcJEd+g==;\n\t31:yEu2jDQj+u/wFKv62QDayuxnjvIj+h6zFUc0EkNJdBcZ/ntrmWKu8sGaSSWfETMIvia8neQz/NceMeAYFwQdjPEkuko2B2fc0TO3aXAPSkvqe5jF9oofjWK5E3aWzzYruOCUfsEg9GLEcZp+OelNB0SvMGC9fjKXNHqjZX0OHsWweO8oY+aiYM1TFPVVEAa0ghjwsR4BjBnwnR5ieDNdOxU/FEqHOTa0a7dl1U9b5ps=",
            "1; DM5PR0701MB3639;\n\t20:vV22TAVOkBG9CLuiw5y07SoR2xMOTgu/kjGfWbrw8R/Cb6mKLoMgN34NkOTlArE3skVqF+Q5bzvz2/sCNNIVejClT/GVsXWyOIQYb/sAvrBGBwXBWaz7qDzuLGfXyJAaG66TQhvtqlXFdhQRpg7AgoO3pDKP0X2hSKtqmzSsrm2jAT/Gym3MA8vpJoaX8F9YXnt5Jp5cLb4jxh4wS4breoJg13CE7HUNeY97pHPLPb1WKuyCKI17vU1vBpG2Vv8CZom9Ndh7FCOWxwZndcP3UZ5LVecrHFiIlJ9ib4ABZ+XAdkioZutm3/erW5I9i0ZvzI3n2d1PDvS+nEDHIrXHAow0HBS/+JFBTR1nsmqiy1vkrsdpT03jbz/hRt7rKMgHd4xInyzzLx0hqmhX1vOwbKGZ+orYdYOyWpjy465QEfID4I6g8XSOggrGtC0+PzjDj1g4Tui/WjlhkHwUdKxinG1A2nI/vtBy+2ZjcjoCSCKwfojb0Kq0zbQZMayfHcD+5FDXX9mEfZAopMxEUPiXN85HiLCmGxlsl4Z3uEimD526ogJkmPOdcKNGY1U7V9zTK1txOHkXZyrnLVJ4WQkI06iYH7e/LKBxuwQ3cmHXga0=;\n\t4:xYIY/b8DSuyY6Tz1A0uuZ4vUWspVwR/zzDR1KfdgCCrf5FAgjttpGd64Vv9RYrqFwFO9dB6uxLQ2nC4jJVGHu1f6D7VyRAdwi8/eAdYInGqZ3FFm0XoorCABiDaxBL62pcwdUwRRDl37P82nJ1gWHnZUJ1eX0rM2zquYp/1P6F4X/9+xXDW3DZu5tZL4t+//BG6pUoOeSgUmKVrPSB1i6uT/r9kCaRWvAGWDywgrqgiDEmmClZ/7IIOyr3zVkjynlI2WgDfOQnOQ1lue+14fZQ==",
            "=?us-ascii?Q?1; DM5PR0701MB3639;\n\t23:VYD7nbgvANMFDWZ5X/+B7C3Y3DldgaCGT2BuYnD?=\n\tdkV1lDCXRjwUpJe+GVYppGq1+MfgwmLU1zp8M7PCv5rtnk2ucPu9kzhS+jouO2zhfN78gnSLsaoMhEr9QEtiykP1rWPMcwW8E41eI/RQTyMZFqQ18CP8XBYjcmqigrw64ZvQRy7aD5izhzU4/K6OuRZDi8z7P+YXLLNJEkh8bjGvi80kTPlmBN4pWvMYyRnXXwWSM1EdwxiRyyXlEIFeniu4L7s9+cQCQA/HoScIQ4LN63moI++L25mA3+4BlEeOcTSQAnBGWksPWQvblUgoGffU4xF0txS41gCxazJjg6SEJXS+nVLknNPqRNStZo0d6mlyotgmmKUdWG08KasFTs58CqRSqxNK0R5ETipx53g7Qd8fqd5pl2DfUx9crIH4TuXZyq957oRIO6Wz9Ru/yPHV7xnsED9QBZHFHKaR2ooabPVXXvTMsP5Mx7J89/w4I9F6F/kRRi+6oKFMZ7RleH6usflIMh2xwlW/bN79J1+nlEoXAfTj/sqKo4RCUkuarbaf//njuoTw0222IYxpKZeK/a/5qYTBYD7rD7fTPOQIjDai8SWP4pVhgj1LBrX4a65OSG/ci9HAarRA+AY84psntHm9aIJ833eVVkyorkJj0smpmKfVB9rvaJ/GgNBM2qUwNsHvMHwRQSpmal4Fbrnim5kp7ZrYmiF8f1SFosqyDYYAtsyB2DfqpcV4HvC1iAt4TMatJG41k+JxQWgEZCh4/O2/Ga7EwaeRC2jQ5MFxcOZJgX4GtNGipdK//ywTI6djQxLNkvFk5ro3zE33pAHpblRUmdpC0eUHocCzlcreeY88IsBDAMX+vxRVWBvB7scZDo94gRx5uwtHgy14r9JJvqs14CHC9WDSpReGK3/rUd/m0aZndOXvHAazFg6rcl828HsgSOBQQiwy3etO+rhvWYVs762VPkenS60vEzJbcxcxHVUEKuUxPCUIQkgWIzuBhW+k4lyqHRj3aCBd2mYrmW/JtU7CGKuAbgalv3B5bzgIE/U3ijobXNWeQV5n0sjpTjH9dJe3oZ1BOKmZ7rLC7i0/iAELQi/v2OLKWxWlqIbFpvHX1kNl0fNeBlyDLBHE7URdvUzkOIZHI3f7y93uREyGw0NTpUUlMF0IPUJroT2869KSe5H3sswyLAzWfqqcqRkcXKYFO1l3mhjoseu/bq2AE4wc3jJYEeOME+x9WQYXF8TKZBaP4r9llZOFa1dBjMY3wcRsfqlO78LCFop6q0ivDfSy/9H+8RI4dNSyTDYhk9TI0tmT6UBC4cAZRkAyWG6YCFzhUi1cKw++11jhp4s7VRRiX/FCM1EFX96wV3E4LheToNHYvFzwyCYZv1N8=",
            "1; DM5PR0701MB3639;\n\t6:8KpnaRWlmO8yOWJ+F+te+pgP59GtwQG4dT2v2k2js2CTvE2TZ5pFluklal+7Zd2y1NukVdt9k+bYMfmVUx3pueTnr6qMIdJUE590dxPu/eJ9NED6RA8g7v1iB8rGUAHsGLO66Qpec1Z4HJJTSR9IehKsndkE+PqC4sqeVpA+OCzo20UOKNuuEuKumnKo0yZzFjTyKMBEOavetXe/bdxwxB4qXe81qqGtTP+82d4nc7FOvXXW50Ns1OfkPsnMvRKw6xwAi9BeyzwdihPjD0C+5OzrmdifQB27F4prMH1Vdwv63RwhXvkB7yozvU1RAZ5sAwYdKZj5xjjFkzl8jmGxgyFIP66aG4oqdbqsUPOZ98jziFyu+I+/IKtRDGvJ4wzUQbnQH2XHYJRLBfpgs2pD+b7pD6p7FUzQ7bYgJlJ+UoJ4l86ljhn0IFy42+TArrSDgi2cupL6fmeqaCNSct/SZg==;\n\t5:sIg3/QWkUd+43TIDSvUtXnFyE84KRL+5LarCbGGjqj32g0ba3pQD9BSKCqQ0RnPeOYL14TXTVihV4olUdqUP3lP01ikhIepdWIRfiRF7j98o2TNXSRkEt1WahHxCLJJCWX5iXs9m2lxyPle3JoYAd51hNSknzFIDLie9QoNzW9g=;\n\t24:/zo/ADLFWTXURbtR0J9f+qUoMCDTZZ/LgSbfdh/MWnS2YCS5AOt8Gayb94NLVJLSF/pM8wqr7CffBWJHemSer7ZOxBUalqpfDuKOrPPnyPU=",
            "1; DM5PR0701MB3639;\n\t7:Dxa/GvvlFTSzTDql7Sf0G1v1jn6zMQewhPmx2sPPKo9b0G9eM6i1d0w088WGnVt4fOZVuO5Lt5U2w8kthkiOJlJk44ofJztUN68SG8vWWMQ2oh45ASvnHM1icnIYE3gh01pnbr3n4eq/FPBSZcAwFmj8wJ71CcwTwHHewoY8EwKYbeToXJ015sCaMZVPEFpD9rI+JrwdSGUX1BCq+xa4Iby3WFuDynNz+2Qf9pFu6DZf4x0DiDvpLi9SGEAY34Pm"
        ],
        "X-MS-TrafficTypeDiagnostic": "DM5PR0701MB3639:",
        "X-Microsoft-Antispam-PRVS": "<DM5PR0701MB3639C5AC8EDE2EA2D3B1E63AF05B0@DM5PR0701MB3639.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)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016);\n\tSRVR:DM5PR0701MB3639; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3639; ",
        "X-Forefront-PRVS": "0729050452",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(396003)(346002)(376002)(366004)(39860400002)(136003)(199004)(189003)(47776003)(2361001)(68736007)(53416004)(76176011)(66066001)(6486002)(6666003)(186003)(105586002)(16586007)(316002)(6916009)(51416003)(50466002)(97736004)(48376002)(72206003)(54906003)(8676002)(4326008)(478600001)(5660300001)(16526019)(50226002)(6512007)(2906002)(386003)(3846002)(6506007)(44832011)(106356001)(107886003)(2616005)(26005)(55236004)(69596002)(6116002)(956004)(81166006)(2351001)(305945005)(25786009)(81156014)(53936002)(36756003)(8936002)(11346002)(52116002)(476003)(7736002)(575784001)(486006)(42882007)(446003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3639;\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": "qDXZObIaC1v3x+qiY5Z+OWG/2Col4yBGLyCOyLyCl2L/fFQxrN3N9EZA/54NBMd2vq2uoQR/HHa68N/GZxdeDX3FFA3ryus3rpOs291V1DL3aV6wOlTEajFH3DRI/E4+JGfDoXFDWBsAqM/zF0Lken/C9o9y+FpzVtwljhp84PnxnJXpuQPX7bmEMFWJKjwMA8/UTu1zp7rt3YEtamFMb43O9Pi9802QVeEufhtT51iQ29rajCQqJvRKHS8953KOa/fycytsThmyoySj3EUZi1xsi9UldZLnp6WmZNNGh/nMl6FUrjlQ2qwVYNCXxDerMQCFnb/5GRISmq3V7atY2wAV5UfLg6zHgn6POs2QQl0=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Jul 2018 15:34:03.0600\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "d1e4a617-4d24-4f97-4b05-08d5e67a9218",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM5PR0701MB3639",
        "Subject": "[dpdk-dev] [PATCH v5 3/4] cryptodev: add asymmetric capability",
        "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: Sunila Sahu <sunila.sahu@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 |   9 ++-\n 3 files changed, 185 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex da0d322..63ae23f 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\trte_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 f93dc71..7ef7fb4 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 xform\n+ *\n+ * @param\tdev_id\t\tThe identifier of the device.\n+ * @param\tidx\t\tDescription of asym crypto xform.\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 e63b51a..d9b56aa 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_version.map\n+++ b/lib/librte_cryptodev/rte_cryptodev_version.map\n@@ -91,12 +91,17 @@ DPDK_18.05 {\n EXPERIMENTAL {\n         global:\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_init;\n-\trte_cryptodev_sym_session_get_user_data;\n-\trte_cryptodev_sym_session_set_user_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": [
        "v5",
        "3/4"
    ]
}