From patchwork Fri Jan 5 09:39:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kumar, Ravi1" X-Patchwork-Id: 32950 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC6A21B173; Fri, 5 Jan 2018 10:40:34 +0100 (CET) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0042.outbound.protection.outlook.com [104.47.32.42]) by dpdk.org (Postfix) with ESMTP id 1D97C1B040 for ; Fri, 5 Jan 2018 10:40:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=O0iF9dZGeSiHJlN6DifWVKsNP9gMHedy78suEezr5BU=; b=MlpOf4kYTbxt1d/oGiLcvDxL9CBu1qEZKJ6t4MpUjfptAEyJWHYbLd6vlvTVi4/hGslZYY++C5sQoFMQ/3bYm3D/whugb9Pt/sQ+V5xFsLfOCJX5qWVT3tdgou69Z/Yt0zdtaMezfoOdOMcXI05vjvOsVpL3uNS+GfZs66WVY6g= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ravi1.Kumar@amd.com; Received: from wallaby-smavila.amd.com (202.56.249.162) by BN6PR12MB1508.namprd12.prod.outlook.com (10.172.24.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Fri, 5 Jan 2018 09:40:29 +0000 From: Ravi Kumar To: dev@dpdk.org Cc: pablo.de.lara.guarch@intel.com Date: Fri, 5 Jan 2018 04:39:43 -0500 Message-Id: <1515145198-97367-5-git-send-email-Ravi1.kumar@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515145198-97367-1-git-send-email-Ravi1.kumar@amd.com> References: <1512047553-118101-1-git-send-email-Ravi1.kumar@amd.com> <1515145198-97367-1-git-send-email-Ravi1.kumar@amd.com> MIME-Version: 1.0 X-Originating-IP: [202.56.249.162] X-ClientProxiedBy: PN1PR01CA0084.INDPRD01.PROD.OUTLOOK.COM (10.174.144.152) To BN6PR12MB1508.namprd12.prod.outlook.com (10.172.24.149) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 926c762f-15ad-4c3a-8f97-08d554205c39 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060); SRVR:BN6PR12MB1508; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1508; 3:1jMgrR0aQSJcpzwdw8ZVevznKFcJkMHFptQ7M7fEDklzkWvR8aaBXhChw3VLhEJ0TmDMrZXLJy2vKkDRalhhGU9AMndA00HpJOEZ3D9YYs5ba0+gZ/KL/oQ1JiH3PRUgpQw4jsgZLLro0tmhMQ0AwnjAti6vhPQ+kTtEbH+4g4GTh0TL2dH+wOYQgPvyF7HTpIUOqwJs7oVXiCNIC7/ylnCQ/9GP3/TQoSOlBipffkhYnCigci4t5kqwlwHkM3pz; 25:aluhpZEV4v62Kb9Ksxos9YFN7xWBSYc6c0owt8Tukg4CPgik9SdeJnDxzOePDtd16mcKDkUF/Y1R4q4MP36D5A8MP/8U07pj3XTXHVgQoF1G05mt8KqGH6S66zJ1ZRbVIg6nO6WKODZhi9Lh5SnoAEeJVuSBNkaWQzT3Hn/QNUqeQoGetWDM9M4L/X/tKJNh1Q1JhKlr9SnWkdOwjPXSTid3S+WLkHLFNYtOmhat9YU2Qnmm8hV/x9FLNTLw6lwBXnXIRE6QaZbB+Jo9es678cVk8sMGFA0xJWNnJDdPBiOCEPRw+vRa+b2UphmXrabO4xPPjIen4MMj6KrUCZe5iw==; 31:f8ZqpMMB49ADFsku8csyBvVuEjFdGOKVxRhSQtnP0qTMaWGsBWfXi0F7KaVmvxccBGeC1ZkTbwHqxZs/RHfhpMmLECD1l2ZvwRa5RGqwj9kPw7+mQtrFzYa8KtQKwXjrdhTIQkeaIoCTmEI5OiUqqDn2p0wudW684aTi1Fuu0ZVdzBBU6JyYWeNonNzWsLvQB04GNh+0A4vz5+jNEx9IMMnKhdRtAtShXnNp1WGRDGs= X-MS-TrafficTypeDiagnostic: BN6PR12MB1508: X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1508; 20:sQUALy3SM9PY6k6m3PpusHvUZ+UavJ2xoAzsfKnoutQ+YFyGdyR+GFe8NPg8selC2ZGApV8fciMIor3bDprwNyeu82/2ldhMh/1fGLFkX7JEVTGtlzEIPzU8MTZAxPrjvrBdD/6i9KtlDb1F3FyaEIefn3OPmUNbkcH43eQZftkpGwvJBB5051/BQ6GYSzTYgylJrb0bznnfCo4VcIbTjWHcscssXyMr/RkeaYmq0egcBgiL7YlTUnY1pUYHITdwbEL0RkTL1BnGI3ElWJUdqblAe4kF9a6B/WoId9p4NUSaVJVX0H5DGdpMtqUCcgtS7+2U1ZLWs6PaYyTQZpuDekF6zHtuepZJhQVOjot5RJri173x91MV84ONuuENL4xpQ87Mn+4E314WQ+u1u9d3XDwwwqUnIFzJE+6tE8tqvM/Hi8qxxeo+T+PD5xGSEuZISjN2qFnZxuebmme6IuNVt8EROLgMjImiKlR1D/I0q0aVEGXKyDYB7Hiym3NVLJIo; 4:qO0yYrKoQ0p2xyUru+3WIvVmsdX5QEDmpNbfbvnnMvXFqtRCW/SmnvL6XRZjBWiWL7TG9tmjE2nKgr1Jgmrs+vw/WCU3nGDPpAB2gssMOgJSlKQLLBo1D232QN9FDZ1ysRF3CHkXNsfv6w/dXF+IAah++uJhwAV0FMytN4O/Zprzwb14u9/aaKn3dGl16jBQyveHU35g9hKMA+oEGN7btTpvnUeJwuUbD6ZevNehAriPKvzrAu9U4iNyOO54vE5182iGB5/ztw7buF3Mfjdftbb4nfnTejSRvce7vr3yDSwR+sZVEU0S3fFGCnOkmi7g X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:BN6PR12MB1508; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:BN6PR12MB1508; X-Forefront-PRVS: 05437568AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(39380400002)(376002)(199004)(189003)(6486002)(2361001)(6116002)(106356001)(386003)(105586002)(3846002)(6916009)(2950100002)(16586007)(6666003)(16526018)(36756003)(4326008)(2906002)(316002)(97736004)(25786009)(478600001)(86362001)(68736007)(575784001)(8676002)(48376002)(51416003)(81166006)(2351001)(81156014)(52116002)(8936002)(53936002)(305945005)(50226002)(76176011)(72206003)(50466002)(53416004)(7696005)(47776003)(66066001)(5660300001)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1508; H:wallaby-smavila.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR12MB1508; 23:omf8mhP/qoB/Ru2WyAryZZlXktM8eI4huc9HGy5kv?= Bhr7o1XKNTKOnYWaTHuPPV/JJpONN/E9Rr3GCKv77GEEsEzBP2K5TWD5hcYK6flhpikbbVZrrWCL/9q9jVavADu+8gsflF3RqPp6JgnHaYulLnjrv1wabnQoPDAIAz8BfPeSZtRM18o7mNroUNJ5/RM3dIe5uKsUMKvBTckJmNdenVvptTMPbU2S7p5er8jiFPP3rDCzWvwp1Sx36QC76KX3L9EzJIbLNfZKrOBvY7nx5cJGhM7+K2kae15nla4oLOhNpC6FkLx4pRBcb+M04LVWRsCYTo17+HK15jatDgXzXDJI1RVul3+kT+OkzZfXx6fkw7wXzrww+PPvOmSCbwj6pBdb+KuO56cK7t3JXHNaya4V70DvcdMYkDhOMi4rFAZd8vIJo3Ithm9vSK3c+2IBA2PlPzaPeGhJywS7aPETbwGd5W9j4lIw+8DIb5Q50e2PUDaoYy+a3Cqm+3pDMD77lokwUWR7jrhz62sr3eApih6Dym/4AcRw9Vsfure9HDskYLZ7yQdFD1Vhvyjc9RmiNRqaaG+F5J4/Yygz3gvqQBGHzPgvAvfJG5tyN0ZEyBb8OoDmLql0t32SqJpU1/6eoc/1lnt9woN3Oe3Fw59GZ9SxWIuIiYTdqciuugdh1RbYvOtou3gnB8uV2Zy2BmtDyzkXj/a5johQJ7dsEjp0g5vMIXPQfX7DDS0Mga5TGxAbqjI/cxatExDJABlfp2xPC/RHtp30k1oYHeciCvqG6uOQSt0wCZg6EvqwE+l+4sX3EgDKdCTav3oRyi0KZIwxOta5kZ+H/FFxyuVsSGmvipMG/VzLwDUnH8wAc7Ylod8/PGC8S5K8/nW8u3DDp9FA/4nca0D9q/6GcZoRezrerbvESWXcE/cpGxemlXT5j4QpjtuPV94Ev5Pt5HMhDO4pckNiuninfqtnk7IGE4geRmGm44USWfp7fXuJeYGiS5c9EM0rx/WrkWFpbUkYIxM/zm0YmZ0xMOhUBH6mxLBX1baLa34i+pAxHjytiT4LMLV2EqhiB0zSmP/Gr/CA/0kG8q0e3pFot6H2YJNy+i71MWpwmLcNGjHsYkguZBu8peonA65BXZ5EUfHEuOtsgJk9avC8tABEjLNdYcLqlLl7w== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1508; 6:daozzqr2YSzfo5kTM4G5dhSBQ5SYuL4sMwUXRdbSVtW5UT7dOy6jF4sVkM/sUQko9QOKXpFlDsOSNyb29SfG9DDZAr/pEF1V9M4VEDBuwTbS2/ZZrC1rV1Rz5aXpOvDdRHoHwdcRTeX7EsKZj8n3y/F/17Iw+GfxOnC5fvE5RyyMprQswWGWj0zQeiEM/49pGF7VkjftPtIwUobymJKwBpGwW1i+HJ8izO+V/zXBQNoM/fje6MNo5KxBKKs8eKno2T3NMfEn2xIKyAWeAdvktzCd+xNEHTmLZec6sUlBaGVFYKoj6c9zWTFo1fQ1kBKJPCW4dREebl9pFCm7po0wW96Xi1kFjb1tHQEgocTxMls=; 5:EPIhlSPFhklLKNsgwcuLObw3DiQk81MAY+Ik4lF3Pq7nePQHEJVOgByh6yduHJlQ9bkxk21DK6n8eEehapWX4m5M6Ln5PhJYM9J/OQyI3/Pg54+Tp4fPXRwwWCpbeNu/31Q3a+zyrVyUwUYnGaSS4F6DH8xFNQwysJR6UHbz9P4=; 24:1DQYeblHOciHHv95lTgHdNOzVUYjD7hDM2NeRiOHZz2exXpFSEUHabCmVaUjpYGP66ufZXnB4WdJxunhL7ZzhxUVZNF7pIJT1OybpjY3co8=; 7:o4OptfFZxlz84JCMqm64Iq47oGrjFwhha+xTEebXYfW2GGkq53gA2VxyxLtKfriUVmPAiF/n3EOR7QlNLHggqkjWza1Nci6TVv7kOWhkjD3E33TePVC8x7N4/YaMlLKsiyiaI18gHDVDmRC3lF1Nm/pDVAeKB3Nv6MzAr4R+IOTkPvjZ0m4nb1ZfLjSQg1Q8hYwQlUOi5xjBOZQt4tAi5Hj4STBjIhYXdI8eVm7HJ9uStONUh1IkfQDzLSBKy4DZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1508; 20:EsCk+gJ2L2y2PK57thJ7gFIiFyiTAfPPUJ/vKuIDW3ZifJqbV4DW22a9CtM51CTHcZYXmrJtnNlcDLH/n36Ce0ubWzgmfnym8McYMobgDeoBersAxnMwV6q6QLOjS5mBtgzHxQyJduVVZCdJ1ATO5xBBFFGmZu/3a5bsAHko8SX3YK7uggkQSRKlxz3f2A8IjDW9B5tAv9Ginvzw7mYbRewGfQLORyTmbWzYzRxvQkgVNG+/PLV94E/1SrrXuqYl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2018 09:40:29.6692 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 926c762f-15ad-4c3a-8f97-08d554205c39 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1508 Subject: [dpdk-dev] [PATCH v2 05/20] crypto/ccp: add queue pair related pmd ops support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: Ravi Kumar --- drivers/crypto/ccp/ccp_pmd_ops.c | 149 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 144 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/ccp/ccp_pmd_ops.c b/drivers/crypto/ccp/ccp_pmd_ops.c index ad0a670..a02aa6f 100644 --- a/drivers/crypto/ccp/ccp_pmd_ops.c +++ b/drivers/crypto/ccp/ccp_pmd_ops.c @@ -82,6 +82,145 @@ ccp_pmd_info_get(struct rte_cryptodev *dev, } } +static int +ccp_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) +{ + struct ccp_qp *qp; + + if (dev->data->queue_pairs[qp_id] != NULL) { + qp = (struct ccp_qp *)dev->data->queue_pairs[qp_id]; + rte_ring_free(qp->processed_pkts); + rte_mempool_free(qp->batch_mp); + rte_free(qp); + dev->data->queue_pairs[qp_id] = NULL; + } + return 0; +} + +static int +ccp_pmd_qp_set_unique_name(struct rte_cryptodev *dev, + struct ccp_qp *qp) +{ + unsigned int n = snprintf(qp->name, sizeof(qp->name), + "ccp_pmd_%u_qp_%u", + dev->data->dev_id, qp->id); + + if (n > sizeof(qp->name)) + return -1; + + return 0; +} + +static struct rte_ring * +ccp_pmd_qp_create_batch_info_ring(struct ccp_qp *qp, + unsigned int ring_size, int socket_id) +{ + struct rte_ring *r; + + r = rte_ring_lookup(qp->name); + if (r) { + if (r->size >= ring_size) { + CCP_LOG_INFO( + "Reusing ring %s for processed packets", + qp->name); + return r; + } + CCP_LOG_INFO( + "Unable to reuse ring %s for processed packets", + qp->name); + return NULL; + } + + return rte_ring_create(qp->name, ring_size, socket_id, + RING_F_SP_ENQ | RING_F_SC_DEQ); +} + +static int +ccp_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id, + const struct rte_cryptodev_qp_conf *qp_conf, + int socket_id, struct rte_mempool *session_pool) +{ + struct ccp_private *internals = dev->data->dev_private; + struct ccp_qp *qp; + int retval = 0; + + if (qp_id >= internals->max_nb_qpairs) { + CCP_LOG_ERR("Invalid qp_id %u, should be less than %u", + qp_id, internals->max_nb_qpairs); + return (-EINVAL); + } + + /* Free memory prior to re-allocation if needed. */ + if (dev->data->queue_pairs[qp_id] != NULL) + ccp_pmd_qp_release(dev, qp_id); + + /* Allocate the queue pair data structure. */ + qp = rte_zmalloc_socket("CCP Crypto PMD Queue Pair", sizeof(*qp), + RTE_CACHE_LINE_SIZE, socket_id); + if (qp == NULL) { + CCP_LOG_ERR("Failed to allocate queue pair memory"); + return (-ENOMEM); + } + + qp->dev = dev; + qp->id = qp_id; + dev->data->queue_pairs[qp_id] = qp; + + retval = ccp_pmd_qp_set_unique_name(dev, qp); + if (retval) { + CCP_LOG_ERR("Failed to create unique name for ccp qp"); + goto qp_setup_cleanup; + } + + qp->processed_pkts = ccp_pmd_qp_create_batch_info_ring(qp, + qp_conf->nb_descriptors, socket_id); + if (qp->processed_pkts == NULL) { + CCP_LOG_ERR("Failed to create batch info ring"); + goto qp_setup_cleanup; + } + + qp->sess_mp = session_pool; + + /* mempool for batch info */ + qp->batch_mp = rte_mempool_create( + qp->name, + qp_conf->nb_descriptors, + sizeof(struct ccp_batch_info), + RTE_CACHE_LINE_SIZE, + 0, NULL, NULL, NULL, NULL, + SOCKET_ID_ANY, 0); + if (qp->batch_mp == NULL) + goto qp_setup_cleanup; + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + return 0; + +qp_setup_cleanup: + dev->data->queue_pairs[qp_id] = NULL; + if (qp) + rte_free(qp); + return -1; +} + +static int +ccp_pmd_qp_start(struct rte_cryptodev *dev __rte_unused, + uint16_t queue_pair_id __rte_unused) +{ + return -ENOTSUP; +} + +static int +ccp_pmd_qp_stop(struct rte_cryptodev *dev __rte_unused, + uint16_t queue_pair_id __rte_unused) +{ + return -ENOTSUP; +} + +static uint32_t +ccp_pmd_qp_count(struct rte_cryptodev *dev) +{ + return dev->data->nb_queue_pairs; +} + static unsigned ccp_pmd_session_get_size(struct rte_cryptodev *dev __rte_unused) { @@ -147,11 +286,11 @@ struct rte_cryptodev_ops ccp_ops = { .dev_infos_get = ccp_pmd_info_get, - .queue_pair_setup = NULL, - .queue_pair_release = NULL, - .queue_pair_start = NULL, - .queue_pair_stop = NULL, - .queue_pair_count = NULL, + .queue_pair_setup = ccp_pmd_qp_setup, + .queue_pair_release = ccp_pmd_qp_release, + .queue_pair_start = ccp_pmd_qp_start, + .queue_pair_stop = ccp_pmd_qp_stop, + .queue_pair_count = ccp_pmd_qp_count, .session_get_size = ccp_pmd_session_get_size, .session_configure = ccp_pmd_session_configure,