From patchwork Tue Sep 4 03:58:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44179 X-Patchwork-Delegate: gakhil@marvell.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 2E5924CB3; Tue, 4 Sep 2018 06:03:13 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 2AF871BE0 for ; Tue, 4 Sep 2018 06:03:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6l5RlyPJwigxvI/uK6te6Cx1IJvSonZG0w7V/hZhdkY=; b=TF1XGJhHBEmTVBNX/UT9jNJeBKJbN8UhBDwbXJh2+1D9uc1AW8nQk9jBsKUu6x4DJtIQT78KF06oK8saMCQndyWIOeOHLneVbrlSi3uBiileZl2RI06lv3k7LHsRmeg+zgbzX7HyzPMQV3/d7HR83mJakaAkIkeOgLMOv1fxaIE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:01:44 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ankur Dwivedi , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:48 +0530 Message-Id: <1536033560-21541-2-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cd640010-81f2-488e-55b3-08d6121b2376 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:Teo4s+ZWoU/cTBpHbG3DArJc/5OT+uKTTmdwGDRGiGwBUfeEVtPMygvu/6bZgPw+EF8LEVE/b3EyBduvPt/zyXlcqkqlHbNMSGb3nsMgNpYHhLRBbDQkex56mfqlJtt0IRTVpb2l5cP5wlTp9PNgdgGWZ3xd0X1LLsvQrIT725oxIHyMVs4wU87gseU5kuH8QVvSV5tLvkKO5fOgxvWBlViWWiZm4aQvzV6uDyw/nv4Gssqhfu0jyqm6MOOZowyO; 25:Zz4x6KOAMeaxLUQFMtlGR/00FTP+RViID7yxC9MXiTyCzONzkoJZCQEhMLC3uddQQB+97BpDpZ9j7EtfxID1izmselCVOspwKUn2/4Zu8aqrq8fOremGi1oAlSVg9ymouS7PghxOUENUn+9lOmgFERJC9yN1TRShFfklPkX0EhDYFNj94l4hTXGSGoRK7plznefKL6O8gX3Fqek7mXfjjAE58bvZViezxw1eeBYIoTL+bDA3lFQprbFTM4ZK+1HMB0b4X8NF8GSBhrhurOwxxlp/rZ3JjHjL/qJHNKbgEkH4J8FPuvPIPrWAE03NAo05nDjLYyhL5SF1O2T7jK/C+w==; 31:GcPQCLqn3N55jXQPd8CgfMV4UkaDzmvfq5dVVUI8iyU/B3O7pxUzaLYOZ1T9/3cRYKiewcFcffp85Ebl3dNRabNyOJLQWOfOb3XkckvZ9BG7UcMbvExiWF2YH2w2vs9PtNiKBlNdqNeCpWzFTmzgzkw/ufE0vKcvTee7C5nSCyPwy+2z4OPWAULOOes5FY14Q6PFZ3nHmGA6u4Yjj7caGJMCB8Tuf+M+UqoggomsSnA= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:CeFRNibluOXwP4B4SrZC+nJKBcWeiNfc3LVW0BY9PjHBxIB0bEyZbQzIBIKV+hgpKztpoZ80LvOXJbpIQcHaBShcv/OISHgkKlrPgFpT2qlAsKf8nSc1rRrzzbufszIba3E5Go0zDZtsCB3shD+SMo6fhPu7flNjmxS5pRIXLbUS9LEon6ai68WTcPyRZcJt1p97xAT+L1C3IMEiE57wKt/0EC2HLJj+wcLw5piHU+EvGaE5JsTSJxHTPutHmzFFW0f67UHqM8Ko7Rp8PNpMjV5udTnTylcxx3IuGdxgNFCf5u2F6ckVyfAIpGeGLeNwk3+vKwJmDr48t3/GV2Jn11G4axgKBi6z0pCM4UNmHaBzpIUGXSR4ZEGdWIBfHuI5VkoCJQU0SjxXQO10EPbgLZ5Fx4wjjqF6fdem1i4b4pGybjzru7IKo2cy+DOJNDMHJDWH6wBEmKqN8/1fn1K7IvWD+/W3+SO2zNGJ0R3bRTypK9v18pVnECC+VbghjNGTqI7bevF49d7oGbPwiR5SQEuh5mnsRg784vtMpZCagw5pqEKthsmlQInz8qY+ykgIeNWBu5t1AvViQtm1+TbGz5fQ/dEkwrfQJuUyiLIYAWw=; 4:B2ch95LJMKYQ0jGibcZP7i56a7hnfdysskmLlv+kGf+IBpRI1rbgnaMGp2lo2IaGkN9ZhMLYzjF4QhU/cP6y7FdshRjLM5QRhl4zbUl/DPxUctqqDae0e/0G2PXqjdiGDPnyKk8TnRIMLrkQw6m9HMSGHIGEUoS71AmigzDxr+urbzuvzfA98kFfI9nm+JzYthTKd/QPat1/uCD26c0eQUbPi6poWuLazWWbTWmjUkCFe04QmW859fAb41A1CUNYjG2M2dTuDM6gHsUlHr3yZN2Um4pPTT8i5T20tIHg53PQxrKiSHzfbpnRcbKW5w5C X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:h+RvXgL35d72jyfbgHRQ9DdUsRAhpDFbUQmjMLoBQ?= 6afIQOBJc3VVt6oH1WsYzvB3wnS3liXLP9fcuP2fFSak+tmOz486LC/GTtchyZFDcaEuX6EAlodx1bXVeIsXphbBz49hrhteUU86jy6lSioe/yTcXEJFvFngqFh/J3ZvS3pgMlEB5WAVml4pTy3uSDGmiT5IoWxYk7is5D1tNB0h4nA+Y9zTXM12bID6fSCdjR2l089Bi8UaZ7yElKKqMrQr4Zq3avFAj+6FN3pUVgHl5LSVde2Y0KnH7s0QklrhFfpgoSQC0OlMRDfxijVcenKxwmPEKVSq5VCNRXE6jSSGj8KT4oTRBabt1XYSKLH+izY2DBLycNrIhDqb4pqz4+MwPBVvK1Pqo57aK4teTyQxWz6cu1MHYm0S+BrhULxD5+tW4ehvzAsEr428q0miRpd9fuQpIEFE8Kd9TrpDQfKSEyyEuFbASkQ0YQCErE3p8dZIFpq8bzMnL3+Nakg5baytI8xn5qgll5C9B74hQADTkibkgHOFXW1829xbjW3x/QkhBwwkSrOazsmpIBVcAM57FPV1sYlSxzT0FTCI7fjm+A8tJ6F3Nx2qomAttoM2xi4QQwWaqCpWSUykr1inNtMdFcM4Cttng8ex1u2VJx13EFtE9LvyZiEHqhJNPNRE9XlxOm95gb0bdXiLo6IPo3RWN3pD8/WGcjjdLTVZvANR+h13sEtj8+o6GhHS7KDkBqL5yacX0ZkY8KlnEHC3hDO7jEW8EcPMPR9vbQ6f0kQuctLTHuTbZUfVcX7b13+6fjC8FdZiMuIPGtM9D9BlUXCWA8IKjUhwuvuDGzy0vI3Dvpdo8YBR/JU2r50fyDAZdRvhPD0sHji5rOzLvUdqx+QvZZzOnR4bY5vWW4JO727dzb7tb4pSMK/HO9rQW1Ji/6dKHzY9apjuPYoyQKp34n0Lejtdxb0jOIr0OIe17pi4QlUNvaN5f8TXKgMnYhqxGec+4cUirVw6gVW3hmrbeN3LneXpOupZqkTsAc1vWirCLd5ypErppEMANzSJ76HmfpILFiKyhRvbg3jcE/XB4YTBLFl2KBKjbrr7AY4iAByYXM99yQ3Akj6smnPSJ8XzuLuPQPZ1TCi0AodwJ0L4jAd/4zbQiNjWbLKJdV92iTSWrXGvIhi6Y0+UcqKw/ssw4Vzzn2xQuoUE7PnVis958BMeCy7dPXTkswFg3XshdtL1g== X-Microsoft-Antispam-Message-Info: 57vehzbdyCrXLqAJPdCb55cRbNCLUpHjB4KQ+t+4SMhmRwcI/fD/3z0aBKmrvnl4NClauIUFSGVeeKSBpdnQ/BA27SCGcgWPRxMCbvdkM+thtcbBmc+tQFklWE8B3PQnm1mxLZwRs1T0nG9NvQQ/NBwjepNxms2Ud075jmSBlsq+j58QFl310tSvz3ogOMGOKPrnnEPdYujBSz89UN3L72Zc8qwmn3W86Zme42iaEvJtqR0g4ySbXAUPPdorK1WtlB8GtBIkfu4t2nN9R3qMn3+RFUGIomHvP3aMT/gbrFRYhSXaQMQ+pSgs25Mmcv0zaCmJ4TBO39rMcrOA7WJYbBme5g9BGX5hF8nxLAxguVY= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:qqC6RtWcEZRNP5XhqXMNKah7GHfiNAbK5kMI5J6OJVH8NEzYUN134G64v1GsB61kYing3itESTn+r92gNZh0q6m+hNkdTH0fxZ0GmFFLy4rnr+y9oso2APsqGANg6NuC9QX1fFm81ywhoO6H5uV59lcwlTW0cHd+lpjUolgsSXqh+EDIMRsepL1X+IXevkwx9dJp7K+4sasMH2RErteOCjYSJFYFoRXMQ5jvbq47tnhT2UWn6torY0Vx7kOwBTjbCkAFPQ4rhMprzm9bMA4zfzvz6M03o8uB0shL1rk4b6wiR4AkLMv+T7PIEYq07dsyu/qz13R1sLpkPYKMouP+zCQpWzoeXF6YcAFRZcnKT++BimPVYLlcAxhJO4o6WmmBystyEwika3ezSmCPIRYCIxwmGj+FeW9OMF/svwHGEHWR/34XC0NLwaL1GlxCZMEpCcl8Kv3bvxF2GtdIpnTVqw==; 5:POlCjqJSR1kgF5R5xH40jIjYXB2B2DDzSB0KxmIYK7MvhJlqN9GB2WYaGMgCVclCaAEwc8WGIl+dNZJQzG6ZJpkWkOkE7mzrKLXeOyBQDjSyTNC3SA3ehyIT2SiV7oD19pt8blnMny9zOTiCFZ4apStrFc6knMZ7iayBbbRYQ3M=; 7:YQwZFXqkRKzeNXQmlp5BSY9sEgWGfi/lhwT3pZG2IgpMM0IO5iJiGW12l3oNXtJkPGnpk+BygzGxGpzdgOc7mYM7+TuOXzGQb+ayW2rknOiRNwUVYoWdDAVHMqf4v6MONc+yB0Ws2R94EjMm2IDI++7DUjQFLaaFB8M6QvKIukAawdD0+ULZJElb7JI2eN8BqHhJ6Fybi98Hqc7Spe8TcE+MyrFj9+HcQ1E6gQtgx+LzwlCQIMSdGVFROFMcx3AM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:01:44.9441 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cd640010-81f2-488e-55b3-08d6121b2376 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 01/33] config: add Cavium OcteonTX crypto PMD skeleton 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" From: Ankur Dwivedi This adds Makefile, meson.build and config file options. Also adds the version map files and maintainers file to claim responsibility. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- MAINTAINERS | 7 ++++ config/common_base | 5 +++ drivers/crypto/Makefile | 1 + drivers/crypto/meson.build | 2 +- drivers/crypto/octeontx/Makefile | 37 ++++++++++++++++++++++ drivers/crypto/octeontx/meson.build | 12 +++++++ .../octeontx/rte_pmd_octeontx_crypto_version.map | 4 +++ mk/rte.app.mk | 1 + 8 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 drivers/crypto/octeontx/Makefile create mode 100644 drivers/crypto/octeontx/meson.build create mode 100644 drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map diff --git a/MAINTAINERS b/MAINTAINERS index 9fd258f..09548fa 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -771,6 +771,13 @@ F: drivers/crypto/armv8/ F: doc/guides/cryptodevs/armv8.rst F: doc/guides/cryptodevs/features/armv8.ini +Cavium OcteonTX +M: Anoob Joseph +F: drivers/common/cpt/ +F: drivers/crypto/octeontx/ +F: doc/guides/cryptodevs/octeontx.rst +F: doc/guides/cryptodevs/features/octeontx.ini + Crypto Scheduler M: Fan Zhang F: drivers/crypto/scheduler/ diff --git a/config/common_base b/config/common_base index 4bcbaf9..4c6a951 100644 --- a/config/common_base +++ b/config/common_base @@ -635,6 +635,11 @@ CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n # +# Compile PMD for Cavium OcteonTX crypto device +# +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=y + +# # Compile raw device support # EXPERIMENTAL: API may change without prior notice # diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile index c480cbd..c083e64 100644 --- a/drivers/crypto/Makefile +++ b/drivers/crypto/Makefile @@ -7,6 +7,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += aesni_gcm DIRS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += aesni_mb DIRS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += armv8 DIRS-$(CONFIG_RTE_LIBRTE_PMD_CCP) += ccp +DIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += octeontx DIRS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL) += openssl DIRS-$(CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER) += scheduler DIRS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += snow3g diff --git a/drivers/crypto/meson.build b/drivers/crypto/meson.build index d64ca41..2187870 100644 --- a/drivers/crypto/meson.build +++ b/drivers/crypto/meson.build @@ -2,7 +2,7 @@ # Copyright(c) 2017 Intel Corporation drivers = ['ccp', 'dpaa_sec', 'dpaa2_sec', 'mvsam', - 'null', 'openssl', 'qat', 'virtio'] + 'null', 'octeontx', 'openssl', 'qat', 'virtio'] std_deps = ['cryptodev'] # cryptodev pulls in all other needed deps config_flag_fmt = 'RTE_LIBRTE_@0@_PMD' diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile new file mode 100644 index 0000000..65bd02f --- /dev/null +++ b/drivers/crypto/octeontx/Makefile @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc +# + +include $(RTE_SDK)/mk/rte.vars.mk + +# library name +LIB = librte_pmd_octeontx_crypto.a + +# library version +LIBABIVER := 1 + +# build flags +CFLAGS += $(WERROR_FLAGS) + +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring +LDLIBS += -lrte_cryptodev +LDLIBS += -lrte_pci -lrte_bus_pci + +VPATH += $(RTE_SDK)/drivers/crypto/octeontx + +CFLAGS += -O3 -DCPT_MODEL=CRYPTO_OCTEONTX + +# export include files +SYMLINK-y-include += + +# versioning export map +EXPORT_MAP := rte_pmd_octeontx_crypto_version.map + +# library dependencies +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += lib/librte_eal +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += lib/librte_cryptodev +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += lib/librte_mempool +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += lib/librte_mbuf +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += lib/librte_malloc + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build new file mode 100644 index 0000000..261bb77 --- /dev/null +++ b/drivers/crypto/octeontx/meson.build @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc +if host_machine.system() != 'linux' + build = false +endif + +deps += ['bus_pci'] +name = 'octeontx_crypto' + +sources = files() + +cflags += '-DCPT_MODEL=CRYPTO_OCTEONTX' diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map new file mode 100644 index 0000000..521e51f --- /dev/null +++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map @@ -0,0 +1,4 @@ +DPDK_18.11 { + + local: *; +}; diff --git a/mk/rte.app.mk b/mk/rte.app.mk index de33883..b530337 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -211,6 +211,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -L$(LIBSSO_ZUC_PATH)/build -lsso _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER) += -lrte_pmd_crypto_scheduler ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC) += -lrte_pmd_dpaa2_sec From patchwork Tue Sep 4 03:58:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44176 X-Patchwork-Delegate: gakhil@marvell.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 4E3022B92; Tue, 4 Sep 2018 06:03:06 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 99A8B1BE0 for ; Tue, 4 Sep 2018 06:03:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CDBPEO4EvPgjxBzatpN4nK0kxZxveYSWLR1fpQtSGI8=; b=Z8KYiSkUToYJRF+pfjxNB65eRbPoFM1K7TYraqBiMj9A+8tJXg2n1PVRM+20JQXXBBj5sr4EiAdsqZ6SwMkXLnMVAckz+/vigs6rdvuhxAr0nJS4tZZ57+JkgON5T5PBor9pCffaai5a+/rfM/Y0QUGLzf4DuBcwFc35riceudQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:01:49 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ankur Dwivedi , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:49 +0530 Message-Id: <1536033560-21541-3-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 410d8f72-e93b-4807-71f4-08d6121b261b X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:mc+nInErFWaBaUFOTRSzTkVP+L/ps+tHBKSXRFP4y+TxvCNK9rMD2qnEXx1LQ0HvMFrLr9Qpm34JtgHqZ13vKva6m1leOTLT1HAlbPXMcqNnZtlQV7BuuhPtrTYeOh/6S4qJ66KcxAja4gdhkBF3/8mOBsHuBUgWnjdn8nCVhVQgAVOs93znbJM/9PwSB3xuIp6A3grzXP2alOsfkM/3DCd9XbtWEB8Cla9EICG8v+deX6tIN3E9Sa/muROHkYvs; 25:GpZvnHlmGNVjjE/Z+Q+J4TgJelOjwT/wIxWCHtdFLbPu7jZLyNPsyzs8caCYnAOvK61GQ165DbbvCbcnPGja5i6OsY7y1khwym+aooGexzBwqseyq+PuuAQY07ztTbKHzgyObhnZavyMVU7P70tDz+y0/F9LjsilrvcNmYYz+rC/h0Atd7h0Qc2l/lx/56x1fmgQs2zrLupBAaJBkfYQNRNubeVQQ5vxgrkW562ycxTZ9OH5qW2BMCg+8DPmSM3kVy8OdgkIe5yTxbligJdCHA22fSYM+rGbkK/Z/7PGFhDDEYckLECmNhGH8Iz/dxhsJFbNuKnp87G7E4KDNwfVLQ==; 31:SZpZzKnvQc/REB8bU7DFeKqwBJuKU2AZ7ie2SDLGIbTJTKWNFVCAsfz3UdVAvF79cx8RF3lgBbWJpc/5kvbmaYIeGK0Ud9LkTS+cHm3iMX9O0+aiGY2Mr0DkW9HObDMORyY1JkH6y+evQJNsK9+3azrXiSDqP8yIN1pgbknMyUgiy+dntpt7ATDzh01qHmuHiTWe6Aootz0g9P1vTIhXjBBx9v+RDVAO5LYBZsIIBcM= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:vBVbnVUOAmx7WswZ4v6kFybA60BsqfkcnUtZyhmpO+Kp5gSSqbIOMGpERLjQoDliaMzIrP4EQ+7vUtqWgU5dBC4+blqEILH54XdTss/Gr18GRqObd5RJMvyqhR94z6H1z1Kb+bvQ3R7tS7K1zCuh13Gm/P7qasKRsHylzqCZjgOMueKxnEKo8w6h2XopAb6wzWTSMBBXtjtAW5B1SJ1RJZxHOP1GY6VjDIxlBnLiYpRT7t6CGCmKLj23GjcEtMzqjV7YYZXWXZ62kj5irZNNkNQhwVucMy3pKhO6TqM2nXbn7z+lssng3a7ksdvDCCqR6Xt1ATqnxNIhZ5t/U8XDQ+sl6DCpnowY+SR+ARJuePTBNCu9oWcoBInrTZXy18vPduPhTBL2lbOn8w0Ws8YmNKPiapzryejtvNP+5tSFwM3OVg0HF66mjmQODpwNd9WACWjH09t1E+g/cQNavqbZ3+0CgGMEeHD3WlV0Mn99vNnWXrgtahntydU9B2b9HqcPniAac529tUxjqNK4GzJ8ofa7qbqHfAKZS91VeMOy6pOcLKNvum1XAkzFY1DglvXJ20JxGFgLPM7hQb89HMucoyUOHCyKE3frxLS2zpYnx6M=; 4:htLW9GvSj5bX6TpJldA7OopRJS9c8lSlpxYcmBZFt+FAiqbw0AVuLAKEq++2nvoic/spQ1T4Nj4DW2ZvrQQEVps9CpU9PoiBcnDRsQ5LV1kXWqzMTcstwiImxdKbyt8UFK1rQYu42auN8079GhUBNpnaPC8r6hUYVeRyhVeFXwu6EmcwcBtOHzzIp+7RQ29+bw8nXoWDlT6WdqS0ACUMSzHAELkobrtXCFzdJy9uS4l7RciZrpea7JHZyX4eH1sLru95WYrF8KyzYhuySawZYg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:w39/S0OrGHdltqHHEc+zr1oK0ySNO1sBLtg5U0uWc?= UR2XSIUw4+2j+Z/LMsQGAcPXcCAF3ZwYJE868Uyeqt1skfuH39xrZd9PDI7Xvmmu2v2fNt+H+Ra5lL/p9Ma4LF+nw1ATyvpoq56UgB107hNYJAbwuctCzZsD5Kw61R037EkHBK5eqvRDAgi43tX7MMrh83Lc6zR0F3tyyQ7+c0PP/RUl9dzQ7Am/sKO5s/NwJubrZXjR6vVqsVPfiUAAF2YUsoJlEuhYn+DGdj0EOveyA7xpaUpvfMFZcU2CHV75XO5t2KunD7EMEA5HMSOyg3S1V2a7Ods0lfT5N/vC1IqYK56AGNv3kwTWGG4Gzhat1uhu8NC1IW/CEFmm7iC7FoolgALms1EyRrB7mWAUOgfBZCNaPylep0CWPQ6JsUiac1dK/litKbKBKwIkLdDP4xY/VIgx2hYS/nsknrVmTgtDYw18Bi9MdFzikcs0NjMtVWge5+9TSifV2IAXmrcJErCOLRPC/Q2JyCWn1GDzEtFngvbYcrHUfVzoFxL1NSbAsBrpVOr9nLVvh3kZ61PYhPQdMhsTujUiUiScp4p5iOs5h1JFu0wKMgpSqJM7xCeIKmnbePcKg+sHTcMalMazlduW2XVqUYnCMyamVsdkMK9pEQ3L1eYL1ikY0+ot1Zh+g5wcTpT1ap2j9WWvXNc1trVSWlCKWkvxtMM2rryWlMg7BIY3CxVuUzVydWeYPj8z5YT+Z3eA4vs9gxEV2sKSUfTOh0KxOnNEO7Ec9qv92ILEm1EDWjXRzNhaso4ESHEcIDqQDZU21JAsv87UBbRoVL/CfyUdgzbSUNecAlgbCFkB4P+I9aRCx8E8QQZjpH8fBO3KDvjVMCroPHvbw7Ck0QH4S87zSZelXiheRT5J0OjQbWSK+y8jDXhFddrMrrjiwKEGUejAA7xhkh9dXA0oMUoRXWcztH7wPG/6wdgEII63HbyYibOJcYznvrvwgYsVx1vGXFAVBJwjT5I4AsRGYH4L9Al7I4bj8UkV6J8FrUPYMZ2HLTcjN/PLGmWRGr+/3YH5ZTFQMrZwlJTueLXJ9JUGcYF4CfoyUN5nSaOIeW0Q09GDrfIlZJHZZtAblqksD4PKSbWuQZQPL4SOuurp+bU4RxutmjHrEh+7WXuBu1LT89buT2hxYH58pvLYDYclTa2OCkgyyftF3vYTFFtI16hNvXgCRkbZxYC2GVBGWTOyA== X-Microsoft-Antispam-Message-Info: LyqXdsb3d6uIUFQPtoNklrDIUCOFtZxB/BMd7F3p8MGf+4RKeAMTFfsBa4vdaK/fks8suZZwRh2lpAyT44DCve1t9Y5yWoJRb3enUJQJb37n/En+BKGeg0CreSYMieEUky6mQiZLGuq6flimpt/k6CQNzOLqx1CX1BDVy2ZRpXuOYSaChV9pEt3bznWjPSxZJGKJlsgQu8UfY8guGWjtNRnf/nRtl6GFVzuMzz9lgPo4KoMizWluF2bRgxnW6X8+GxKAlVL4Pb1l06e9D+hBRYtIb0ruTqDSGjV3A+4rZ19mhPmPdpyyE0khF+0COEa0yEdOxZZvZuq52RK1UCFy94cCvzD7Mgb6O1uzRJ2lmRc= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:jmBw/oQYVtV5P/riKpyYYKz1GV1C2g1joqJ/ayv1RsJdLvvQ99DkR8ge5SlcxiJe6XKJ/kRtYx4FtKxeHyc3jYd2SImb5SHppHoWPCMmsT9m3Sb5byJa4D10cCbkp2W2N8xUYO7wjSdIWo+oCEP5bRJs1TKW5SNl2Y2ywLzRusHXU9NGLZJtH75hpLz9JSHfym7cHfqEMSCG3wagL3uDQxeFxJh95XtVOWAWfpFPXURRh0SKoLnpZhwmgRFI+m7VUhEnt6g8xyO51W2kfKZ6RHqLg1cYpGkjEZmT+hGYa8RIIfGyhryKOGZZ9eLZA7PgNPzB09FZ23VWk0GJkORjR7XAXEBj+PqxtggT3/b7uPAnONgsBG17WQrO+qUED5ljvK7yCVHm1b1Sb6DBZ68j6ngH/k+EQ7e3S++fTLZra1y5TZW21C5Q3WYP2lBaaTp5eaPFVtpyEiNsAS9Lhr7Sxw==; 5:x5b/wd7iWytwKf/coPNayoncLPv2Nm+XZZZeqc+3U1YBvy2qcFfPAizuxbTEMVG+BWuctv+LbU9ZxP1/yiNdzMILv7h0l7sPDmA8zeIm5iNonb6ucutpSZOLtwnnUpag4bTl0qGuFDdPRlW+38nXyAJxd+N7rjsGNgVyZ0gsPHI=; 7:C2TY+p5km/XA1ICRUfVJpcY8B8tQaEeOyRva66D0qjqCJr78VO45bR96Gw9b+oT0r+l1Pi4QpeVJm4Xb/0teSFl64NmERzrUuExczLiRrFWBRE9wLFuKCqD+1j31RVm0apMGtlmxI3MV8jAnCkWvhlfrtEdLZX5mlFq45vMsH/HgJixALgI9MpT8SblaXgz6/sccIscpo8fuGHVLo5ceJkoC67+9za64+FU7f72Ql1JdFD5TFrleJva1jjiDQw6c SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:01:49.3191 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 410d8f72-e93b-4807-71f4-08d6121b261b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 02/33] common/cpt: add common logging 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" From: Ankur Dwivedi Add common logging macros Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_pmd_logs.h | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 drivers/common/cpt/cpt_pmd_logs.h diff --git a/drivers/common/cpt/cpt_pmd_logs.h b/drivers/common/cpt/cpt_pmd_logs.h new file mode 100644 index 0000000..e1bfbb3 --- /dev/null +++ b/drivers/common/cpt/cpt_pmd_logs.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_PMD_LOGS_H_ +#define _CPT_PMD_LOGS_H_ + +#include + +/* + * This file defines log macros + */ + +#define CPT_PMD_DRV_LOG_RAW(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, cpt_logtype, \ + "cpt: %s(): " fmt "\n", __func__, ##args) + +#define CPT_PMD_INIT_FUNC_TRACE() CPT_PMD_DRV_LOG_RAW(DEBUG, " >>") +#define CPT_PMD_DRV_LOG(level, args...) \ + CPT_PMD_DRV_LOG_RAW(level, ##args) + +#define CPT_LOG_INFO(fmt, args...) \ + CPT_PMD_DRV_LOG_RAW(INFO, fmt, ## args) +#define CPT_LOG_WARN(fmt, args...) \ + CPT_PMD_DRV_LOG_RAW(WARNING, fmt, ## args) +#define CPT_LOG_ERR(fmt, args...) \ + CPT_PMD_DRV_LOG_RAW(ERR, fmt, ## args) + +/* + * DP logs, toggled out at compile time if level lower than current level. + * DP logs would be logged under 'PMD' type. So for dynamic logging, the + * level of 'pmd' has to be used. + */ +#define CPT_LOG_DP(level, fmt, args...) \ + RTE_LOG_DP(level, PMD, fmt "\n", ## args) + +#define CPT_LOG_DP_DEBUG(fmt, args...) \ + CPT_LOG_DP(DEBUG, fmt, ## args) +#define CPT_LOG_DP_INFO(fmt, args...) \ + CPT_LOG_DP(INFO, fmt, ## args) +#define CPT_LOG_DP_WARN(fmt, args...) \ + CPT_LOG_DP(WARNING, fmt, ## args) +#define CPT_LOG_DP_ERR(fmt, args...) \ + CPT_LOG_DP(ERR, fmt, ## args) + +/* + * cpt_logtype will be used for common logging. This field would be intiailized + * by otx_* driver routines during PCI probe. + */ +int cpt_logtype; + +#endif /* _CPT_PMD_LOGS_H_ */ From patchwork Tue Sep 4 03:58:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44177 X-Patchwork-Delegate: gakhil@marvell.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 651FD2C4F; Tue, 4 Sep 2018 06:03:08 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 121841BE0 for ; Tue, 4 Sep 2018 06:03:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IzSeT5pOcDyoYevVdcu9TGkPd/Mci3BqMMll6cYeebs=; b=UukYBQQs8XsJI5kwJAvgUeMOCjq9on68FrglpWKNxcd4p1WzyjBFODq50pSfRfwCpazuUmMCsqGZ1BZnMNRL6i3h4rnCBew89jR4MvkxKnLZP8duSTsp2D9xjNZV8z64xV/VIhfYv25knFMPIjqQHbdPIfofHNr2TUCEnZ9BXzg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:01:53 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ankur Dwivedi , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:50 +0530 Message-Id: <1536033560-21541-4-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cdcbd2d8-ddbc-4797-8df2-08d6121b28c0 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:Cw50DMczpwRLAJ//4DYDs9/8ObTkk60FrL3Gd9V3L+kAqh7tPzOCmDtAWW22EtF1K96R3UNkkhBA6SGtvfbnk9Xhyy3rzxtw8l3fDcMvCc3cjamFHSzAKGNoEfhprQBTSp+IYg0zkwwkl247eNRqA9t+63AUv+BsC0ItAUBkEnZ/9ovBcPZ4f5qhgJx62uI/tg/WCTAjD30xIFfMAa/KlCMP5kGtqQbUJ3UaC5+EGI6yRQkfjQaYxTI09UHI/y8N; 25:FrZWaBtDixwsQ5EnEVaZINZnAD4U6NkSKRnmqMyMc0/9HBb8NbZt7TVCfGNzSWDEp6eLbi7RpzyleCjpYEdoF2f6dni2D60wvHzL8UR3fsenydPoaQTraAoayh5p4qzIXvWH4ilJ42mRJKyo5K9IITmw6EiZ6kxChPQLoik32O8IUNpbAmSV1CoYpAxfcUM2R6zyyH+EE3DR5UgVy9Q+eZf+iRD4pTI1kK0sf7aCiFinYnwc6S/l/0bg45iWlQS4gHPTL4Y/Q42Zj9oKe9rqozpH4JlVP/Cf2eQ4bZn7c/b1cpA2x8kcdRIBVjwcOYCW5bSekgBK/h3pnQcBu9BsTg==; 31:ASDqCDfUZvgo4XpNd0+KIIucQo/TYz5octLJThN69UVeN3L1nUeEJiPaQG8hfB0uC/3o4eSou3zGhEyWjxhpWIAhA3YrvYI23xhrJdkPfic4QguB3o22402/pILTInj9IwbGCIt6SRLs2oC8pYY9ZYE0DLE2ZTzxWmwaDDI4mhk2fT7Wq4uFgRAWZ8ZphEM8uIkb7zluEJ2YpqU8OGEpD1QO5PeYiVtI/+Cp2AVDEWc= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:n0cGN/4NTYghSJ3rbq+cyp2ulkFHfnQOfjasMCGMoJ/aZ3oIm+RUq7pcjKGbSowP1LPxRWDRTv1cpdyG2mXW8UTgi3kS/FZq+XFnVMGNykNGA7PAi1TeL0m0TMRq64kCUTjcF/67vNeacjWlz/aM1FPxAiyfN8xuwNvzZ+fJqFWT3U5XM8nWTX5MnGCfSePpwf5Gtof9xJ2QU1BR9VH6TNja6SjafoD1/xmLyp9J2DEhJG8X6OUL2/37IYJQGCHBVf8VLgOGFpFK9+OKEq7+7ZbywJZH4b80TPHz1FtTyJRafwe7+Wa0LlaHuaNYwFPgEd87on8IS5doqQZc0l8Cd+SNbwjHjSndVPsgDA9yvXqzV+sgvjBiNrZ5L1fmVknsYeTU32upUUieyEIcu7b3B3NqcGCV2/RJnVAWfWOjESq4CxO2nXoIHA5BnoV+GbBRBDFHs3NWNzrMk6S8Xrel3QQU/eVbseZUl1rgCF3axXDQhs8mGkRDnz5H0OaksIhNKZD4d7W8YpY42xxThtbkeDyi0llVMGu6WUToFlMN04hkCroMGcaQu8y/1G9FW5k81U3djEpVC1YO2IeFHSV3RFQxVCBsDGhoYRL3TclZXQ4=; 4:RVFJOtDqTKYMIaT5azOeEPbgVmP4sTrLpMsb4TfkTc0KRnVKJHbdURJhE5FoiqKNThCf3XAskmtnjpY+Is+OLniEb6JWVdwJtHRs5zQgAjp+/txHXBwL2N0OwdSDPxhINmU+ef7uwYKsA1wR/bCsjiH4y+jlyWV3J8PIdFGtUCVUp/lZo7AACqd3S+jW72/PepKwCr7d3dl+HymHu65a6scahykfrZkfR5BIEGCcVMBEGQnZWE1Evi0BJINDfqFq0APoTHtbFOgOqavADaj6jg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(5024004)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:mISaCqt52GJ6yv/hTkF4au4mwHEAsi9NPHMdaYMy3?= OWYNqVsUE/ai8Ir2OW2HqUFPMWCzNyHfmqwGXE/pNJbTfL8mRwqLQK9WvmgOt+iL9hy7jGYO6kBRty2asAZCcT7fdiDr78D2uyztyWIdw1usMh7EdlVkW7vJGS64SvQL83C6r/JNfDukLQjr9FIPExRnnlOTt+AK4w4cpogsiIrswKT02qcuo3GxR1ASA6yVZdog49pwz0LtKt51QRSLCcaDem8qtjVxbnPchALrwRnDaUrm+of66ysewijufr0chkD19BmiWKad385sCI+HVIKQGV98B+EmVeteQNjBQLlh7KaVtjgLA21O7kqRHiF5V/aIjVfFdb3FrUxweGxPvCrZ2Uv2I7pvtNGk0V6p4iWPXH+bJgHhwHdfNtFlWFkJFNl1mcgTtDhmI0CtQYfA4jXxa5CmNB0ZXrNDvp+Vjq1dMtMH25LWSWLBDLRR0V2BaE8cLzu+Sk4mC6o/xU6Y0rbBsYRQ9BgnaHkXaNKP/r7+63UoYekstCHZFRfQDS732a45xL7JT3JIJexT/hxfhQi34/Qez/3rra9TWLSruS/7f3K3SexFWwhFAebzidi7jPi5maKj6/ncji1Qr/r6sizdmWXxe/wbhl1m5ZlmcFmBipCETN2qw2WYlSsBAKNIDQHs9YhBf8SxsjneRuHx5MvNgQysFnGyT5Y9x184a/a8Ywy5UPrO4qZsDMjWVT+vmi20IXRrF5zkFk+C5qw8alcMA06vqrKA9NcWlyJldxNxXoakwU5Zzx++yFHfeq7ca1+jJXAVbURZsrL8sOtuPdBdavTqxOMbw9kg/06ix7dTDU+sTSDjrqsFs+KR6hlCjVdLEPVCHeTCHPGUs8AgOmrWu+v54F3J9B3W+Sa1yJvP99T+r8hX/1pnkqMEUdGCHVz0Q8+NMudiTFzVu6iipdSqhXzBmyckx+R2ApYHxdfUpWS/t/Uo/p5IYa2vEWtRnxHvbUtr9wVK505VwAnn1tIuyrz8g56NwTvnVIpEjw0Q3tltC3mgSr4Tf4QKcb/8wGviCZPz7pDNJZwS/8FokFp0ZY1QWsEhmef02VnjwIDMkW0t+UdQ5eEHpVv/LPM9P/9N7rDY9HYNyuEZtmfDcc2HWQN0UpNrBecP16Q1sVsxOktHu5itlSQP/x/eMRJskIPqeh23objORg1iJr6Afr5UfVhkvXhPpzRoOWZXoVPnteOweKDvdBSp4NJZjVeE3w= X-Microsoft-Antispam-Message-Info: FH7De+eDs7HA4k4dg61mHb1zfTioCFBjrcOH/ihXFlIDFSKkEAkpx3qtEI+H7siXuKRQagbs10qqt/z0KbwCapE+ggxsI8VxAUQ82D3b8IW8g+TlRQBWiUlc+8QGyk3AwYIioqz+h1QZ5cDUtYZs+HxQ4rC19tFJIFP6UpkWk2j0nLLBySp4VcvtKNXgdZbH+55p7Bb1TBowyJ8fcee5DLXqdWlHZZ+t1j1GRswUzpYTDdAy/6Ilh16/xcom/1R75XSifTM270+0zebjk+bQIpQg9ebDmKhLDZhCMx9Wd8dMHB57Awn4tt5NF8GQL3YjMsnqwo9TP1vKpjXYUFZtqz9BB+5Tp0FPgC/llBDOClM= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:gS75XLHf0E95WFzKRRmRCvGZAPeIrbyaheZ7D5YASmw7bQ3z1jWQ8kcoPZnJLGP6Gpjc4xt+sP9dCiEzgMDA2UbgSsKcGX3rgp4htu9kAZCJVSKY452wXiIBXdmSWapeuGpmsFOrLV85Q5dNBfgbtgNcBPKJH2rVyb9R5qnKz2EX5e7C9wVprulfH4hwXTIkb8vzbTTxrvNutzDacBxP3oHGkoAl2MY+ARviMExNCsJ1bvHB1DYLxOdhQHsvQhQgeAENU/P3o7Yza4F6zuaRvKuDI45YFjMmCKe+DwbUO7rfQHH5oCbH2Ax7RrhNNw0ZP/uttLqYiplK3NTJXZWPBYfyEdV2J8O3Wc30JFkIIQVWMs01Rzj0Bfm79NF2/xJchd2EuYuX9Sn/gyOhqmdAz3zmyo11HvIyzz0q+nn89XYVTAUen+nuRFSQ6PZjBnQ1SQW+JTk1pSXBKe1tfhtdPg==; 5:NE6dHs/puQAJsA97OVVIRWzjG12qyyAJzUuerp58KxD0xWKpBL7J7JxkBI08/4EsCaxFnxHKhvbel2neSaY1OXDuegVg58u5mDbhlKRTk4T9EkQ+DZwVXrxWgEJdNHC5nxsDoQeXBc6kZRMXdkeHuEome5RDUsIon1/nFhcPoW8=; 7:njvdSrVNIv5QmafuGyMrBSAA8LW27vSCGPGyjw7cCB56ohwpXWidAcwPHEJnNNwwYQxYtFVTdUONRqr1xXzLrl5fT9KHRL0cbYVIkOibPRxDlWxGRKHuyYvrQCYIWkBROD7ROIQcYwKDVUFDVOROsxBp8+a6Hd46GDOmq3fhNt4iUEOdP4sCzaclYZ5sl9xVjx+LEEgnN+qF/obPd06OHHzEBBs8aPBGAFSal/jjvfXKbgXxaKq6aaGnv1DDXBjd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:01:53.7878 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cdcbd2d8-ddbc-4797-8df2-08d6121b28c0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 03/33] crypto/octeontx: add PCI probe and remove 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" From: Ankur Dwivedi Adding basic PCI probe/remove functions for OcteonTX crypto device. Initialization function for logging is also added. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/Makefile | 5 ++ drivers/crypto/octeontx/meson.build | 4 +- drivers/crypto/octeontx/otx_cryptodev.c | 132 ++++++++++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev.h | 20 +++++ drivers/crypto/octeontx/otx_cryptodev_ops.c | 15 ++++ drivers/crypto/octeontx/otx_cryptodev_ops.h | 11 +++ 6 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 drivers/crypto/octeontx/otx_cryptodev.c create mode 100644 drivers/crypto/octeontx/otx_cryptodev.h create mode 100644 drivers/crypto/octeontx/otx_cryptodev_ops.c create mode 100644 drivers/crypto/octeontx/otx_cryptodev_ops.h diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile index 65bd02f..12fec75 100644 --- a/drivers/crypto/octeontx/Makefile +++ b/drivers/crypto/octeontx/Makefile @@ -20,6 +20,11 @@ LDLIBS += -lrte_pci -lrte_bus_pci VPATH += $(RTE_SDK)/drivers/crypto/octeontx CFLAGS += -O3 -DCPT_MODEL=CRYPTO_OCTEONTX +CFLAGS += -I$(RTE_SDK)/drivers/common/cpt + +# PMD code +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_ops.c # export include files SYMLINK-y-include += diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build index 261bb77..6564090 100644 --- a/drivers/crypto/octeontx/meson.build +++ b/drivers/crypto/octeontx/meson.build @@ -7,6 +7,8 @@ endif deps += ['bus_pci'] name = 'octeontx_crypto' -sources = files() +sources = files('otx_cryptodev.c', + 'otx_cryptodev_ops.c') cflags += '-DCPT_MODEL=CRYPTO_OCTEONTX' +includes += include_directories('../../common/cpt') diff --git a/drivers/crypto/octeontx/otx_cryptodev.c b/drivers/crypto/octeontx/otx_cryptodev.c new file mode 100644 index 0000000..df88a84 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev.c @@ -0,0 +1,132 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include +#include +#include +#include +#include +#include + +/* CPT common headers */ +#include "cpt_pmd_logs.h" + +#include "otx_cryptodev.h" +#include "otx_cryptodev_ops.h" + +static int otx_cryptodev_logtype; + +static struct rte_pci_id pci_id_cpt_table[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, CPT_81XX_PCI_VF_DEVICE_ID), + }, + /* sentinel */ + { + .device_id = 0 + }, +}; + +static void +otx_cpt_init_log(void) +{ + /* Bus level logs */ + otx_cryptodev_logtype = rte_log_register("pmd.crypto.octeontx"); + if (otx_cryptodev_logtype >= 0) + rte_log_set_level(otx_cryptodev_logtype, RTE_LOG_NOTICE); +} + +static void +otx_cpt_logtype_init(void) +{ + cpt_logtype = otx_cryptodev_logtype; +} + +static int +otx_cpt_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev) +{ + struct rte_cryptodev *cryptodev; + char name[RTE_CRYPTODEV_NAME_MAX_LEN]; + int retval; + + if (pci_drv == NULL) + return -ENODEV; + + rte_pci_device_name(&pci_dev->addr, name, sizeof(name)); + + cryptodev = rte_cryptodev_pmd_allocate(name, rte_socket_id()); + if (cryptodev == NULL) + return -ENOMEM; + + cryptodev->device = &pci_dev->device; + cryptodev->device->driver = &pci_drv->driver; + cryptodev->driver_id = otx_cryptodev_driver_id; + + /* init user callbacks */ + TAILQ_INIT(&(cryptodev->link_intr_cbs)); + + /* init logtype used in common */ + otx_cpt_logtype_init(); + + /* Invoke PMD device initialization function */ + retval = otx_cpt_dev_create(cryptodev); + if (retval == 0) + return 0; + + CPT_LOG_ERR("[DRV %s]: Failed to create device " + "(vendor_id: 0x%x device_id: 0x%x", + pci_drv->driver.name, + (unsigned int) pci_dev->id.vendor_id, + (unsigned int) pci_dev->id.device_id); + + cryptodev->attached = RTE_CRYPTODEV_DETACHED; + + return -ENXIO; +} + +static int +otx_cpt_pci_remove(struct rte_pci_device *pci_dev) +{ + struct rte_cryptodev *cryptodev; + char name[RTE_CRYPTODEV_NAME_MAX_LEN]; + + if (pci_dev == NULL) + return -EINVAL; + + rte_pci_device_name(&pci_dev->addr, name, sizeof(name)); + + cryptodev = rte_cryptodev_pmd_get_named_dev(name); + if (cryptodev == NULL) + return -ENODEV; + + if (pci_dev->driver == NULL) + return -ENODEV; + + /* free crypto device */ + rte_cryptodev_pmd_release_device(cryptodev); + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + rte_free(cryptodev->data->dev_private); + + cryptodev->device = NULL; + cryptodev->device->driver = NULL; + cryptodev->data = NULL; + + return 0; +} + +static struct rte_pci_driver otx_cryptodev_pmd = { + .id_table = pci_id_cpt_table, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .probe = otx_cpt_pci_probe, + .remove = otx_cpt_pci_remove, +}; + +static struct cryptodev_driver otx_cryptodev_drv; + +RTE_INIT(otx_cpt_init_log); +RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_OCTEONTX_PMD, otx_cryptodev_pmd); +RTE_PMD_REGISTER_PCI_TABLE(CRYPTODEV_NAME_OCTEONTX_PMD, pci_id_cpt_table); +RTE_PMD_REGISTER_CRYPTO_DRIVER(otx_cryptodev_drv, otx_cryptodev_pmd.driver, + otx_cryptodev_driver_id); diff --git a/drivers/crypto/octeontx/otx_cryptodev.h b/drivers/crypto/octeontx/otx_cryptodev.h new file mode 100644 index 0000000..99d3346 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _OTX_CRYPTODEV_H_ +#define _OTX_CRYPTODEV_H_ + +/* Cavium OcteonTX Crypto PMD device name */ +#define CRYPTODEV_NAME_OCTEONTX_PMD crypto_octeontx + +/* Device ID */ +#define PCI_VENDOR_ID_CAVIUM 0x177d +#define CPT_81XX_PCI_VF_DEVICE_ID 0xa041 + +/* + * Crypto device driver ID + */ +uint8_t otx_cryptodev_driver_id; + +#endif /* _OTX_CRYPTODEV_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c new file mode 100644 index 0000000..1b5f108 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include + +#include "otx_cryptodev.h" +#include "otx_cryptodev_ops.h" + +int +otx_cpt_dev_create(struct rte_cryptodev *c_dev) +{ + RTE_SET_USED(c_dev); + return 0; +} diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h new file mode 100644 index 0000000..3f2d829 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _OTX_CRYPTODEV_OPS_H_ +#define _OTX_CRYPTODEV_OPS_H_ + +int +otx_cpt_dev_create(struct rte_cryptodev *c_dev); + +#endif /* _OTX_CRYPTODEV_OPS_H_ */ From patchwork Tue Sep 4 03:58:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44178 X-Patchwork-Delegate: gakhil@marvell.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 59FC037B0; Tue, 4 Sep 2018 06:03:11 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 940CA1BE0 for ; Tue, 4 Sep 2018 06:03:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pDSkdkTCmd9/ulDGZkK/OGAeorJwfOMoQZ97evFGdFk=; b=TMZc9VKqtor8uYGMlf8z2bXqj2+EgJy79JW20IwLhve57GEpEqQ20YAge97C6Ocl1Q7FWdYG3pGaNK3mX1U+/vvEH8p2vn3g7bsRIBy+N5QHGxFxMVviKZiffFFjIp9CwLdIG569xoeHEbeQ5f+M3xOyVhkEmR0kWVaLldhhAEQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:01:58 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ankur Dwivedi , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:51 +0530 Message-Id: <1536033560-21541-5-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f87a1be-483f-40eb-1ded-08d6121b2b9a X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:KlKWQAqaVAUkzZnLjtjThPU95uRqdxXLc4g7sOJKOgocrypV7LeSRnAzaN2tPNbT50sLhgOnSAIFGWw5ZNtlUUZWdkStwQlF9SmTmX+yl0jCrTb4oglbFJ7BjhgvKMm8AGnOpXhcf4ROZ67JrvzlAF5eTpUkpTJIjPGRGIO0iYV0odxyQcpQDGAUM1w7i2nBr2N8cEYTo3Q9SCF82fpt40HNvwpbe5wK4m2B6uVYq3Xl6EQDvibfJtW3en2i0uIv; 25:wbwC6Pi5Y2kxfCOJlvRrqyEXlftaId9/4BeMF0Ru4OR07Pirz4LdG8DWcU4MucasB4JWWrnT1PqSpCmEcu2RotMYRsD/1BopXVKt61UiBDRmv9rjwGl2trcntbDq7ArxBji/RJJaA4jMT91p3YZ6lxj0CWy06j+dCW1Q7BaEWrtb3UvRhrHwsc/ni5DZ5piY0BGFiIH1E6Yd65fnjb3e22OX/FATgeS5BJx5B2XBgO7JlMhHim+vWCS6UpBmPoPE05VMV0papuh0+FProrl7pG/YQYsGImF9NE87pwW9XJ8Bor+XVSxggoz98li3GhzOJonWtqpzMsLx3HC/CFGokg==; 31:XkKxySLYV7OYHijsUfy5bfPZZScEgWjK/SpyxzqMpJWQKu7oOBV81mmARUaOzJB5Pkbbf4vh6HsIaSAgPcEp6h7amiZtL1iCvgXQwPlZ3l4cTHKKaxNC4RHMWWYn3LRXeB4JEDpEf31IVU4QdFF7ilCrpO8YKvOrtNNyZ4Xw4IbXg4I9SuABWzP/R1VFQR7b6i3D6nt6YUaIe5PzppWiq5Kv9YdzsCtIc0x6n1JuRWk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:mkwY7UAcsOCewTHRcL45o1szpsLQvtUrVXBek3ewwh1xET2qLfIT7MytqbgsgVmvO+U/Pu7rk3UbxOlQsuDnNhtLq5u+HffeDrlo3n5irVAopS5R6WN0R3LaTso7flZug1EIK+OvNxz5R0rwpvzPLvAMqQJiZDyURGlXHE2KoW1XL1bnK3OTZW+dY0VeabGa2yAhOQ/zygYMeWa/dB0XaLrE7+o+YhRvyc0afS7lt0cClkSu5VAi2J4CfLO7xRW4gMwxaXz3eIXmocpTQTg45G6vAHVstWCdcwWJZrRoNgtjEag3KkZeFKK0Xr0cespidupyH9aDjSyQl0RPU1XK1n8oT6CayQmIKCZHImnbFH6pI62UjzUzRBbf/Nsfg23H+by2w9QV3bU6Q2Mo5gepYXyk5AygKuVhVjBsYvzvn3osEA7VSJ+U+c5v7NLn6w8cV4KLRE2fOO3VqXcks4fk8K+v1vhXoH8GGLXqKpWkBMM5T1VCI1E6mEIR06QxPkLFs/zqtIZx+CYtga28NYhYVZycMqEzZdPY7Zwg0RweVJmi8iOgB7BqloYd/PUtE0/NpG+fZk/YypMwlxpxVEr5M0arB2tOx+pgPODXzqIwJbU=; 4:8fDZ2AANWUf4pnMcjiJxWZj0vh/t2fG1m7/rPLPjtp2T4byFB82SUaJWUT4VqE4inQ+77wKWhxHwxUMEkSENAF0du90cyCesPOH2LkdjBBb68Oy/i/Ayg7DfVvTVk06/IUV0nS+6QtW313/ilKsgUtcW97sQrTRvMCVknP7tY/2JudrEOhMaZj2pmewJx7/okZ8aLG5sqggCu7o+ZnoY2xRiFx+4Ij7xKhiODTKL2Ku4R5PeMji8Z7W+V8vKOLSV/ULkfAPqfPlS4Z04VVAEGw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:m5WVY1kXHbu1gtEyVvuGH1MnCPsGTf7cQaCjnyShh?= Yb9AX0aUozvfr3ImXxZWn2h2fr8oLMi/oyuOh5/05J/P8XB+mRcBHeonP9BaJbGrEP+l5Q7+0es03H5StsLvSqg9DK/3th2M7Nl1HwBGJ346Qjy9WNjwIEc7tKmnSrR2nHCEdPAzRFjXE+x+nesINq1568xXy+jwMsfP2eTLdeYjYWEWG0eEtBp7U0tewMn4WmMQ7ryjTB/cooi/WjK3j8Gz4hlYfZ6mWmsqsE41l2xozVoqZfWg3cFQ+whz7M0toSuRc9Yg9+f7i4wAGOHTnlsVHmbfJVTzjzsiOVfBe6xHpXjfPUhXKa1JI5GjRJ9V1Hceh7opzbif03yhA/3xdz9UkzT/aPGI7VxqBd/hUtpda/+fVw1USH5jDEy2BWWXKU5IFd9MyBGYEEuaV07Ik/Sr0CbKsRxOWETy0tdLxbprePeUCEU1lYztDLIDSQjEKi4jXC1hyO5c0QdHEO8cs8KDnVslOI/9LednCeZW9MoZUefmH3Mb9qV/LTg3xqQkV/g7cWKGb4PqCAbFIbvPvZbyMaIR+o6DK7IUs7MRurEW8CuqLPGB4hjwZcdDyU7jCj44kcuRpS+jyW9NXh7mvnutDnyf0Yq+wYJkSm955yyfBYYlL4GNMKrWnS+VvYIkjd8bu/Z3el2WNB/MEIKezRTbyWxtoyss9hA/DvJQQD5Cnmisz9Yl8Psa3i6oa1LQMz4EALOK7lysqlTpj93y0U/VZEK3Qyx0LPPPtfV8ePqW6K7miUHNEbfur3HLYAFRixRLjLNeRNi9em+kCTC2+pkzTEW/t+eoid2PplwfC0TLL7SG45/8pB/NoGzm5KYWbMXlH9q/gzwon+GQRIQYd00+ydL9Qwm7pe096zUWMczLTMNPzH8Oa8xmwu4cpFnTvvdij4BUpR2lu0SgLolDYcEhgrg+gcPUSZyD3vbr7je6rJVSITBjVxmWGaiazkib4vDuBDeaXKvfq653Bdfyhh5+yZwaKeiA5kSzq2Hmu+D5bjZZvkPR7w8K1joNwFlsQXodb75Q/kv+Wvo9wkTx9grT/0j5ERpgjcOWclbmgD/eAf1GKviyxOrFEWDRx26jCvTmSL0XEPyCh6PrWchANBn1v06A3/B4zorEQ3YZQZvOxGkbblxBdKDgsOg+NiKtXW/zzkqrv8+7L0Pe8qK/lt8aiZhoAOLAnUCZv6g82xwUB4z1IZ6AubMvqyBu1kFvcU= X-Microsoft-Antispam-Message-Info: f7ooWklB47rtjrpw70igIS7zNXqZrmPYQk8VqN+sVuUwKNChABlCZWzkEW9Uu+3gThIKEynlDDfA928DBWFEP0eXXd+j6A3XaZSRxIkmgMrjjgGieHMGd3XArCKRj0JBQgxLdlfBN5sWDadLOR52jUqIMGqH2btlzjlrjBPPJmYCGZWk934jaw71zfCI4wB7tgpaxSIZj/8NQCTxBAmoLEqkVNgc7h1I1imtfx2AlvVrTnnFUBsHtD4Ja1MfOVZaDg0URDYQbuX9jcmRUtIOjZCOpfW/uSAUWBLoV0rDLleqSPH7dUvldFhHV1sg+95d5Fk5DUhwAaTsSUO5mgmI4wT9yNaGWIepFz6f5rJzctM= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:UAcOGkFOKDRu8uCTbwXGPFeUJwvTQJIFYPVSQet/h26VLN3eu+uhqHpRagR7lNzpBVtVWBRXDzqMbCyU468AJvQJyFXY4jWGZHjYreDetPWq3luPej8/2CG4G/rRYZIk6ZWL/DAEuB3qfmSG/VaUAcHQrAYA58vDvoUBXqwW5fwatbezB+rj4Kl9JR5gizg1xBzOdc5YzoJaI9bWn7tpabWNQspUOPPXwhvkXuium8yfI3hF9owLAw84k6gVc/WUFS3EIqD4i1K0bxKOpBA0RN5Tz7wfD+9hRDk2D68uWp3VY+d1NCuvUdUChidPc+m108asF+gT0I1Xd2yaKIFKi2eG9iOCqYonQv4vvp4IBZyFgHTStDgWS+qkM/J95ShwsqGj3O0kH0x5KUXUrqYKWVb/Ezzb5hMq5gFmP2uxYwRa8dsPX/gHJdudz3GNdEvd+9G1RQ1/cTFsS8PWv6jfUA==; 5:Vw1A9hDWhAMxA6Qe4INZoEWWdqm4y6AXyZ6BkxqUqvCynaqIlxMsWhJSCWTIWTB710oYzpNrWV+dTBsFhpAkb3N2kl+xCO1GHXXofOAiU6XR9yzW1huPBWLfuVw7OhNRNtnzGAtAcQWn/7FT2pVdckXkxIGIfppIstv6DY9xNl4=; 7:q2Jr8aK0Hp8VHwJzKlAa0lWXmlbXvBo6BwZu74b4/g1FhLBZe2egVk1TaG5dTT9fHE8oArBANQrlidNAWQfBakJADhuqDnoM+YS5ocO5Eg5uwoW5VhFOMVdg7jTijnR/u2ucQXb/CYklsrcgq+8K6rkqYywD7WVIXL5fiotQ/b+Jxb6Y6Q8XuZCFt9NU8rT/UaDO2lCsC49hs4d+VjO27kXa7vtIUJrTKUaohNfZ6deC8U8xnm/ch9/dI8CSOM5S SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:01:58.5691 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f87a1be-483f-40eb-1ded-08d6121b2b9a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 04/33] crypto/octeontx: add register addresses 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" From: Ankur Dwivedi Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 drivers/crypto/octeontx/otx_cryptodev_hw_access.h diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h new file mode 100644 index 0000000..288ee41 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _OTX_CRYPTODEV_HW_ACCESS_H_ +#define _OTX_CRYPTODEV_HW_ACCESS_H_ + +/* + * CPT Registers map for 81xx + */ + +/* VF registers */ +#define CPTX_VQX_CTL(a, b) (0x0000100ll + 0x1000000000ll * \ + ((a) & 0x0) + 0x100000ll * (b)) +#define CPTX_VQX_SADDR(a, b) (0x0000200ll + 0x1000000000ll * \ + ((a) & 0x0) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_WAIT(a, b) (0x0000400ll + 0x1000000000ll * \ + ((a) & 0x0) + 0x100000ll * (b)) +#define CPTX_VQX_INPROG(a, b) (0x0000410ll + 0x1000000000ll * \ + ((a) & 0x0) + 0x100000ll * (b)) +#define CPTX_VQX_DONE(a, b) (0x0000420ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_ACK(a, b) (0x0000440ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_INT_W1S(a, b) (0x0000460ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_INT_W1C(a, b) (0x0000468ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_ENA_W1S(a, b) (0x0000470ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DONE_ENA_W1C(a, b) (0x0000478ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_MISC_INT(a, b) (0x0000500ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_MISC_INT_W1S(a, b) (0x0000508ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_MISC_ENA_W1S(a, b) (0x0000510ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_MISC_ENA_W1C(a, b) (0x0000518ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VQX_DOORBELL(a, b) (0x0000600ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b)) +#define CPTX_VFX_PF_MBOXX(a, b, c) (0x0001000ll + 0x1000000000ll * \ + ((a) & 0x1) + 0x100000ll * (b) + \ + 8ll * ((c) & 0x1)) + +#endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ From patchwork Tue Sep 4 03:58:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44180 X-Patchwork-Delegate: gakhil@marvell.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 64D144CBD; Tue, 4 Sep 2018 06:03:14 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 996DC2BF3 for ; Tue, 4 Sep 2018 06:03:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Tz2lYphsSHz0KnMcmRqYcZmCteHPcxRuJVFm0sHMoyo=; b=N/p+iiy6WH8N6D97FUx1Acct26XZmmziyk1nLsj3mJPVFdmi2uCat6uYedB1TFNP5Vr2qJkyAVjwZXU6t/1/qbDz8s2zyqkXanOtKaMsgHHl2owhXmyGDmqb6HeYEGv200k2iT59yGa51glgec/9g1e27BjCAA+WpaG0pjRXGAA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:03 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:52 +0530 Message-Id: <1536033560-21541-6-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 85fbd161-4944-479d-25c0-08d6121b2e4b X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:xiODd+n9H/Xq/6cJinrSSFlw+aJVhWO+tERUf0rPAyy5abqDb46HW+KsMiDM6u0LLeKrgSzBWXgJuu3H2h3V7bPrD2/ulyyT/ytj15h+LtZ2OvyoIACnUX3cvHkMwHrsTyTu4lEhpo3EslB1zlylgCXsAIYt22cWSWjG9rdO40I5jb9VvJ9zbweL14PxM1AikZeggog2ApN1PQyFW/ONSOoOdJcIHyqhPhSHeT18Swzx3atLZoxoZuOsrsN8rBmv; 25:5pvdh/nvMRZ6ggpweOG0cq5XIFxfgI1bx170H0BaQ6TMl+V12us/2Ut1MI5FIg7HEz355IbH93rnxcISqJahiXg+cne0iNWMi2E96IX3Zrp8tdDp+JuNrjZJpvjC6lpOVL9bBkcSY2wa0JDb/Jzg05O+Wro0Fh7VdmSMN8vSHqac8pcQ6JAX+SUKPrfvMiy6GRN4kngWmiPEV/rDF13ZvcDEdBtdH1JXoK6CJYnCFnA5aDnSqF4QeBE3McxhuFVH9+RdLAHbWhmQ+9ADabl7f/NHgWsklKm3ZpsESUvRp/uICmwT5v+gf4sM9/7xBPEkhBIpPOgJ4sSUXY0iItX6WA==; 31:NTHTIUOsacTOHRwGmTY2Ez5UGie/uXzOBBcTrIK1J+8C1FOl2bMwcjlK3yXZXpzpwco0eCzJRCmKKWPduYArZT8NObokw0um9s0jyCzaP9jEOgZ+y+FigEJVFVIzgHqz7ZHeCmWHQChaFJpp6sPauSah3/DKWn6b1B+U7jHzOsakccXcl+Og6jFKtjA9wi8/GkYslkX5BslP690C4o9v/zZC+yJanDZS7mVN+bZxh1c= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:efJftLgYfu6WVqHCIKOLT0zEeqhZWzsZqhAbwD+g1/40AKIv49tBu+U6l9Qbmxa6btMxHWhw2e2oAa6bF3BNR/rQRF4wvBqrQ4dHTlSyy/Dw1A0vmwQMZAxe8In1yqRpl5/2X6vxKaJTzm2H9oZrvLQf2ZwpscD/8nwwLjnx9PkcU5Q/MJf4tLO7b0Gwkp8+//AqBQkPoCn5fqHrghOs2ZqClA4VFpd8L5JYcWTIHY3sr0Hosf5v+XvPYL0lfv9VKbPN8SpTj0ir0ZcAay1pkcUlSz/xvbopU/768n1i7ALJ7FrAXvfrJNwcnc1z93+mzgRKFsHrsmMLiIKVfm7lESXV511r+PJ1QpQyQmOKAyeFzVVNicsgn4rWjliUPn5zqeqIOjhQtoD+w1j19ec7ramySZPmDJKQ3poUo/Jq7jtvCKeZDtKyKnCozgCo+lGzjYo683DZ99yl+aNyRnP09B41z35NWNnslzU+7kKLLG6QgZQ42VXK79NCXhWbI+mK6CNzyWSXsdYO+I+6Rv1mm3y4RP41VtlgPPeKpxV1JNvcONRHBx5ANu0nVZGUbO6JxJxu33AyUgzMsTupkNFNKpHvmYEP2dtFKjWbx9I2PXQ=; 4:y27GO+DdWYHTXOdKOjX5fkXcml1oijQCesHYeUky9Yo1/rONN+7AGlLqOPILfiKcf35ywdHsuU9BbXEGPLCXA9UsscZPcLCjuSyhDRX8Jy1SeuaGiAJnpDuD7ned9OHg1rGXLK812jUr/gizjmfJlllaDZuCDj9BuSkqR4uJ0YZOs4faelK7HMmXD1xRAXBkRoHxVH0uGwmYjklf1de2D4/ti1R5mv6ZjEY/AA3ayxoiST5KvtGK8YhT1li7yRBDT15kP8Gnsi8KrMDK1kkAcA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:63YTc1Oynv45WZiM2BcSHU/mVK45xXn8SRyJL3y3T?= 9CO3nwq2RyIG1QrfX24noTvZgybCPhjkjJq+V2pSJp4ZSgxNbYXAxjjJSOTjXntxPEmnVufzUabv/PctRSRMt3WsYHvUH4n4Y9F8sA/VKucoT6NvmjKWbJU2ThgDo0WCHm58i85+rvZLMrHpUQ/c3RlJqtgLvpvruqiv3kRUGhhgavPpLlNYCh+hempT0BvkNm9GDrUlc1VgES/+hZlwXlYfFwrAc/YZ/YaiQdSXGVwNI1Oxm7UWa1XhLStKDJixEXcBCyEM87bE7OtzpZqx8SISfyWYqNgBg8k2b6yvG39KB99Eag8T4fQ5noUIYhti5hoiSXgqHYvF+KBPNaCIJihOtebr3HCOtNja8d8fNqtyTOohM966GZsZz3V4Jd3Y2kXdt46aFDuXws+vE+QO4rPUI3IRHjE6jI+747C6cyDNY4Mn+oodKGtqgU7PRGJ705FUG7UxRiPMUFIh/VdWech4STWlC5OOvjfq3Qxq7XVNxz1x0wb3M4MmOSvcsakWC2KhBDs2+6aT/8x30iCgZp/0riACqBkkwsw7lp/5i08vPek+Lxy7+7C25AAaS+n5Ig5rmwlEn142cuT/FTjvAuBrsOGao9t9jTyhXV3LCigKnISAz5DQV0/JFRUBv3yrkukrxbUHmuSDGY1LIlkKivE2zjlFB4j2FiqFHqrj4Fr4akc3hVeMp2ZBqGHHyCUWXkQBarFiuLtiwp0XJ1CjYvJ4OMqwmXmv8vtwg0aXFh6GSO6ebcgcbtP73Ds3InodcpzTt4coKTLtR+Ozx9KFEudBX9iEhAfkGWmJMtgXIKVIMQ9K1bNI/azzNYSWaASTbH4GfU1PbWK43yIEVMVe2Wv4F2pBJI2O2q5oc7vDOvo53Jpa2ybJTFHXaNsjDnaNgIRpLbSnL5dnnCRT9HIEgJL+tU5bAFeS5iLkhAmpBd3BPwY3eFWS/DWIBe+97pTR44tR7DP2S6MCchbiGiD1SMbCTWHLmByeuonliO2H7/janvDtSb2pYJZQgh2tanpeyNEB8iz37rgcvqdj8ilAYJ1R3wSx/1r6bin8ZcXgRbxRYCvbRoR1SxQBAXcaEPM1qm7sL1zco6o7SQxQCPnwEtVpgWbu9a0gvSGKqO/DZxeyjD6cxgY2U8J2wO53HwxQH7CawVAwLjPtlmUP4n69NELGv81/bP/cRA5sasRtNtpkhEhMHVi8Rnjk5inIrVSDdU= X-Microsoft-Antispam-Message-Info: p+bgl6CyhL3xvwq03NIIm7qG6wVPK464LozAPD7LX5xpAulePp83zqnz47TPZxYzbP1gSeG72r7DBd3gW+49yCOUgeYaiM2atl9lT/MImiZuYZ0hKAMj0FNeAVOg57yHgDc5CefBxcGkC+OSv38eDLsAtlWpKRIxBrQPYzv7h08/75OxGrKIUcKxlvxpQFevdGgBqpgb/oN1UAmQ5r7ZdQGX6I1GFy1vrnZEES8QLVU7o0dGcntlAeTgz90D0gJXbbvX+pbHyXZGuvFt0WpmKW6CjgbjbsxwCBTDzTm6TcyE0hgQEauHY4+q7IdsfdX4nSG6vbUsM3QV/x8Iu5UDZYLSQj96fwvakg04lZpO2t4= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:m7ZfWOiSbFMlofhkN+X/RL2JIin8z1Sj3EjN4e3b3F7YkjzHBIuaTnHgXL5POl0z3Mob0YmJy0TPZL8wIVMoQFL5m03WlrJnmC8ikPWNPBCKssmu8zDtQ/tbzOVvtUHydAAuwJab4yKMoTay7gdMnozla6fzppSvaGb4/nvFtfcvRMIII9pOXru6xsGXMGAorlu1bohAUKn8TJMVw7RvSrpiyukwkZJsHqeRqebHNuAgdqIJMx72Vnd8pzxdopIKX98xiEJOQQ572cmBU3r9fNxr0kcVKPt6P9FoNu7CvLEYwXQFEQxhpNAKYeuqIlv/zHfxdfWL4AW5Mp8emFZRogBcl+tCp2VrfW1xA8X/+vfEHvEqn1OmSfgQxmXYnFyRUQuMmkIT9tm/WhRn0iQXHtzTmVJjjuzjda2k1pGOsrnd2Wkl0Zu7Q6XAXBT01kfyEOWzQFlLeB6ppWTvhstdZg==; 5:bJsGvxdMMSJYmWmNWjaiGcPYFEthg1v4jHE5UPDmFbn8kizS4l/N/xFoU+mKv0ue8bdw23afkuSyU9ZbZOpXZXAxKFA1U0hqkXwG/DqhJreDwnPRo+UD9AC6a4DWyfCxRvyZIyD21Uzp27zsrv10lnxzojOU5Wlhn56nU0yO1UE=; 7:jsV72QYUBq+N5FCtOTalF5nrO7F0Hy9vyXve0BQjGX/rX+zF4FbNJoQph8FCk+oNlJdSN8lG/Y0M7pHf0FiOvV+312MAr95ghAtrd1BL/yCL2CCXQs69vqQNPBL3x/SqNUezmuD58DrASt7FaD5MvamGPaO9INJBVhhB81eAX6dvBvGK68cptAycxxFC+Ln8veMNlu3Zt3SYCJf9++xoC8Ilonf3Xp0clGob7FVwnhae60WG3lNBPOu62l2fzCrO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:03.0535 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 85fbd161-4944-479d-25c0-08d6121b2e4b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 05/33] common/cpt: add common code for init routine 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" From: Anoob Joseph Adding code identified common for OcteonTX family crypto devices. This patch is adding the code required by the structures and code path of init routine. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_common.h | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 drivers/common/cpt/cpt_common.h diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h new file mode 100644 index 0000000..feca5fe --- /dev/null +++ b/drivers/common/cpt/cpt_common.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_COMMON_H_ +#define _CPT_COMMON_H_ + +/* + * This file defines common macros and structs + */ + +/* + * Macros to determine CPT model. Driver makefile will define CPT_MODEL + * accordingly + */ +#define CRYPTO_OCTEONTX 0x1 + +#define AE_TYPE 1 +#define SE_TYPE 2 + +/* cpt instance */ +struct cpt_instance { + uint32_t queue_id; + uintptr_t rsvd; +}; + +struct cptvf_meta_info { + void *cptvf_meta_pool; + int cptvf_op_mlen; + int cptvf_op_sb_mlen; +}; + +struct rid { + uintptr_t rid; + /**< Request id of a crypto operation */ +}; + +/* + * Pending queue structure + * + */ +struct pending_queue { + uint16_t enq_tail; + uint16_t deq_head; + uint16_t soft_qlen; + /**< Software expected queue length */ + uint16_t p_doorbell; + struct rid *rid_queue; + /**< Array of pending requests */ + uint64_t pending_count; + /**< Pending requests count */ +}; + +#endif /* _CPT_COMMON_H_ */ From patchwork Tue Sep 4 03:58:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44183 X-Patchwork-Delegate: gakhil@marvell.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 073635942; Tue, 4 Sep 2018 06:03:19 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id 4CC442BF3 for ; Tue, 4 Sep 2018 06:03:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9z+sKPLJodDkrHx//9yAphJS73sa+cUED/nVtdGqVhc=; b=drSKH0g/PXM79nbqqTxKgGTTM7/nNX6F8Wbg43RtKWsA91F3r4mC6Tmj/nf7ju9en5pSaXiZEThdRta82NQPuJQjGFew+O9gn++eMJ64vd1jC9ott6CuFI+fNn5Q+wmIPF5XnfT4aL5sZlp49LtvUxwu9NSE+rl/RoTPGrbmYRg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:07 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:53 +0530 Message-Id: <1536033560-21541-7-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 64425456-80cc-4ec2-6626-08d6121b3135 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:CgeH2w7kGlxBV3b6mjQg42cQDs7RL0fG10q4A1hWhhUJu09G41yhfQEshNLA/PXW/zPbCNDGxJZ9F5rUMjipy2a4+oozM2WNNbKqv2S2GsTLyS1ZzA84nLizMq6btpoMqUwfcCeKAiSXV8GbUdG5EbhE1dAb8KQVq4M7Zvu+UtfXpNS0zhKLOgtutn5aarn92cuiY32jOb8ECqGePhrRWZHmbAkzQFPMDFhVgbvr6hSgCosavz3xYSPPSolg5SAa; 25:7W8fkKXizAfBUIbWRFWESqcBqX8QyswsZF7ULzehK0AEAhXkwWq7IuNb7LukS8yq/iqkzEK9UuxOr9dYvXMX3S5Id+MbNigRi71PVGo5EnLgvJEgelvO5m+Q5bD4LcAtHC962pf/g6ZzuI6DRO8VKYzF+/r9ASB5QTjMXDUEfJBh4BlsuAE9ipQkO2VWoF2f1p3j5bImrxy9FmabD+4ON5rBlvebv6uqB6TKRPn0tdXXiTrN7hXfH+hgUCS69F5nj39X6PMhitIxb1xevb8gsAFg7cKRrpg3i5IRJWyKhLVLyOC8MVjXD5EXhMBCYZMyhOPbOEUxvdu4kP3brra4RA==; 31:M/gvXzI83GDEcJN1/co8C5r+a258Up6VfsWq1lD0p/C0RD28LxYm19JvB0SXlomHCOaQw3CfG+M3SvvqZeUINy1HtT1QlJrg/0a6fAM2tBdf2vl4tRhG2bwZSepqdjS7xU0z2I+r+XrGaRacDKbP7J+wAvx9QOUyiUG2lhaeXcgPXCv0FQxdNaDstqZAfOiHwj8KbI8wqT1z4WUoildQgrHUOGAbBWmndYAU79Kp85o= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:dJNmkUaDOPz9UwZKuJLHgGr8V1E4E9Z6CVMw9hemPCllQDdxAlW+Imn9VRziywk30CaVxsmhFlLwXyEGErfE4fKlQDWYaUcf3AfbQY84YftV71hqaVY8WSi1B9XL3U3alrzjGaRzyzfPGEPR7kZpoNR9xobXCzV3rFeRZHLgeLk+pRPklajVU6V2yx4t3X18xup3gMS6yR930AwSHFsZg8uxHG1ViWnhIPgGGa5SsuzGpRLFAPWcU65A0FEgOz3yfx82KJgEb6m2+evE2w8kb9IrMborxqpL4RlGWBBNq4CLySAb0j5EVg4Qspv3oXxnKsOLcSuoQxpJSI7cf+gA6JSxBfqI8ID6tt8rqOIKk870616Z25bUbpJKdC+ig4NB7fp6mlaabXBH7Xzia3G4OMB/abWlVdvpeEa/mcitbBgbzCUvg+QJsiZMWujVqcdeuZ6VBY4s3CSc5RyRpw+uTzC+spbfhFHrxToauYdlJawI6hZaMIUn4UyIxF0929kuY9O80WXWDJ7XxETGxAav/OaX+PHcymTKGvAkOi5Q/ReG8KfOE+9lzr/VHwPBr7wppJ+fMVr5CW3+J1KDfnqNVVCwHl1X9MrUkhWIFe/y9kU=; 4:Zx4Cnj/OfhJ/QTVa2dw6N7wyRlI5glx46JW0auM3DeMiU4UhVRVmDbDjCvrs/4qcEtD5NuLvUetSSA7DQY2woOiBuEoj5YAValymWZo/i7hKr8e3Iy0UO5H6BPm0NbgfZN0/PnxCjzEaLH+WpKKL5g7gObFoNsOEQxlKGneBhTpZihXLoNMxWjeo6SdPkKGc92qThxOw5d/c0N/lhR8nhLuXYj+vjAAq+GqsGYVir2f0j57ASf4bxjGVbzf1Xogdmw6r5JWwxXeYbF/p8PeBsA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:9P9XG4zeObS/P/KdGK+dnUbpZzNlfmCJBPOeWkVDu?= FozglLiD68OuPOzEPVvsgUhm5pchPMiD7n8D7E/leiB4P5JKq47LP3zL0rBfo/W4YPDtIOdS65nr+56CsOnNSA11CcMgJuvhzypDPF5OLmrMwMQHp4FBI/cNUZF2JyZDKoNP3j+VTXb+rbhYFARV3mVfsYnvVPQV4x3W/s6REPKojmZLrSwMtSjdsOSm32dnhRRacsqvUNYjbHhBwK+DJ6IX06Ae3a9HAGAiR0Suykuc2FVniwIjstfIj0rRQtXLyQ8FY5kle0UzwnqQFt9sehnuOEte2y+qf2YS8+xTcSlvqS/220EUTacTcArNlZ9uwhCDzeLN58NH/82oQrfQyLucVP1sk/HoyVfxVSYM6rjN68v1/T6wbrQEyigohY+++c/ROliFZ4wo9opgV0kfX1WNAZUw+/bJWoDU5nE53zJSGaZf0J4kQgNDfrzLvEt49NG0kV0tGbjdn/aGQi4HaUSP25rxoAis0uk81zxazUJBEH0RMwDIMFGb+oTIBXVqqZpvrcNHMrc7ZbxBe9ar8YLDMgfNodE7EQxhAVwnx66P2T7lABCOKAHeS9q9Mu7xsLyv1E+qB5vAgiWakW8Z6C3GQeNhtPMHf0rre52da49iLNUGM0IOgVSSPim9Ql7uxZTUFTSRhRIAw+t6NcI3TS3Np9nmkX+42bEbDUbw5LB0xznkQkfV69Ty1Y4GDkVQclzVbBTs5QvqdvPr8RaUQRTqVLN+GxBc+TOhURyePsAU1vBlP8QBzTfoDtWGZpJmR+zw44FbV1qKNGbXYweY1OBwv3x5mnKneDKtauI8cTBnpM9GjHLLqM4lW4ssLYw36+fM31tuhCspm7CSWhf5H6djPLtJAWeXC28O5GMvTPlAqOasM/w8YTdXdgGw7nhCeFi2B0Q7etUul/FJ+Zlz2o/dzMz/InLufJLbI0sQ8WBk8/uxywONzqsxM8nF8oZtnUaR++2oy3vsZrcLaMljdICBIL/pfwrfvLBxNrohdmgY/VvYaH2fqFWNGt6hRP/Equg2vK6G79VnZJCMNKGdsxiAgHGrQyULtW/lgB0MqakcCQE2B/ZJNpgxUw1uEWP+nar4x/mWZ3avw98OFNhrPev0lz66a5SmCvMaCVS8q6oWpSdbmRKGn+VIDozIhV9X5QuASL3zK6OHFxxcEAsVWsFhRGBQVlAbRpzN75MvjMap28dyWkby8py3Pu3ZGhKVD8= X-Microsoft-Antispam-Message-Info: 7Ue5KCNAnSvFOd06uMlDi9mUvEgHdI5amFq2uo6q7sUHv5R1BpRAa2djaYmVzXXvYqa0DtqjiOqx+64eGCO70/uLCCrhFir+3m+LEU0HIroB+AWriP77mnMVK4LB0p+o4oEANOGRaXnuolhJq+ndUz5V2rTVY5vKsV7MQqz2dqnrgNqPb7Q/MhUKcpKyWmspMIzjGTdkgOnuvIjcG3WbArR1Pn334GRAUBnsRNLcJd8AladtY2ctQbX55dsRhlA6LiXEMKJQNvFzqp1rx52jGjAoH7c71swfnAhjVSDjRO1oQ8rVCT616Vd2CmgE0egTGEDU5C66Me5Tp8bYQYo9REeCKVnAX2R5TZPOOiRRUV8= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:xRoLzERA/KT/brHFGQi+flhIQby/nBt2R57Ll0jRsu7wyzAvBou8QFGwzvYs+eb1EiyYEWs0NLuduFw21H/vhB1DJpYIiPgL3ufRx/ig/ICwHC29SkV0r62u4dP3ENlpON5cZ4CfaNm78hdbrqAVGXfF7mHN+sFh/xBwixmM7YQGm0SSsI4OOmgXZCO+fCeuVVyKme7NAUwF55Reh3/hN4DyQ+X0xxxoXaXi2rA173Nbmh6eBiiumhDqSY6FWC/B7gINUmE6CocukoY1KXx/iUebehivM/l1jUhqquCX07z1WMqPJwNZQ3tMO/IzSkhPdNtgD7kIvTHwI63PHuaoEeE6dQ4o3pjDg/yXsnjqIDz2H8afOthc18+MP8NKl3OzUc3Cwg0xy6k61/Fi3p278iWyY8EesXa7XJ3WYstYlyXYF0DCxLd/IdPf14+dEGCasx7TEJVwuuf4/mcC+MYlbA==; 5:orGaXTaVvXiz58JkinDQqPT8H1gWQ2yEExLXe1yycY8frECsbfGQAKNBbI4R/hyxxAfnhdE2lOvbuR2P844symJSJqj23MK0NkeZYhZjzXlCWb0x349vmW/8L2Vs//nj3FpVotC4fk4Ea9vPMKKTnWOpmqmr9yIK5ECdceYfNgc=; 7:+HkNjfb9KNRGAp1WIc6+urAp+2O1FNp0lvpCDtNcSCmsukJG6NIW/XrDB2BNypf+7ImP/1sEGbcnXNPmyT9vygxhtrgZGhmc0eDdWdhCOCIh0hiVUYFF2td4Zlqo0MwepLic7xh/83dccczyAlrYisIQeOmC8Ovfb8c8bfTr8RPLYKyElRcMMi6Zw0yKiIfmagKuzft7XTtT/DKxMjlxzMiPiZYvO0FpZ5TFozN7p2stxZSIoHJx8LvsalrpHT8Z SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:07.8035 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64425456-80cc-4ec2-6626-08d6121b3135 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 06/33] crypto/octeontx: add hardware init routine 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" From: Anoob Joseph Adding hardware init routine for OcteonTX crypto device. A place holder is added for misc polling routine. That will be added in the further patches. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/Makefile | 1 + drivers/crypto/octeontx/meson.build | 1 + drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 53 +++++++++++++ drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 92 +++++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_ops.c | 89 +++++++++++++++++++++- 5 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 drivers/crypto/octeontx/otx_cryptodev_hw_access.c diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile index 12fec75..4582540 100644 --- a/drivers/crypto/octeontx/Makefile +++ b/drivers/crypto/octeontx/Makefile @@ -24,6 +24,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/cpt # PMD code SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_hw_access.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_ops.c # export include files diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build index 6564090..eca1cf1 100644 --- a/drivers/crypto/octeontx/meson.build +++ b/drivers/crypto/octeontx/meson.build @@ -8,6 +8,7 @@ deps += ['bus_pci'] name = 'octeontx_crypto' sources = files('otx_cryptodev.c', + 'otx_cryptodev_hw_access.c', 'otx_cryptodev_ops.c') cflags += '-DCPT_MODEL=CRYPTO_OCTEONTX' diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c new file mode 100644 index 0000000..211b6ee --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ +#include + +#include + +#include "otx_cryptodev_hw_access.h" + +#include "cpt_pmd_logs.h" + +static int +otx_cpt_vf_init(struct cpt_vf *cptvf) +{ + int ret = 0; + + /* Mark as VF driver */ + cptvf->flags |= CPT_FLAG_VF_DRIVER; + + CPT_LOG_DP_DEBUG("%s: %s done", cptvf->dev_name, __func__); + + return ret; +} + +void +otx_cpt_poll_misc(struct cpt_vf *cptvf) +{ + RTE_SET_USED(cptvf); +} + +int +otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name) +{ + memset(cptvf, 0, sizeof(struct cpt_vf)); + + /* Bar0 base address */ + cptvf->reg_base = reg_base; + strncpy(cptvf->dev_name, name, 32); + + cptvf->nr_queues = 1; + cptvf->max_queues = 1; + cptvf->pdev = pdev; + + /* To clear if there are any pending mbox msgs */ + otx_cpt_poll_misc(cptvf); + + if (otx_cpt_vf_init(cptvf)) { + CPT_LOG_ERR("Failed to initialize CPT VF device"); + return -1; + } + + return 0; +} diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index 288ee41..40db69c 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -5,6 +5,90 @@ #ifndef _OTX_CRYPTODEV_HW_ACCESS_H_ #define _OTX_CRYPTODEV_HW_ACCESS_H_ +#include + +#include + +#include "cpt_common.h" + +/* Flags to indicate the features supported */ +#define CPT_FLAG_VF_DRIVER (uint16_t)(1 << 3) + +#define CPT_INTR_POLL_INTERVAL_MS (50) + +/* Default command queue length */ +#define DEFAULT_CMD_QCHUNKS 2 + +struct command_chunk { + uint8_t *head; + /**< 128-byte aligned real_vaddr */ + phys_addr_t dma_addr; + /**< 128-byte aligned real_dma_addr */ +}; + +/** + * Command queue structure + */ +struct command_queue { + uint32_t idx; + /**< Command queue host write idx */ + uint32_t cchunk; + uint8_t *qhead; + /**< Command queue head; instructions are inserted here */ + struct command_chunk chead[DEFAULT_CMD_QCHUNKS]; + /**< Command chunk list head */ +}; + +/** + * CPT VF device structure + */ +struct cpt_vf { + struct cpt_instance instance; + + uint8_t *reg_base; + /**< Register start address */ + struct command_queue cqueue; + /**< Command queue information */ + struct pending_queue pqueue; + /**< Pending queue information */ + struct cptvf_meta_info meta_info; + /**< Meta information per vf */ + + /* Below fields are accessed only in control path */ + + void *pdev; + /**< Env specific pdev representing the pci dev */ + uint32_t qlen; + /**< Qsize * CPT_INST_SIZE + alignment size(CPT_INST_SIZE + + * next chunk pointer size (8) + */ + uint32_t qsize; + /**< Calculated queue size */ + uint32_t nr_queues; + uint32_t max_queues; + + uint32_t chip_id; + /**< CPT device ID */ + uint16_t flags; + /**< Flags to hold device status bits */ + uint8_t vfid; + /**< Device index (0...CPT_MAX_VQ_NUM)*/ + uint8_t vftype; + /**< VF type of cpt_vf_type_t (SE_TYPE(2) or AE_TYPE(1) */ + uint8_t vfgrp; + /**< VF group (0 - 8) */ + uint8_t node; + /**< Operating node: Bits (46:44) in BAR0 address */ + + /* VF-PF mailbox communication */ + + bool pf_acked; + bool pf_nacked; + + char dev_name[32]; + /**< Device name */ +} __rte_cache_aligned; + /* * CPT Registers map for 81xx */ @@ -44,4 +128,12 @@ ((a) & 0x1) + 0x100000ll * (b) + \ 8ll * ((c) & 0x1)) +/* VF HAL functions */ + +void +otx_cpt_poll_misc(struct cpt_vf *cptvf); + +int +otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name); + #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index 1b5f108..d25f9c1 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -2,14 +2,101 @@ * Copyright(c) 2018 Cavium, Inc */ +#include +#include #include +#include + +#include "cpt_pmd_logs.h" #include "otx_cryptodev.h" +#include "otx_cryptodev_hw_access.h" #include "otx_cryptodev_ops.h" +/* Alarm routines */ + +static void +otx_cpt_alarm_cb(void *arg) +{ + struct cpt_vf *cptvf = arg; + otx_cpt_poll_misc(cptvf); + rte_eal_alarm_set(CPT_INTR_POLL_INTERVAL_MS * 1000, + otx_cpt_alarm_cb, cptvf); +} + +static int +otx_cpt_periodic_alarm_start(void *arg) +{ + return rte_eal_alarm_set(CPT_INTR_POLL_INTERVAL_MS * 1000, + otx_cpt_alarm_cb, arg); +} + int otx_cpt_dev_create(struct rte_cryptodev *c_dev) { - RTE_SET_USED(c_dev); + struct rte_pci_device *pdev = RTE_DEV_TO_PCI(c_dev->device); + struct cpt_vf *cptvf = NULL; + void *reg_base; + char dev_name[32]; + int ret; + + if (pdev->mem_resource[0].phys_addr == 0ULL) + return -EIO; + + /* for secondary processes, we don't initialise any further as primary + * has already done this work. + */ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + cptvf = rte_zmalloc_socket("otx_cryptodev_private_mem", + sizeof(struct cpt_vf), RTE_CACHE_LINE_SIZE, + rte_socket_id()); + + if (cptvf == NULL) { + CPT_LOG_ERR("Cannot allocate memory for device private data"); + return -ENOMEM; + } + + snprintf(dev_name, 32, "%02x:%02x.%x", + pdev->addr.bus, pdev->addr.devid, pdev->addr.function); + + reg_base = pdev->mem_resource[0].addr; + if (!reg_base) { + CPT_LOG_ERR("Failed to map BAR0 of %s", dev_name); + ret = -ENODEV; + goto fail; + } + + ret = otx_cpt_hw_init(cptvf, pdev, reg_base, dev_name); + if (ret) { + CPT_LOG_ERR("Failed to init cptvf %s", dev_name); + ret = -EIO; + goto fail; + } + + /* Start off timer for mailbox interrupts */ + otx_cpt_periodic_alarm_start(cptvf); + + c_dev->dev_ops = NULL; + + c_dev->enqueue_burst = NULL; + c_dev->dequeue_burst = NULL; + + c_dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | + RTE_CRYPTODEV_FF_HW_ACCELERATED | + RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING; + + /* Save dev private data */ + c_dev->data->dev_private = cptvf; + return 0; + +fail: + if (cptvf) { + /* Free private data allocated */ + rte_free(cptvf); + } + + return ret; } From patchwork Tue Sep 4 03:58:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44181 X-Patchwork-Delegate: gakhil@marvell.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 CBBB84F93; Tue, 4 Sep 2018 06:03:15 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 1669D1BE0 for ; Tue, 4 Sep 2018 06:03:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zffidsJdIglPqNa0czCLcYnIblhmYIkdVSexEPuh2j4=; b=bF2lKk7hCSYs2f/NN3ElaVDaKGcPyM9gT0PHkpx1PZMcAC74iUzZ7HtVZhCO6HuIdSkXJUvKWJujTPd9fBSc+/YavTfH/3CZrnvtLlIU7RpUxj8ZFme/0ifQDHunTEKTf3NRNvXeSPag4BQ4jRgYVRhpw3vGw5hPA2ZGB1uKbfo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:12 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:54 +0530 Message-Id: <1536033560-21541-8-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 15eeb741-99d3-43a0-2201-08d6121b33d8 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:jpIda1rDnD+VPTKXaExDBNl+jZY8vOp30gK4gt4h3DhFuZ4s+gyiWDgkJwFxoHXZ5Y3jxMhsivG7j3JdUP/AUAqdVYArQfw9DDLKnU05fATZsj1PRbWetEiCi17ro8vcdoxiRCQVFWW9HKon9XuraoyONdMhlu/c51VsDRdER5epYj/EAR7BvKKDXT6d3aT50JgUwMdpH993grM+/UYH6vZXmDiStipbyeX9c2nkSTepruQg5r6sTqofspZoUpPs; 25:fbTXQuxFzKPnu4cQebYPWxQnFN9QW0QuCyTYJpKHOxmYySWZ89gPLPIM1fpYS9/vXnp1+JkCsi6l3vJGRxHZUyUpKTdsGRgBg8Ye1pCE6hh3oOKUOV/TqvFam76WR4cSVBWebdinZ+/+w9lbnt22ighnurIMGym4LZldjbQ9kFT71HZIX8ctnLvovwdWHTFrXYQveQtwofkMTAcignpXOgapTrxASsyKZZ7iiWKTpbqJVnKDPK8bXAjq6ypv3h1SpuYrHTXhyms79IogJvVEON0u/HIAuBOsziTy/MLdcjXbkwIsPVD0q+LDptsaPVEbutP0enxbKL/WgG6AjROclg==; 31:Ldn+bgJPhUzRYDZgrmvMCQOetQ8lrYWlLWldPpWLW5d5be0FRG0UjL5pIZ/nL0GDlMoLrQmfKHBEok5+genlM6BzCp4yIWDzEVB3CANKSjKBJ57mZAftG2dmDwAOBLXOw6bkxnuqrp3ZxrDpr8ZkGhveQHsq1khD3VuJ31fEZmi36P1CvzoNy79fliyJTlhr09gXA+w2xjL+Jwkn6T8lXGGDTJbAek0PppGD0fYisXM= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:y2pPpCKADicnxC7Hkt2YTsarjDe2yTrNqQiBlRHWJotlID9Ka99kX//HPEPEBLlkvWfSwnyp+FY/aDluCx5fImUfFEMwqFFOBAGYrIKtjbLe12tSP+LKgB+R09h/g/mPY4ypla097uLPplQH4+mb/yUfZY2iMzxlEGHnMO854/Q0a8Pi6H+g+Te7IRT/ocUDdawyhN8VDgDAWUwacocqv+BIcPXAs4XOK/6xZTB5MyCtf1RxTEEye3GUC09rueVieKP4KgvMsBIL5ukqpQfTwe8xbhOfx5dLqH3EVkppbCQfbm7gUmVO9Gy3gudhH3Z+/+WUfNLyN9mx7+RzvqlEGHrh2gA0GRfotecqGvUYPBcYX+ZqljQqLLrk0iWp7BGdBSOaP1JB+pBgKpxzauAVGWNe8vJeSgbXXDxrVBFu0X1bTjBy3WkD1OVMaAv43p6oKGseRJ4qDTjkg5L2uN/TeN4qzlYt30VC441rmxprZwhUzgAQCdMfVPgT1vmoXP/5oC1mhpf+Wiq7NGrThBshinWkjZOhgkJzUl9QP2pPVdHM095bXp4mS1giwcAn927gFk00UXSshQ/uaVZhUFk2l3ZvYZBzUdltRwUBU62oSJs=; 4:yA/m5duexsTKrsmwg7fp1a75dMeylibDvfjptx3OppnfkhftdrktiGXUFvg0ZI6PDBrEY2T/ExCi+b4K+/DFNN4eZQTLUGVluJ16XWXN2cP0C/XM41pgI33rf+9wd0WT3nrNE0xUNUc+JGMuZlIE9ozYJGwtw/TmzX6cSdinF+/dOMwqjNfDypeJzwasWc5TGyPO2fzEhLphs1FOfeE+ESvLRX46d59zYX1kBYBLObjFe0f7RD+TUWrc+Ca4pnMTxtwonkSSXRJHGqEnSS8CgQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:HCrthRwlEY3h6LJbtpHl24tO2Nw2/dk9kNWtvXHYN?= mJrVndjGuMwrG85GXjiwBZJLV/oEU6JGMIQd84AvptA1eouJAkq3Gg4VafQ24ON06onyGAvNi8IZTHieJWUeOC8+w+13JxEBsFvoNjsQjHv1cH0aSyDAzfZ+sp4kxT5jjP+Ro6NDBulaxnsHx/7szfplFSuvIkk2RHzENlfdyskx6JrFJ+rhBxRHlJu3cRCjvnp3IpvG3sttfAom5vHhVV20OtnztkkuPRR/10uR9OagPeTPzv/bZSlo2+0k78yKtuZQvOBPagxfYgj/SBj4Aaui3hO7538keie2mim57ANfpNXvtohlAcgA6ehIUbjdcIwlU/Hp4Tkikva0oIVDHLCmIqZsgGxufXRqWyZTqvC8j38ur6rjtNlrBi5XuZ2iIzAdvy6fN0IcBMEvg61nqqa08tIPdib+YERG5NLQGeHNQ5sv5TXEpfEwNb1LTK/g7jnOQ0lRgMKS9mxy6moc3VXrYvXbsmN8yIYK1/HGVJzhUAVgGSI8DsFk4I0s+jI5K2vl/RzFYHOn1kBpEzFP2Zc6SQjcPSAkcj6tY0UgbCoH+F9h+krT6eMjiLmWzNNbJiyDrTd0Fs3kLSTbb252NtUOzVjS6iWGG6cscqM7dF+cUyUVTTW5eno9g/yAr5kVUVASsdeJjdv9XhmcdFks2dv5KgLGWx2sOVpSL0EvQp6TffiaW6QnHWyAcWxbOX2yx+88Gn6ozkcYMIv8nKBH+ite6PIqcOg7ttF4jwKxKUluWEaoJAGSMZaLvU2YzBJxEu9oKMIySv/kqH0cee8GNASOzCcffh/7/LKv690hE7Mss2/zo8dM2938VWQ116+2BVYVGguFhJSetX4tBfSuyalfMF40UfYYuRwqNPZap0dSaz626N800LhX/roD3uEtTPqA5uXA4PuwXTJI3rlQ6Ixs53CRegYkU1BB2uWhP+o3fGpb5ukPgxnnEmXLAOqmsc7Hn/F1lLd3FiwRlT+X/LGvC2Oe4V9u9WW/47hyNJHWhVZQU1bl6hhYXQwPRCrwGGx1ZvurmY4Gi4nJCnb7H3rJHpJ4+pVsx45LhHe3XoFt4P/6kMAwq7RCCniQ+leWV9pittesid1is2SY6V2NMbMriyPGX+tf5pcUj+YpF2RpVz4BMP21Ycpa+9jKBUQATd9X6Zv+Gk7djJ+0Y6/fzKCs0/Rcq9yDmEntrwwU+MYQFq196YKZxBnyN2WHbeQNLE= X-Microsoft-Antispam-Message-Info: wOlxmI/EEjgRvHZ3sq4cMlaFXdIRdlxgeTeJvWyfsC/PhXSY78Wy/bjk0btxHf8PMxCZ9vqVm9DDCLYeQB3XHSKeZ/Kj4+m2sYtipoEhpNYchpx7CqRKNjQ4kyEzp2HuzjPfWj/1Dm6SphSie0vqjo/0Erdx/cNqPFbBY8OEkONuyz4Nhwv1PoEm+PR+4/mTv2ckxAzl/aiN2FbfIVdtYygWUgHRy2WEWHt77XkayraL3qEx6Guc4YpuM3I/plO5KJ3E3ZhYPQkobP1Zd8Y3MHTjT7u7c9eZuHwtypJg3lWXhgZodGW5xJSmTdbZbw93lWGvkw4I6XUoK/G2aeXr1633dNdOs2o9XJswG12GNK4= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:uRai0f9YOHoHgkmZo7IQns8BVHqnyfIOdIEinRZKZyLkwRon1HkLULdjlJIbZVocsLxPLxeoW5PcUZKx1kv7UiVS3I4a90hAdIosYt4W5fOkC4GYCES8LR5Jn4sx62GVkVwKekQhpEqGZxmIDzyeSotB51gp5M/WzK6nmWNLQ3t0sfDoBu74aIE2/AU3Xti6wRjv5UgQ9zKOkUakdvC86ICuAbWtXxBCN4ljuLxDTX4AKRoAsG+NMuEfvw0arEy0gA2ELg1zU60E+4g95NdugBo6j3vaMjEGXCRInToXzn2Uol7GxFFgmvhCG6ueFb6TusiDVoBQM9C4JGASMyQigOg/qE8pUuMry49gfQl8NPp3tRFVLZMgoJDo2Bct4TJZrq2ZNdrQdYpcweqqXT5S8oAy/admeTFcW271fZGZLGm6XyBOPeYtqBrld5x8+PSf/fN9Ie43xQSDjlUuezYspg==; 5:zfoBDHihcCb5RzRR1L+64/bQ6XuYes3D9n5BKLN/izUr9nDj4w4qAz8V9oZb3x9TWzfuT0qvsTNvjKg+NryTkxLLUgvJbG6WNyU31JbgmKE2oCNoojDxHdy17pcZnCjnGx1JMn0XGvajEBrLutHfN/BhAh86pNwQ4RoKzm794Bs=; 7:yW/6vZ6mWQb9vKrJy1meWaouSw1ALNRwNRQVQNNAiAiiGJTTtI+6AKv+ROlZwOfQdhKfF2Joag3pavhXIOCBUVAo5IUHg+c7llrl/R41IuAA8HjFL1L1x+FPPIrFKNLEX+cXzhe8HXwpqOLkiKj3N6fGEovTy+z8n3X62lgu6O44sJ767mg0GNrAWPGsz3qgShPallgx8OsWkwa2c3PjmK8mMFIE3nvwGBzSjGYD7fnZVcFAPcxgF7k+iHXrsqEf SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:12.4441 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15eeb741-99d3-43a0-2201-08d6121b33d8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 07/33] common/cpt: add hardware register defines 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" From: Anoob Joseph Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_hw_types.h | 517 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 517 insertions(+) create mode 100644 drivers/common/cpt/cpt_hw_types.h diff --git a/drivers/common/cpt/cpt_hw_types.h b/drivers/common/cpt/cpt_hw_types.h new file mode 100644 index 0000000..8cd1bf8 --- /dev/null +++ b/drivers/common/cpt/cpt_hw_types.h @@ -0,0 +1,517 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_HW_TYPES_H_ +#define _CPT_HW_TYPES_H_ + +#include + +/* + * This file defines HRM specific structs. + * + */ + +#define CPT_VF_INTR_MBOX_MASK (1<<0) +#define CPT_VF_INTR_DOVF_MASK (1<<1) +#define CPT_VF_INTR_IRDE_MASK (1<<2) +#define CPT_VF_INTR_NWRP_MASK (1<<3) +#define CPT_VF_INTR_SWERR_MASK (1<<4) +#define CPT_VF_INTR_HWERR_MASK (1<<5) +#define CPT_VF_INTR_FAULT_MASK (1<<6) + +/* + * CPT_INST_S software command definitions + * Words EI (0-3) + */ +typedef union { + uint64_t u64; + struct { + uint16_t opcode; + uint16_t param1; + uint16_t param2; + uint16_t dlen; + } s; +} vq_cmd_word0_t; + +typedef union { + uint64_t u64; + struct { +#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN + uint64_t grp : 3; + uint64_t cptr : 61; +#else + uint64_t cptr : 61; + uint64_t grp : 3; +#endif + } s; +} vq_cmd_word3_t; + +typedef struct cpt_vq_command { + vq_cmd_word0_t cmd; + uint64_t dptr; + uint64_t rptr; + vq_cmd_word3_t cptr; +} cpt_vq_cmd_t; + +/** + * Structure cpt_inst_s + * + * CPT Instruction Structure + * This structure specifies the instruction layout. + * Instructions are stored in memory as little-endian unless + * CPT()_PF_Q()_CTL[INST_BE] is set. + */ +typedef union cpt_inst_s { + uint64_t u[8]; + struct cpt_inst_s_8s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_17_63 : 47; + uint64_t doneint : 1; + /*< [ 16: 16] Done interrupt. + * 0 = No interrupts related to this instruction. + * 1 = When the instruction completes,CPT()_VQ()_DONE[DONE] + * will be incremented, and based on the rules described + * there an interrupt may occur. + */ + uint64_t reserved_0_15 : 16; +#else /* Word 0 - Little Endian */ + uint64_t reserved_0_15 : 16; + uint64_t doneint : 1; + uint64_t reserved_17_63 : 47; +#endif /* Word 0 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 1 - Big Endian */ + uint64_t res_addr : 64; + /*< [127: 64] Result IOVA. + * If nonzero, specifies where to write CPT_RES_S. + * If zero, no result structure will be written. + * Address must be 16-byte aligned. + + * Bits <63:49> are ignored by hardware; software should + *use a sign-extended bit <48> for forward compatibility. + */ +#else /* Word 1 - Little Endian */ + uint64_t res_addr : 64; +#endif /* Word 1 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 2 - Big Endian */ + uint64_t reserved_172_191 : 20; + uint64_t grp : 10; + /*< [171:162] If [WQ_PTR] is nonzero, the SSO guest-group to + * use when CPT submits work to SSO. + * For the SSO to not discard the add-work request, FPA_PF_MAP() + * must map [GRP] and CPT()_PF_Q()_GMCTL[GMID] as valid. + */ + uint64_t tt : 2; + /*< [161:160] If [WQ_PTR] is nonzero, the SSO tag type to use + * when CPT submits work to SSO. + */ + uint64_t tag : 32; + /*< [159:128] If [WQ_PTR] is nonzero, the SSO tag to use when + * CPT submits work to SSO. + */ +#else /* Word 2 - Little Endian */ + uint64_t tag : 32; + uint64_t tt : 2; + uint64_t grp : 10; + uint64_t reserved_172_191 : 20; +#endif /* Word 2 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 3 - Big Endian */ + uint64_t wq_ptr : 64; + /**< [255:192] If [WQ_PTR] is nonzero, it is a pointer to a + * work-queue entry that CPT submits work to SSO after all + * context, output data, and result write operations are + * visible to other CNXXXX units and the cores. + * Bits <2:0> must be zero. + * Bits <63:49> are ignored by hardware; software should use a + * sign-extended bit <48> for forward compatibility. + * Internal:Bits <63:49>, <2:0> are ignored by hardware, + * treated as always 0x0. + **/ +#else /* Word 3 - Little Endian */ + uint64_t wq_ptr : 64; +#endif /* Word 3 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 4 - Big Endian */ + union { + uint64_t ei0 : 64; + /**< [319:256] Engine instruction word 0. Passed to the + * AE/SE. + **/ + vq_cmd_word0_t vq_cmd_w0; + }; +#else /* Word 4 - Little Endian */ + union { + uint64_t ei0 : 64; + vq_cmd_word0_t vq_cmd_w0; + }; +#endif /* Word 4 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 5 - Big Endian */ + union { + uint64_t ei1 : 64; + /**< [383:320] Engine instruction word 1. Passed to the + * AE/SE. + **/ + uint64_t dptr; + }; +#else /* Word 5 - Little Endian */ + union { + uint64_t ei1 : 64; + uint64_t dptr; + }; +#endif /* Word 5 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 6 - Big Endian */ + union { + uint64_t ei2 : 64; + /**< [447:384] Engine instruction word 2. Passed to the + * AE/SE. + **/ + uint64_t rptr; + }; +#else /* Word 6 - Little Endian */ + union { + uint64_t ei2 : 64; + uint64_t rptr; + }; +#endif /* Word 6 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 7 - Big Endian */ + union { + uint64_t ei3 : 64; + /**< [511:448] Engine instruction word 3. Passed to the + * AE/SE. + **/ + vq_cmd_word3_t vq_cmd_w3; + }; +#else /* Word 7 - Little Endian */ + union { + uint64_t ei3 : 64; + vq_cmd_word3_t vq_cmd_w3; + }; +#endif /* Word 7 - End */ + } s8x; +} cpt_inst_s_t; + +/** + * Structure cpt_res_s + * + * CPT Result Structure + * The CPT coprocessor writes the result structure after it completes a + * CPT_INST_S instruction. The result structure is exactly 16 bytes, and each + * instruction completion produces exactly one result structure. + * + * This structure is stored in memory as little-endian unless + * CPT()_PF_Q()_CTL[INST_BE] is set. + */ +typedef union cpt_res_s { + uint64_t u[2]; + struct cpt_res_s_8s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_17_63 : 47; + uint64_t doneint : 1; + /**< [ 16: 16] Done interrupt. This bit is copied from the + * corresponding instruction's CPT_INST_S[DONEINT]. + **/ + uint64_t reserved_8_15 : 8; + uint64_t compcode : 8; + /**< [ 7: 0] Indicates completion/error status of the CPT + * coprocessor for the associated instruction, as enumerated by + * CPT_COMP_E. Core software may write the memory location + * containing [COMPCODE] to 0x0 before ringing the doorbell, and + * then poll for completion by checking for a nonzero value. + + Once the core observes a nonzero [COMPCODE] value in this case, + the CPT coprocessor will have also completed L2/DRAM write + operations. + */ +#else /* Word 0 - Little Endian */ + uint64_t compcode : 8; + uint64_t reserved_8_15 : 8; + uint64_t doneint : 1; + uint64_t reserved_17_63 : 47; +#endif /* Word 0 - End */ +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 1 - Big Endian */ + uint64_t reserved_64_127 : 64; +#else /* Word 1 - Little Endian */ + uint64_t reserved_64_127 : 64; +#endif /* Word 1 - End */ + } s8x; +} cpt_res_s_t; + +/** + * Register (NCB) cpt#_vq#_ctl + * + * CPT VF Queue Control Registers + * This register configures queues. This register should be changed (other than + * clearing [ENA]) only when quiescent (see CPT()_VQ()_INPROG[INFLIGHT]). + */ +typedef union { + uint64_t u; + struct cptx_vqx_ctl_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_1_63 : 63; + uint64_t ena : 1; + /**< [ 0: 0](R/W/H) Enables the logical instruction queue. + * See also CPT()_PF_Q()_CTL[CONT_ERR] and + * CPT()_VQ()_INPROG[INFLIGHT]. + * 1 = Queue is enabled. + * 0 = Queue is disabled. + **/ +#else /* Word 0 - Little Endian */ + uint64_t ena : 1; + uint64_t reserved_1_63 : 63; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_ctl_t; + +/** + * Register (NCB) cpt#_vq#_done + * + * CPT Queue Done Count Registers + * These registers contain the per-queue instruction done count. + */ +typedef union { + uint64_t u; + struct cptx_vqx_done_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_20_63 : 44; + uint64_t done : 20; + /**< [ 19: 0](R/W/H) Done count. When CPT_INST_S[DONEINT] set + * and that instruction completes,CPT()_VQ()_DONE[DONE] is + * incremented when the instruction finishes. Write to this + * field are for diagnostic use only; instead software writes + * CPT()_VQ()_DONE_ACK with the number of decrements for this + * field. + + Interrupts are sent as follows: + + * When CPT()_VQ()_DONE[DONE] = 0, then no results are pending, + * the interrupt coalescing timer is held to zero, and an + * interrupt is not sent. + + * When CPT()_VQ()_DONE[DONE] != 0, then the interrupt + * coalescing timer counts. If the counter is >= CPT()_VQ()_DONE + * _WAIT[TIME_WAIT]*1024, or CPT()_VQ()_DONE[DONE] >= CPT()_VQ() + * _DONE_WAIT[NUM_WAIT], i.e. enough time has passed or enough + * results have arrived, then the interrupt is sent. Otherwise, + * it is not sent due to coalescing. + + * When CPT()_VQ()_DONE_ACK is written (or CPT()_VQ()_DONE is + * written but this is not typical), the interrupt coalescing + * timer restarts. Note after decrementing this interrupt + * equation is recomputed, for example if CPT()_VQ()_DONE[DONE] + * >= CPT()_VQ()_DONE_WAIT[NUM_WAIT] and because the timer is + * zero, the interrupt will be resent immediately. (This covers + * the race case between software acknowledging an interrupt and + * a result returning.) + + * When CPT()_VQ()_DONE_ENA_W1S[DONE] = 0, interrupts are not + * sent, but the counting described above still occurs. + + Since CPT instructions complete out-of-order, if software is + using completion interrupts the suggested scheme is to request a + DONEINT on each request, and when an interrupt arrives perform a + "greedy" scan for completions; even if a later command is + acknowledged first this will not result in missing a completion. + + Software is responsible for making sure [DONE] does not overflow + ; for example by insuring there are not more than 2^20-1 + instructions in flight that may request interrupts. + */ +#else /* Word 0 - Little Endian */ + uint64_t done : 20; + uint64_t reserved_20_63 : 44; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_done_t; + +/** + * Register (NCB) cpt#_vq#_done_ack + * + * CPT Queue Done Count Ack Registers + * This register is written by software to acknowledge interrupts. + */ +typedef union { + uint64_t u; + struct cptx_vqx_done_ack_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_20_63 : 44; + uint64_t done_ack : 20; + /**< [ 19: 0](R/W/H) Number of decrements to CPT()_VQ()_DONE + * [DONE]. Reads CPT()_VQ()_DONE[DONE]. + + Written by software to acknowledge interrupts. If CPT()_VQ()_ + DONE[DONE] is still nonzero the interrupt will be re-sent if the + conditions described in CPT()_VQ()_DONE[DONE] are satisfied. + */ +#else /* Word 0 - Little Endian */ + uint64_t done_ack : 20; + uint64_t reserved_20_63 : 44; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_done_ack_t; + +/** + * Register (NCB) cpt#_vq#_done_wait + * + * CPT Queue Done Interrupt Coalescing Wait Registers + * Specifies the per queue interrupt coalescing settings. + */ +typedef union { + uint64_t u; + struct cptx_vqx_done_wait_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_48_63 : 16; + uint64_t time_wait : 16; + /**< [ 47: 32](R/W) Time hold-off. When CPT()_VQ()_DONE[DONE] = + * 0, or CPT()_VQ()_DONE_ACK is written a timer is cleared. When + * the timer reaches [TIME_WAIT]*1024 then interrupt coalescing + * ends; see CPT()_VQ()_DONE[DONE]. If 0x0, time coalescing is + * disabled. + **/ + uint64_t reserved_20_31 : 12; + uint64_t num_wait : 20; + /**< [ 19: 0](R/W) Number of messages hold-off. When + * CPT()_VQ()_DONE[DONE] >= [NUM_WAIT] then interrupt coalescing + * ends; see CPT()_VQ()_DONE[DONE]. If 0x0, same behavior as + * 0x1. + **/ +#else /* Word 0 - Little Endian */ + uint64_t num_wait : 20; + uint64_t reserved_20_31 : 12; + uint64_t time_wait : 16; + uint64_t reserved_48_63 : 16; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_done_wait_t; + +/** + * Register (NCB) cpt#_vq#_doorbell + * + * CPT Queue Doorbell Registers + * Doorbells for the CPT instruction queues. + */ +typedef union { + uint64_t u; + struct cptx_vqx_doorbell_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_20_63 : 44; + uint64_t dbell_cnt : 20; + /**< [ 19: 0](R/W/H) Number of instruction queue 64-bit words + * to add to the CPT instruction doorbell count. Readback value + * is the the current number of pending doorbell requests. + + If counter overflows CPT()_VQ()_MISC_INT[DBELL_DOVF] is set. + + To reset the count back to zero, write one to clear + CPT()_VQ()_MISC_INT_ENA_W1C[DBELL_DOVF], then write a value of + 2^20 minus the read [DBELL_CNT], then write one to + CPT()_VQ()_MISC_INT_W1C[DBELL_DOVF] and + CPT()_VQ()_MISC_INT_ENA_W1S[DBELL_DOVF]. + + Must be a multiple of 8. All CPT instructions are 8 words and + require a doorbell count of multiple of 8. + */ +#else /* Word 0 - Little Endian */ + uint64_t dbell_cnt : 20; + uint64_t reserved_20_63 : 44; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_doorbell_t; + +/** + * Register (NCB) cpt#_vq#_inprog + * + * CPT Queue In Progress Count Registers + * These registers contain the per-queue instruction in flight registers. + */ +typedef union { + uint64_t u; + struct cptx_vqx_inprog_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_8_63 : 56; + uint64_t inflight : 8; + /**< [ 7: 0](RO/H) Inflight count. Counts the number of + * instructions for the VF for which CPT is fetching, executing + * or responding to instructions. However this does not include + * any interrupts that are awaiting software handling + * (CPT()_VQ()_DONE[DONE] != 0x0). + + A queue may not be reconfigured until: + 1. CPT()_VQ()_CTL[ENA] is cleared by software. + 2. [INFLIGHT] is polled until equals to zero. + */ +#else /* Word 0 - Little Endian */ + uint64_t inflight : 8; + uint64_t reserved_8_63 : 56; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_inprog_t; + +/** + * Register (NCB) cpt#_vq#_misc_int + * + * CPT Queue Misc Interrupt Register + * These registers contain the per-queue miscellaneous interrupts. + */ +typedef union { + uint64_t u; + struct cptx_vqx_misc_int_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_7_63 : 57; + uint64_t fault : 1; + /**< [ 6: 6](R/W1C/H) Translation fault detected. */ + uint64_t hwerr : 1; + /**< [ 5: 5](R/W1C/H) Hardware error from engines. */ + uint64_t swerr : 1; + /**< [ 4: 4](R/W1C/H) Software error from engines. */ + uint64_t nwrp : 1; + /**< [ 3: 3](R/W1C/H) NCB result write response error. */ + uint64_t irde : 1; + /**< [ 2: 2](R/W1C/H) Instruction NCB read response error. */ + uint64_t dovf : 1; + /**< [ 1: 1](R/W1C/H) Doorbell overflow. */ + uint64_t mbox : 1; + /**< [ 0: 0](R/W1C/H) PF to VF mailbox interrupt. Set when + * CPT()_VF()_PF_MBOX(0) is written. + **/ +#else /* Word 0 - Little Endian */ + uint64_t mbox : 1; + uint64_t dovf : 1; + uint64_t irde : 1; + uint64_t nwrp : 1; + uint64_t swerr : 1; + uint64_t hwerr : 1; + uint64_t fault : 1; + uint64_t reserved_5_63 : 59; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_misc_int_t; + +/** + * Register (NCB) cpt#_vq#_saddr + * + * CPT Queue Starting Buffer Address Registers + * These registers set the instruction buffer starting address. + */ +typedef union { + uint64_t u; + struct cptx_vqx_saddr_s { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) /* Word 0 - Big Endian */ + uint64_t reserved_49_63 : 15; + uint64_t ptr : 43; + /**< [ 48: 6](R/W/H) Instruction buffer IOVA <48:6> + * (64-byte aligned). When written, it is the initial buffer + * starting address; when read, it is the next read pointer to + * be requested from L2C. The PTR field is overwritten with the + * next pointer each time that the command buffer segment is + * exhausted. New commands will then be read from the newly + * specified command buffer pointer. + **/ + uint64_t reserved_0_5 : 6; +#else /* Word 0 - Little Endian */ + uint64_t reserved_0_5 : 6; + uint64_t ptr : 43; + uint64_t reserved_49_63 : 15; +#endif /* Word 0 - End */ + } s; +} cptx_vqx_saddr_t; + +#endif /*_CPT_HW_TYPES_H_ */ From patchwork Tue Sep 4 03:58:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44182 X-Patchwork-Delegate: gakhil@marvell.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 A9C3058FA; Tue, 4 Sep 2018 06:03:17 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 824CD2C02 for ; Tue, 4 Sep 2018 06:03:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KxbTXUmRadcmtkBbCJ+oZ6wtH+3rVQah0kWQp0UkPAA=; b=btMqWmnCaRTUu8kPKwYHJMzWa3ANi8dR/jbAwDwaP0qGqj+8Jdc/kjCn/7jm5rKby4H/DZTdCtPhdGyaVCvm1UygOjiSiVjq1SPfCSNvaAaXxBJafVRy1gppKa5fllZtWHyJWKHViDAo6loOHnG4Ea2QAaYgMw5DC8RQoKJMwzA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:16 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:55 +0530 Message-Id: <1536033560-21541-9-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d55175b0-b0ff-41b8-4ee2-08d6121b3690 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:9y/xUgWLYxMc4cvNeqhymD/pTU1Nl4bK5qeoOzjonuKL3Wyqa2S946lnHft5NyTYzjCyHDjwM/5pTApi39Hiv/NYVrcVtOCB/QgVzfnXowKOm89sR4x+v8cAB2my2BoGAq0129KCMtXg0C82YacZJ4VzBwTwLjsH2l0In6taaskhTh+9aYop3iMzJe1TepMPjWxXygDdu6CmWtm025yEIHyPoos9Dsf65A7chC5styGLLPPDejbuBgSsDjugs2ga; 25:KcTJJOXZvgkm2KPlyT2ILWlK7Jgo25lMg8kxbEap55NELdm++ozpsUquJoROk2Ec0iX2QhLR7jsFgL1f8tESFjLuAllVDwQvSIJoQBdNDiHmuiKFd+/0aI1XihpOejX+pxAStPUwnLPY/WJchLXHAm8iLmvMuLTwFQU1WmJKaQ3B4f/FRpUM7OyBXx8/2QEcQePqO2+SE7Td3BG426seiO05yVMfkajY4Fj37WUJQN4MSOv8atfhnPHoZOihZh3onTSU1A7Ex6lJkBm2Hz4kCXK6K6R6cR/Yi7ko0OdS+1CEc9f7yaVYxMyRQWYP190jX0/h7wuc6TMpm1bcWQ3oMQ==; 31:jQRGXr1748y/QYVV1/TnXvTBkBtaPF1iQBwJelvcwf5UeRRG5U07nIZpAPEW/f8DPMjzkkdv00/DlmPsreJ9ytFgdicsycReThHhm1BUwAKsq+6qWVQcSUdzE8h2H41wnaTk+95vesFTcgRgQqiYgcRmVkjiBlBYd9UProzMNHIIiD0K/t7nT+5zkLJ/PaXPRrpvqHWfmqeM886r6Wd2Oje+yY0At135ZZMaVjQgQyk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:A3Q1ktrjtS/Fp4KJgQdKI4+yP4HTiW8SXoub4cBCFJuN2zKgXWq1jHl5WQAkGszsjC7oTKTCqUlICW2Bh/Zj+TeN2Lp3d/fLSTVU0Xs3v1DWtGxLoXG129J8roZRPF0keIAPRPP8H6BjdlpQ04wel+raOnGSBsSlI577hEy2hF6/xMOGKrO4KAfAZr3bsKWWcHinTdTu3ds8hOpeDNh6UKWA9MgxD6kwiocRfVGU2Lz+o/paeL8j/gZHafw2dHk9OLljwHlZTNzY0gisvh2mD1UFBmI3Xk9IDrM6xYnUR0mr8LClx0D9BVIF1wLy8sCSG/AFxXrKe6ZO//8h3CDWI2Xm0b+RDH7rwiVTtbt/ovCaUTNBRxk/ggrB5WtjntvLBiQBYsuvAEGxeKU42K1Kx9YriCv/kO9c9aYgduKY7n4SNWGVfL+dHE0q2i6PrbM2Gu7YBFoz2sT25jmUn2m7J85iLXxxQaXXHHidYDiH2Ep7jUDyw3dY2UqSVFiYy7xfOVWeEzBsgtFvrjk3p301m723XMh4v8/Bz250cXcPsVbUsfBvkh+Agyui3UDriPB2VxKJV6mJ6acZjm4P2sjfhYFLoOu6ur9FwZYXjQ0Yhtg=; 4:VpVygSN7ukRM16DUAUTnNjyuPctsNehcNF7Nt4mj9iW+fT97tSsB8ARnycxQ+/JG4LCB1XNYdYDf7VnkUBY5/3Xfacigf79aVpN4k5V77qlLr3ktxtWvu3YagBw2H9VeadYB6YI8fuXrilWUeUHoau8RG+2rHw4zsconsmU3+FzTjAiVwqf0HSkJY79N1dIrYurkIHt8BBH2UZw3x3PDk9Q6GluMGUsg2PDFFxnSGATem8yglMG98LXmg4S1zgv+e1aiGqoMYmwh4L2bdZdLTw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:iGsQK5PJNAHIaRFepD/l+MTc7n9+S79dH2jRPPc6P?= V4so81zF5isYVeu7pVjmvPi7MrT+Plvem7f/aOvqe7paN118w9EltauhOFCLyhXhPFD66Z3jXu49joNmVY0C6YEuBeTetrXM/lFB1wS2B5YTWwy641y+C7i6P9s7rtg2KQJ6NnG2ScVo4BEEpUtDdDy/EXXmF6Z6R2rMPogCoznPQf7hmE+uEVnfA7BtZ/O6ZrbsL5gfK4QpmOeuDxQsoszQZyKWk1C/0CXeKyJDQ4JyMW819oou4/CawX/pOsm6VGI3gv2VI79Y0od1Bgobi8D9RRxwhJEfKLgBBx2OZtjbQYvXe1pVCodACOeXoFXhm7ns6Pi6QvzicikYuviKALDP4FWhKExSRE/2b5O4y3OVoJnrvYY5z92+g4bR7hoh58CFImZkLGEiLXjxSlOeco5de4ogdWwc8opwF8OzsJuguSxajp5bYFS1Kb2zTmuLp9TP4XRhLxfTij/pt0u0AfVzz6m/Vx/JNMfc5R0Y8HYAoOlc6Om04jkxSoIbtWMlcp2tFwKgP8vthyScEIszFjrlnzzMX/5Ud9U4KJx0dXFwYqh3AsFu7j09A+TfWZpHcnNQLnzix4Gfcyeur0Lv1lKN2NyCLeEzz23deFQ9QYSRcTwAbVFXhmGrAK5pcCdgj6OuZPcv8EpDReqc1jC9myATU1aSNEas4H6ZkLUtDwDr1HUwBVfYVgQAHYs2Xqrxvn18q/Z4KSFQRXZdU+9nlBVvar20uCcZty1+/0sFDA+VF+GwFgDqF39PynnNbKXkeS6v+8USJkgBKA4Sb5o74VBk2adexVC8jJjLv4olDuLcyoh2xZI/jG4EW+Jqq4EsA0s+fgmUNrdsyUffM+OngWCOTj3n6UK0lBUHAUO1OLTu2KUekHoUMmZH5FkKbGC/dzI0/ewMfd8Hl4nnbGbVUiDJ72luYxq20cld+GuKKmW0UBPGBUI/g+WhdqOVx+edBJDJOfjWm2JNyFTsSBuGBcaBDk0iFdur71lqgFUX8JHGgMmc8IVdkcSm14F9ISy6SBKbQqSyH2EkENB38AEYVkfg1XipI4AHmhVW0GP/VV4AIWyTkggIv1u4umOgOigIa1com/7IMIANac3rZuql8alaLL84GrALdTL8E+6lX61UhktsMo5rvnSeJ0UY+cgI7rHz69kg5dFi34idM42k08pPqntP/Slo0pRda0JgJQBnt3o5j9YHIhZsv9pQRdVrZo= X-Microsoft-Antispam-Message-Info: dzNom8CaIbud1kq6AmnHa4/tQxTgTPrD0Vv4vUYJ9Q/E1qCg9U3AodFmImX/C6/WyLsJIIIQiAoyCWj1Ldb3Sejv21Q0AEURP15xgfGYeOyYWSDX+egdS3U4Vp6wJ++xadC8WUTXFrnNvW/wFYqMmdDW2wENfEnSoCnkuWsAeJjKAUtu5DcbduAvikeacVG2Hd+i7sB2gFM5sW2D211Upi0WUgAqS8q9ADXjTquHvC0h4dT8t8b5vdwqBQqiPK8NZuoOue+mQArK/njeiqpz2lSBq8WWeFerrHkbpNqqI22Q9SSy7RY8QboQ1jJUcfVbaJ1kwZJ5SIcFulTBLqJ2DdqI9efGoxivYn5ZtzlGyjs= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:+Ee2PzuHVKEIw1P1ue0RVICgtfs8j5z1u23cGWaboiLCoqrT3SyMuFrWSrQMj/Xt8en6TbUQvq5ca3RwjKYls6ViN70dEylW4FmXp7vyME8yftBfRV/mCGErHu7bVovESoBzwEJcOAZ9C/vsKwUsj4OZaruUXQBchqGZaAuWPKl6DZrUZAzFLuJiJB2QpF55yckoSp1Z2KNjSKS0pK0sMZMGYoS0/YrntdgG/0dYKBYqfnPiDHd/z2XN5xEauaxKIImK8PwGxVypUTTx2ef1WA7q33HGljiLZBzxwfcfrzX/2OxQslnNaFYzKpU89jiLLDEzhxq3QLsTCLgpmTqyRdRNIVU1l2zps++H2MO9aVv6IGFC5GWGgMOgnvJXYP0gz92MR9NyHsl0oXmzAhY2Kqc9Xp2PLt/LcH6e9eAgkx2zUdUVSTl1G2WQrQYwkormxE42KW8SFzBHdxJ8o3mkcQ==; 5:XjnmGW46/ZW1brsVm/562/Hb26DGQN7dbkZwyeax6SDyc48/7d1UsOG85Af28AaigkVkt2dSJ0s1nBBmlyyFvUlGnQxTTlBpr3zHG0Ul/8dHglLefoTN0yvo9MoA/TiZCF1gz5HYWS4ap6HK5lhr4o+BwFNU6/nhRDhvo67K/2k=; 7:rBMJw/V4U1SluEU8i22OAdrhUyrjIE8hTvNVtylwkSBdHSWAUOKPx6Cima0hnzApP7KkY30lf9JyJd2rl3iLR/nnzvzWsONwqekj1AOQJqKgaBV0XTzL0VBerimmtNmIRAw1TunSMkzVaY/4P4Tf3Ovir0IKYWd/y1qqPWajWhDAA760GWHum7NDjgbWgK2rKgJVqeuF15w1yxfecA2gkLCBtvmud9Wi7GN15rK2ujf9o4ttV8LNTbBMelkRSff2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:16.8347 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d55175b0-b0ff-41b8-4ee2-08d6121b3690 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 08/33] crypto/octeontx: add hardware register access for misc poll 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" From: Anoob Joseph Adding hardware register accesses required for misc poll Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 192 +++++++++++++++++++++- drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 11 ++ 2 files changed, 202 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c index 211b6ee..02ec3ce 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -3,11 +3,19 @@ */ #include +#include #include #include "otx_cryptodev_hw_access.h" #include "cpt_pmd_logs.h" +#include "cpt_hw_types.h" + +/* + * VF HAL functions + * Access its own BAR0/4 registers by passing VF number as 0. + * OS/PCI maps them accordingly. + */ static int otx_cpt_vf_init(struct cpt_vf *cptvf) @@ -22,10 +30,192 @@ otx_cpt_vf_init(struct cpt_vf *cptvf) return ret; } +/* + * Read Interrupt status of the VF + * + * @param cptvf cptvf structure + */ +static uint64_t +otx_cpt_read_vf_misc_intr_status(struct cpt_vf *cptvf) +{ + return CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), CPTX_VQX_MISC_INT(0, 0)); +} + +/* + * Clear mailbox interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_mbox_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.mbox = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear instruction NCB read error interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_irde_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.irde = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear NCB result write response error interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_nwrp_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.nwrp = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear swerr interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_swerr_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.swerr = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear hwerr interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_hwerr_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.hwerr = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear translation fault interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_fault_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.fault = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + +/* + * Clear doorbell overflow interrupt of the VF + * + * @param cptvf cptvf structure + */ +static void +otx_cpt_clear_dovf_intr(struct cpt_vf *cptvf) +{ + cptx_vqx_misc_int_t vqx_misc_int; + + vqx_misc_int.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0)); + /* W1C for the VF */ + vqx_misc_int.s.dovf = 1; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); +} + void otx_cpt_poll_misc(struct cpt_vf *cptvf) { - RTE_SET_USED(cptvf); + uint64_t intr; + + intr = otx_cpt_read_vf_misc_intr_status(cptvf); + + if (!intr) + return; + + /* Check for MISC interrupt types */ + if (likely(intr & CPT_VF_INTR_MBOX_MASK)) { + CPT_LOG_DP_DEBUG("%s: Mailbox interrupt 0x%lx on CPT VF %d", + cptvf->dev_name, (unsigned int long)intr, cptvf->vfid); + otx_cpt_clear_mbox_intr(cptvf); + } else if (unlikely(intr & CPT_VF_INTR_IRDE_MASK)) { + otx_cpt_clear_irde_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: Instruction NCB read error interrupt " + "0x%lx on CPT VF %d", cptvf->dev_name, + (unsigned int long)intr, cptvf->vfid); + } else if (unlikely(intr & CPT_VF_INTR_NWRP_MASK)) { + otx_cpt_clear_nwrp_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: NCB response write error interrupt 0x%lx" + " on CPT VF %d", cptvf->dev_name, + (unsigned int long)intr, cptvf->vfid); + } else if (unlikely(intr & CPT_VF_INTR_SWERR_MASK)) { + otx_cpt_clear_swerr_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: Software error interrupt 0x%lx on CPT VF " + "%d", cptvf->dev_name, (unsigned int long)intr, + cptvf->vfid); + } else if (unlikely(intr & CPT_VF_INTR_HWERR_MASK)) { + otx_cpt_clear_hwerr_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: Hardware error interrupt 0x%lx on CPT VF " + "%d", cptvf->dev_name, (unsigned int long)intr, + cptvf->vfid); + } else if (unlikely(intr & CPT_VF_INTR_FAULT_MASK)) { + otx_cpt_clear_fault_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: Translation fault interrupt 0x%lx on CPT VF " + "%d", cptvf->dev_name, (unsigned int long)intr, + cptvf->vfid); + } else if (unlikely(intr & CPT_VF_INTR_DOVF_MASK)) { + otx_cpt_clear_dovf_intr(cptvf); + CPT_LOG_DP_DEBUG("%s: Doorbell overflow interrupt 0x%lx on CPT VF " + "%d", cptvf->dev_name, (unsigned int long)intr, + cptvf->vfid); + } else + CPT_LOG_DP_ERR("%s: Unhandled interrupt 0x%lx in CPT VF %d", + cptvf->dev_name, (unsigned int long)intr, + cptvf->vfid); } int diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index 40db69c..f3c7a45 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -7,6 +7,7 @@ #include +#include #include #include "cpt_common.h" @@ -19,6 +20,16 @@ /* Default command queue length */ #define DEFAULT_CMD_QCHUNKS 2 +#define CPT_CSR_REG_BASE(cpt) ((cpt)->reg_base) + +/* Read hw register */ +#define CPT_READ_CSR(__hw_addr, __offset) \ + rte_read64_relaxed((uint8_t *)__hw_addr + __offset) + +/* Write hw register */ +#define CPT_WRITE_CSR(__hw_addr, __offset, __val) \ + rte_write64_relaxed((__val), ((uint8_t *)__hw_addr + __offset)) + struct command_chunk { uint8_t *head; /**< 128-byte aligned real_vaddr */ From patchwork Tue Sep 4 03:58:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44184 X-Patchwork-Delegate: gakhil@marvell.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 415F55B16; Tue, 4 Sep 2018 06:03:20 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id F109F1BE0 for ; Tue, 4 Sep 2018 06:03:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l6CWMdClKkqBm/ET4tpSXX650RbQuZUZI8BEDhHevcM=; b=LedD2uXE4M0rpcblzWnncGzNAbQxptjCVD2j5RCP32jTQl4uH0NcYJa9flgvdxJXG8lwaF4Qaq9nzEZ0M07CzjDoqfU9ndoMbWr87psRQHGTPrGsPfpJTAbMtyu9rDS7AoxsXSUlmvfLsRupPvIf5I60TLPaq93PUMVcD/HsEJM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:21 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Murthy NSSR , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:56 +0530 Message-Id: <1536033560-21541-10-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f87eebf1-40c5-46c7-19ff-08d6121b3965 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:nY91BbUxUEOVzh7QHl8aa/WQOe9skeRJBI2KefcBJeH5dE1mqmv73h1gso63tx1u4jvQDxPlB/UBkQu6GwQSysucqsIc7Kt0E1rhJDXV2LMALSGEZXpl6SFapXV+ccFwfic4HB+HwvQR43jIwPydYFjIpz/R6LNVPK3ATJrFbmaEc91NNGiPnq8XWNvMsYv4VYwrL3rwp+VS3FEL5syU0SiLGEbn2mhGkhkQ6pvfmzPjihOFR9omHTmPKAulixFg; 25:eJgLlo2yBdcZImDmMthPxEbsKo2WaXWiMBgif2yMcZT0ZRJwNqYCjHQL0l7+BvcsuibEL5R8B8FziqN3NZTKos87s2HyGH39EoS7AwDfzuCotNN62KoGUxxTELAQ6eR3XchGMwZ6jkP6sm59D1+UHZTC5i+/2GlacSsTG6qXUKyHCifmJDK2AqEYdGMy92p97h40aPGazIaOlPZK6fDFtDhSSgr/i43h80IgWRmKcAAluUHYwEMfc9OKzKDQlOUn5tPAIhOw6400z9rBxyRhnhf0u9fWw/cNB1GfrFBZ94Z2t3OZ7FOt/vTDPBLVOqx6LUCBli/J22j9ovVii1B4wg==; 31:uRYM913sYyotZQqfCOYyStwAKaLs81MdQpwoO21q2yDpJKwScmKfoB+qxNthDZeq+zM6RNCKRt7azkt51MTvmUMHF0/nEZ9zamt8GRvzL+/OtpRHWMOn0KiycRpgH9EBitVU+4ZI4mLffE/3rtRwLjJ4SMZ18GoqmvGpbKiGOhMVaFcfAZ5cknkjKQO1hp4EJsnP08HyE43qogYJOFK/CyTSicspZYucojNlKJPpJ8U= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:MkhxVMf6Wg0+RB4UhFCgc5k7GCZpR0sBkFYN2umwMtGFBWCtSrJpwXXxtEsqKJVwGq7Xh3wm1DU8uOwAiZdUchHX8/cCg6Tn6Tg/G5bHLWvVIR6gAmI7tuyCjQ/AFQsYSe7D5rgf4qo1tVwkrWc57Shd9SkJqLoPxtDH910fgnH98bO80cPjeO9pgcvN8o0Sk7Pk9hEoGP2zzVTnUZ4P2QKx36vjLN5RPWb1D69E3TTyNSp1naELrRApGN7dXiQTKNUis+PpToMb7DHHtdoVHmajCNEqW7NbhTgZv9WWfGg0KJ0Yoxi0b501eR9NSfaXDzpyc0pCS+bdBgJlhYd/PUvB+DtwpqgvoFimgbvA0u3MmmFQWrHpy2HzkmFk8DzFpwTz+TVLeEvkqluNcqiHsPWNfw3E1hxILdEaKqm0INtarclfE5FahtEZk1GQItdtlyWjcYJeNpE5jg3u11vuLS03SFZZTYyq4wvx0ZDqqX99r8mxgeEI0k3t4LHOp2mQ70F/MNN4EgoC0zOIv8aO6l0dVwtUPae6unCsxfnCNrkv0Q5C+q4DiC+2/iOmhph5mRPQYjikDEb8OPV6CilJi+elbgw5KGAIdQN9Fv4edG0=; 4:kD4UyE9H6x/6Q5XEQYVkhLeTIKy07VTecqQmLl31qJxymTiVskzfDszfEuWOZrlJklCOXBSct0kincrqjCwlUDpLeQIwTZZOKv5e2IG4Q0CwaYWlZTjzFu1nlOd0giSZYF1R2VnK+YqlcwxobrxihcUnW3pTHkoCmMm7srdlRf4UWwV5gfqhHsgu4Uq4hhY8pj8N/HUWOJz7DOCMBMIsPwlY26SYibmecCZIINxiP1LTXBjrTjJHhGdKJZLsB0fRWwuL0u5iB5PFdYxy6jiQ/g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:Nt1nnyRtbvOqU538sTdeNQp/O1UYAkl3TFVY7yjhc?= LOdzA08fBL8/fqgQ56om3zT9T5UcIwTyODg4ugUwT5Vg+I5iDtnO7KH3uHQXeICH1D078he7y9xQ6ArN2sMl7hNv4gSqrK4BdSezMFvf2rBOTh0wTkOkybkw6gJ4MEK0CNztQDyr5tN5BIwj/j6tQH5/laXvOBJpv1fWIDOS97coDMzMMOIXTBodzmiGF0nafaVEhaMDEe71Y3xYRbP12aPsRIBTxfi7KelJEhp0bXkQDp9TvxR6qyGaRSxynwpP8HholJog80gvuEBfk49z8j9LhsRn8mlEdpXMnjCGsF4gd1JWHcKETZ2mW39WKC5Tp0gBn37KRtttkBuZWF0eOR3nMhI6phlhRekvcsQk2o8ZPNcRD5gJVbLmEdkm5BobhZCjw0Z/oeKVoVIFNAp5x1JXheSYQpGjyUJb079R5ZdQA5gAnEjIenoBuMUmR4u7GqekefTF1FEazmiUbsy6rP3lXj8A+mKXFPG3VEGfEj6OH8/tV8uZA2+x/jwyqFzUGCu6LKGoP0JJFjFODcOOi4bmnusst39NRG7oK19R1kPj+eA8PALRnGMJOwQAzUmYw/uo5tRoOm7g/HV+yQnOBUcvE05nW4yH7FW4X+6HCX1No5YAk0NIvixGxVNJJM0JJkHbHAOrkDsbdjqSYF3i7B0gWq/Up+aBTHkjpbtCkoO3vM8jp068SLD9cl8ZCUujzSPRHZ+WHvEfzvQLBy74Q6e7vPEvEsfxeV+x23SBrKWkL+rc0mtKjKeuN8obfxMBq0DGnTifT8FAajo89fo4VFjgejHHfuP+7ZO20u09fBfOHtMw/KOqvwKfU4RuQsAqNkN9eDRocff9upxu6A86/DNIw4O/kw0qk3Dl2hNsuOaC9bZhWz9z1xLA+JQaOFYUHDTLDI6CdCnDEAeGL3FbSpTEVUg5eEdhHLu0WakRJTV3K5fCMqDZEY4GE28cMZ4ZHqhmwIzsN+9PHGWuM7F0Yhfe1HxS2y3LR2Rlr50QOrqnCeKTBDbYhj4EKcoC7sa5HkgDElGHrSRl2ZXTjqMYa9SDqcEzTtEpV0CUbzRsVJVVFiVePCilgdpgA18UrCtHpzXmIxrvuaMd1/q0dT00Ag7L4ODxjOV8Zz9kkdlFNWNJqFfCHPlvkk/8mfSWapM3j4/hBgpY4kI0Si96uRl1Pj8jkS+HaGIvWNFTRFn5Y1WN2XiIE7DokyNrsZ8pRFrhwA= X-Microsoft-Antispam-Message-Info: 26sw54u5ciSxLXd0BlePDuX/FZRfzueAQNtrUv7Wp3M+OjlPbDOwfbJ5LZMWDdWvKhC/WXUQDAyj+LOE4q9f0YMkWOXiFdPD6X8oZtY7Xl2JxrxIQg5lCXftKRYgGgtx2DCMLs+bBcNFd9qe5b1gLhOzQZf+OmFTOcE8Ug0YKsF18P1QT2mWgmxcJwfTfz09bAg4Bjl9Jfu6dWuirsOGnIuc4Nz6lncsskodaOg779WB1zIb7GHvlPhNVk9Ot3e9jHRPOQzkfJezJ5zmTDFj8ZGoUBR4HYauL7kyJWBGN/69CafIbu/PRyc/16VOUO4Gu2qNtpVUXcNqdueTnSY/TrRymsbk0x9AL9dKEK5v85U= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:XdT5Qy9tDCF8iFugg6Hc34R+WXzYFWLdmrht47Wbjq0zsKJQK83QIpGn+wN7Eew1LIV45Qe4Etw8ai5xbpCD7b5Y+RgJC2KxB8Q9mFLalo9yenQiISZM+zn38p+NFstTzTADgl3pyOm7jEsnHuHpsKL35sHKdsMJmmP1eEQioIbCkIXdEbEcMR7raPfpqiSHEXhhEr+t4nFfSyod1IFql6clMJu7IFq3nmt+dHiUKRW60WR4cUkC3z1e1oJryRFFLJiB5drFj3PSJCYzD55IvBW8uygqms2Aox+Zvbr55iZRMDKspzoZpQCBiIqGaG4OzgiTqamUvf2OjIQ15exNlNVUV9ZLlLZZUXh9tpKX2aUFqkunRDJ69vPDwLeu/XjT4aoydjUpxiEW+QmiOwLT58n7LqI86TgFFUqdgq5CKugc1tp8HbLTVXadvlZpyL9Fv0XbOqWJeemiQ5+KySfJMw==; 5:L5NCePbPKcbDKwrLSMdu2PJdCpMZ3cm/Yimq3cxRLYi9EMT0abBJ2JCyQgW/FhPCUDHeFJD2+M6nCf78COaWNw9ZnN+d5yBzNLyJ4qucW37wOZf+Q1oWpCpCg73D1aMGMviwcINfxHM23jBiO2me4uA/UGfaeI5E3zZ2HaNU6LM=; 7:aYpEfkMcn0taYBjYbTUT1KKFC8NRXuAt+CoieBkvMUI86dmZSyrA/EmNIFqUrONlXC6JcQDZV8UTkSJyzzCuULSiMCOxfhAnA9nutTB8RPOyFJVX4bLx/l2DALygcjQBX5M/o8dmtD805ValSi9ih7aLbilqKCnCtv4DRkFa+khd3xrcVwyOKcsmF7KZ0VRV6Dz46ws/erHjdy741OIBr5ObunYy39Zuuw0zC047luDB2wHkuWaNgbpn2DV/53Dd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:21.6629 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f87eebf1-40c5-46c7-19ff-08d6121b3965 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 09/33] crypto/octeontx: adds symmetric capabilities 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" From: Murthy NSSR This patch adds the symmetric algorithms capabilities supported by octeontx crypto hardware. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- .../crypto/octeontx/otx_cryptodev_capabilities.h | 595 +++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_ops.c | 6 + 2 files changed, 601 insertions(+) create mode 100644 drivers/crypto/octeontx/otx_cryptodev_capabilities.h diff --git a/drivers/crypto/octeontx/otx_cryptodev_capabilities.h b/drivers/crypto/octeontx/otx_cryptodev_capabilities.h new file mode 100644 index 0000000..55ddb14 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_capabilities.h @@ -0,0 +1,595 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _OTX_CRYPTODEV_CAPABILITIES_H_ +#define _OTX_CRYPTODEV_CAPABILITIES_H_ + +#define OTX_SYM_CAPABILITIES \ + { /* NULL (AUTH) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_NULL, \ + .block_size = 1, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + }, }, \ + }, }, \ + }, \ + { /* AES GMAC (AUTH) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_AES_GMAC, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 32, \ + .increment = 8 \ + }, \ + .digest_size = { \ + .min = 8, \ + .max = 16, \ + .increment = 4 \ + }, \ + .iv_size = { \ + .min = 12, \ + .max = 12, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* KASUMI (F9) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_KASUMI_F9, \ + .block_size = 8, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 4, \ + .max = 4, \ + .increment = 0 \ + }, \ + }, } \ + }, } \ + }, \ + { /* MD5 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_MD5, \ + .block_size = 64, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 16, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* MD5 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_MD5_HMAC, \ + .block_size = 64, \ + .key_size = { \ + .min = 8, \ + .max = 64, \ + .increment = 8 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 16, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA1 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA1, \ + .block_size = 64, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 20, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA1 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA1_HMAC, \ + .block_size = 64, \ + .key_size = { \ + .min = 64, \ + .max = 64, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 20, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA224 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA224, \ + .block_size = 64, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 28, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA224 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA224_HMAC, \ + .block_size = 64, \ + .key_size = { \ + .min = 64, \ + .max = 64, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 28, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA256 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA256, \ + .block_size = 64, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 32, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA256 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, \ + .block_size = 64, \ + .key_size = { \ + .min = 64, \ + .max = 64, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 32, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA384 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA384, \ + .block_size = 64, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 48, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA384 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, \ + .block_size = 64, \ + .key_size = { \ + .min = 64, \ + .max = 64, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 48, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA512 */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA512, \ + .block_size = 128, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 64, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SHA512 HMAC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, \ + .block_size = 128, \ + .key_size = { \ + .min = 64, \ + .max = 64, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 1, \ + .max = 64, \ + .increment = 1 \ + }, \ + }, } \ + }, } \ + }, \ + { /* SNOW 3G (UIA2) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 4, \ + .max = 4, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* ZUC (EIA3) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ + {.auth = { \ + .algo = RTE_CRYPTO_AUTH_ZUC_EIA3, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .digest_size = { \ + .min = 4, \ + .max = 4, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* NULL (CIPHER) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_NULL, \ + .block_size = 1, \ + .key_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + } \ + }, }, \ + }, } \ + }, \ + { /* 3DES CBC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_3DES_CBC, \ + .block_size = 8, \ + .key_size = { \ + .min = 24, \ + .max = 24, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 8, \ + .max = 16, \ + .increment = 8 \ + } \ + }, } \ + }, } \ + }, \ + { /* 3DES ECB */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_3DES_ECB, \ + .block_size = 8, \ + .key_size = { \ + .min = 24, \ + .max = 24, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 0, \ + .max = 0, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* AES CBC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_AES_CBC, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 32, \ + .increment = 8 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* AES CTR */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_AES_CTR, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 32, \ + .increment = 8 \ + }, \ + .iv_size = { \ + .min = 12, \ + .max = 16, \ + .increment = 4 \ + } \ + }, } \ + }, } \ + }, \ + { /* AES XTS */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_AES_XTS, \ + .block_size = 16, \ + .key_size = { \ + .min = 32, \ + .max = 64, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* DES CBC */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_DES_CBC, \ + .block_size = 8, \ + .key_size = { \ + .min = 8, \ + .max = 8, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 8, \ + .max = 8, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* KASUMI (F8) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_KASUMI_F8, \ + .block_size = 8, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 8, \ + .max = 8, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* SNOW 3G (UEA2) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* ZUC (EEA3) */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, \ + {.cipher = { \ + .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + }, \ + .iv_size = { \ + .min = 16, \ + .max = 16, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + }, \ + { /* AES GCM */ \ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ + {.sym = { \ + .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, \ + {.aead = { \ + .algo = RTE_CRYPTO_AEAD_AES_GCM, \ + .block_size = 16, \ + .key_size = { \ + .min = 16, \ + .max = 32, \ + .increment = 8 \ + }, \ + .digest_size = { \ + .min = 8, \ + .max = 16, \ + .increment = 4 \ + }, \ + .aad_size = { \ + .min = 0, \ + .max = 1024, \ + .increment = 1 \ + }, \ + .iv_size = { \ + .min = 12, \ + .max = 12, \ + .increment = 0 \ + } \ + }, } \ + }, } \ + } + +#endif /* _OTX_CRYPTODEV_CAPABILITIES_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index d25f9c1..cc0030e 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -10,9 +10,15 @@ #include "cpt_pmd_logs.h" #include "otx_cryptodev.h" +#include "otx_cryptodev_capabilities.h" #include "otx_cryptodev_hw_access.h" #include "otx_cryptodev_ops.h" +static const struct rte_cryptodev_capabilities otx_capabilities[] = { + OTX_SYM_CAPABILITIES, + RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() +}; + /* Alarm routines */ static void From patchwork Tue Sep 4 03:58:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44185 X-Patchwork-Delegate: gakhil@marvell.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 AA8455B2A; Tue, 4 Sep 2018 06:03:21 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id 0AB862C38 for ; Tue, 4 Sep 2018 06:03:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oBCme9E2QkYY2AxGWNfLfO+l62sP42U+orw8P7wsA2Q=; b=lWruA2uN7NE7k3SvC50ImP+XiDyP8zMP4oY/6lJX9a/eRrNtkDAHIQxMxJMsxc5iN146gNjkOvBKfH4V5LwKXK8oMwbf/q4wnQMTVKkh6LS5AEY4V5iVtWCUpGU652+j45PAYKvWrXzQcRzyLw0YjbxXPgr1UAxQwCtz8Iw46Kk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:26 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Murthy NSSR , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:57 +0530 Message-Id: <1536033560-21541-11-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed736a39-347a-48e6-7177-08d6121b3c05 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:ytN8nWBqArBDOi8CYqlaADObkbCyjNjT6oLvsb+6k2yYKVVGPe8U5GTsB0IODHRH30QDRQIIXBEhZhEZ7Lmc3LGFqR1eM4C6D3noiyfXGkQ8+iTPRRbNiPG9708IP/+H5Yt0XBilQn3tqeJ6UC8ytnh5MhNzJn3Laj5Vy+sMPxxKfXjCn+mVDFgG22+s1NDgp+RNnuuRYKdCFuMsuF10xQrAmS9eWJS70mwUDCdcss07BI8VDmM9sY0e54NZ+3hn; 25:Xt2Y4Gmvn9TA975Wk9AKpA+Z9LSLEpqMaoD98ESWQQ2tGox/uOgm0t/geqLfxriqIPo2PHavNkcHrCPFaYZ+ROvD/ZZOERFHsRGENe5V2AXOmgtGX6x20drYiTbN9/XoIRtbHBvc2oxGaQSpP/tqiMvEsIEGIOFrlMufwYP10hE6zWs83/3rRh+zy8pgJiE63pCTKOxWMl/n5ETanWnXjRDMHY1KGbeA1ocGYTxzbZ3zYO25B+ShudTBP3yUfBgo4DCE7o01fOThgRSCvRgc/xS0WhVgDTB+B/UPbIswtenh3FyJZo7UKqEJMu77IEHXdlYUGceOnGd8EbMXKv2eQA==; 31:o2fwUT2St52csHa3xLCW9f/3TeUVzCIeorp2TjwAaCjG/hA1ndGSIJaX2EfDb+TP8pWdCWPHJZvq0b/rNNIy7CQafxasN8cW16azcahqHSw5lVTwa75ia4Ls8eFXrJPuIpggQSre8hVYyGh+678Vwi6kKGByFR2WxAmJwEJC47afxmNqlRhc76YV9OHfy232UnIBHwbB8T1VgVIzsWi215SomxaoKGf4yPQpyDJAyfc= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:Osw40d0GIpMrfmA8cXOYtpc67cNkWRlYYaXBhXsN3o+8jffZmOoTYuh1u2k5hnsIvFGMagc+5U7NpYsfI34OEPi5HqqiirK0J78Cl++rm2kft3xaEKIhgvGsbC8Pf/Sp7iBPPp6THSpnAWF76nc+3YitcIrtcUkZOXO0dYMs7dGqpNF36fIEMkQws27QlUrGGhJta4tbo/VccN3YSpKObKlKXV/vFXCl1SywTD+wAdz4Osr0EhCn8k015wC4JTG96Flz5x2qb9hkl9RNe74C6I71nvj57+fp1sh1a/QwsOFziMbD1Sp4UP2p37/3XgfSvASRJNw2F8InE0VLMCtlHrwDhn+j7n+jBTIhzMB/rqHWBYVhVY7mYA7g9eY0VG3hjmGYX+DKlTduV3u5QCr9OeMJwXVpTjWGuJ3QBDah/jOg/GMD7C13YuJoT8kbFXyq1wS9lp3vZlrpv/Ib5FoPQYl7Vs3ec7ttZtkJUrov55r6/+SiXfj/JyEO7Tm0PPVLWdjPyEKIwdFq2lZ0Se70gQArUj5/qMWA3BXxcWenPfQFE/I+LaUgL7MbRIms4kqAuxOcGURjLa7tINpzWL0rhW/E5tEji41wcrBYxEn5bYE=; 4:m4H/bU7GO2ul2wxUfdARMRDMolix0v2DWUn95g7cexf/MJU/3rrmFXuTx1qIVMCqmAikPZ8MvwyXsE8i2WlfUabnXDd0MtiKVsS6aPMzYLrMk+Vq6Jo8lZeAmnbLKs+4SllSK/h1mDyzgNe9acECxHtQrnWsKp6I2+24qUk1HRH9ufC3+wL+Wz1+kdT4A7sYP20ZsyBrDkDN+5YlSvy3bXI2Ei0la+6cZdCyG9giW6qVEk9F+fBT55l0WFoiw7nSQwEmE7E4Xfw34CeXUeFIUg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:q5gpJWrxQOVL09fkvxJMBY/lH2FOXuqCN1ENRXKhK?= MZ5YyPy15QlQmwhxeHp4rzBX4fe8UZg4HzQQvwRsZbn6M86qzjD8zaltBMyRgRHaR4RZHWPJCY/rqQtUJPNgDdRJQVNQc0I5Gq3UEeL0APaJ8cEyci7nUO3BpfwrtNmPCyd0LiAuFK9kv/IexV96rCWGjoi5LjtahlKWdDd5LpRhFPGyqOaHMv2GtKj+9Lkp6B3sImwk6+dusX4NyK6jpiYu4KE7H70zsNLZmWa7Jms2lV19/41qKOhgcS1tYNuVplyTkgFi309ZM1SEDYp80wHnzXKuY8fLvZes4IdJOuI7xTBiqJFxLW/cZBF9/wtaIvQQRCzrpnOoE497p1X1uHjsuJNU6OWwH3FqnNgOQb3WNgU29nB/bYR3Agb4hvvHxPX1JkqJMNZeptZpzERJFemH66s2UA9ivkVtTWyCkwch3eXdSBSBfHulLNYZvgxS4SaDGpp5X1zer6XuY8RsclD+QFekO9K9qqE56DMedrf0/pcsaPiC+Gu+5DF0cKYExVyhcJ7tQgWXciPPc2wpOIa8GRJDZ40CJ50/pJ8lyToHUA0bhsIF88Sw9Hl9/oihVMn4RU3VGRDx2ShB6BRxvei8uO5HFTpw1r7epJllU0U0rw9FuGcy6xcjxsNEvO8mvfICRgMEFZOG6ImZIHcFgBNE3vY+KWJZTCwgqvrxzcpqmBRjXzrM062YVJx7jsskILnbDcuskN1ErymXSmf6T0bT+IDt/flMjHOt98rZgMAa2TVMuAZAzbIVNvcPB34ja2rx2ZMfJu/UAR7bfiyZXxKOKl06WfL3tcSlkupoQ+u++IOMdoD43vXvBbrGZB2sK5zFw5l52WN3Mf/AEXx88EzUSKkW4HpeHjsGHFpC8RG8ogqMMjY1C04hjgoP2OlByWUBMFk420E2iPK4ZvAPQrEo/CdSCeOOce09SaYjq3kNiR4XOvmTpwDeNb70qoRkvwfa6SFu27gzbpLcsQIvhJtOBWVdjUOCaMzUWo8jIBCWOoPl5nErRASdQ1sO0JgSK8iK4kWGqiDBSj+Y9WWfk+LHa7nQayRzk1kTvU/bTBYUhXe0L7mTJI+19n1EpRRUWwG+dW99TZcVoIdSiWyfqEwWopWEK7nEVGvW63MHWC+pm9nXnRGGrKsnRFJHcuocyavoxNPfROKAWlinNd8e0jNusngp0+n/0977vjJDOffyG3Qdxk8QhtPv/7YfnZyXd8= X-Microsoft-Antispam-Message-Info: SJOe9eJ6k1oFqw8w00q9a0xhU+Rqq5tK9deIVg2jR5etVfFnd//9d7vdBTRnVokAo9K7q6M7Wp8W7H+PVYfXFcwUUczYTtbWiGiqhrzNhDxKnwFhf5beNicmAtF8AlB9JvR7Y3XSe9cg1Xv5wOWoRPZRhhG7l3Qf+Mbc4enpeblMVaYicTNHdgPFopbWWRdfueIdoM+SmUh47ahGvM25XOyB/Jxs8LOGCvzg9YHuOEcUXuZG0VSRiQU2HLbHAytCO6F0R40a3J9Hfc6JdVUhwDk5xAZ1nc1gYwswC/5KMa93UiL2n1XHbITfi/ukaTx1AVCBcadbqEcy/PFXVLHgnso9+bka7PdX+bq9FbX8wi0= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:1MbevLMQyUXIsqDLOVe3ajhw9ttD3oX7j14LX6/yf500WXr/MryC17skp2PY7z/POI/IVCWpxywaQ6LMQKrzStd0m5AWFqpfF59dGYgLGyBm+X2VJi0wrIsTOOdoS+dfZRJzpyCTYnyEqHOr4ZVR/Y3eBfG7U1YJNfUglEsGsuSYGGYsKciOSEzSNnsMWDFvEMo0koMr4BfHci1UzFw3g+512snpKfbbxMrEHyCF4fsyYk5h+OYXZj5blHDvV/0dlsaM7AZnskpQM9MwyZx4lZ7bE7MRTUxG3N13Q55zaBy89UABu3fFkMsNzgvQMKv2U9YX3DZd+qbeRR6GThDqgAqt4hzNmgwWT8hZ3Me0BOyc/bH2CloDhsHUiKCh1jKsod5kqnktLvmG89fXpIJscjWP8I5AVqz8DmPlCGpfeTZGJNpoM0RmDQ+P4huDdcUWhGzTXTBHOAXXzTsaJYaoVA==; 5:DdBIoA9xyDcpG0OsNJUqkBmaAnGAIkIzxDQnbzR2xQjAI05wft8TI8girQIAVAAOmv1e6QW2iQSWipg8Rbd8Xg7421ZvnyB5UH2qegCjNnkRgM3yLgw4TPfg0K6uzI0Ppi53zUJ7tA/vmEb/SfYtFB1VQE4jkhWh/FEdWlFQAYI=; 7:vfuQ/puKHPwRtav9+rXm+Kj/LgSXLFuhU7mKJfwwa+6IJKRTbqKXFN0NsH6Rh15yxLUJxFu+2jVIaTqiKbWxZQDdswnQAGtEU5CjnyIj6MYMfIK8f7rVdkFd7PObiqeTv1yJpAM/32kj2tlTPmA2Vk+BVV6hKBPtpCA1G298JTp1WIl6LIRtjUBSWwFX31OeGOCTLc4oHpgcMb8fmB/rd7Hoa+58QWTfsLtKNXCp5J3bcP2311pjFYyxeWHYqJ86 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:26.1629 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed736a39-347a-48e6-7177-08d6121b3c05 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 10/33] common/cpt: add PMD ops helper functions 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" From: Murthy NSSR Adding pmd ops helper functions. Control path accessed APIs would be added as helper functions. Adding microcode defined macros etc as dependencies to the helper functions. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/Makefile | 4 +++ drivers/common/cpt/Makefile | 25 ++++++++++++++++ drivers/common/cpt/cpt_common.h | 41 +++++++++++++++++++++++++++ drivers/common/cpt/cpt_mcode_defines.h | 38 +++++++++++++++++++++++++ drivers/common/cpt/cpt_pmd_ops_helper.c | 41 +++++++++++++++++++++++++++ drivers/common/cpt/cpt_pmd_ops_helper.h | 34 ++++++++++++++++++++++ drivers/common/cpt/meson.build | 8 ++++++ drivers/common/cpt/rte_common_cpt_version.map | 6 ++++ drivers/common/meson.build | 2 +- mk/rte.app.mk | 4 +++ 10 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 drivers/common/cpt/Makefile create mode 100644 drivers/common/cpt/cpt_mcode_defines.h create mode 100644 drivers/common/cpt/cpt_pmd_ops_helper.c create mode 100644 drivers/common/cpt/cpt_pmd_ops_helper.h create mode 100644 drivers/common/cpt/meson.build create mode 100644 drivers/common/cpt/rte_common_cpt_version.map diff --git a/drivers/common/Makefile b/drivers/common/Makefile index 0fd2237..ca4e854 100644 --- a/drivers/common/Makefile +++ b/drivers/common/Makefile @@ -8,4 +8,8 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO DIRS-y += octeontx endif +ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO),y) +DIRS-y += cpt +endif + include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/common/cpt/Makefile b/drivers/common/cpt/Makefile new file mode 100644 index 0000000..2340aa9 --- /dev/null +++ b/drivers/common/cpt/Makefile @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc +# + +include $(RTE_SDK)/mk/rte.vars.mk + +# +# library name +# +LIB = librte_common_cpt.a + +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -I$(RTE_SDK)/drivers/bus/pci +EXPORT_MAP := rte_common_cpt_version.map + +LIBABIVER := 1 + +# +# all source are stored in SRCS-y +# +SRCS-y += cpt_pmd_ops_helper.c + +LDLIBS += -lrte_eal + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h index feca5fe..1f78d42 100644 --- a/drivers/common/cpt/cpt_common.h +++ b/drivers/common/cpt/cpt_common.h @@ -18,6 +18,24 @@ #define AE_TYPE 1 #define SE_TYPE 2 +#ifndef ROUNDUP4 +#define ROUNDUP4(val) (((val) + 3) & 0xfffffffc) +#endif + +#ifndef ROUNDUP8 +#define ROUNDUP8(val) (((val) + 7) & 0xfffffff8) +#endif + +#ifndef ROUNDUP16 +#define ROUNDUP16(val) (((val) + 15) & 0xfffffff0) +#endif + +#ifndef __hot +#define __hot __attribute__((hot)) +#endif + +#define MOD_INC(i, l) ((i) == (l - 1) ? (i) = 0 : (i)++) + /* cpt instance */ struct cpt_instance { uint32_t queue_id; @@ -51,4 +69,27 @@ struct pending_queue { /**< Pending requests count */ }; +struct cpt_request_info { + /* fast path fields */ + uint64_t dma_mode : 2; + /**< DMA mode */ + uint64_t se_req : 1; + /**< To SE core */ + uint64_t comp_baddr : 61; + volatile uint64_t *completion_addr; + volatile uint64_t *alternate_caddr; + void *op; + /**< Reference to operation */ + struct { + uint64_t ei0; + uint64_t ei1; + uint64_t ei2; + uint64_t ei3; + } ist; + + /* slow path fields */ + uint64_t time_out; + uint8_t extra_time; +}; + #endif /* _CPT_COMMON_H_ */ diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h new file mode 100644 index 0000000..1bbe8c4 --- /dev/null +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_MCODE_DEFINES_H_ +#define _CPT_MCODE_DEFINES_H_ + +/* + * This file defines macros and structures according to microcode spec + * + */ + +#define CPT_BYTE_16 16 +#define CPT_BYTE_24 24 +#define CPT_BYTE_32 32 +#define CPT_MAX_SG_IN_OUT_CNT 16 +#define CPT_MAX_SG_CNT (CPT_MAX_SG_IN_OUT_CNT/2) + +#define COMPLETION_CODE_SIZE 8 +#define COMPLETION_CODE_INIT 0 + +#define SG_LIST_HDR_SIZE (8u) +#define SG_ENTRY_SIZE sizeof(sg_comp_t) + +/* #define CPT_ALWAYS_USE_SG_MODE */ +#define CPT_ALWAYS_USE_SEPARATE_BUF + +typedef struct sglist_comp { + union { + uint64_t len; + struct { + uint16_t len[4]; + } s; + } u; + uint64_t ptr[4]; +} sg_comp_t; + +#endif /* _CPT_MCODE_DEFINES_H_ */ diff --git a/drivers/common/cpt/cpt_pmd_ops_helper.c b/drivers/common/cpt/cpt_pmd_ops_helper.c new file mode 100644 index 0000000..1c18180 --- /dev/null +++ b/drivers/common/cpt/cpt_pmd_ops_helper.c @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include + +#include "cpt_common.h" +#include "cpt_hw_types.h" +#include "cpt_mcode_defines.h" +#include "cpt_pmd_ops_helper.h" + +#define CPT_MAX_IV_LEN 16 +#define CPT_OFFSET_CONTROL_BYTES 8 + +int32_t +cpt_pmd_ops_helper_get_mlen_direct_mode(void) +{ + uint32_t len = 0; + + /* Request structure */ + len = sizeof(struct cpt_request_info); + + /* CPT HW result structure plus extra as it is aligned */ + len += 2*sizeof(cpt_res_s_t); + + return len; +} + +int +cpt_pmd_ops_helper_get_mlen_sg_mode(void) +{ + uint32_t len = 0; + + len += sizeof(struct cpt_request_info); + len += CPT_OFFSET_CONTROL_BYTES + CPT_MAX_IV_LEN; + len += ROUNDUP8(SG_LIST_HDR_SIZE + + (ROUNDUP4(CPT_MAX_SG_IN_OUT_CNT) >> 2) * SG_ENTRY_SIZE); + len += 2 * COMPLETION_CODE_SIZE; + len += 2 * sizeof(cpt_res_s_t); + return len; +} diff --git a/drivers/common/cpt/cpt_pmd_ops_helper.h b/drivers/common/cpt/cpt_pmd_ops_helper.h new file mode 100644 index 0000000..a9358ae --- /dev/null +++ b/drivers/common/cpt/cpt_pmd_ops_helper.h @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_PMD_OPS_HELPER_H_ +#define _CPT_PMD_OPS_HELPER_H_ + +/* + * This file defines the agreement between the common layer and the individual + * crypto drivers for OcteonTX series. Control path in otx* directory can + * directly call functions declared here. + */ + +/* + * Get meta length required when operating in direct mode (single buffer + * in-place) + * + * @return + * - length + */ + +int32_t +cpt_pmd_ops_helper_get_mlen_direct_mode(void); + +/* + * Get size of contiguous meta buffer to be allocated when working in scatter + * gather mode. + * + * @return + * - length + */ +int +cpt_pmd_ops_helper_get_mlen_sg_mode(void); +#endif /* _CPT_PMD_OPS_HELPER_H_ */ diff --git a/drivers/common/cpt/meson.build b/drivers/common/cpt/meson.build new file mode 100644 index 0000000..0a905aa --- /dev/null +++ b/drivers/common/cpt/meson.build @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +sources = files('cpt_pmd_ops_helper.c') + +deps = ['kvargs', 'pci', 'cryptodev'] +includes += include_directories('../../crypto/octeontx') +allow_experimental_apis = true diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map new file mode 100644 index 0000000..dec614f --- /dev/null +++ b/drivers/common/cpt/rte_common_cpt_version.map @@ -0,0 +1,6 @@ +DPDK_18.11 { + global: + + cpt_pmd_ops_helper_get_mlen_direct_mode; + cpt_pmd_ops_helper_get_mlen_sg_mode; +}; diff --git a/drivers/common/meson.build b/drivers/common/meson.build index d7b7d8c..aa88934 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -2,6 +2,6 @@ # Copyright(c) 2018 Cavium, Inc std_deps = ['eal'] -drivers = ['octeontx', 'qat'] +drivers = ['cpt', 'octeontx', 'qat'] config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON' driver_name_fmt = 'rte_common_@0@' diff --git a/mk/rte.app.mk b/mk/rte.app.mk index b530337..08f76c7 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -98,6 +98,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO _LDLIBS-y += -lrte_common_octeontx endif +ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO),y) +_LDLIBS-y += -lrte_common_cpt +endif + _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa From patchwork Tue Sep 4 03:58:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44186 X-Patchwork-Delegate: gakhil@marvell.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 155EB5B32; Tue, 4 Sep 2018 06:03:23 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 690FD2C55 for ; Tue, 4 Sep 2018 06:03:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B+jfvW/tphfxK2WAByrrj4CRyIP4H7pcPAsx1d9brF4=; b=FP5raG6byal2KSp6SvkhbwhPepmidWimvw+O2xTGX/HvPaqh6+OxyRIhbwrYT1+KVikRq1EBgGzAxckcxxMKh0U8pHLTMZpBY1Adh5k3eLef30jfQJmR8lG6kc9bQGgFnhSeouT+GQwYfzAFfhIekU1akv3kIZtLJk+j3jDawKw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:30 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Murthy NSSR , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:58 +0530 Message-Id: <1536033560-21541-12-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 02d4ec1a-2e43-47e9-a1bc-08d6121b3e9e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:2j5vgcfagvJEd0eOhQn2O7YehKXOr1ZyOu7OxpAE4tXT1CbMaKR6f4ryaGN9hUdkSZgSF0RxXqqEFWDFUDvrnIabNlwLaaNkQNcyNzSsabyasbBxlNJwZVm2LJLT4VdQtpgHtRWVPCaIULSDLzOJBS9zkpDUDGHq7G6MEckhp5TV9FWDCk5ESUK8xX+1NiWYle8qWxUunpzWR5ud1zgovVqpmvwE74kBsjNuSApHYzHdgXk2aRZ42vvEW3Nygs+3; 25:d+PklkNjiC4T6i6yWP8dds+XobN9W3cxzNJZDm2C76NxD1gGy9QOI+JepqfhhNX2fLpskALTpnx/JfWrRDkuOsGA2vQnnHf9+fr2yVjC4HbmJjatG68jFzW/KuW2zPfZFy5PLkdGRF6286M6fG1JaRMvKtf3+msMP/zqDXRL+39Xd7P0raS23O4Cp7xb268hp9Lq7+cKxdVu/oBymNyxUD8X27Nq35hYOMAgvjy6G7ufUtVvnUe5NR7+tJOaLpCCk1C6NZwC2OJ2RmlrAJlbv3m01OmGdBAKzqbbOnv+wr9R01BtasyudOJNN0HK6yotLpnULJv/42x8cLfIys+obQ==; 31:kX6UysNM8QToLOY4yXnXt2AgNXnrF1yndHkmAD0MuDxUVXM2IGkdatOCF+qgjNzjNc+3GtrDgHd+AmUCaz0U7ecTxz5o77VA8v5JV7MEHUMSiDLQOoUSWgYIIzetimm3TJw9+dafl0JT8RefHNUd9O6ydi17cZA67l6AoLfDSCO1koYoL9j+G7BiiexX7jTsXO99H3Hjdkb2sEHw2hQ/e6lkI/0qhEpIBe0mnMj93W8= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:AKeS0QTdbYA61hXD4a+6fBstBRQmf6q6aVW5R1QHMhgFFvvjRldtfs+d3eCUCdU/iay10vODIuQ1ilESINqiOzhtR5hVZm97lMwpXt/9lUGg/OGvaE4aIQZTyxit1MCYpNxi9/OmjCjT2bY6C4fyQD4LptNec3ScLRkhaA5nWpVjxfHPJtvUROtIidP2ibc+n0SnLT+N4x0CnCrRKASj3/DKt1RoX2NwC3a+nFqhw/SD1X57o3XT3R2xnUQ1J0K4K3b9SMrd1UYUec9qNwsO7ICNQ2Yw86Io64itdfwWe7/5Dw4S1B8z0TrjrXmSiLecHoP3Srq1OMmlS3d87THYJHQ1W/qClGRHPi3FuU9zPg227fmTsymsTZ3Qrv7w41w7hrfVvbTT7m0fHITLl9SIsKXex7x7+7K5zBGuHPYiopRkbnkgIjaNBY+JlaA6txwdPhmbQ+ES+wVSjtICqnfhD6r6iZY33kRLmaLvdUdVywUNy7CT3DKGUPbQhSa+NK4+3qUrquMumNeT1iw0pKqCEjnqxob8fhp8iey7mZ1IqkOL0HlFQ3+2r/V0GUkKC12n8piiSrsTnPEKzSdVIxcrukV6TopO35Y/kOW5d2Meenk=; 4:rJdUoHRVuPOJ4P+mIb+Yz/ahbTrVWFaeFz5oVTRdzeIrq9MX9IGkZPejrUFcULlkCk2IbAL2FHf0Oc5fGFMx7BVLTzXBtY1h+FRGz50IOXKRB45QWR7rurV0ePv4FPPv3zAjDcOEw7e1qGyCrb7ortoWXEW7z6ZFgv1ksiuLBNeRe5nBKdKIS53CjDuNVVczHXLb0lemK1tQ650pWodP9e7tg8he50IGxfqErP4PEhGv26qPhZKgVf+O1nDsT+kTm4Rz1v0oe4QYAHHQpl8fCw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:eryDDbmFayPYMexcLNJnn5/yeYi2YKbm0n4+yRXzv?= M2dYV10IVH/0dnubGCudwuNRQGYwbTIsMkcwRA4AR1l7TS+EmLZxTXXH4/ZIw2MyLRN6EdHJIHpbC9zWQ+4enu66A/cEtj5xzx+5MnNjLdtSuj6YTdj45TsnaeaG2uxWSxKe9QYsQUaEpwQD07z82P0bRn3Q6CfUEwQirD9onbpzqdOG/4E2jugmUmf4dyED2H1eGZS2aQ8dQi28rz6kqIVUZgRcyQJ2tppRlEYu9YuR9D119HbPvHvHgppLpxXbf2Xu8d/MqNPIUAtkwHinZJwO7YrnKLn9QaZIDCsEYyWqhMX1qd8RTdWadZfzacAkmjqxuM8UD9Onq5aJ1G/jpOnHWPjMbREvOCc3POVQTbCSUZuNEyXRGH5KP59/gfzsA9idR03nw41wQ0Z2kuTJjEUyDOOZv9LpCaNnECeOia3pTXGpZTVHoMMSvV+R/qj72qub/bXovVXGDgRkYlVcoOVTV74usKKDsYDNXaej6SkyzLLegneERYYy83oZXQMy32JPA6eQCBUkKl2fWcSwoWpTZaLA4renMIP+fpxNAv66UTg07DzcXH03qm/ggQvdYLALTclhy5FOdYZ3EElaV3z8/Ql6ddBiIcYmIN3QU6h9Jm0Rzmx20lWxk98d0/1nFZdmKmBIsb3hpvvuQ46Aw0q89ttJNeBoO0l/RP62Jn4v5+pmMLtputINQy5WoRZVuYJ1pHPkOIrCrHlPYmj7lb70C3ee0VqzjOhzUeUQigK3prk3sho7HcaEc5v9vwKA685LoDnn05ITTh37uK5giwyXFRwa277QhxHoMWNB9bMKhimRnwRy3EELy9jhGiCEKui7dI8kj1yaT140kw78f0RvjOVhqRjWZDVHgKLahM02PE/QeSGSILMelo7mxoKlXVAnMNJRKw/rmTvku6gIZo1caZEPagqTvScXoPqEq1+4tpM/90bUIhTnkRj9h4ekCI21vP7PapzNIzg7Lsx2uAXIsZ8cpwBzfVh8iP2zM0aa5oUBB4CMRiShP9GzRoiyTlLbDwlFQbrbYMm2fzWy+lRJ2qZpKy8E1p7KnKGA/rJx/X0WClTl7lsAwO2ph7zZPEV5epL2CZVogWH2qpTbTUeT0m6UIG7G1Kc9H3LbcyWZzPc8LWwkE+DjTP4elgP8anhphIEQShXfuaPEWqEUefvFv0HpFyOI99a4Lqgxr3L+6OhpASDS2TW63E46SICfG0= X-Microsoft-Antispam-Message-Info: UFamUQ5i9a/2owxpTO0MaHTE41VXmmuHyhxeL/pYmbrow23wV7npIkQYyE52WOFwFnIkUsmw4kf3kYaOh07yzVivrtL1FsdJ14pMwhtUC12KPu+/PvKa1t7DspCopwpjAa2m5mVhSC4ZSdKGrvkkfK1U60flQyw0ZZ7EWNNHF7QoJWaXaCockP6SIwpkfWNi6AZ2wcfrivW9b3+240Il1JIkdIJJ+0HhqAYZdnseduBdlUhEHFDUHgwArVW3TMUXh+fjvQUDZrI9ZNK/l96SB4h/2TATulh5+Lyzn1JduznOWjglX4xjuNIddxX/AZ66mGqKbnWbEK3XznYEMjRoBWnypLz0qYVcSvEPfiV2GII= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:NPXeGt22wqt+7AkVJbiIaGTz5ivFDA83Vy8Umviu12y2txn59qQ1MztuEqFaYl5qv4UDDW8FMU+6w7TbQlPNCY084JDHJOl+dAADrJXZH90YJNzT1CMChTXwHyn8nl79xWGGuuDISvoHYuWhPCos6+CaRoYBIpBz6BS8MTujZ8CaUMS63JsiVjmkE7xgguUXMXno++wHuY9IDY5Ofe6JnzsqU06laujr59Hw3Kt6UFrwvsRAro18WNa++WqfeyqASk9WeeISp1vY6UlUyWUqtGrt3ZJYn74iIbKhdmH3IciLuR5Z//uTVJ6/uMnjt1BoNiDEuiACS/B/gjfb0cbeemQdIn23BXdUoxK4KvFAKPwsUUtBRmJXNmso4uUn+zbhvANgNvoPWFjpv0LHAZjcSkQqQmKcziKsSwWrm+HIaNAlZPHCsq0B6QlV3hdNUMwHnJa9pA7VDrHtuFkCXH0D4w==; 5:saSdV/zHxjeNgI6S9w0m7O9RhnPt3uN3bfwmDVHQ9fpAa605hk+5+C7qEKEGQySFuL46Q5aT431XIQNYhEcn+S7QX68Furb10mMXz+AtpUwAfh2WBQSKXnrEDJvkk5c74u9nMZxuFWlaZOz/7kks1VEmUzXq7LMh2oQhcEOTcz0=; 7:WVM1HLZZZl5UYrStIL64ZfFSs0sGgqglEPg59NypNrEJxbnwa1C+zKtbsRKvj1CqLG6AnMNo/gv/+nfglfOA8dBaozQpphrbVLYp5SoH2sPY34HoLVCE9/GJmJJ/OILXBE3JHbmvCcAbN/5/KFUCDAsbRqLwkrZCfxfl8dKhF2DwQVIv25I1DIJOgXSaLpP7wF21rQNyl3Xxl0PEe3j26NwxvWVjElh73Ntruc1tYi0esJ8UKjneOKr7Apolixll SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:30.5223 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 02d4ec1a-2e43-47e9-a1bc-08d6121b3e9e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 11/33] crypto/octeontx: add global resource init 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" From: Murthy NSSR Adding initialization of global resources. This will be saved as metadata in cptvf and would be used by common code. Exit path for failure case is also added along with the new routines. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/Makefile | 1 + drivers/crypto/octeontx/meson.build | 3 +- drivers/crypto/octeontx/otx_cryptodev.c | 3 + drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 11 +++ drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 3 + drivers/crypto/octeontx/otx_cryptodev_ops.c | 90 +++++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_ops.h | 3 + 7 files changed, 113 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile index 4582540..064c9b0 100644 --- a/drivers/crypto/octeontx/Makefile +++ b/drivers/crypto/octeontx/Makefile @@ -16,6 +16,7 @@ CFLAGS += $(WERROR_FLAGS) LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_cryptodev LDLIBS += -lrte_pci -lrte_bus_pci +LDLIBS += -lrte_common_cpt VPATH += $(RTE_SDK)/drivers/crypto/octeontx diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build index eca1cf1..60ffc97 100644 --- a/drivers/crypto/octeontx/meson.build +++ b/drivers/crypto/octeontx/meson.build @@ -5,11 +5,12 @@ if host_machine.system() != 'linux' endif deps += ['bus_pci'] +deps += ['common_cpt'] name = 'octeontx_crypto' sources = files('otx_cryptodev.c', 'otx_cryptodev_hw_access.c', 'otx_cryptodev_ops.c') -cflags += '-DCPT_MODEL=CRYPTO_OCTEONTX' includes += include_directories('../../common/cpt') +cflags += '-DCPT_MODEL=CRYPTO_OCTEONTX' diff --git a/drivers/crypto/octeontx/otx_cryptodev.c b/drivers/crypto/octeontx/otx_cryptodev.c index df88a84..ed1a3a1 100644 --- a/drivers/crypto/octeontx/otx_cryptodev.c +++ b/drivers/crypto/octeontx/otx_cryptodev.c @@ -113,6 +113,9 @@ otx_cpt_pci_remove(struct rte_pci_device *pci_dev) cryptodev->device->driver = NULL; cryptodev->data = NULL; + /* free metapool memory */ + cleanup_global_resources(); + return 0; } diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c index 02ec3ce..f8b6005 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -241,3 +241,14 @@ otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name) return 0; } + +int +otx_cpt_deinit_device(void *dev) +{ + struct cpt_vf *cptvf = (struct cpt_vf *)dev; + + /* Do misc work one last time */ + otx_cpt_poll_misc(cptvf); + + return 0; +} diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index f3c7a45..82d8255 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -147,4 +147,7 @@ otx_cpt_poll_misc(struct cpt_vf *cptvf); int otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name); +int +otx_cpt_deinit_device(void *dev); + #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index cc0030e..d109159 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -8,6 +8,7 @@ #include #include "cpt_pmd_logs.h" +#include "cpt_pmd_ops_helper.h" #include "otx_cryptodev.h" #include "otx_cryptodev_capabilities.h" @@ -19,6 +20,63 @@ static const struct rte_cryptodev_capabilities otx_capabilities[] = { RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() }; +static int otx_cryptodev_probe_count; +static rte_spinlock_t otx_probe_count_lock = RTE_SPINLOCK_INITIALIZER; + +static struct rte_mempool *otx_cpt_meta_pool; +static int otx_cpt_op_mlen; +static int otx_cpt_op_sb_mlen; + +/* + * Initializes global variables used by fast-path code + * + * @return + * - 0 on success, errcode on error + */ +static int +init_global_resources(void) +{ + /* Get meta len for scatter gather mode */ + otx_cpt_op_mlen = cpt_pmd_ops_helper_get_mlen_sg_mode(); + + /* Extra 4B saved for future considerations */ + otx_cpt_op_mlen += 4 * sizeof(uint64_t); + + otx_cpt_meta_pool = rte_mempool_create("cpt_metabuf-pool", 4096 * 16, + otx_cpt_op_mlen, 512, 0, + NULL, NULL, NULL, NULL, + SOCKET_ID_ANY, 0); + if (!otx_cpt_meta_pool) { + CPT_LOG_ERR("cpt metabuf pool not created"); + return -ENOMEM; + } + + /* Get meta len for direct mode */ + otx_cpt_op_sb_mlen = cpt_pmd_ops_helper_get_mlen_direct_mode(); + + /* Extra 4B saved for future considerations */ + otx_cpt_op_sb_mlen += 4 * sizeof(uint64_t); + + return 0; +} + +void +cleanup_global_resources(void) +{ + /* Take lock */ + rte_spinlock_lock(&otx_probe_count_lock); + + /* Decrement the cryptodev count */ + otx_cryptodev_probe_count--; + + /* Free buffers */ + if (otx_cpt_meta_pool && otx_cryptodev_probe_count == 0) + rte_mempool_free(otx_cpt_meta_pool); + + /* Free lock */ + rte_spinlock_unlock(&otx_probe_count_lock); +} + /* Alarm routines */ static void @@ -37,6 +95,20 @@ otx_cpt_periodic_alarm_start(void *arg) otx_cpt_alarm_cb, arg); } +static int +otx_cpt_periodic_alarm_stop(void *arg) +{ + return rte_eal_alarm_cancel(otx_cpt_alarm_cb, arg); +} + +static void +otx_cpt_common_vars_init(struct cpt_vf *cptvf) +{ + cptvf->meta_info.cptvf_meta_pool = otx_cpt_meta_pool; + cptvf->meta_info.cptvf_op_mlen = otx_cpt_op_mlen; + cptvf->meta_info.cptvf_op_sb_mlen = otx_cpt_op_sb_mlen; +} + int otx_cpt_dev_create(struct rte_cryptodev *c_dev) { @@ -84,6 +156,20 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev) /* Start off timer for mailbox interrupts */ otx_cpt_periodic_alarm_start(cptvf); + rte_spinlock_lock(&otx_probe_count_lock); + if (!otx_cryptodev_probe_count) { + ret = init_global_resources(); + if (ret) { + rte_spinlock_unlock(&otx_probe_count_lock); + goto init_fail; + } + } + otx_cryptodev_probe_count++; + rte_spinlock_unlock(&otx_probe_count_lock); + + /* Initialize data path variables used by common code */ + otx_cpt_common_vars_init(cptvf); + c_dev->dev_ops = NULL; c_dev->enqueue_burst = NULL; @@ -98,6 +184,10 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev) return 0; +init_fail: + otx_cpt_periodic_alarm_stop(cptvf); + otx_cpt_deinit_device(cptvf); + fail: if (cptvf) { /* Free private data allocated */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h index 3f2d829..ac88fa5 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.h +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h @@ -5,6 +5,9 @@ #ifndef _OTX_CRYPTODEV_OPS_H_ #define _OTX_CRYPTODEV_OPS_H_ +void +cleanup_global_resources(void); + int otx_cpt_dev_create(struct rte_cryptodev *c_dev); From patchwork Tue Sep 4 03:58:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44187 X-Patchwork-Delegate: gakhil@marvell.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 906F35F13; Tue, 4 Sep 2018 06:03:24 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id A062D2F4F for ; Tue, 4 Sep 2018 06:03:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F/fWmOtQ1tJiEIxLMobpeSv8egzBbWhRvMsFZoyO2iU=; b=PCaitebkOUsZGUA7qSHviJRel3KJJXLMil4U4EYpo50KE/kXUOpXuKxiQBPJEMVO85Gvzj8ukX3x5tkB8EJplr+IZaJhtTQ8NKBcIHmoaqSPtQFM0Zqt8RpAGve7fqrzHalwpNMGSR3cXhjDZgxke0vjs6m9w8Wu4vVehcjKwfk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:35 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Murthy NSSR , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:28:59 +0530 Message-Id: <1536033560-21541-13-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5951d053-210e-48bd-a84c-08d6121b416e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:9SjN9UpqN5r1opupG2mudZ9lXvdPTUiJmZzVq5/AnCgMICT9tSEPgPo+U7M6uubaOqqH/iPO98n6l6GfpotGZxBJ/onRhgFgSh3W98C3DUBcgoFPrW9L0kIZREBecJXrTalAxazSyjzUJymlGMDO7P5KXJTTNvLudVzSC3a5DsGaS3lc+269zUYWcY7nu1/IvaFgTkOT1sw8wV+kFC/Xi3Y6U6ftaRTMQgsjmSjnaDdMiIf2PQBq8SkA1SpjXMKR; 25:JlJPtKgSW7rdT5Og6LshUVgvxATMV7vANyiiJEHwuBmm4MPls7opCyk06/D+VPS4G5D7VhdkZSuybgtCkCil83b9+vOWhe4UvG4BONcrm3+v3Fv9bPOPzfNVypeqHKOymSUw0m56ME/Ddn6RpWS7nhz5oee2Th/Ip7UI8YNcTrgs/Xqggvdb4jmlF9ubsAtK3TNv2wdWT8KNbi5D18en6KlA2AOlJf1lvqrso+15S01KZ6ngVSJpQsInMIBgjxlfV9jXKfyPpvODpdz3+Xa9QbDJ1QYcwBUxJy388SkdDlNSN0vjdX/MKcJ7q4FY1orJ8H0Y+kTHSHVaX3DBAHjX4A==; 31:iv8T71872b/qVKy88gZhKYqslGTsQfbqUEptE4P7zT92bJvXK7p6BtzblrWw25xK/TAJmy50DIqawehFULVgvDVm0Bwl/aUdiSgBkih18mcRT3q5qNspj0lQQKj45x+toaVR+4q8+AWtHHBDEMQ6CtfJDABuKHBxwZr0nbVusqeJ0ZFwyUy9lQHySp6c5o8icK9Q/r9WOpZ4gOmIjPALXeLu6faRZYbdxsBkWJAt+qY= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:7PdGIw6Uf14nfTMGJdW+YU94k3LW0GaeopyZQQ1bP7s0wi8GKhJeqMwfSjbi6RHegQNB7cdOK/iyHw5is0zRc0ZSxHbnqvqs9o/54wp8OWswnvYfWXbeO5kgi32tmWn5fSWFGsJ6nwCZRCDFh5Lk0o1R4L+hncavs42u//klX+L+HGLHAaooVUS5F9PzpDg65ykX/82Na1do7XJpxu7L4oYeTM5bma2t8DJR/PidJo6E9e/5CARJFSX4z/2tX0drubU/JINmlkzxWnwinXc6HfeVqwBTnhi4jM0eZ9Dpm/hnS5DoSBUSXRGzlOhI8bwRJaryQxq8AK0gptWyYF1//wzFV7k/12dbN7r6Hi7f+UhM3RYobfQe4JurNuhd8dtJgBVGuv//q4+7H7M3kn/rKSN0I8Ui2P1Vo9MyoFTKGZ/VC5+UXw5+OjQpbCJJ7XYuq2LXsdgpcdk0FkV4cWHpW3YZELN1uMpZQrtj1K6YG/d1TvcwRhwmXFA7e40qMFxc84CXrYZ4GmkBUZF7Tihgi7BoKd4HofGd/0YkjzsIR9xH08hkQx3DySAd+xWsd/ljT8rCVYf0RvMMrgvVDbfOznqQu+xFZ6f3DjaNqXygO+o=; 4:kpZPYJzfKyyylWmOB5ToolO2u/Ux+bMT0RaWxw8w8Pqki5mgGskHHtUnKASkX+WBEXx2Ji+9CqIX6VhwhjMec0Dwq2tfSW6bbP30KLJq4tsioINOF6ZZkar0U01ICEpTLlmoh9P5pNqSDvhWj7vvHnq9h1P9tazdft3HYQSSyENlFa+SGCPsyyksYY4T9657lHyQOP8y0qWMlgjgihIDe/1sM+KWcOn7Pdqxhv1IZ5bUIwQJsJg/rGo96OKqms9eFgJpHI5kdPJu3cyreoqH96zkFECa/BRV88DcsJNPxih2ye9x/iEwzzcDXxYv+j34 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(35073007944872); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(15650500001)(66066001)(476003)(8676002)(47776003)(486006)(575784001)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:S8/MoPci2SygHi1d08xFVhg0/u48QUOOXeUiMz7Qc?= rWEAqKsKZIqn6t7p5HkqGs/nrU5aqJrssKeebvm5KdDMvUUAphJEcXfj+4sY2n0/eN9/sOkcSiLK5cMQgPAZaEHePR4iQJEmK/CQ7TWd1DNXuTQqYsX7tv9yN4C+5QHCfge1CvTUVPIdHIePBv9fsdEoUyAsAYSQUmyAJ6tQWvqGEHeja46A9urnjbRlOo2KRj+nD5nvJQaIZTVcReJ5YamndPrAgA4Bqi1ZMHxe1qIABV1GDKkwgPz2fBekbCp7af6pokYwT/PqVaub2b2GWcZ1b878IcVtcDsTHoXPcMI2uMKtULwBNTfiwiovdVlWCCj+ktVLqNWB/bJQYDI8J0KaoVoOBKxnWKxRGwWQJaBgNw5R8vtBdLFQc3eNIpN/dzLBTnqngDhp8RPuPAyANjVk1HIaNPNZd+tx5JlHLCxyYw1nTNWXOctb6QtYWVChOOKNPHH71RXRUjtQhi91LLt/v3sj+NDXiS4+mbg18z/UCcnO531Bus+tN1KGDjpXA8lqXHCEz9rgLVpr0SJ3HOVvEz++JoU12eVtp3X4NCYei8vu+UZa6u8vm1Kw41uZz7MmM/Y4ibPq85Mg/C800e3oruVy/onvLBRa8+0I2q0q9NJYhbCYKBqZREtPNTzdw4y/31GGoBi1j/G8+4dDWfqKn1k8vuqfKw2uR/T4q2hnMvpqm3N+z7jh+qN+eX0dEu/62ww5U6rscGoAzt3+b7CxYG2Or7E3SqtRUAH6WbHWMh2hXGcbQPOMnSVvnqxXFIcftvpjkD1Xbdu4Ot9Lfvy5x/e6FTT6hjOD9r1NTPvfdt+EAb0UXsM2OsGjDC9BzN3nat+MD5IDP2EB2U0oEG6Xva+eG9vkuC9MJVxV1mExkBLy0fy1TIWnUMWV687ZMkBC1BhAfSgn5DHHmwrRN9aCjmncXHWPJB0+EfgQKfsIep0k/wergDnQlT5MUYFWKm0tryYT19l+GFVf8gmETx4TwmabIiJTh/MoAbLbofVVwaGFfa8wbjDdfcBb6Pc5SFBBmAkzsNIgsspvLMoIkyuOAzpkYuiJU8pIyvxZ09iU+XiiaFPBUPEgV75Afwg8oAjNsASST+NwgXVGuHdI9VWyDSj3qrNiUHN12LjbbOZLaUqJexTOy3b3VpB4oyiFEs45Av2zBKd4bFyZ6jai9SmwXhstE/PZiInQmuLPmE2jM5stQLMP84vCmAudlwn5IvYrkNxB5AAhzk0UscllKoDpMpBrrwgid/SSCNULfjTqdSbkl314hQDrrr2vqVb9A8= X-Microsoft-Antispam-Message-Info: B/CTQBrSWlhNobVv2QR/VYJJFdCmtDXPTdsmO27xelTZ4l05Mu/UjYp4x8Zgy7yGAEn2qHxR7uRHzlq1frM/lHtTO2sVVJyO0UGkp3TvBqVZDwA6U7Fz8+24FRsbv378AmUlbNWn3HbH8RQ8Njp0dV3xxK6H9UO24dprcgOrvvoPMMZSAiAcLmqEkrMt8keByeHOUCF6ByIGDxtwOFFSYQHGmfcSuxwNZjJpKG+eLNRpZHgCBzBzfk1fOwKBE6AT37udKDciNGzj3c/JSws+ma8EuFi1Mg2gXN7mEWTCvH1+7S/hMU7SZlZ08gORiQWe5jPoo1g/moV4mVHQfG4aErzGw9NTpcbav6CTcXkCVnE= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:RKXb6XDwLp8pwCdUqZ//n29kac/cq+ezvlzczpAfx2klXZDK2Chr4kWSIP8VslNlpOtGuE6uaHy2owNda9thapGM8eC0ZA+vHHP33JjpH0pnmsJicNhArqDKZ/9nuD7PLqfIB3hGqwUQ3einuPXasF953Kcf5HxfYeQmu510bWT5QxwE9CgxIwSpDodQXFXUgRYQgeQ09yAUrElCAP295uSGZQQ/cvIz+mNaHvY7Vm0C6blJRP8x9rWLeVV1lUHeZZJuWrpbfpgY+NIhOTwRH+XtWS6Y+M6UaTdyKpgAUJify5B1mWnDagcZaVPdCqJU19EG91iY53u/Y+J8T41yTIW76MabTp5KtSft/d8ji08155gcAYQh1nkZbfplW2xlo90IEg5o1GpCc8F+vU7inZl5yj6DXRwIG7fWOWaXDjzv1trX6/QiQJ2uE5aMqeTw6R5eRcubvwIovqlF47pmkw==; 5:ZbtGJVDCeZAvL41X9BUglAUNyNjA+NaPReyw8xNndxE8wiCgPZYtIGFFR9zOG6j0Kckj6vmw62JEEAEYFz6C4XDHRMhtFFJiV1rvMbPfYqL8ioddDsEsUEQbafaIzgm15HEIB/OtcKLrYPdVK7Rgr94JNLEjFGQyBfBWCj0g9MU=; 7:i9iF9tuZ2CfRNyg5O8YToIu3LWQLrF+lnravP7xHRWHb8XiPtatqKO1mZ1kaTCZkyKQCP7bF0FolMpZXkwft5c+Ly/6boAXipSBXIJLrCqUteX7fh9npp+yLVyuRNozyJv2eM+N/3RNHcRAVtXgCmkkXL9/s2pBs2g7u7r/bDlY6PZqoNovCiPybmmcLJG84XARgZxvtnFuAU3kYHbM5G9cBPEyqv696rq5yG8C5nmTqHB1RxJo6zGZvoAK0MmXp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:35.2410 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5951d053-210e-48bd-a84c-08d6121b416e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 12/33] crypto/octeontx: add mailbox routines 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" From: Murthy NSSR Adding mailbox routines to interact with the pf driver Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/Makefile | 1 + drivers/crypto/octeontx/meson.build | 1 + drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 13 ++ drivers/crypto/octeontx/otx_cryptodev_mbox.c | 180 ++++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_mbox.h | 92 +++++++++++ 5 files changed, 287 insertions(+) create mode 100644 drivers/crypto/octeontx/otx_cryptodev_mbox.c create mode 100644 drivers/crypto/octeontx/otx_cryptodev_mbox.h diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile index 064c9b0..949e983 100644 --- a/drivers/crypto/octeontx/Makefile +++ b/drivers/crypto/octeontx/Makefile @@ -26,6 +26,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/cpt # PMD code SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_hw_access.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_mbox.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_ops.c # export include files diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build index 60ffc97..54e775c 100644 --- a/drivers/crypto/octeontx/meson.build +++ b/drivers/crypto/octeontx/meson.build @@ -10,6 +10,7 @@ name = 'octeontx_crypto' sources = files('otx_cryptodev.c', 'otx_cryptodev_hw_access.c', + 'otx_cryptodev_mbox.c', 'otx_cryptodev_ops.c') includes += include_directories('../../common/cpt') diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c index f8b6005..a6b5bc6 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -7,6 +7,7 @@ #include #include "otx_cryptodev_hw_access.h" +#include "otx_cryptodev_mbox.h" #include "cpt_pmd_logs.h" #include "cpt_hw_types.h" @@ -25,8 +26,19 @@ otx_cpt_vf_init(struct cpt_vf *cptvf) /* Mark as VF driver */ cptvf->flags |= CPT_FLAG_VF_DRIVER; + /* Check ready with PF */ + /* Gets chip ID / device Id from PF if ready */ + ret = otx_cpt_check_pf_ready(cptvf); + if (ret) { + CPT_LOG_ERR("%s: PF not responding to READY msg", + cptvf->dev_name); + ret = -EBUSY; + goto exit; + } + CPT_LOG_DP_DEBUG("%s: %s done", cptvf->dev_name, __func__); +exit: return ret; } @@ -181,6 +193,7 @@ otx_cpt_poll_misc(struct cpt_vf *cptvf) if (likely(intr & CPT_VF_INTR_MBOX_MASK)) { CPT_LOG_DP_DEBUG("%s: Mailbox interrupt 0x%lx on CPT VF %d", cptvf->dev_name, (unsigned int long)intr, cptvf->vfid); + otx_cpt_handle_mbox_intr(cptvf); otx_cpt_clear_mbox_intr(cptvf); } else if (unlikely(intr & CPT_VF_INTR_IRDE_MASK)) { otx_cpt_clear_irde_intr(cptvf); diff --git a/drivers/crypto/octeontx/otx_cryptodev_mbox.c b/drivers/crypto/octeontx/otx_cryptodev_mbox.c new file mode 100644 index 0000000..d85f0d1 --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_mbox.c @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include + +#include "otx_cryptodev_hw_access.h" +#include "otx_cryptodev_mbox.h" + +void +otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf) +{ + struct cpt_mbox mbx = {0, 0}; + + /* + * MBOX[0] contains msg + * MBOX[1] contains data + */ + mbx.msg = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VFX_PF_MBOXX(0, 0, 0)); + mbx.data = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VFX_PF_MBOXX(0, 0, 1)); + + CPT_LOG_DP_DEBUG("%s: Mailbox msg 0x%lx from PF", + cptvf->dev_name, (unsigned int long)mbx.msg); + switch (mbx.msg) { + case OTX_CPT_MSG_READY: + { + otx_cpt_chipid_vfid_t cid; + + cid.u64 = mbx.data; + cptvf->pf_acked = true; + cptvf->vfid = cid.s.vfid; + cptvf->chip_id = cid.s.chip_id; + CPT_LOG_DP_DEBUG("%s: Received VFID %d chip_id %d", + cptvf->dev_name, + cptvf->vfid, cid.s.chip_id); + } + break; + case OTX_CPT_MSG_QBIND_GRP: + cptvf->pf_acked = true; + cptvf->vftype = mbx.data; + CPT_LOG_DP_DEBUG("%s: VF %d type %s group %d", + cptvf->dev_name, cptvf->vfid, + ((mbx.data == SE_TYPE) ? "SE" : "AE"), + cptvf->vfgrp); + break; + case OTX_CPT_MBOX_MSG_TYPE_ACK: + cptvf->pf_acked = true; + break; + case OTX_CPT_MBOX_MSG_TYPE_NACK: + cptvf->pf_nacked = true; + break; + default: + CPT_LOG_DP_DEBUG("%s: Invalid msg from PF, msg 0x%lx", + cptvf->dev_name, (unsigned int long)mbx.msg); + break; + } +} + +/* Send a mailbox message to PF + * @vf: vf from which this message to be sent + * @mbx: Message to be sent + */ +static void +otx_cpt_send_msg_to_pf(struct cpt_vf *cptvf, struct cpt_mbox *mbx) +{ + /* Writing mbox(1) causes interrupt */ + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VFX_PF_MBOXX(0, 0, 0), mbx->msg); + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VFX_PF_MBOXX(0, 0, 1), mbx->data); +} + +static int32_t +otx_cpt_send_msg_to_pf_timeout(struct cpt_vf *cptvf, struct cpt_mbox *mbx) +{ + int timeout = OTX_CPT_MBOX_MSG_TIMEOUT; + int sleep_ms = 10; + + cptvf->pf_acked = false; + cptvf->pf_nacked = false; + + otx_cpt_send_msg_to_pf(cptvf, mbx); + + /* Wait for previous message to be acked, timeout 2sec */ + while (!cptvf->pf_acked) { + if (cptvf->pf_nacked) + return -EINVAL; + usleep(sleep_ms * 1000); + otx_cpt_poll_misc(cptvf); + if (cptvf->pf_acked) + break; + timeout -= sleep_ms; + if (!timeout) { + CPT_PMD_DRV_LOG(ERR, + "%s: PF didn't ack mbox msg %lx(vfid %u)", + cptvf->dev_name, + (unsigned int long)(mbx->msg & 0xFF), + cptvf->vfid); + return -EBUSY; + } + } + return 0; +} + +int +otx_cpt_check_pf_ready(struct cpt_vf *cptvf) +{ + struct cpt_mbox mbx = {0, 0}; + + mbx.msg = OTX_CPT_MSG_READY; + if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) { + CPT_LOG_ERR("%s: PF didn't respond to READY msg", + cptvf->dev_name); + return 1; + } + return 0; +} + +int +otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf) +{ + struct cpt_mbox mbx = {0, 0}; + + mbx.msg = OTX_CPT_MSG_QLEN; + + mbx.data = cptvf->qsize; + if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) { + CPT_LOG_ERR("%s: PF didn't respond to vq_size msg", + cptvf->dev_name); + return 1; + } + return 0; +} + +int +otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group) +{ + struct cpt_mbox mbx = {0, 0}; + + mbx.msg = OTX_CPT_MSG_QBIND_GRP; + + /* Convey group of the VF */ + mbx.data = group; + if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) { + CPT_LOG_ERR("%s: PF didn't respond to vf_type msg", + cptvf->dev_name); + return 1; + } + return 0; +} + +int +otx_cpt_send_vf_up(struct cpt_vf *cptvf) +{ + struct cpt_mbox mbx = {0, 0}; + + mbx.msg = OTX_CPT_MSG_VF_UP; + if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) { + CPT_LOG_ERR("%s: PF didn't respond to UP msg", + cptvf->dev_name); + return 1; + } + return 0; +} + +int +otx_cpt_send_vf_down(struct cpt_vf *cptvf) +{ + struct cpt_mbox mbx = {0, 0}; + + mbx.msg = OTX_CPT_MSG_VF_DOWN; + if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) { + CPT_LOG_ERR("%s: PF didn't respond to DOWN msg", + cptvf->dev_name); + return 1; + } + return 0; +} diff --git a/drivers/crypto/octeontx/otx_cryptodev_mbox.h b/drivers/crypto/octeontx/otx_cryptodev_mbox.h new file mode 100644 index 0000000..2c51c4f --- /dev/null +++ b/drivers/crypto/octeontx/otx_cryptodev_mbox.h @@ -0,0 +1,92 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _OTX_CRYPTODEV_MBOX_H_ +#define _OTX_CRYPTODEV_MBOX_H_ + +#include +#include + +#include "cpt_common.h" +#include "cpt_pmd_logs.h" + +#include "otx_cryptodev_hw_access.h" + +#define OTX_CPT_MBOX_MSG_TIMEOUT 2000 /* In Milli Seconds */ + +#define OTX_CPT_MBOX_MSG_TYPE_REQ 0 +#define OTX_CPT_MBOX_MSG_TYPE_ACK 1 +#define OTX_CPT_MBOX_MSG_TYPE_NACK 2 +#define OTX_CPT_MBOX_MSG_TYPE_NOP 3 + +/* CPT mailbox structure */ +struct cpt_mbox { + uint64_t msg; + /**< Message type MBOX[0] */ + uint64_t data; + /**< Data MBOX[1] */ +}; + +typedef enum { + OTX_CPT_MSG_VF_UP = 1, + OTX_CPT_MSG_VF_DOWN, + OTX_CPT_MSG_READY, + OTX_CPT_MSG_QLEN, + OTX_CPT_MSG_QBIND_GRP, + OTX_CPT_MSG_VQ_PRIORITY, + OTX_CPT_MSG_PF_TYPE, +} otx_cpt_mbox_opcode_t; + +typedef union { + uint64_t u64; + struct { +#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN + uint32_t chip_id; + uint8_t vfid; + uint8_t reserved[3]; +#else + uint8_t reserved[3]; + uint8_t vfid; + uint32_t chip_id; +#endif + } s; +} otx_cpt_chipid_vfid_t; + +/* Poll handler to handle mailbox messages from VFs */ +void +otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf); + +/* + * Checks if VF is able to comminicate with PF + * and also gets the CPT number this VF is associated to. + */ +int +otx_cpt_check_pf_ready(struct cpt_vf *cptvf); + +/* + * Communicate VQs size to PF to program CPT(0)_PF_Q(0-15)_CTL of the VF. + * Must be ACKed. + */ +int +otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf); + +/* + * Communicate VF group required to PF and get the VQ binded to that group + */ +int +otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group); + +/* + * Communicate to PF that VF is UP and running + */ +int +otx_cpt_send_vf_up(struct cpt_vf *cptvf); + +/* + * Communicate to PF that VF is DOWN and running + */ +int +otx_cpt_send_vf_down(struct cpt_vf *cptvf); + +#endif /* _OTX_CRYPTODEV_MBOX_H_ */ From patchwork Tue Sep 4 03:59:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44188 X-Patchwork-Delegate: gakhil@marvell.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 151A15F21; Tue, 4 Sep 2018 06:03:26 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id D544A2C38 for ; Tue, 4 Sep 2018 06:03:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TWELDeQrWTR0gemWlemqfgA/oyTILRRv/pSErf1mLPo=; b=Ld1u1GAPjlEJ94wcHRYNhLH3aBy6AJeC7c3nXSl9m7TxqPZ+WCJ2dibR3xJSaYCLkw+IJdZahp3/WbS6dvR4KqAKtgN12SvI+3Ulguo3AssfvQQuVK9nj4UsJ8kK7VCiYnTJVvQMda0xCBNB1bWEA3KxNHVsNksOhqLW0ujZPAU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:39 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Murthy NSSR , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:00 +0530 Message-Id: <1536033560-21541-14-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 730c8533-531c-429b-ffa6-08d6121b440e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:llbJdeHXauVQWIur9g7YBVAMAQzco6s7nLoLd6PX8cRve79s149Ar/TCe25ImCJF9C+ZILghf8VNzacB0xbmI3TC4kTt9yQDQOD0U6ACEyRqPLTNDGVZO+DWJiCZX7QOh0Cfxzj51YnR5sESocEEvvJx+jiFYSuTPCnKYNqMl3CYsYE1cqZdENVEg+ulkovsuH7ZWTmxzX8NwC19lWlMHHUGS792dqTXeg4f0+2N6HwrQ65dvW713jY5nop5gvZW; 25:T0P7D76T08lfeGG1O0u9FktKgDTAiUjQnik64p5T9b79+ypat4cWRKzxo2tejZqBFyMZTh7DhbUgQt6XU2DdlJlH3I6Xcxb1LDB72TmWOlR8kGiAyQxEuTPycTb8prP1i8z2xzBQr8cGg2SQE9UXTtkNQLKxz5RGvmU0GABVUHG4Q7cslYqCstXOu+exVWIShl/wtK/sb8UE+16Hp25MdGpNYxPLOrLF+t+y4oGByaXMBe+LLbmsSA8qBdm120sadxqf8cdF9QNpQco2aEHBWYoZVMACXH35YBVkwTrhbKa+J2OtY9vRy3BI3eyffCWskHqMWCPOHN+90b3BUF4ASQ==; 31:/XIoiHO1hFgRiOwCGPvFil24DzeqLdkJwXsGvDfT/N8YfjyiCjn/adR6FnlQubCZiqx5oNpaKd5UdPWWN4v0yo+sHdihqzUAdhgIeBgcavFQp6CpNqDTJykqg7zKk1eFmV065ZPrpWKe7cLbkThIEEjE3NnDjhBo14xRjdWKhK0YmWhp9E2JaFcACh1cxsI7Gy3wX7an9BV1bvDroilaTdNd/MkjBV8zEVYSYv6oTDI= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:ouA3gxnEEjftL9HJyxmYPPutyyuAd3nhUOJSYU9uWX7pPHNCmAnXVUraQUHXNHmQ9XSyrZpItNxAeuAZirgYN6XBSB3OJm5Iv1bTxelf8+lp+4s0TVgH5PJRrerjNCLnRyWtPx6DCeHm/oPcjOi5ojrjJHq5guZ2HpIZ/KdljRIw3YpDo9pw6WefSdzbJE87+pT995Ra5sihb/sNGrhfFaPgC02clysoJ5gYWZE8sVwx7wj5/aID1V6dC2kl9dPFHpr2NY5Uf6zwT/xqTt9q7GAOzz3g8615MEkP8BT8lWeb9mts411LQz9enFMYWQTKRPbjG1CX5brZGB2uBjcq1Xxlgb5kubUGV4Gg6bCTN2/Fbv6WiZuYXfQTyTdROAveB10nCYJf9XVxiKGagIU9+/UCAZyZawA/uiBcBogAPD/rJ1wKHKcisItwP+spEhMvV/GI2moTyjVWI/m/JC1jCofr4lBU52OMNHHOGyZBRxaK7lIzGnljuvXo5992h6LDNirzozpPc4bs8ic7VIA8QrSNLKiG62jvyIl5Ly8PAHWr2R5wjFYb3aQRMdmitTqY+9kmU/5UG1Isgb/KMTcjTFibgxxoIxnLsleijbpOSyw=; 4:Kjd16Mzm9ln12Qf9bHSpDoP13RX8Pr5PWa4PW/lF71KBdYwBfEasr2jFvv43A6WoBuWDAHp1vy45F9VAuEku9j43CIYzTGCFbOETEpDUegCSnfVnfuFuH/5xSFJRvaKexXDU33reTBLmuRYxJoxp4fKPsEWe+WPPBxjqK0Vrc5idbFQMAcZhpFYOYosmYdlHzsw/2Qxl4H6HCzGZDQA/fLKdZfa8J4fIJ3GGUH/VEx2zPDNvuX5BWnTHBfrSUwEWO9z+mohAKzJR0qVQnIzJDg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:UNjKIHvaztezhMjURI2ygyS+sDC+UP4kE/j+RjTAD?= UrxTUAS45nsrAPiPSezPKNXXfSjhf0qI/Tbyfb0APiOsHnsVL1dNpHknD+Wc3RFYwmYEhtjTXzjevmI37hgxrj0NEmYbSIAzqbcPHkwyEMinxbCBy/0mJxl8LL+iZqT4vHPwyoNHDBZ11vv138GtJQTTzcFqx83yNSCijSi8AMYCs2eLqxspqmoh9D2IzZU31jXzKeuOQFo/aYUITXhllSLX3+z+3t6QANbVObNnESd2fDJD7JX5dUNXc0kaOk/Cvv057HSXh0n7jVrVQNqkIWwh23q0Q6+wvXuAjtmKPf/XJ3XvVTQzL8grgrwSXvwiMuD9L5Yi9vwY0nQL3sTHlgJL28/zlLSAzRXuoH6GHIsNLok999MxfmqqEo0gfsRfufAXcq3UTwGB/8fuVFiCRswIokoowEw43tozKCnvFN9ZejsEmAqUHxJt/gSDOP6vQPTv+qxRxgzlR02v/nbJpczFLLWh1InJb1gXLcvH+rMJUh0c6i4oIyFIVYtrN/oeBSkjRjvZq5ERPN0OALwokXPzENBIqlVfmwr3+zwb9W14zv79GxoRoDxX5WhLLcorVIkYtserILCHIKOePBLxXzPHMsLULppgvoau8VJmZs6Qs78fKXR0tlBx8ErXg9ZJmcmZ4/dElZ+SSRvvwzKH+42YAdDEE14PqnRJsRTGAnwwwoxkFPW824tCDeI5OCy9CLYLl9ndZdBHym3iSkQzdkTi++pG5DVpys3f/5z+Vc+jipA2ezSg1vJAT+FsarCJ4JeN/fD4UWO4gOKRg+8LdkORY7YQDSrfwLeVhOQTloXpcSKSjEJFIBhkm2Vpr9vXp374e5MYmJvq5+rUYlyRO5HfBcdPWRuMUScl95B7Ydl7Pj0a6khciug+BQ+WxDQCVXKoq5ijZmAOsVFPh9cr/QfpmUaz+XDviXEUfcKDbfOwE1MuEZGE2ncr/fawG/S8uzrO0I5flCNFcNDNv7+XTs8b+BH/SdNvRf95YM/XNPG4jREttHwgZZZtDR4kwvNAC8U7k5oc4TazA+Iyuri5a5DQn2I7yGDA5qOhBcJkvahSB/qcL1HZyUfB63A3dMtnKQGzdz8iP33cCOjrfTubpD0UiO/agf2tIRClp0sKvSRdc0Dl5m++0QXnl2YtsaqQB3/bUNZo6qTM5Nwl8pefIL9pvEqBKfnMuuptVGf8XK3Cm3TD0NkTbWQmOpVMHgnuj4= X-Microsoft-Antispam-Message-Info: X+mXCO0nrFjGJ63HX4p3TRNM1pHlV2QRaOsMvcE2evFEhhjpELv5Ao6PjSOehdqddmmsJ7BN9rJC8j0Ox4HH1PkfEl57Sj6DpgDpQTCOdRckA60+MJo5PBW9xQo1CDssk2Jf9KEeVHeWdygOSYWEon1LNKEu83x/Wf41gfsSwpencGWKZe9QksR75f03wV0pPnEDYggc0Zbam6NAAtEwIJM4wRiDXULL3QPU11vFCZM3HXf5gO3Aq+ID4NTlaIN00elkYFnXTL5vVBs8I4PreVbneJq/Bey5MDH0296bpdxf8rCICRrGKULHF0wVZQ7RV64Gkto7QEKbvU2lqFAXBaSeVzSxLvs6DKEXlGE95mk= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:zZlGO64+rJyc5kq6kGcbFg/O4R60pCNf3hXewZbR6ZHmoBcoCylCNJlLGdFPtoqw/JkcqQw59g2FR2xuX1xkn5IWnpKEm30eZKWH6udc3SIK0jZfx22YIvfEHdBLHmsZOXUsXwMYhOT965waw6E7miIxt505ea7bFwKGScqyoK5WDQrfiYMz5k6StO8jXJDMECps/TeJq0ZhU2AzLKTq+CfS4zG9ZN3Fn38soOW4LdwGus0PRHxj2D/Xl2lU22lSAhoxwxZOc0Dk1GQZU/O5TN5OBKP4+X1XCSQvS9QwPmV30dZWT9+cNuUbW0eE5aFVSM6TeOFdarOPv793Mva7fg0+NMba3dfBP+vdwPahQ9yTG7n6kkPLlD2+wJlprsUUAi6WySQeV8+ukQFlbuUcCctmHRo0eT6NRkQWZxxkUw336/mHsl2TOFLpcV5SbocP2M0PJ+Uo5c2NJ6oLVlSujg==; 5:dnC8jVL3xk4sQMYbIe9Y5wzWae/NtZJhXPN+sAG7KbKV8GCSSb2m+8oKmXW11MCSI1rC9AFJNEW3woa0LmftWzxEIAty3jckhMkafzBB+6cbQ7wGZ93t9K2ihnMbaeUb9v3aekZD84ufNoFgvDGYxAirKYI3IK5w+dKrZC27Nxw=; 7:SCXoX+xGCN/pAz1g2fCDYyIB1BQKqEgxTBmmZNjp1Z9QBjAjS/4U16enfbmSn4bgxjebOz7i6iZgq62UMQweXP5mx+LIX+hRCQ8J2ECaTaGO6HLSx52IxM6iwQz2qru/Ga/TMXVixQCgkihbxFMckKqJqowZmSdssXQMf+k9LZMNZyWnyzUvF4hqbscRlwarrbYp33FKpnHayRnxyBsLoudk9g126zvFBjEf8Rt2tyJNLav7UbTj6oNDvCkjczHx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:39.6473 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 730c8533-531c-429b-ffa6-08d6121b440e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 13/33] 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Murthy NSSR Adding the following dev ops, - dev_configure - dev_start - dev_stop - dev_close - dev_infos_get - stats_get - stats_reset Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 57 ++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 30 ++++++++ drivers/crypto/octeontx/otx_cryptodev_ops.c | 94 ++++++++++++++++++++++- drivers/crypto/octeontx/otx_cryptodev_ops.h | 4 + 4 files changed, 184 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c index a6b5bc6..d8b8872 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -2,6 +2,7 @@ * Copyright(c) 2018 Cavium, Inc */ #include +#include #include #include @@ -265,3 +266,59 @@ otx_cpt_deinit_device(void *dev) return 0; } + +int +otx_cpt_start_device(void *dev) +{ + int rc; + struct cpt_vf *cptvf = (struct cpt_vf *)dev; + + rc = otx_cpt_send_vf_up(cptvf); + if (rc) { + CPT_LOG_ERR("Failed to mark CPT VF device %s UP, rc = %d", + cptvf->dev_name, rc); + return -EFAULT; + } + + if ((cptvf->vftype != SE_TYPE) && + (cptvf->vftype != AE_TYPE)) { + CPT_LOG_ERR("Fatal error, unexpected vf type %u, for CPT VF " + "device %s\n", cptvf->vftype, cptvf->dev_name); + return -ENOENT; + } + + return 0; +} + +void +otx_cpt_stop_device(void *dev) +{ + int rc; + uint32_t pending, retries = 5; + struct cpt_vf *cptvf = (struct cpt_vf *)dev; + + /* Wait for pending entries to complete */ + pending = otx_cpt_read_vq_doorbell(cptvf); + while (pending) { + CPT_LOG_DP_DEBUG("%s: Waiting for pending %u cmds to complete", + cptvf->dev_name, pending); + sleep(1); + pending = otx_cpt_read_vq_doorbell(cptvf); + retries--; + if (!retries) + break; + } + + if (!retries && pending) { + CPT_LOG_ERR("%s: Timeout waiting for commands(%u)", + cptvf->dev_name, pending); + return; + } + + rc = otx_cpt_send_vf_down(cptvf); + if (rc) { + CPT_LOG_ERR("Failed to bring down vf %s, rc %d", + cptvf->dev_name, rc); + return; + } +} diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index 82d8255..7dbc41e 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -11,6 +11,7 @@ #include #include "cpt_common.h" +#include "cpt_hw_types.h" /* Flags to indicate the features supported */ #define CPT_FLAG_VF_DRIVER (uint16_t)(1 << 3) @@ -150,4 +151,33 @@ otx_cpt_hw_init(struct cpt_vf *cptvf, void *pdev, void *reg_base, char *name); int otx_cpt_deinit_device(void *dev); +int +otx_cpt_start_device(void *cptvf); + +void +otx_cpt_stop_device(void *cptvf); + +/* Write to VQX_DOORBELL register + */ +static __rte_always_inline void +otx_cpt_write_vq_doorbell(struct cpt_vf *cptvf, uint32_t val) +{ + cptx_vqx_doorbell_t vqx_dbell; + + vqx_dbell.u = 0; + vqx_dbell.s.dbell_cnt = val * 8; /* Num of Instructions * 8 words */ + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DOORBELL(0, 0), vqx_dbell.u); +} + +static __rte_always_inline uint32_t +otx_cpt_read_vq_doorbell(struct cpt_vf *cptvf) +{ + cptx_vqx_doorbell_t vqx_dbell; + + vqx_dbell.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DOORBELL(0, 0)); + return vqx_dbell.s.dbell_cnt; +} + #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index d109159..2bbf82f 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "cpt_pmd_logs.h" @@ -101,6 +102,97 @@ otx_cpt_periodic_alarm_stop(void *arg) return rte_eal_alarm_cancel(otx_cpt_alarm_cb, arg); } +/* PMD ops */ + +static int +otx_cpt_dev_config(struct rte_cryptodev *dev __rte_unused, + struct rte_cryptodev_config *config __rte_unused) +{ + CPT_PMD_INIT_FUNC_TRACE(); + return 0; +} + +static int +otx_cpt_dev_start(struct rte_cryptodev *c_dev) +{ + void *cptvf = c_dev->data->dev_private; + + CPT_PMD_INIT_FUNC_TRACE(); + + return otx_cpt_start_device(cptvf); +} + +static void +otx_cpt_dev_stop(struct rte_cryptodev *c_dev) +{ + void *cptvf = c_dev->data->dev_private; + + CPT_PMD_INIT_FUNC_TRACE(); + + otx_cpt_stop_device(cptvf); +} + +static int +otx_cpt_dev_close(struct rte_cryptodev *c_dev) +{ + void *cptvf = c_dev->data->dev_private; + + CPT_PMD_INIT_FUNC_TRACE(); + + otx_cpt_periodic_alarm_stop(cptvf); + otx_cpt_deinit_device(cptvf); + + return 0; +} + +static void +otx_cpt_dev_info_get(struct rte_cryptodev *dev, struct rte_cryptodev_info *info) +{ + CPT_PMD_INIT_FUNC_TRACE(); + if (info != NULL) { + info->max_nb_queue_pairs = CPT_NUM_QS_PER_VF; + info->feature_flags = dev->feature_flags; + info->capabilities = otx_capabilities; + info->sym.max_nb_sessions = 0; + info->driver_id = otx_cryptodev_driver_id; + info->min_mbuf_headroom_req = OTX_CPT_MIN_HEADROOM_REQ; + info->min_mbuf_tailroom_req = OTX_CPT_MIN_TAILROOM_REQ; + } +} + +static void +otx_cpt_stats_get(struct rte_cryptodev *dev __rte_unused, + struct rte_cryptodev_stats *stats __rte_unused) +{ + CPT_PMD_INIT_FUNC_TRACE(); +} + +static void +otx_cpt_stats_reset(struct rte_cryptodev *dev __rte_unused) +{ + CPT_PMD_INIT_FUNC_TRACE(); +} + +static struct rte_cryptodev_ops cptvf_ops = { + /* Device related operations */ + .dev_configure = otx_cpt_dev_config, + .dev_start = otx_cpt_dev_start, + .dev_stop = otx_cpt_dev_stop, + .dev_close = otx_cpt_dev_close, + .dev_infos_get = otx_cpt_dev_info_get, + + .stats_get = otx_cpt_stats_get, + .stats_reset = otx_cpt_stats_reset, + .queue_pair_setup = NULL, + .queue_pair_release = NULL, + .queue_pair_count = NULL, + + /* Crypto related operations */ + .sym_session_get_size = NULL, + .sym_session_configure = NULL, + .sym_session_clear = NULL +}; + static void otx_cpt_common_vars_init(struct cpt_vf *cptvf) { @@ -170,7 +262,7 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev) /* Initialize data path variables used by common code */ otx_cpt_common_vars_init(cptvf); - c_dev->dev_ops = NULL; + c_dev->dev_ops = &cptvf_ops; c_dev->enqueue_burst = NULL; c_dev->dequeue_burst = NULL; diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h index ac88fa5..b3efecf 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.h +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h @@ -5,6 +5,10 @@ #ifndef _OTX_CRYPTODEV_OPS_H_ #define _OTX_CRYPTODEV_OPS_H_ +#define OTX_CPT_MIN_HEADROOM_REQ (24) +#define OTX_CPT_MIN_TAILROOM_REQ (8) +#define CPT_NUM_QS_PER_VF (1) + void cleanup_global_resources(void); From patchwork Tue Sep 4 03:59:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44189 X-Patchwork-Delegate: gakhil@marvell.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 A0C1A5F2C; Tue, 4 Sep 2018 06:03:27 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id 201D72C55 for ; Tue, 4 Sep 2018 06:03:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pcaqDiiiJhFdCRMNn+qKyTgLuIkLdOXA4KL6mwMS3OA=; b=A1rAz/h/1iPdkuYUnxheoOVdMfbItglaG5DGpuhpb01+W7+Lq+x+sBjA3/dY8qppGwQHbX8mWDcjPU1t9THXyQ7WxhINtkH2DNMlfNDANR6V6rB3fd0vzd8/ZoGXNt94cmjV//PmeihHvma/M8u2pjKtsijUoMeVaHHRlv5mIys= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:44 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Nithin Dabilpuram , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:01 +0530 Message-Id: <1536033560-21541-15-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b1f6fe73-5840-4e7e-f35a-08d6121b46cb X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:yxFN6kt8BZvjtv9TEQCo+v0ED7YfIpiOGjZjxr6sBwHnhgJDB0LYi5XfNVJBxAZIbcpszv9iEcX0MeKT6HeaahaDQO9kcGaKpq6M9DVOtYgCoTQiVYI2vBeMblfKVvQCinkD1qHifbZ0HhPSlb7Lm7S33oitGOxdsb1+ziUZY87yI2ctsbW1QTAAuGrWjv506xXysdtzRBQNTAnlQ2ULtJLB4W8cGHFQUNOI3QnPQcXbObbOVfFcAIzMXcxTRg1o; 25:qSxNlR7HhSucvpKDN7lKWS4t9twjXY119MUKIgx6WpprLBp6wbZvCT86BTot1WnvT5fAGMNS5AkvbJ6lnnplEn33Al6E2bExzGzITtSIF/TMe8GYwC2hKtDW16Hb1xFxA99eK8WnYV9c5F4H6JSR4bO8N+Lt2k+qND14oSp8LxsFTdN3n1YG1ccpd1HS7hqdAQJn7qRhRpfCy4vwawy9xsDJuKNSi2WzGsTBRfqhq3ecCUTE4e89Hu8JADGjwmijIv4pmgNrr03p7OD6NVAHlWltFbX7PDDBn28RqVI4shWQxYVjOD5Gr57GFvlWzNp/crJ+xqNJd5wXR1XFrcGNcQ==; 31:wEPgzN3rQ/TC6p8aEkQ4b0HEyrT3pJF6mj2+WQrkv5UDhFxCB9AjXZhkCZsQOGGPOPrR9ICXYLJte7al/Lz/VEEVBtngli6FwrUBp2lTN4b77xNCHz+D8d/ZDF450YbvX/2bLJHPhwfiRawk8Q9cJRDuNN591iwMF6wHiIl9vspRIhULbx1gd19TkXjvBF291Gn9SshPQqwJKMHo89BQpSBHoR+F9euY6bEi6/3i0NQ= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:Vve3wBKpc9V6fw6oUkmUZbnjbJm7IFOvjYOL8sTUYCb/kGM7MD+Ub/+z/xCvRNg91Cbv9pgHCz59T4/w1uWb119ri5zx4f06To8/nYE3wNm5JwCvX+Qtmo0d7TQazOapw4CAT8ZW2Q5eqHDnAlownANKkHulXAH7hSxW1XbZV87V9Pv+mTc6VE99U+CrmTsBhYTyNZmHDqU8+Med97T4LRPJmCY9suH9W544vyTK2jzqKGN7zMojY2Ch81YLfYqX9gI2ciUf88pH750EiGOOWaQKmqnV4rvPys+8dXNG3CTGhmkHwMwud6qT60OPuPfaJGJmNBWt+JsdGJ0Q+SRBtiRkgZt0YRQbXRbqpqVlVGgUQyY4XZb2UuVibGDXYF7l2pFwofqZy9HihmKHAKujhBO11as16mXiNMrMF+wO6d7+8hwfd7J0Krq5fjiaU9Tkj857VXOAgGCjD9P+WvTQ24H6htz3HqOSyro2CU/qGdwiWn1keovOBsggyjmpdHXY580Ux1U1GKW3hTcFahdA8bVL2hb8LwwY8nAYB5KakxatEFP4cg+FLdbpRzbCr8xEk8cQajv+2FmWRyG9TpaBq/YyvArPaTO2+ZxEJz0neQs=; 4:x25i0/YcVOoPPbvsX5zYiSiYOwZbUGHoWzT+mrfcp3aPBsNlT/mq8JHX8bDM1/Rv2Q5rdYE9SPDp4w1s4PLhfXd5eY1U5swiLe540xppM7HSD37DzZR6yXBBQ39D+b/+tcl7gUPZjcSffwPX/HnkbFfl4L9whWNUrJ/ESxv9/uhpUyKbKjs9Q/CGklPA/XE6yag7XEWUAyjqQN5IqDi65TmUJDZRKb4LWRVKaMplRvU3TTIvzwNTDeZCt6g9JuXE8O66z79iXAcwfKwZJ0fJBg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:ubJI0Sp9BhAS+Yjzs4UhBBMTuldSfR1X7IMs6hDiI?= yDTjdIYegjL9lPR8oZki3pcwtxDouBrUAWYZjYrQgJaxsN9+/liAzr3Qk6/M5Xa41yEDQ6b9LG0jZwGNXvJvjYlETBrm0Khcld1jUza3nHmuZtbcT+DjQx8bV9H5oCi1M/qvK2w2MvFFN+Fe31Ci7534lhVHBGAX68GaiaDg9CjUG3ttWPRezM4FjQDdJizs3o43rkxLo3iIrI9SwodhhSPUvz4zaLvLMmOtaf5l0pTEP+VLweaAcxLrD1xzoSG8vuvy41wHRblhboKaw3MY7DxW6JXhhXOFvk2TozDhKzoBM/mwMbrLY5Pp2WJBTGdKbTPcL7QZXMwVS2C3yvISOSKLVYDn6swInr54W5/+3weK6v1nsjnCLZtEif2lzhoOh0vSNipxEO+oUU6bQNtxq86k98XR/WUJS7bvgG/l7hwJn39Crc60SKpz+Lj9an65mwgsEYsCEP9ZpryJ/qA8VigMu2j+KTqmP3mhxNRRvd6NkkBwOYF8Dgi4vtgWPWeL2sArnA7b2WIXOMVz6isfU/2wbrygilPGpq9qH5p9MkkbYIgvxE6H8RbSc1sQKyrnhzmereHYlm1om+dEEugsGmLDEcJcvEPWTOZHEYjqSog0OA5AvuDjMbXz6PFD5HcmL1wgCGYAjtLMwTh+LLKkOud8DOfW6dm2+VpKNNle4r3+hGJwD7vXlBFN5OFiteWorKajD8vBkPLWdwZtErvuEjO4xKt7eygxNGNz7jHuNGCMy/2WGOpJlBkPIdJmlVG3NNvF7VqQtjpK/1EhquFqZXtUrQnHSG+VK5XGW1zCf4U5Aps/g2L4zTg4hYsL0bP9oCyWl+obYRmHuWqwdfeDIwAvq9Apex0Ps0KYCRnuT9EVkf01V8NhFu2HRejIhnh7okgtQqcl7EZSBb2smtMXp2sT2i+6VK64lJGGFVnSggVQrAb0IY4lEHH7DZ0Pmr7AoNV5yFZZlOdjrf2sIKiBpko2kboAr46bg8WG/+do4Q4wT+llweYrDpHZwKvSzUgPA8tCs0HoIleLRi1yCDELGNlxUhsQ32KeXrh6g3I1MB19HeWxMdeJI4O8g2RAbJbvkQnZxcXBhyszZKEv6Mh78UnpDcih+hcrh8Zd+UOxxHdUwrnySUh1osJ3N5JKyKPRU6XDIs8eNAghYDv/c7WQ1cGHaOEhYEByGem+++AU+6TYcUrWVyuprcHvfhm5Ub5OxIdYkLz77Tv3vcgDsQMTcOFpAEiP/KqWnOFSBRazE96Fzqt5too6efk/XbZGkSO2j8ayvVpCBrsrL/e3m9KQ+W7 X-Microsoft-Antispam-Message-Info: sS1WtT08zMeL44YTiLUFH5hqo6exc6o+apDHcTTYqP94SOk+8H41U3BIoV+TSI6onQeVqC/CpyGP3bXbIhK7mvzdnYCL0HgXTmvZVFO0nSbqhJfRlknDzzjDtwYCJiSFXIdgUBkvQX3jFsQeEoJxEGLGtmLfffovLXIS4sWyaVgYhhGjTRZSsJ/reBm0L+WuWzGabmmZdkgRJV3Pjpa/8sgZCXa0KjznBt+SqSM6gdPcQvYMbi4uGdvAvmb48R9ABmhQyGJ7EyHJhwxDKccM/31b0wul39XHYWOGZViIzZMj6K7d3Hto97/9aB6bl4KhxoAjJtmLZZiw4+v71BOpA7e6/GFVMBBhuSto1SWEcEc= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:U5NY0gzVvpm9L7xzeDr8crj/ycBghZC13GWKm/uFtHL8YbWxuCIQ0TRWKwLS6Z7zd1yJceL1L/fDX3jQN5iLiPJhelDgeu+Dw+IDbA0crLx9fRB5wl093gSP63buSq/D9sREdqk0krhvuSyhrVZO8anmVA/fUKoyT6N/nbCMLq/RpfTh1VsxG9qY+Z5+9mPiwve2B9H3wK50K4Vlv+9768YouN0UxNewzzHPVctVo4nEjRDfWYNxb3NPP/GrEqx6W8eeIQ+5oWpTtdD8ZLYm15ToiUpT+YRzTUDa2SUZos955J+C+rae3APPWRGLvIOnHvH2JIHQY4yLO44x5htlKaRxKBLnLA42FREVKy+xezX9YW6n45dFkePZOEiXXl0DegKzGwwhsC9wXV/LE5xYS4VVeDlfPM/1UGsAWtbBWMcYC29+nj6r4H1Xn2Tu6KrsSJZsW6gjlvidJjV0PqND1w==; 5:mRgXQOb7nr7TW+gY5JX45OjnroVLhCDec0GXUFanE8a1cjWQx/ToSUN7XMvj2Ex6Acm7SdNh34D+xp41C+xFDuXvLNKZvuyr1KtdSQ1ohky7mtYMQjgqgz/byhZAs0pSwu6B0j1C3LVeAyFpZtpJaRNulmM/cis6jAfgNtE7ZBw=; 7:CYndjrFmL0jChEYh9SF71QM6vss0/7sA3PVa19V0KrKpkxprpgWnNoA224DLCbS5VOwGhlFDqgiWsGjktzleTKqZQt9RW84qiWbe89MiWd87NXcbd/StrvAmYBMhAcXVbj5DY7ZWnsbQYfogOqXJOQHYLf8ak1XN0jJLBDAMmprAqPXA6jLwq173bFLrI2F2Svyo0CxX3rrX9lb9eT2Ff0eMXfgjh37YyAFRjwQMzBlPRhkZgcV8KFfs7Jl98Cyt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:44.2254 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b1f6fe73-5840-4e7e-f35a-08d6121b46cb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 14/33] common/cpt: add common macros for queue pair ops 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" From: Nithin Dabilpuram Adding common macros required by queue pair op functions. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_common.h | 3 +++ drivers/common/cpt/cpt_hw_types.h | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h index 1f78d42..61621dc 100644 --- a/drivers/common/cpt/cpt_common.h +++ b/drivers/common/cpt/cpt_common.h @@ -15,6 +15,9 @@ */ #define CRYPTO_OCTEONTX 0x1 +#define CPT_COUNT_THOLD 32 +#define CPT_TIMER_THOLD 0x3F + #define AE_TYPE 1 #define SE_TYPE 2 diff --git a/drivers/common/cpt/cpt_hw_types.h b/drivers/common/cpt/cpt_hw_types.h index 8cd1bf8..4b70dde 100644 --- a/drivers/common/cpt/cpt_hw_types.h +++ b/drivers/common/cpt/cpt_hw_types.h @@ -20,6 +20,10 @@ #define CPT_VF_INTR_HWERR_MASK (1<<5) #define CPT_VF_INTR_FAULT_MASK (1<<6) +#define CPT_INST_SIZE (64) +#define CPT_NEXT_CHUNK_PTR_SIZE (8) +#define DEFAULT_CMD_QLEN (DEFAULT_CMD_QCHUNK_SIZE * DEFAULT_CMD_QCHUNKS) + /* * CPT_INST_S software command definitions * Words EI (0-3) From patchwork Tue Sep 4 03:59:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44190 X-Patchwork-Delegate: gakhil@marvell.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 D636D5F33; Tue, 4 Sep 2018 06:03:28 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id 4D77B2F4F for ; Tue, 4 Sep 2018 06:03:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XDVm2Utbs+/rL/oAPdwJ63Ehq8k8eKKhnXnHrxVlfHk=; b=auLthpT7cT3rex6lpMRQzzwpATm7EVr8VUd1PiiUTs2VYA1j3/L0DCnV+dSAOUTVXe0VlRbo69mB0dOBbW5HVE6NQaD8j9B+bidWcbshB+eKKBnZuHMSqn5bjpE3oLG3wumc7Fht+4PWJAw0IEz/GCn+pM/DSiC0Myi4wSn46RE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:48 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Nithin Dabilpuram , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:02 +0530 Message-Id: <1536033560-21541-16-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e69e54ab-1ca4-4a45-0e10-08d6121b4990 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:ko6SuL4sEVOV9V0Wx2708KHbLfrjgDBEt3VBou8ellSmme6eHZSXS8vNRgKcXkcNVnWdNIHIMaFnqrUW1wm+efKRqA8fX8SK+ixdaJiuSUoei0bValkxtZNxEz1c3tXBq9lb7kWXSK0GuQ6HU9CJz4X2V3+jERXcjgI+wQNs8UB0aiHVpJGcWvaAUtNdT1qKKZEz3QPF04UiWO9bN8e1/stdugb6a0+NmxO/lALIbYH9XamVol3xK1F8FUvIOOXn; 25:tTkpTHk/rwbD4uPJ8puDfgxQdaz7bJsq65WYvACtPSrh7Fi3lfw9elihAodrrIbUpfMsJ0FtzZWlnjqbm+EjB/92n7sWxSyMzHFqeJZjtD8S6knKSH7iC+x74uR9kkqEgbWqfc0YfgrN/BC3oRRNBTXHXKWutKYLh1dPp+I4kq3YGPA+TkyMY/aA0L5YDxC6BSqRd09CmVDxNE1n8aunH1WTJe4TvLQ8/GvIGIoRReWeehgi5qqB16bLKllCgE+hbW/jwDEy3ekCm+sFmrlWbk1hySwdgj1QHZEuMxAmRiz1SnxxaToM7pnp9YUlQAw0v/QEGaJ0Xhv5Xif30I7/9w==; 31:vnpo2pvNWeTLtbovQjdpuzVDeac0sExWODmqlrSVeYPjyqGw+5gEVs1ox8fX4R3P5g3fS7SsnqmQBtn3u0kCDX6HSDpxcdZiKUTHNyGV8fVDU2epGHxoLU+0ClqgvrcexxrwLrMNswg4qQvVxt9FZqvVoUfP7Ycyl0s7Gbxv+uMCPwIHUQrB5mvTOYlJVN/JsQZors40B4nmj9SCSIqtqgnpLyfSMX6QJWjlEzigXwk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:2DC3llHG74G/wfs+INtK0NNjPMcFwToPj8cFKd3en99WJ20Y8GEH5scOX+b+hTVltSsuKXpIMlBvYf/ksav9YTpSAqfnvddgSrpo1n4S3kkLlN1rvnvVmj2GFH7tGFdmqDCgLZjQfm9NnO5p15176UZ7zuTyKLNxHAjd/H8e7VYBkbv+QwMBsHp/ke4dh9+dlQQcFv2GTOyP+KR6UQawKl4m65GWPVb2ieKOWz9P6Sbo/E0tjKylwpSur34NUap7aFVyRCaV5FX8zWf7gNDMiP+vd1PUwQl5ZX8QoQrwCNgRobWXaXoiUKgD4HJaHHI0o+BznQIcgl3AiZVvMFbLwl1DD7KxW25/jQxM9VeC2dlSExA3mjqIYEe6wq3VrXsuRdivI3swPCoSbVOz1XPsf/V0rKxmZ//+TOgYn9sgArFEd8X83M9/BvrVHqxptEAXpuDLRYgASnhObbT6gqzyLGzsfz5jCROr76YYV++MPDDSBFDYkRllLsSU4TuaAzZdxmN7pG3TbUlgB2WhpNEDNnNA4ZDz6gmDpvbEc5r9wqJYd+iCujjrABE30d+auHl1eW8YtZ+d3Mlrhli8rWZw8oXOie0JS57rSzokHy/2DoA=; 4:9G8bK1BaUL5ssNwAF6gm3bFywUU+otnGehVbQdwlzWAH5abH4rpWyFTp39hdHEmCzFo4o2v8yN0b45PXNivlg5wt9WdPs2NWUXF/fd1ot1N4BHgwiTGaOMtMX6llCLKxwWZFRfZKg1FzRyxk74qMyhrAHY3OTLJXx1VA0jC5nHutE7+kw6HSjFfl/6KED3g0DosQHV2Kx9FZcQ7ZO/ztI8BKroSc8Wwwzm0Wawc6Of1MsMaY7aGi3yl1yiIkmWJonfaTv9drAjSVTSA3k9PFGg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:e02twWYPnngPWqBFokA578HQqCi/kLIwZSSGGfqlm?= Z3PYode4+CXjTA4oJlGZhPLnneU4bVVaH8UzyQPG7NEGnLVWnx30M2h4W0ht2VmEWXg52hV+t5DEuwRWnIUnKMnyTH1my2BKtU51zDfhiGcgsgxGMEcYVpH9aj4+i6uYiv6vsMz5+/klK9b277H1JrQ/dLNBHnb3h56qpmMcR5sQbEycqjm05O+YPalK4YOXO6EPhrmEm7YoUrzUpQJqAyfpwi4ASSTVD/TYCmXCvFuLW9tKTxJ1mdE9hf4v8PQfyg9j8aIv1img6SjZhNReGZyrSF1hdIse3QY6gXYFdZ2+9VcKH61ImLfddnOkWxwzxey5ZJw9wefQ7GAaojgdJoieipZcDwXA6nrxDKBKmDD2IjF+zb81IcigwxGLAB8fd66QBW+KqCle9LtpRYbqTJvw7P724Pk1Wik3DijuEWz/kPBOPHqRHQyi04KX07bTh6eq2QMlZbRPaJO3cv1lXEoExokRGV4jxswLUNw2im1gpdrjvsaXbzw3OfSsuHFjv13SQDCeezdAOYZQhH0tRyDwDTnWTJzyP4mKN2xEFHeteCDiWP9iCPcoZRJYcTCoRrxQksyfDDNtS2TyDE1clvM/zsySDxEd4+Rd5c9K0n1relkNnHpDw1yYRgXZ+x/SNWEcF7q5ok0QigoT4ncCFNIMfqJmCkLgRq03iSeja1G4+H87GNNOgQ+mLblsOhHMGojoFMh/4x5CnJAYQ9RiZC1k8L/JSqJbuUy01T2OLseoqWJeYvkpiXCekrWMcg5XN1ldMNCIzbHr2f1hYugzWh4WzXR3v4HD+4apEHulmqHREVktBz3/QcEA+K4epFsS88xlfZWPc37JOh9sUz6rHBLSb93NYKxXrvVzMzAOcwvesp9GYzVUP1wSxatpEOxF66JbIX2VmX6cs0rmixy2rpG9Oiq5yJdur0J8BCB1HKkPiLSjBrZVvtdOx2Wj/PJYiH3hZSUz9xs3nTDMKl8a1kxCiXUz10NdeIM/RJeqekzLjHgkNa7VHU0q6DywZO7zkmzec0nIN9jCF5nG9JSrSnyahg5WvszwaY+kEiOfxofQgBUokxRWYKP+X4Sk7vTCUTBw6eanppbockY72qHI2pu4ZEMc9FNjYVzWO+4kK3MjSvuQr306prmJ1h/3ZjiiLxHVwCtzvOnfDQZ+nNUA3ZWsihmQqMhlU8yOnllfiP7QdxPZv8CENpO1P16u/QK9Do= X-Microsoft-Antispam-Message-Info: DH4k0j+xOkrfUM0DUyXBxmCokWR/wBgTS6qISbrka27kr1OSsuCHcPTH2pNA1BoC9mEJSoXqwW+O1Vw5s2Oq9ceF4dK/BclS9jl3qVe06jI8sCEsnU0vdrW+QBvHbrdHjw4xucZeFf4vULZ/NHIgzKil6YBM7MGbRJDLM7yZlcEfYqHuY2Qp8Qpt5cibg2tW3cvxPZgZJTt2drtgtyThEgl0dH+jvNdUFp1CaEKyiBGmhFr7udrdzxoRP0CfTXVA9CsvYxkqbb4LQmGYroKUY92R0/SaVRwF7iGyAscqky9Omuol6MAnqE0A3ULUa+VG2YnD5GEW3IIQAxn/mlPvfxFTR7kq/lEmhHMyGihFBZQ= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:s7LKQoy7QeTRl4AUfVtBdAQRuTJHBzlyR+mbkQaDAdyTtwufqr/+FgH862iveEKhSYqdp79tvM8oSFoD7hlfTO+vp0jeJ6j6A4aiYQDp+8QEs1sgnczxtAfiO+ls6Rx7j3R/WJaYL17AvKZWerNL4zXp9FWJ+Vr46WLbR5YxlxotgSR+fAaBGNg3rCyoJcxqB7y3rmsz7b5tYEqLURcqoKcQcJqDlWLSwLIUDVH940fzeq2IMhtmszVWzFjilpgaC4Lyexo7giP/1lyqjc1dlbjf3aMSIaBVLsSISimV4gydEVcC+Ntu8YCfk9ktqIRtnM2/JauIxB+4Fw3zpp4oTC8DU4CvMkhQQAqkhwypsiTGaTMwbI85i/6+LEDXr6JH79ZCDPzuD5LQiNEeQ4gF5kVtfN9HDiDsm9BL7AvpgwBGAVabAV+IgkXdtVdlxyI9cZ7tyb7hs0X9LHD20fWPnw==; 5:KOiah7IK9g9C/WPvn1/HFNEjvVwvYg5wd3y+gj2W/PYrFjoulRxJkFQQcaGIRCsnH/+nV5eBUkSGCxuptBbQ3g9RF7Xmp2wuK+hdaoPr7LvWWztccyOQkyR3zgRec9LUeQsqwVFd0RJTuGhqepE7OZLSTnRd3DT2TOPWaPy22+c=; 7:o/aQR/J9iHlJA+ozJ47VC9c7xrX+75EK7Ec7r9AvqcHXw2S8V70qcJATc9dO6tkv0YXIYDvk12JWxK11816laOM/J7NrKxvOaVGY5cEL8BFpNfB4pkudnoJEVmmHuXABgef+UxiTNz437kE9ubbE/3GRvtOdD0o5A/T0vBWpOUaz54ATgv6rIqjNq/y0xB5xlhQZJDGJ6xydvo8WIAYN1Id3IeGBbOaMXebJgAWbImTt+tgjAKri9cTrCGAik30V SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:48.8348 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e69e54ab-1ca4-4a45-0e10-08d6121b4990 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 15/33] crypto/octeontx: add queue pair functions 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" From: Nithin Dabilpuram Adding queue pair setup and release functions Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.c | 285 ++++++++++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 8 + drivers/crypto/octeontx/otx_cryptodev_ops.c | 82 ++++++- 3 files changed, 373 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c index d8b8872..fe054e6 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c @@ -1,11 +1,14 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2018 Cavium, Inc */ +#include #include #include #include #include +#include +#include #include "otx_cryptodev_hw_access.h" #include "otx_cryptodev_mbox.h" @@ -180,6 +183,136 @@ otx_cpt_clear_dovf_intr(struct cpt_vf *cptvf) CPTX_VQX_MISC_INT(0, 0), vqx_misc_int.u); } +/* Write to VQX_CTL register + */ +static void +otx_cpt_write_vq_ctl(struct cpt_vf *cptvf, bool val) +{ + cptx_vqx_ctl_t vqx_ctl; + + vqx_ctl.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_CTL(0, 0)); + vqx_ctl.s.ena = val; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_CTL(0, 0), vqx_ctl.u); +} + +/* Write to VQX_INPROG register + */ +static void +otx_cpt_write_vq_inprog(struct cpt_vf *cptvf, uint8_t val) +{ + cptx_vqx_inprog_t vqx_inprg; + + vqx_inprg.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_INPROG(0, 0)); + vqx_inprg.s.inflight = val; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_INPROG(0, 0), vqx_inprg.u); +} + +/* Write to VQX_DONE_WAIT NUMWAIT register + */ +static void +otx_cpt_write_vq_done_numwait(struct cpt_vf *cptvf, uint32_t val) +{ + cptx_vqx_done_wait_t vqx_dwait; + + vqx_dwait.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DONE_WAIT(0, 0)); + vqx_dwait.s.num_wait = val; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DONE_WAIT(0, 0), vqx_dwait.u); +} + +/* Write to VQX_DONE_WAIT NUM_WAIT register + */ +static void +otx_cpt_write_vq_done_timewait(struct cpt_vf *cptvf, uint16_t val) +{ + cptx_vqx_done_wait_t vqx_dwait; + + vqx_dwait.u = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DONE_WAIT(0, 0)); + vqx_dwait.s.time_wait = val; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_DONE_WAIT(0, 0), vqx_dwait.u); +} + +/* Write to VQX_SADDR register + */ +static void +otx_cpt_write_vq_saddr(struct cpt_vf *cptvf, uint64_t val) +{ + cptx_vqx_saddr_t vqx_saddr; + + vqx_saddr.u = val; + CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf), + CPTX_VQX_SADDR(0, 0), vqx_saddr.u); +} + +static void +otx_cpt_vfvq_init(struct cpt_vf *cptvf) +{ + uint64_t base_addr = 0; + + /* Disable the VQ */ + otx_cpt_write_vq_ctl(cptvf, 0); + + /* Reset the doorbell */ + otx_cpt_write_vq_doorbell(cptvf, 0); + /* Clear inflight */ + otx_cpt_write_vq_inprog(cptvf, 0); + + /* Write VQ SADDR */ + base_addr = (uint64_t)(cptvf->cqueue.chead[0].dma_addr); + otx_cpt_write_vq_saddr(cptvf, base_addr); + + /* Configure timerhold / coalescence */ + otx_cpt_write_vq_done_timewait(cptvf, CPT_TIMER_THOLD); + otx_cpt_write_vq_done_numwait(cptvf, CPT_COUNT_THOLD); + + /* Enable the VQ */ + otx_cpt_write_vq_ctl(cptvf, 1); + + /* Flag the VF ready */ + cptvf->flags |= CPT_FLAG_DEVICE_READY; +} + +static int +cpt_vq_init(struct cpt_vf *cptvf, uint8_t group) +{ + int err; + + /* Convey VQ LEN to PF */ + err = otx_cpt_send_vq_size_msg(cptvf); + if (err) { + CPT_LOG_ERR("%s: PF not responding to QLEN msg", + cptvf->dev_name); + err = -EBUSY; + goto cleanup; + } + + /* CPT VF device initialization */ + otx_cpt_vfvq_init(cptvf); + + /* Send msg to PF to assign currnet Q to required group */ + cptvf->vfgrp = group; + err = otx_cpt_send_vf_grp_msg(cptvf, group); + if (err) { + CPT_LOG_ERR("%s: PF not responding to VF_GRP msg", + cptvf->dev_name); + err = -EBUSY; + goto cleanup; + } + + CPT_LOG_DP_DEBUG("%s: %s done", cptvf->dev_name, __func__); + return 0; + +cleanup: + return err; +} + void otx_cpt_poll_misc(struct cpt_vf *cptvf) { @@ -268,6 +401,158 @@ otx_cpt_deinit_device(void *dev) } int +otx_cpt_get_resource(void *dev, uint8_t group, struct cpt_instance **instance) +{ + int ret = -ENOENT, len, qlen, i; + int chunk_len, chunks, chunk_size; + struct cpt_vf *cptvf = (struct cpt_vf *)dev; + struct cpt_instance *cpt_instance; + struct command_chunk *chunk_head = NULL, *chunk_prev = NULL; + struct command_chunk *chunk = NULL; + uint8_t *mem; + const struct rte_memzone *rz; + uint64_t dma_addr = 0, alloc_len, used_len; + uint64_t *next_ptr; + uint64_t pg_sz = sysconf(_SC_PAGESIZE); + + CPT_LOG_DP_DEBUG("Initializing cpt resource %s", cptvf->dev_name); + + cpt_instance = &cptvf->instance; + + memset(&cptvf->cqueue, 0, sizeof(cptvf->cqueue)); + memset(&cptvf->pqueue, 0, sizeof(cptvf->pqueue)); + + /* Chunks are of fixed size buffers */ + chunks = DEFAULT_CMD_QCHUNKS; + chunk_len = DEFAULT_CMD_QCHUNK_SIZE; + + qlen = chunks * chunk_len; + /* Chunk size includes 8 bytes of next chunk ptr */ + chunk_size = chunk_len * CPT_INST_SIZE + CPT_NEXT_CHUNK_PTR_SIZE; + + /* For command chunk structures */ + len = chunks * RTE_ALIGN(sizeof(struct command_chunk), 8); + + /* For pending queue */ + len += qlen * RTE_ALIGN(sizeof(struct rid), 8); + + /* So that instruction queues start as pg size aligned */ + len = RTE_ALIGN(len, pg_sz); + + /* For Instruction queues */ + len += chunks * RTE_ALIGN(chunk_size, 128); + + /* Wastage after instruction queues */ + len = RTE_ALIGN(len, pg_sz); + + rz = rte_memzone_reserve_aligned(cptvf->dev_name, len, cptvf->node, + RTE_MEMZONE_SIZE_HINT_ONLY | + RTE_MEMZONE_256MB, + RTE_CACHE_LINE_SIZE); + if (!rz) { + ret = rte_errno; + goto cleanup; + } + + mem = rz->addr; + dma_addr = rz->phys_addr; + alloc_len = len; + + memset(mem, 0, len); + + cpt_instance->rsvd = (uintptr_t)rz; + + /* Pending queue setup */ + cptvf->pqueue.rid_queue = (struct rid *)mem; + cptvf->pqueue.soft_qlen = qlen; + cptvf->pqueue.enq_tail = 0; + cptvf->pqueue.deq_head = 0; + cptvf->pqueue.pending_count = 0; + + mem += qlen * RTE_ALIGN(sizeof(struct rid), 8); + len -= qlen * RTE_ALIGN(sizeof(struct rid), 8); + dma_addr += qlen * RTE_ALIGN(sizeof(struct rid), 8); + + /* Alignment wastage */ + used_len = alloc_len - len; + mem += RTE_ALIGN(used_len, pg_sz) - used_len; + len -= RTE_ALIGN(used_len, pg_sz) - used_len; + dma_addr += RTE_ALIGN(used_len, pg_sz) - used_len; + + /* Init instruction queues */ + chunk_head = &cptvf->cqueue.chead[0]; + i = qlen; + + chunk_prev = NULL; + for (i = 0; i < DEFAULT_CMD_QCHUNKS; i++) { + int csize; + + chunk = &cptvf->cqueue.chead[i]; + chunk->head = mem; + chunk->dma_addr = dma_addr; + + csize = RTE_ALIGN(chunk_size, 128); + mem += csize; + dma_addr += csize; + len -= csize; + + if (chunk_prev) { + next_ptr = (uint64_t *)(chunk_prev->head + + chunk_size - 8); + *next_ptr = (uint64_t)chunk->dma_addr; + } + chunk_prev = chunk; + } + /* Circular loop */ + next_ptr = (uint64_t *)(chunk_prev->head + chunk_size - 8); + *next_ptr = (uint64_t)chunk_head->dma_addr; + + assert(!len); + + cptvf->qlen = qlen; + /* This is used for CPT(0)_PF_Q(0..15)_CTL.size config */ + cptvf->qsize = chunk_size / 8; + cptvf->cqueue.qhead = chunk_head->head; + cptvf->cqueue.idx = 0; + cptvf->cqueue.cchunk = 0; + + if (cpt_vq_init(cptvf, group)) { + CPT_LOG_ERR("Failed to initialize CPT VQ of device %s", + cptvf->dev_name); + ret = -EBUSY; + goto cleanup; + } + + *instance = cpt_instance; + + CPT_LOG_DP_DEBUG("Crypto device (%s) initialized", cptvf->dev_name); + + return 0; +cleanup: + rte_memzone_free(rz); + *instance = NULL; + return ret; +} + +int +otx_cpt_put_resource(struct cpt_instance *instance) +{ + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + struct rte_memzone *rz; + + if (!cptvf) { + CPT_LOG_ERR("Invalid CPTVF handle"); + return -EINVAL; + } + + CPT_LOG_DP_DEBUG("Releasing cpt device %s", cptvf->dev_name); + + rz = (struct rte_memzone *)instance->rsvd; + rte_memzone_free(rz); + return 0; +} + +int otx_cpt_start_device(void *dev) { int rc; diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index 7dbc41e..b9a634b 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -15,11 +15,13 @@ /* Flags to indicate the features supported */ #define CPT_FLAG_VF_DRIVER (uint16_t)(1 << 3) +#define CPT_FLAG_DEVICE_READY (uint16_t)(1 << 4) #define CPT_INTR_POLL_INTERVAL_MS (50) /* Default command queue length */ #define DEFAULT_CMD_QCHUNKS 2 +#define DEFAULT_CMD_QCHUNK_SIZE 1023 #define CPT_CSR_REG_BASE(cpt) ((cpt)->reg_base) @@ -152,6 +154,12 @@ int otx_cpt_deinit_device(void *dev); int +otx_cpt_get_resource(void *dev, uint8_t group, struct cpt_instance **instance); + +int +otx_cpt_put_resource(struct cpt_instance *instance); + +int otx_cpt_start_device(void *cptvf); void diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index 2bbf82f..e6b2ed9 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -28,6 +28,11 @@ static struct rte_mempool *otx_cpt_meta_pool; static int otx_cpt_op_mlen; static int otx_cpt_op_sb_mlen; +/* Forward declarations */ + +static int +otx_cpt_que_pair_release(struct rte_cryptodev *dev, uint16_t que_pair_id); + /* * Initializes global variables used by fast-path code * @@ -136,9 +141,16 @@ static int otx_cpt_dev_close(struct rte_cryptodev *c_dev) { void *cptvf = c_dev->data->dev_private; + int i, ret; CPT_PMD_INIT_FUNC_TRACE(); + for (i = 0; i < c_dev->data->nb_queue_pairs; i++) { + ret = otx_cpt_que_pair_release(c_dev, i); + if (ret) + return ret; + } + otx_cpt_periodic_alarm_stop(cptvf); otx_cpt_deinit_device(cptvf); @@ -173,6 +185,72 @@ otx_cpt_stats_reset(struct rte_cryptodev *dev __rte_unused) CPT_PMD_INIT_FUNC_TRACE(); } +static int +otx_cpt_que_pair_setup(struct rte_cryptodev *dev, + uint16_t que_pair_id, + const struct rte_cryptodev_qp_conf *qp_conf, + int socket_id __rte_unused, + struct rte_mempool *session_pool __rte_unused) +{ + void *cptvf = dev->data->dev_private; + struct cpt_instance *instance = NULL; + struct rte_pci_device *pci_dev; + int ret = -1; + + CPT_PMD_INIT_FUNC_TRACE(); + + if (dev->data->queue_pairs[que_pair_id] != NULL) { + ret = otx_cpt_que_pair_release(dev, que_pair_id); + if (ret) + return ret; + } + + if (qp_conf->nb_descriptors > DEFAULT_CMD_QLEN) { + CPT_LOG_INFO("Number of descriptors too big %d, using default " + "queue length of %d", qp_conf->nb_descriptors, + DEFAULT_CMD_QLEN); + } + + pci_dev = RTE_DEV_TO_PCI(dev->device); + + if (pci_dev->mem_resource[0].addr == NULL) { + CPT_PMD_DRV_LOG(ERR, "PCI mem address null"); + return -EIO; + } + + ret = otx_cpt_get_resource(cptvf, 0, &instance); + if (ret != 0) { + CPT_LOG_ERR("Error getting instance handle from device %s : " + "ret = %d", dev->data->name, ret); + return ret; + } + + instance->queue_id = que_pair_id; + dev->data->queue_pairs[que_pair_id] = instance; + + return 0; +} + +static int +otx_cpt_que_pair_release(struct rte_cryptodev *dev, uint16_t que_pair_id) +{ + struct cpt_instance *instance = dev->data->queue_pairs[que_pair_id]; + int ret; + + CPT_PMD_INIT_FUNC_TRACE(); + + ret = otx_cpt_put_resource(instance); + if (ret != 0) { + CPT_PMD_DRV_LOG(ERR, "Error putting instance handle" + " of device %s : ret = %d\n", dev->data->name, ret); + return ret; + } + + dev->data->queue_pairs[que_pair_id] = NULL; + + return 0; +} + static struct rte_cryptodev_ops cptvf_ops = { /* Device related operations */ .dev_configure = otx_cpt_dev_config, @@ -183,8 +261,8 @@ static struct rte_cryptodev_ops cptvf_ops = { .stats_get = otx_cpt_stats_get, .stats_reset = otx_cpt_stats_reset, - .queue_pair_setup = NULL, - .queue_pair_release = NULL, + .queue_pair_setup = otx_cpt_que_pair_setup, + .queue_pair_release = otx_cpt_que_pair_release, .queue_pair_count = NULL, /* Crypto related operations */ From patchwork Tue Sep 4 03:59:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44191 X-Patchwork-Delegate: gakhil@marvell.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 2DD9A5F3D; Tue, 4 Sep 2018 06:03:30 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id 960EF2C38 for ; Tue, 4 Sep 2018 06:03:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J+2Bx/85HeW10GB35zukOeMLWtuMFGURRG1I/OwNizQ=; b=N+NroYb0HWmDMd+j1eL77SNcjv6hXQTNdtqnaGk6A5j/atfKhQ0YAZsVUOR7GCCmJ4GmMgsT3XJnFBX1vRRpuITh62jX81P5Mw8taaHvx9Lio6p981MlmVC6ucEIplHTDGKW+K/+tFcmednvJwwMr6F2RsQHqroTPfTs0mHIEAs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:53 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Nithin Dabilpuram , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:03 +0530 Message-Id: <1536033560-21541-17-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d6c5c4d6-3b10-4df9-6411-08d6121b4c4f X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:p1G/L4OMJZufGZCkw6UV2AgIKRLaWdaa4NvRxIv2f5RATyygDjNO+kGvBC1PmBnk46C4sHtUeDxwzU7eeIM5swR6BVgKTsLTm9eImS7XciCFfqLxKcQv2oMfYdOOANy5Ba8MOLaysm/7lcU29+daPyhKXoMpi2rq5OE94lOjVDWmGSklHfRfnIYaocjFFDkMSxWrpSDphxjG0iN69cB+ThbvLPnnEnFgaDf+Sh6XmZ0Ft9SvEv6N56ht4b0C6xLp; 25:WnB4roOA9SOLrQ9flmN5R+wqBxbgmAUusL9B0RNGPMn97ebA1Q1Ue4LaykVAIfw/rV142gwQXF8uXR+NCzQrtIPwv2gYiMPWdYpSS0yXkhBFPhnwmzXCyqLznAp7OftxyIu1FWc6O+Mcwkf5MDjYEQ1dUnf/GyZ8wwHtD0iaAMgN/whmMge9laDNAzNDRcC1bJuJ8EkEoqQsVat9r6FxRoJRqwuUjxk0/9jduUO4UwxoQ5axQelUi9dEaEPnLsSnKGFmRBU9bYFxhRkWEQD5orpQVe5Lw236+Y0gBnTlJ1NDH9mM05rOMhFb/7nYCZxYWRzWkvBegcfpsL+yaEXGGw==; 31:QS3E7ktwOdlHPrPimdyk5AXzM1PUzkbBY9Z/N6Xoz/ymygy9kS38bx8PmLe51BDo4Hj5qYCSfXgg0L7+gVSEyCnhW/tLlVvY2Hk+TeZlU9mijqDOpSWWNMa1qVw7UiyABcKD6QfiwuVztLFcu3qSgnUI8/UxjR0JhK0OMMtpiIks0g4iI9uqul4HCU4m0hZ7ScjxWmljIG6vKZwbSVxTL1nPRMJvx73cw8/167mvFMk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:nV+bvi3bgAQ4ZeM27BqEb9H7V44/nLtFDOyvY2lpEo9kyal4gepxSodNuHBxnHxXHoH38B7Lg6XP5KY1Pzar3IYJnCFn3NlhNRu1c6mLvWtwvOIHiiRs2jo1bWWFZgbD1MMgl6qt3XIiDqf25JHuQVeaCvZnuFsmk9puodc2AHU4SX6BM+D0eULSX3/57xm1gkwKGLaLkhSJ6P3eLaOlvg/VGp2v2K3AD697qr03XTSdAV9t65L4VVXd8S2I+JHqU1Lww63UiRHR3cz0+JW496pQ7HG4dQNgLdlBWY8vl9gTa82Mmn6eGNsQZ619zNNt4sgw/xI3Zhe6Wzl87R1hu39zvDtp0s48gpyJi4JTlTu4NkCShK+ypO2UjJUyjbV8Q9KvUWBY0GtZGdtTMJip+bqW3uja5e3Hew0fc0oPvDOVWSnvQur/drfnidJOPpEvLHaXLrDJ4Xm0b36oMkqT9PPRe1U9Q5vePw+AKNZYmSE1AZ+uaYar6H80CJuH9Z9PJ2sXR3kXXiXDKEkwTTsXV6hVTGeygY9IQtxmG3cajvuTpqgEx/xJ0008mXCaEgOu/dJrEaO14ZMcRcWD6MGMH+7J8/fwzNxdLVM0eIkRW/s=; 4:LCduOo60ZheGfWEWg2gGLK3awkq54Pua7/TmUU1ceG4DzL3pY5G7UtxF8q+mRsU2yMNI2TVHS7vmBCWfojuPDgnkiUuP6b8JZmL7pqI+Dq5F4eInPKbxb5rN2hipbzD+a8z8gZOYjOvgrojxdZnH15BobLv1cr0EGzE8bJn/FqGEK8KDEnanBgGLhDLMpsR7QCs4jdBVjYFDvdPafeqglZ5unNMrcCw+6ZaFZmiccnMohYgJMdhpAaxAzrET7PPht5nVzGKutsnsLHpyKZwt0Y/jwPbCUDye2ArBc9XszlfDJ7KEJNPqssDO0OCOcdgK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(163750095850); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:LZG7kOBNTbSF1UfnpuTVF3LxnUZPBSqJaKh9+WWa0?= bXj1iWsRmtF823eWETLzvhi657MpQFeu1FKFEZg7cX/Rl1M5VfTGajJ4MJAvi6Bdna9wtRrU9mllb8RLGA3qz+AXndHbKXEaw0UlssqSinINT9qVnyutYAXTa0hj8eL2G8PP5FiNdaages4c5RCAvm2ZymqANTmvgN4kHPHNrM7RcC5+NAYelTTDwxX86M7Aepm6bEznWOS0NYSfRoCU0ve2mtIFNq6UNQ7cmuT77iPY0bM6nurs/ngPwyQjXS0/UZSVqQGNB3+xoq9RaHRYlulEOnflbsRsDlkl1WBtNTZAq4mo452jjrHoLWzd+sKGleU7Zs3/bOfQZLJCxUDXRNiCzoH6oyTsz+Rel5Io1P4/KpyRKvu/ux7qs2JXXTlXIM2e0NQRNVQ4fGC+7sVeDhi2SHYJzuuEvgG247e224CJx42ng/GGnwAe+pQoWomlpV6rX56H3hP2CLqlDvnuD6A6ptFRIu0KstKGsVI1M4qolfLQKr7Nz8PnJlOJ3+bO01/S89YvYy7poVOCOBl7F40rH/M+dJlomrT6CMZb+4ghJTB77fw1TTwxSEiJQyfKibHWyukKdIXKXrKNR7hAchxVtgKQsu96ynytlrwCRiCvoinognKiA7tT5xCSo0fgncpRmaBRNE4Ex8+2sNLGg196usFXpnQK30rK9WOokdxvDLwx41TFQVExjrADi4JB3QPn8aLLqKk3AdZK3d0pZvP1NTLsQheRxbqU9hdqqFDiu66MzaFsXq7ag3esrIzlrQSQiC/ZxmX6bC47e1D/wRgDmjEJeTTdwJ1AwtJOxtd888OcI/PV8dY4iXEmmuykA1oKZBZINkmHephpsE2bL5uwqlimlMmpFONEkYBmLZu7Z3aK0dAHKJQH4wV5MJKg5M98rg/Sm1MxeSrlQtbjnFIW+aB98vjg9ekTnuFLdqUgxyNulOhfzdS0J1I+MZ6KfCy3UBDUrJtj0gVfM6PTSebVHh6EJMWDHyHpalVM8teXGLWapohCoUGTAVlp3zURVP4WMd1THc+54D7hCel2VxRL2oZBMCGXCaaoIyb1vxLYhNaeS9qmiz3rT3hrsOcYnqqaUl6cZYm+aSZJACJ+YVfz9icoRHkqpMOU3/soXSx4oErpLB9QN4ph7qex6tS4mJ6aMLWArLYB7i/TFJKySBFRCcoAGUiCP2QpQBBZ1lPoc/0vFdltk+AAEkdg4xdDgs= X-Microsoft-Antispam-Message-Info: rnE9kbMY1ZzgTp0SM6267PFjvfZZenn7EkupWXK5JVbVC45VGbjiLKgJhjnisubcqpTtXSYblVy3jE/R50p8o1EGZ6FO1aJu6k2PdZOrGvJqF+3a0Ya27azcsjIvrGp1G0Hfk55f5GeIIQ7ve8/DZq6IdMS2StMEn3od9u8SYhmuszCjxIpPOn6B8WdixuCycd9QdIB0veU67lHKwP/kLf8T/bUwZFTMJkiKuzz2BAEIbRaH5oUZsV2gC/CzWxvx8rJ1KFAZKkrgcnq4RtLkTRt6siQlxG3WcaU7cM2Z3Z03CFxtGp1lq4xtYGQaunaaWwBkxgyNWl1ONXf+b9BZaIH5NGf67A7krkay1pNZD14= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:aA6bgk4AaNKCqRYpP4D6PqKzZljr0eJBynGcWRJehW/9aoMepE4tAOa6oXiDc7vYdmZQTJPrZuBXfQdiH4WzMZ6jJiTRvw03+/i3AfNbWCW+zLSp+QfFsdZe4oaxggchVymUkHU8r3o5vz5yXTBjwJIREefKUYv1YBGf2J8zVv9VpilerY+D953WBaMwLtziqEAtHw74B9v9aq42hUcWkVcnQ4JJ6z2cLszrI7wN4HDoeG+QTsDPjryZ2Uoi0wTLCVvpfhznQ6dZZGVuMRivMAuaWW2/ZKOdleUVcQ7h3ojYxIpbfI8Is7kvBQ1b14fVOruGCdUasOndjUJtKUBTgFbhs81eZSlQO1kbNt3QSGr1gart/hm3n4VxIxiz4AhT+bEAVH2kcYM7XawXviKryrW4JGZCHMY2UJnjP5bZdlva6nfCasmiq9mmX+fvW799vcfPHJmvEXXvRaT37y67JQ==; 5:QHzN2do/ZjE6z8MzLrRIYWU5RwTRHBSFKpD+K+HTr4IlsfG8dkkqyH320wu1UQ9fTmix+loFRYLnNDo1TCIMPx3AFCOGEQ+VQS3mUktSH+8kq6j0kDQPQlwNpiYIMS2+MaGrSzHwCcwALyk9rOsJ3+bmlQs7hTQ8E3q8kIIudjQ=; 7:K7YM5Jdd/dd8G0UiGeajflHFTxt6KWuirI7Quv7PHLHS2VzoPuvABxaLCY0pkIPyGBCyCPv3HaYRckGSHKOOA4yX8XISI8936A1eH+dHtzM/thlTnDCe18QWd1VYOyvaIkIJ5Z9BpkehdG1wru3vQ077c3A2CTCGoj6lUE19/fIcPF9JHitQ4pbMKX/ArRrofhcqSKfimh9mjBDDqxcH7E/b6lSWr/MgrI7RfQcaa3dBTMkjy3HKIkMaKJReMmYY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:53.4285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6c5c4d6-3b10-4df9-6411-08d6121b4c4f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 16/33] common/cpt: add common code required for session management 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" From: Nithin Dabilpuram Adding common code required for session configure, session clear and get session size ops routines Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_mcode_defines.h | 110 +++++++++++++++++++++++++++++++++ drivers/common/cpt/cpt_request_mgr.h | 32 ++++++++++ drivers/common/cpt/cpt_ucode.h | 47 ++++++++++++++ 3 files changed, 189 insertions(+) create mode 100644 drivers/common/cpt/cpt_request_mgr.h create mode 100644 drivers/common/cpt/cpt_ucode.h diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index 1bbe8c4..5b1566e 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -5,6 +5,9 @@ #ifndef _CPT_MCODE_DEFINES_H_ #define _CPT_MCODE_DEFINES_H_ +#include +#include + /* * This file defines macros and structures according to microcode spec * @@ -35,4 +38,111 @@ typedef struct sglist_comp { uint64_t ptr[4]; } sg_comp_t; +struct cpt_sess_misc { + uint16_t cpt_op:4; + uint16_t zsk_flag:4; + uint16_t aes_gcm:1; + uint16_t aes_ctr:1; + uint16_t is_null:1; + /**< To check if NULL cipher/auth */ + uint16_t is_gmac:1; + uint16_t aad_length; + uint8_t mac_len; + uint8_t iv_length; + /**< IV length in bytes */ + uint8_t auth_iv_length; + /**< Auth IV length in bytes */ + uint8_t rsvd1; + uint16_t iv_offset; + /**< IV offset in bytes */ + uint16_t auth_iv_offset; + /**< Auth IV offset in bytes */ + uint32_t salt; + phys_addr_t ctx_dma_addr; +}; + +typedef union { + uint64_t flags; + struct { +#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN + uint64_t enc_cipher : 4; + uint64_t reserved1 : 1; + uint64_t aes_key : 2; + uint64_t iv_source : 1; + uint64_t hash_type : 4; + uint64_t reserved2 : 3; + uint64_t auth_input_type : 1; + uint64_t mac_len : 8; + uint64_t reserved3 : 8; + uint64_t encr_offset : 16; + uint64_t iv_offset : 8; + uint64_t auth_offset : 8; +#else + uint64_t auth_offset : 8; + uint64_t iv_offset : 8; + uint64_t encr_offset : 16; + uint64_t reserved3 : 8; + uint64_t mac_len : 8; + uint64_t auth_input_type : 1; + uint64_t reserved2 : 3; + uint64_t hash_type : 4; + uint64_t iv_source : 1; + uint64_t aes_key : 2; + uint64_t reserved1 : 1; + uint64_t enc_cipher : 4; +#endif + } e; +} encr_ctrl_t; + +typedef struct { + encr_ctrl_t enc_ctrl; + uint8_t encr_key[32]; + uint8_t encr_iv[16]; +} mc_enc_context_t; + +typedef struct { + uint8_t ipad[64]; + uint8_t opad[64]; +} mc_fc_hmac_context_t; + +typedef struct { + mc_enc_context_t enc; + mc_fc_hmac_context_t hmac; +} mc_fc_context_t; + +typedef struct { + uint8_t encr_auth_iv[16]; + uint8_t ci_key[16]; + uint8_t zuc_const[32]; +} mc_zuc_snow3g_ctx_t; + +typedef struct { + uint8_t reg_A[8]; + uint8_t ci_key[16]; +} mc_kasumi_ctx_t; + +struct cpt_ctx { + /* Below fields are accessed by sw */ + uint64_t enc_cipher :8; + uint64_t hash_type :8; + uint64_t mac_len :8; + uint64_t auth_key_len :8; + uint64_t fc_type :4; + uint64_t hmac :1; + uint64_t zsk_flags :3; + uint64_t k_ecb :1; + uint64_t snow3g :1; + /**< Set if it is snow3g and not ZUC */ + uint64_t rsvd :22; + /* Below fields are accessed by hardware */ + union { + mc_fc_context_t fctx; + mc_zuc_snow3g_ctx_t zs_ctx; + mc_kasumi_ctx_t k_ctx; + }; + uint8_t auth_key[64]; +}; + +#define CPT_P_ENC_CTRL(fctx) fctx->enc.enc_ctrl.e + #endif /* _CPT_MCODE_DEFINES_H_ */ diff --git a/drivers/common/cpt/cpt_request_mgr.h b/drivers/common/cpt/cpt_request_mgr.h new file mode 100644 index 0000000..733c402 --- /dev/null +++ b/drivers/common/cpt/cpt_request_mgr.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_REQUEST_MGR_H_ +#define _CPT_REQUEST_MGR_H_ + +#include "cpt_mcode_defines.h" + +/* + * This file defines the agreement between the common layer and the individual + * crypto drivers for OcteonTX series. Datapath in otx* directory include this + * file and all these functions are static inlined for better performance. + * + */ + +/* + * Get the session size + * + * This function is used in the data path. + * + * @return + * - session size + */ +static __rte_always_inline unsigned int +cpt_get_session_size(void) +{ + unsigned int ctx_len = sizeof(struct cpt_ctx); + return (sizeof(struct cpt_sess_misc) + RTE_ALIGN_CEIL(ctx_len, 8)); +} + +#endif /* _CPT_REQUEST_MGR_H_ */ diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h new file mode 100644 index 0000000..e4f16fe --- /dev/null +++ b/drivers/common/cpt/cpt_ucode.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _CPT_UCODE_H_ +#define _CPT_UCODE_H_ + +#include "cpt_mcode_defines.h" + +/* + * This file defines functions that are interfaces to microcode spec. + * + */ + +static __rte_always_inline int +cpt_is_algo_supported(struct rte_crypto_sym_xform *xform) +{ + /* + * Microcode only supports the following combination. + * Encryption followed by authentication + * Authentication followed by decryption + */ + if (xform->next) { + if ((xform->type == RTE_CRYPTO_SYM_XFORM_AUTH) && + (xform->next->type == RTE_CRYPTO_SYM_XFORM_CIPHER) && + (xform->next->cipher.op == RTE_CRYPTO_CIPHER_OP_ENCRYPT)) { + /* Unsupported as of now by microcode */ + CPT_LOG_DP_ERR("Unsupported combination"); + return -1; + } + if ((xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER) && + (xform->next->type == RTE_CRYPTO_SYM_XFORM_AUTH) && + (xform->cipher.op == RTE_CRYPTO_CIPHER_OP_DECRYPT)) { + /* For GMAC auth there is no cipher operation */ + if (xform->aead.algo != RTE_CRYPTO_AEAD_AES_GCM || + xform->next->auth.algo != + RTE_CRYPTO_AUTH_AES_GMAC) { + /* Unsupported as of now by microcode */ + CPT_LOG_DP_ERR("Unsupported combination"); + return -1; + } + } + } + return 0; +} + +#endif /*_CPT_UCODE_H_ */ From patchwork Tue Sep 4 03:59:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44192 X-Patchwork-Delegate: gakhil@marvell.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 A530B5F4A; Tue, 4 Sep 2018 06:03:31 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0082.outbound.protection.outlook.com [104.47.32.82]) by dpdk.org (Postfix) with ESMTP id C0DE63256 for ; Tue, 4 Sep 2018 06:03:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6+NDwqfJ5NWNXVy/gpBidbpSAGom3k1IWC0WQqdeI04=; b=LtjqiJ+yPB7V1smfrAxbSEFE+YZU5IHcy5JCCEFcAIdtYBQvBT9C3MTYTmidN7EfTqII51BKazTruoEjyDwDmvjiMQ5uVZc+Z1JKcfZ1ERoUUgS1ApjxRyUte7eX6zetOuJdWc8VH5lQR1d+SGz7NmIcAgB4+rBasc8Cl5OQK/w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:02:57 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Nithin Dabilpuram , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:04 +0530 Message-Id: <1536033560-21541-18-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 62daed6e-99b2-461a-8030-08d6121b4ef4 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:vGEE0UaDGkrrYz5WIMND0jaoVzQY8Qy7iJrRJc4tDv2fQkjDSojraXC4H8oyO4237wjJWGL6jyGVdxvXqSo07uDd+6TYnz1D5ycBf2bE+sKdODKHuAeHuq6eyBu7233GSEjNNztpITJFiUexc9HBDQLk6DAn2JdAC1z6LpR19WT1FbHvExpS7zT9ZmnPmDnsF3m3IJn9AfkellzbykKOL3jxnwEiZlt2GQoNPWGPqS97NIHLC3Gz0ZGz6mJf/ybb; 25:dB+Kw4WJxlcPfLiYnfyrZ1dVGsp6QiN9h3O0/VY3houAAz6GkYSBWvVHdNIKyE5mCbUUIFfLQLddGVWrBvC3upNWvAnWu4uxDMUR1m0khBDK71024j0SU4nCMXZzkYKooz1gCu4KQULAkcSRCSMlYDVpHsaafR9xRhutK6wEfsL+i0Ph457+hwcQb3wqtVVw3XGE7FiMLxGycF/cnRQQxzmJUuhKUfxxL/OAXZbO2mwtTCa4SVFjseNt/aaJbYtGNJOr74/xthTPUou8zDdaCc6grk+GqS3u/E+/di+j0Sr+keh9t8q+LxagKONce0doGSEYMYZlt2zQPTXdXMYALQ==; 31:0e3hN6MLaQ3Xr8T3k2VC9BYq/tkwvA6TGbMJLhNiHDLhHZSKIhX2TG6kdSZykSSgHzETTQH9vrgkkyyQ5ucnVN2NFSrIPLE7BsZSmZI2TGGnfezV1iiygAOaQrWZc4JC2KsnQaKGwnnQ0t7Q+QwWugf7sOguzL2eA/B46wLsPSSYXC5SzvtXZQG8xrgZJHiY5rQQjZmK8cCQS2qqZQAKFz1pILGigLoJPy5MAstb4UY= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:/OiD2RxfOK1c6FkqnIfjr0AB3dLt9uNfXtGo5Cb0Dwbl3xtGfFiqhYukh7R+lgA8iVIVequzSpCLn23HRPo1N4uF7fiAbYeB+ya/CKJ0ChmzOE7QNdU1xJI/yuU+TSke1T1I7ePmo+ozuPEZf9kolP+jyscbIJ/to7KqxK43Jl63PrCc8VZcvbNb/GNeqhN3DTXE0HV4xZXSRmFpNpj4bmHB+ivp/hKsKuIX+oOeyoqWeA9vgzEajKcgX/4diEpjXMIecrsvrnEfZTxxr4UjJJS1148dSuUj7mP52y2NG/jPLzoyEySxwoO1kmpoORf+yOKdMAJkHuxOkOY4lEeZorqsnhi+vy7aOiUfyAjgdJqLVT8Es2X1fmZ7E18JC9/Wn0jderEaw//PygzpiIwUWjlZrSZbtMgJcK1FKO+MBQ8HQfQzLUQ6saxzPce3URHnJEnc/U6O7QT2JOz65GwdifBYG/KYjKu4Q+fXMche1edv5dH0zui3HLRF14DEfwc6xEndiSy8e2tkmGx7dxoNKAUv3JHxfLEI9Y/mlQaEbS0MGe4ui2uvQLXo+ozaGySCJUJLnZbaJZrrNRe4LNCfV3i5YXH8I477G2MopVJ0Osc=; 4:KNUrQNDhkcldL+Wp+qjKkwCsoBIHO8rY+JJqF2qIUJXus1/AisnGI1TlD/TrBdx28o0o7RBQfUJGjoFqmb1qmVlA+RCZ/G5EjfZfZLnbbcGVcY3G8zkJKUQtiQqa9B5J1hp4F3Vi9/8Q90vhHGz8A3ZryOGhxopvI/IG2tU1djFHhJwTD6l1ikS8lEYUrx4OvXZOSTXimt0E8QgCPFYkHOaknSgrdv/VksJd8sF6rS4eei0G71VCKhHzByCqA7ggGZN5Sy7Ii/amcVbrUlSM5Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:WL1jFvzIdJx1UtPL/y1h/xskYya/uNZrSLX+WKQ69?= 8dyu8ZB05VEE9h5oeGGll93TSgLEY4kDKBtD/Bpvxwanc7o9GJ+5f3jbnkHRB8TpqXXjEQNcQzxVNX8g55e2aHf1AtVpW6aBRbEYP+ApPfPAMpPNF9LKCAA3/Po2QO+9LxFVhLgiGQ/spaxmRT7ZLIFUUKh4y1sXKdfU19t3GgdTsZqtFO2/L3TfJ8wd0S2jHq+eaKdL5/E+W8um/3t2YkZI25rZWAT24HmnT10GmDPvlkqj1Iu1ATWF+IZezVedlBZ0282G72khATm0Ip29ZtsAYnPaqg6ZsxzxgJ8DVxUFI7fwJEInGue7KGUJENIyirnKanBd/dgy+2orW0jeGJkyakby0OfYT8r/HOkvtdccxLb2LKwh6Myv3avVqa+7uD+KwytglULNlSr7+w+EzI0UqsDLAz7qQKlZiq+ixHeP7FVZuCpnJW3nTbMCd3ySo4Zb1zw5CVYguFQN9aPQIbg27EInVCIpumrbSqwXZn+T2yXeSvKACJVg3XfbFDE5d7dYV2P9vcvk8H7fFLzrsCqRlymAIN76WaKgrDhtPPzxuLdM7jG/0vQkY3lIn6GENydjJF299LgDZANo+EXMO3Y6tDji8qsfirNDkvT8+KSXtQgBSijUkz8QUR0Y+/yyrkd8WMe7i4GwbHyAHpyLu8silUbt+XcLnxPU7ePGOS4n0gVynKzaAUsg/rvJ4a+LuX0HRCfYI4jPg5meCkBcfj7pW3cmZspCwL64q6YMdyf6o/w0jTEZw5jwXgNLYavStZAuH8pnRW+PcbIwO+yOUAUXkbDU38UTmmqfULv/xwuFLCOKsUbZMjQPVA4P61QNuzTrZWK1wM/qj+alLq/5+cizLb4eCsEcb0lM6lw8a9mQ1E7PIZHV//CnES0Ua/CXDwZRX1GFRjvUdBSJTIBvgZWstnMh5P01yQe0/Uhqm9hWqUoWFkhqmZ6Or+SF+t6jgZL8ax3MHmeIbs+23T7/MIlqMHUNb2tmwF8EtXsGM+8jIpvjgnK5iMBdXjhdmv0plzjWgHC45hAoyS5wq2F5EV+umHdnasNRzY4Zjwh7+SFO6XA5QE2VHtxmkkBlLdAILb7eitw9dqjQgkcIMsPhF1pGtzRzB/eRUEFqrCoT6SybfAO5JYBMMsDq/mTA/rxxRWIp2/gRR7BUZRzdtIq5u30FRr87MMDttC3E+rx4MNJPzrkkSkl5Mqh7B/oCU/7WR0= X-Microsoft-Antispam-Message-Info: B7JBMUa4q2mF9XpWrZWSO1FeMGfPNlrrTqaCJjIpeBQqqrGJ/BdmOUnwrVwyM3cjggis80H0I2Lmj2DdpNhf08i6C/fhP05Sr2F7nLW6c8sZfA07HmhoNlqeEZX6jEd/KJiGfdJqzc85URxGMVD706/fYvugXH6aaRf3AxuXqBQ9fyMjj/UxaJ/9dEcNR/qdLNuEU/nX3jzBRgfhSIZrMHgE4vOK7p5KKC5PT+n8KaOpfKZfpOlGCT/l6G0ClKxUWkS0jDcodP3zEvhVXe8CKh6h0jU/CsVWCRhMZgdshJW67b2egFvqvdJSA8M+7dy0/Lr3Z86zcyLXa0vmqTf7XTEtw4EmoFtmuSj/srVaL5I= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:BeANA1jBb2aGPUZSRicsbp5A0Osklgpb55z3v6QPF7Lj6CUXQmPbDWiaJbpfygsljWMqzlk5c3mi4Us+rQZbcSMht+CimPJP1tDmR3vu6Y/Igut33HSKuWmNO41p0yQNSoLOOVBWj0JTvpP0PIOcINjYERD1k6/329UAkhqQF28g8PW0oUjJHz60cHoEXk7BvxdeX1l6Oh299UOjW75vMmaJh7/WzW7Il3N2nCTZZL8DOmaCw4+AZhg8yDHtqsrwEaaqwAtwY06W11/KBr1fkVf6QMNVH3aAl5qEs8ISHVv1E79K6uwUNrAt0fBa5TeZ8BjwNaP8y3/B/FJzb6lKGBPdQ34CNHgwF/6kP4PiSmiWPBS4UyjXILwMvm5Gew0+WvXQAKIJAxFMX92dbz8qLtBl9VAgRwX86P1p3iRXqtRhFLzowSHGnagKVsoMn3HzU/A00aHFvp+pOvKnjQOIew==; 5:1rc6Cl+uTtXFKREGzvwM7i15uCadNaXR0j6IPJmorfHHze8n6XUL5CqyLhIN0Vwa5sX+VAMq2/rm3sP9bL+J5apkFjVB/6wkIJY67cYNgy5YAEA9kU6bRdGgpobe7qBia9FTjt7ehdStoHErAt65p2Jj6awPE4xYPw2+k5JbAbI=; 7:Vf525KMtYcP+qW36PCyl+SrSCJTU+3SPnwam0fadP1snVuwi7e0iuwqBVcn8zB40seSIb9NX3erbH0BKwdAD57ZyphTz3EE+kQ8r5x8Y0tZe4vXi4urCOFlaBxI1EwRRZAzUXYWkxdVstFCTKPWlKM4UW8RSuwE0IZic/0TAcnLqxti3p/KIl4TZy6sdpE4LTV8ddaHTEwUmMk3xhQjZ6M5ErDOEFnH2JQzaBfetR0EPaIKBikeotRxQVqz/q9uR SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:02:57.8504 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 62daed6e-99b2-461a-8030-08d6121b4ef4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 17/33] crypto/octeontx: add session management ops 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" From: Nithin Dabilpuram Adding routines for session configure, session clear and get session size ops. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_ops.c | 83 +++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index e6b2ed9..51f374d 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -10,6 +10,8 @@ #include "cpt_pmd_logs.h" #include "cpt_pmd_ops_helper.h" +#include "cpt_ucode.h" +#include "cpt_request_mgr.h" #include "otx_cryptodev.h" #include "otx_cryptodev_capabilities.h" @@ -251,6 +253,81 @@ otx_cpt_que_pair_release(struct rte_cryptodev *dev, uint16_t que_pair_id) return 0; } +static unsigned int +otx_cpt_get_session_size(struct rte_cryptodev *dev __rte_unused) +{ + return cpt_get_session_size(); +} + +static void +otx_cpt_session_init(void *sym_sess, uint8_t driver_id) +{ + struct rte_cryptodev_sym_session *sess = sym_sess; + struct cpt_sess_misc *cpt_sess = + (struct cpt_sess_misc *) get_sym_session_private_data(sess, driver_id); + + CPT_PMD_INIT_FUNC_TRACE(); + cpt_sess->ctx_dma_addr = rte_mempool_virt2iova(cpt_sess) + + sizeof(struct cpt_sess_misc); +} + +static int +otx_cpt_session_cfg(struct rte_cryptodev *dev, + struct rte_crypto_sym_xform *xform, + struct rte_cryptodev_sym_session *sess, + struct rte_mempool *mempool) +{ + struct rte_crypto_sym_xform *chain; + void *sess_private_data; + + CPT_PMD_INIT_FUNC_TRACE(); + + if (cpt_is_algo_supported(xform)) + goto err; + + if (unlikely(sess == NULL)) { + CPT_LOG_ERR("invalid session struct"); + return -EINVAL; + } + + if (rte_mempool_get(mempool, &sess_private_data)) { + CPT_LOG_ERR("Could not allocate sess_private_data"); + return -ENOMEM; + } + + chain = xform; + while (chain) { + switch (chain->type) { + default: + CPT_LOG_ERR("Invalid crypto xform type"); + break; + } + chain = chain->next; + } + set_sym_session_private_data(sess, dev->driver_id, sess_private_data); + otx_cpt_session_init(sess, dev->driver_id); + return 0; + +err: + rte_mempool_put(mempool, sess_private_data); + return -EPERM; +} + +static void +otx_cpt_session_clear(struct rte_cryptodev *dev, + struct rte_cryptodev_sym_session *sess) +{ + void *sess_priv = get_sym_session_private_data(sess, dev->driver_id); + + CPT_PMD_INIT_FUNC_TRACE(); + if (sess_priv) { + memset(sess_priv, 0, otx_cpt_get_session_size(dev)); + struct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv); + set_sym_session_private_data(sess, dev->driver_id, NULL); + rte_mempool_put(sess_mp, sess_priv); + } +} + static struct rte_cryptodev_ops cptvf_ops = { /* Device related operations */ .dev_configure = otx_cpt_dev_config, @@ -266,9 +343,9 @@ static struct rte_cryptodev_ops cptvf_ops = { .queue_pair_count = NULL, /* Crypto related operations */ - .sym_session_get_size = NULL, - .sym_session_configure = NULL, - .sym_session_clear = NULL + .sym_session_get_size = otx_cpt_get_session_size, + .sym_session_configure = otx_cpt_session_cfg, + .sym_session_clear = otx_cpt_session_clear }; static void From patchwork Tue Sep 4 03:59:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44193 X-Patchwork-Delegate: gakhil@marvell.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 F32625F57; Tue, 4 Sep 2018 06:03:32 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0060.outbound.protection.outlook.com [104.47.37.60]) by dpdk.org (Postfix) with ESMTP id 16E192C55 for ; Tue, 4 Sep 2018 06:03:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/uYAZ9oatNa/FlMYvaOmZMtTMW0uZdm+rNe5GMkb39A=; b=Lg2MkoInyH5BlBOWPOj+0u4Qca04NQaKpjKs20B5Xa+Y5QIIBJYnXzsFDmhPE/OKkTPwkaPWLaZX3L+6y1hHrYRuz4h53upOLfNiIB7xu4AT9f6RysRDrm8aiRRpDRse26XXnPABtb/kKrhMzrd8NL2FOXw3E+WSlIfdXTBvmXI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:02 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Nithin Dabilpuram , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:05 +0530 Message-Id: <1536033560-21541-19-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fa460234-11fc-4143-7547-08d6121b5192 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:8wbnEVxcfKy1SONnHOdz/tSsdsKxDjvoaFmNpGSqm0iDJOjVaSZLFT/evRvqhcxW7HZxcDa8FWDop6/0sd8Fdi+OLZtAZttsfzwUB4Nawcrv7oGaCDqCMXIHihFgYqR10ulvVOBEZl+vVbkzd2Ds4zTDbT4iwzSXebREJ8BRgKcPxl+mM9I4iJ04xuv1W7M+OPshZiue3p/MGaXd87thqh2792kKvXlTi9z0OlvhaDqsmZ1BtqRkrfsiFODot6wW; 25:JUrWcS+kUOmRyI75y3zlHZOBzV5VQNbrAV4K7K9KBkumS/JD1MQSQOGX1sdPjtGVhtjrEsAFyoIjQZhnWmW6uLXrp1WiGZKLhzvElokYdVmMzey0m05OIbggbHMhLI2NcR1n6Q804OgSFOyTQixcQoQGuJd3vt1eH57y6watZ8y3aKw9U02UqpvCSieEBK2f6rRZJNUhNdxRHO6EcbRC+xWOVdl3H/snv8Xx77RKIcFU3ewx1Sn0VL/8IBhU9T7hskv9EPtSoDeNfwgO93y87OFmZbVN7PtJiX7saBfvgReTRYZ3s91kuTQ2/dBLq5m1+Tg1JaKWthxVRxAehwBpVA==; 31:PVCiKxF4gKASI5Kk0pp4uX3oZT+AanBzlFU2oDUigOSZZffu9wcclOkWt32/fpe4a8MttbsnoLSyUMGAzVzDKiuYimb1f93hr36K+JeWeuvf3cmQiaPb0MjgspNhHN99g96TWrU1LcvnkNqVZ2xqIPsRk1sPJW1IV5gwQwrK/az3XoptIZ5nSBH0JMTs8+BtbMZJcZ+z8kRdazXR0lZ8UA9ukwF3uTDTR5TJ1GjK7Lk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:ZswrBcYItI0wmlJDwbLG5UX4AkwP+Ngu8jrSJqGfAAmjVULSvs4QVstqDVFjI5nXr25M36MjQdNJ2Kqlg7pNHjPMXd1zJMxl7Sa4uEjy5D7cs9oDnFgm87PdMFVCqavjuDu9gQiFfAC722Hq7CZX8qqn6ntCei6pGo3OacRd5haG83stH7cKPaR5Aau2nOm9eul+TxdC68ldZchixgDhJiwN6i46ATRuJLwh7QSLAjEGIcKYSq+dA1PuasWzP9CICEHHi7VwfEpBsUXs0WLe07C0CsEPeImphOIQYLoAllZb+rSb5xc2mCfbB2d0XTIAEJ7rTJYfT9Cd0IWljPftHaszc5F8jOEYoH+hB8rpcM3ipcGTTP7Iv4AtshzameEU/mWg/WWEwm/caOqPlPCGpTm5Cv4JZ+ZfOlSZpKzsmGnjOEDXndfcMlTkevBE/KOEWEzgF+YewuTpMk+Et/dtBwtzLFB7pTh9pmZCJ1xdBZ4csC7sPqH8ONfYb56Z+h69jQD63IHA9Gslv9zG1fSPdXxPT7qemMuathemLipEKiKTXraP531P2biES/Q6fjmsIPEvtbFwsDXgEAuD4/IRHboRI14gMxzLfT8xKFmPpfs=; 4:9z/8U7KKxh6ZQC73gxKZZB1SsdVCO8KVtsPRI8UmkoLhwzZ8GiKBnxTMMZxkB7mxmsczjtqAN/uu7elE5Dk/aLD1hL9ABYWKyyPgQxLV3PwmrfS0jV36bYSVLJ5FzOpC5Edi42NAptUo+JQJOUOA8/9YoAggEX39Dx/BJNy6WWGhIft0wPTna0CD1Mon3Z+wmlnjvx650zTuVm6dMlPfWjH+X9ilNQzsNEN2k/lk5PLLdQhZITB8upbxBrI+t9WMK+Q8dR8ovaacVvXvJ5QVEw9S7IV7CJzwtL39nuHNRTOw96MiMfRr4oRo7CM8T6Zm X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(163750095850); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(575784001)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:6QU1JKAdzkM8SasRWFHj+hvcnbYwzorOCDhYrn9H/?= VWdKFlDXFXYkrjxpdtvf1OuJSATNSsDbrZftmSOwD09MqtLq3e/VvyXyG58r+YgGvqzhQIg68eEaL4YmzFeU5aHRPNFhpJ6gZvEBQAHqu017FUWQNMOjvLq1GR2b9gWUCEzjkUuLaSpiRKUoOYpZtL6fa03PmNyltXt1HqctWNP1RDHjs2gOFLF0qXa0G9UMSbqVuonhrfCXlzAnfoYrEFkIEmlg3eRMnZwdXUR6boHj50hQu+C/n4+GqzyhWK40Ta5PYFbIqvvLk0yGHIXelkD85vsX4i6MH28W/z+zbMjmxtJevJ8NMvOMxpPpFnTUowTAedM3JYZyBDDSlhqJhklsFo/VsYQIRnKel6NNJBEflFN9zT8k161KiXClYJ0hdzitB5mKSBJy8SEMqePFZjHpWkdGpU9UQWcc7w0DYtJ/xPqGKOLvwmXZ5hJM3fCaM2MGgiWLh0jY5LW8bfb1Lt5uyjUpoAyXyj44CGmyym8oep0TRes5Ezqd5eOr4IIJ/ceORUEXQRFOW9zH0zopARDX/cP0YW1P8b5WaCxaTg3gFePmLUrZdCDNlZM/C6QsY/sSDgb1j/PrkMj2BOlxanZ5g7t5jOVelVBFrGExdc8dtfjb9KQ5zbOAkuXjZV5ElabC/Jl4Jo8Uj/To37TAdKRuiqD+DD9pRUOxeDPu/Qhh8YKN+i6otiwB9BQ/7DBBcxcleUWNL2Xb5KS2ruOexapWgEoKH0/EVMjjfpzbNXgJmRvkMW46V/NU9niD/WMGDg0dIPUs05u+wLuhXJ5YXZs1P1MbnWgCK5mXsHcKXTtQZfoRiGIizC6hI+riaVWNgGmO3mYnvo68LBVU0uqCqojySzhpb7iWDbQeNW84IJ8Wleht4NWOtkayapH1OlFepfCXfU500VZf51tLZ5r9nawaf4vt1X5sRFNmYmDenESl9sJ1G9P8kJF8jN1q4RqLtp/sE0bG5kH0r8+J+Hz8gCBH+RFaOWxEpFPh0124OeXpurbe+fnlVsJ0N0wBhuZrW3ef3OSX3W1mp7h09MLfL1xjauBeQP0ilDPnsGAMVg2n2K4YBx6tCy0SW5Zka+Nj5frtkoaUzZhD0y3IUrmruUot2BWl2nK3Ma74C37g6BxJQzXeFEQjQiwhrcBhf0ULmE9UCvmSn1tLDFTFyhsmMHqqXONbgdUb6TH9OfEk6w2mf6lM9Ar3+bpBn15nl/wGEQ= X-Microsoft-Antispam-Message-Info: f5R9F/V2ER7MEjMfVP0jhyQhuugJFr+QvyMHMrOcTSy+Yf8RyObnwoHxu0N/QB9q7PIsTyqLFxk2MzNjJfpv1YG5O60UwnlU/GRZ2nqBxikei4JT6039CNC7DvpN6taPH0OBAS8myNtuQoZS277IN8FoFIkFxqqAYU4e79ZPgyASU+mCvvpyMuP5J1NbrV4DIAoivpr5fQFoQbWgCgv6UjynMznLMhx8v1Fr8N+sXZxnabk3zrzMbfnwQLdwehCsEQSNZA6elRGXwXxORMq/UKKH7Fwkn2zENTzeEpsnllY9i9niecj4LuAYaJvJutbnI140dca5AuxgLwUno+2to4ldESTDyABC/3cye91yLCE= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:Tl9XVCmj7yBdTnDxJmNBWEWRPgmtjUgZvcRqOhUIaQk1Q3U6x+8WhYIxREbyNaEcVHuZvJKfZQHRhE5Lb149zvxeq+jU1oyPZNu6YpM7dMMxFVe03Ksk20EKgpkjHX9ZQLkoIWGVenPpJw1qFEKRrARcA7+r3dYwcXMAiIblO9Ueqx/NlGLRvpMB7c4ICyGUtHcyOFzxH+HNBQdOn32mV3kM+BFVrwsYb69xmV4c5WxkrbGLdzjFWbsi9WmUlPqm9XSGoYHBb8X6+zDT8Uzq/DlaaXM4UQpDpXVS9TZLDa5M0Wl63geaC1NV0yZUDrotKcWXS3kQ8jKLJ9crivzeeTd4rLwn02r391mbMYQ3roI651vAime3TXDGv4OT6yr7IxNBVuQnTuOw2RPaO6+2b24qvOEO/MgpNJaj/UV97clD6iPC9K45KwdF2W77dND3ZWtll9IRJDcCeE7+rftJDQ==; 5:v4PZ7NG2ypJa2C7Iqh75b7eF1vHyG+KiXrjoBzKd9iWihpzx16ln6uHxGBZyU+0pSPXSYYgQ6QuCH73z4Tbio1fCxA8fZTOOKRAf+h1Y5VT9CEuGKMjZM2uRtXxWkbkRd3qcNFsnN7TiotZroEHgNv5S/CC7iVjwI7e8I9ul86I=; 7:G9Hf/kixIKtSq2G0DfzCb1wHAnmx92lnDVqyCap/mHWtGaErvFoTHZNjn3w7AMGtaUNq65iynHDWU6FEGCO90YeJD6mV66sp8cAaUfBzKjKsNsCEqa3Mzem5+xvx1qKoPn6ROIsVPcIgHOipMiLZnH62bUS59Jg6xus0vbESh05QLsqZy4+xodzuQXdI2iXDJj+Ymt59/1mXBKQO2lVqlv6baaJ1XbbhWQa1iQgZMJ/hBWiMqpdAJ8Lc+Y6DQq+W SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:02.2724 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fa460234-11fc-4143-7547-08d6121b5192 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 18/33] common/cpt: add common code for fill session data 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" From: Nithin Dabilpuram Adding common code required for filling session data for AEAD, cipher & auth sessions. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_mcode_defines.h | 88 +++++ drivers/common/cpt/cpt_ucode.h | 574 +++++++++++++++++++++++++++++++++ 2 files changed, 662 insertions(+) diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index 5b1566e..0d2d0db 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -25,9 +25,86 @@ #define SG_LIST_HDR_SIZE (8u) #define SG_ENTRY_SIZE sizeof(sg_comp_t) +#define CPT_DMA_MODE (1 << 7) /* Default support is with SG */ + +#define CPT_FROM_CTX 0 +#define CPT_FROM_DPTR 1 + +#define FC_GEN 0x1 +#define ZUC_SNOW3G 0x2 +#define KASUMI 0x3 +#define HASH_HMAC 0x4 + +#define ZS_EA 0x1 +#define ZS_IA 0x2 +#define K_F8 0x4 +#define K_F9 0x8 + +#define CPT_OP_CIPHER_ENCRYPT 0x1 +#define CPT_OP_CIPHER_DECRYPT 0x2 +#define CPT_OP_CIPHER_MASK 0x3 + +#define CPT_OP_AUTH_VERIFY 0x4 +#define CPT_OP_AUTH_GENERATE 0x8 +#define CPT_OP_AUTH_MASK 0xC + +#define CPT_OP_ENCODE (CPT_OP_CIPHER_ENCRYPT | CPT_OP_AUTH_GENERATE) +#define CPT_OP_DECODE (CPT_OP_CIPHER_DECRYPT | CPT_OP_AUTH_VERIFY) + /* #define CPT_ALWAYS_USE_SG_MODE */ #define CPT_ALWAYS_USE_SEPARATE_BUF +typedef enum { + MD5_TYPE = 1, + SHA1_TYPE = 2, + SHA2_SHA224 = 3, + SHA2_SHA256 = 4, + SHA2_SHA384 = 5, + SHA2_SHA512 = 6, + GMAC_TYPE = 7, + XCBC_TYPE = 8, + SHA3_SHA224 = 10, + SHA3_SHA256 = 11, + SHA3_SHA384 = 12, + SHA3_SHA512 = 13, + SHA3_SHAKE256 = 14, + SHA3_SHAKE512 = 15, + + /* These are only for software use */ + ZUC_EIA3 = 0x90, + SNOW3G_UIA2 = 0x91, + KASUMI_F9_CBC = 0x92, + KASUMI_F9_ECB = 0x93, +} mc_hash_type_t; + +typedef enum { + /* + * These are defined by MC for Flexi crypto + * for field of 4 bits + */ + DES3_CBC = 0x1, + DES3_ECB = 0x2, + AES_CBC = 0x3, + AES_ECB = 0x4, + AES_CFB = 0x5, + AES_CTR = 0x6, + AES_GCM = 0x7, + AES_XTS = 0x8, + + /* These are only for software use */ + ZUC_EEA3 = 0x90, + SNOW3G_UEA2 = 0x91, + KASUMI_F8_CBC = 0x92, + KASUMI_F8_ECB = 0x93, +} mc_cipher_type_t; + +typedef enum { + AES_128_BIT = 0x1, + AES_192_BIT = 0x2, + AES_256_BIT = 0x3 +} mc_aes_type_t; + + typedef struct sglist_comp { union { uint64_t len; @@ -143,6 +220,17 @@ struct cpt_ctx { uint8_t auth_key[64]; }; +typedef struct fc_params digest_params_t; + +/* Cipher Algorithms */ +typedef mc_cipher_type_t cipher_type_t; + +/* Auth Algorithms */ +typedef mc_hash_type_t auth_type_t; + #define CPT_P_ENC_CTRL(fctx) fctx->enc.enc_ctrl.e +#define SESS_PRIV(__sess) \ + (void *)((uint8_t *)__sess + sizeof(struct cpt_sess_misc)) + #endif /* _CPT_MCODE_DEFINES_H_ */ diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index e4f16fe..a9aef68 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -12,6 +12,13 @@ * */ +static uint8_t zuc_d[32] = { + 0x44, 0xD7, 0x26, 0xBC, 0x62, 0x6B, 0x13, 0x5E, + 0x57, 0x89, 0x35, 0xE2, 0x71, 0x35, 0x09, 0xAF, + 0x4D, 0x78, 0x2F, 0x13, 0x6B, 0xC4, 0x1A, 0xF1, + 0x5E, 0x26, 0x3C, 0x4D, 0x78, 0x9A, 0x47, 0xAC +}; + static __rte_always_inline int cpt_is_algo_supported(struct rte_crypto_sym_xform *xform) { @@ -44,4 +51,571 @@ cpt_is_algo_supported(struct rte_crypto_sym_xform *xform) return 0; } +static __rte_always_inline void +gen_key_snow3g(uint8_t *ck, uint32_t *keyx) +{ + int i, base; + + for (i = 0; i < 4; i++) { + base = 4 * i; + keyx[3 - i] = (ck[base] << 24) | (ck[base + 1] << 16) | + (ck[base + 2] << 8) | (ck[base + 3]); + keyx[3 - i] = rte_cpu_to_be_32(keyx[3 - i]); + } +} + +static __rte_always_inline int +cpt_fc_ciph_set_key(void *ctx, cipher_type_t type, uint8_t *key, + uint16_t key_len, uint8_t *salt) +{ + struct cpt_ctx *cpt_ctx = ctx; + mc_fc_context_t *fctx = &cpt_ctx->fctx; + mc_aes_type_t aes_key_type = 0; + uint64_t *ctrl_flags; + + if (!type) { + /* to support passthrough case */ + + cpt_ctx->fc_type = FC_GEN; + ctrl_flags = (uint64_t *)&(fctx->enc.enc_ctrl.flags); + cpt_ctx->enc_cipher = 0; + + *ctrl_flags = rte_be_to_cpu_64(*ctrl_flags); + CPT_P_ENC_CTRL(fctx).enc_cipher = 0; + *ctrl_flags = rte_cpu_to_be_64(*ctrl_flags); + + return 0; + } + + if ((type >= ZUC_EEA3) && (type <= KASUMI_F8_ECB)) { + uint32_t keyx[4]; + + if (key_len != 16) + return -1; + + /* No support for AEAD yet */ + if (cpt_ctx->hash_type) + return -1; + + /* For ZUC/SNOW3G/Kasumi */ + switch (type) { + case SNOW3G_UEA2: + cpt_ctx->snow3g = 1; + gen_key_snow3g(key, keyx); + memcpy(cpt_ctx->zs_ctx.ci_key, keyx, key_len); + cpt_ctx->fc_type = ZUC_SNOW3G; + cpt_ctx->zsk_flags = 0; + break; + case ZUC_EEA3: + cpt_ctx->snow3g = 0; + memcpy(cpt_ctx->zs_ctx.ci_key, key, key_len); + memcpy(cpt_ctx->zs_ctx.zuc_const, zuc_d, 32); + cpt_ctx->fc_type = ZUC_SNOW3G; + cpt_ctx->zsk_flags = 0; + break; + case KASUMI_F8_ECB: + /* Kasumi ECB mode */ + cpt_ctx->k_ecb = 1; + memcpy(cpt_ctx->k_ctx.ci_key, key, key_len); + cpt_ctx->zsk_flags = 0; + cpt_ctx->fc_type = KASUMI; + break; + case KASUMI_F8_CBC: + memcpy(cpt_ctx->k_ctx.ci_key, key, key_len); + cpt_ctx->zsk_flags = 0; + cpt_ctx->fc_type = KASUMI; + break; + default: + return -1; + } + cpt_ctx->enc_cipher = type; + return 0; + } + + fctx = &cpt_ctx->fctx; + /* Even though iv source is from dptr, + * aes_gcm salt is taken from ctx + */ + if (salt && (type == AES_GCM)) { + memcpy(fctx->enc.encr_iv, salt, 4); + /* Assuming it was just salt update + * and nothing else + */ + if (!key) + return 0; + } + + cpt_ctx->fc_type = FC_GEN; + ctrl_flags = (uint64_t *)&(fctx->enc.enc_ctrl.flags); + *ctrl_flags = rte_be_to_cpu_64(*ctrl_flags); + + cpt_ctx->enc_cipher = type; + + /* For GMAC auth, cipher must be NULL */ + if (cpt_ctx->hash_type != GMAC_TYPE) + CPT_P_ENC_CTRL(fctx).enc_cipher = type; + + if (type == AES_XTS) + key_len = key_len / 2; + + /* key len only for AES */ + if ((type != DES3_CBC) && + (type != DES3_ECB)) { + switch (key_len) { + case CPT_BYTE_16: + aes_key_type = AES_128_BIT; + break; + case CPT_BYTE_24: + aes_key_type = AES_192_BIT; + if (type == AES_XTS) { + CPT_LOG_DP_ERR("Invalid AES key len for" + " XTS\n"); + return -1; + } + break; + case CPT_BYTE_32: + aes_key_type = AES_256_BIT; + break; + default: + CPT_LOG_DP_ERR("Invalid AES key len\n"); + return -1; + } + + CPT_P_ENC_CTRL(fctx).aes_key = aes_key_type; + } + + /* + * We need to always say iv is from DPTR as user can + * sometimes override IV per operation. + * For DES3_ECB IV need to be from CTX. + */ + if (type == DES3_ECB) + CPT_P_ENC_CTRL(fctx).iv_source = CPT_FROM_CTX; + else + CPT_P_ENC_CTRL(fctx).iv_source = CPT_FROM_DPTR; + + memcpy(fctx->enc.encr_key, key, key_len); + + if ((type == DES3_CBC) && (key_len == 8)) { + /* CPT performs DES using 3DES with the 8B DES-key + * replicated 2 more times to match the 24B 3DES-key. + * Eg. If org. key is "0x0a 0x0b", then new key is + * "0x0a 0x0b 0x0a 0x0b 0x0a 0x0b" + */ + memcpy(fctx->enc.encr_key+key_len, key, key_len); + memcpy(fctx->enc.encr_key+2*key_len, key, key_len); + } + + if (type == AES_XTS) { + /* Copy key2 for XTS into ipad */ + memset(fctx->hmac.ipad, 0, sizeof(fctx->hmac.ipad)); + memcpy(fctx->hmac.ipad, &key[key_len], key_len); + } + + *ctrl_flags = rte_cpu_to_be_64(*ctrl_flags); + + return 0; +} + +static __rte_always_inline int +cpt_fc_auth_set_key(void *ctx, auth_type_t type, uint8_t *key, + uint16_t key_len, uint16_t mac_len) +{ + struct cpt_ctx *cpt_ctx = ctx; + mc_fc_context_t *fctx = &cpt_ctx->fctx; + uint64_t *ctrl_flags = NULL; + + if ((type >= ZUC_EIA3) && (type <= KASUMI_F9_ECB)) { + uint32_t keyx[4]; + + if (key_len != 16) + return -1; + /* No support for AEAD yet */ + if (cpt_ctx->enc_cipher) + return -1; + /* For ZUC/SNOW3G/Kasumi */ + switch (type) { + case SNOW3G_UIA2: + cpt_ctx->snow3g = 1; + gen_key_snow3g(key, keyx); + memcpy(cpt_ctx->zs_ctx.ci_key, keyx, key_len); + cpt_ctx->fc_type = ZUC_SNOW3G; + cpt_ctx->zsk_flags = 0x1; + break; + case ZUC_EIA3: + cpt_ctx->snow3g = 0; + memcpy(cpt_ctx->zs_ctx.ci_key, key, key_len); + memcpy(cpt_ctx->zs_ctx.zuc_const, zuc_d, 32); + cpt_ctx->fc_type = ZUC_SNOW3G; + cpt_ctx->zsk_flags = 0x1; + break; + case KASUMI_F9_ECB: + /* Kasumi ECB mode */ + cpt_ctx->k_ecb = 1; + memcpy(cpt_ctx->k_ctx.ci_key, key, key_len); + cpt_ctx->fc_type = KASUMI; + cpt_ctx->zsk_flags = 0x1; + break; + case KASUMI_F9_CBC: + memcpy(cpt_ctx->k_ctx.ci_key, key, key_len); + cpt_ctx->fc_type = KASUMI; + cpt_ctx->zsk_flags = 0x1; + break; + default: + return -1; + } + cpt_ctx->mac_len = 4; + cpt_ctx->hash_type = type; + return 0; + } + + if (!(cpt_ctx->fc_type == FC_GEN && !type)) { + if (!cpt_ctx->fc_type || !cpt_ctx->enc_cipher) + cpt_ctx->fc_type = HASH_HMAC; + } + + ctrl_flags = (uint64_t *)&fctx->enc.enc_ctrl.flags; + *ctrl_flags = rte_be_to_cpu_64(*ctrl_flags); + + /* For GMAC auth, cipher must be NULL */ + if (type == GMAC_TYPE) + CPT_P_ENC_CTRL(fctx).enc_cipher = 0; + + CPT_P_ENC_CTRL(fctx).hash_type = cpt_ctx->hash_type = type; + CPT_P_ENC_CTRL(fctx).mac_len = cpt_ctx->mac_len = mac_len; + + if (key_len) { + cpt_ctx->hmac = 1; + memset(cpt_ctx->auth_key, 0, sizeof(cpt_ctx->auth_key)); + memcpy(cpt_ctx->auth_key, key, key_len); + cpt_ctx->auth_key_len = key_len; + memset(fctx->hmac.ipad, 0, sizeof(fctx->hmac.ipad)); + memset(fctx->hmac.opad, 0, sizeof(fctx->hmac.opad)); + memcpy(fctx->hmac.opad, key, key_len); + CPT_P_ENC_CTRL(fctx).auth_input_type = 1; + } + *ctrl_flags = rte_cpu_to_be_64(*ctrl_flags); + return 0; +} + +static __rte_always_inline int +fill_sess_aead(struct rte_crypto_sym_xform *xform, + struct cpt_sess_misc *sess) +{ + struct rte_crypto_aead_xform *aead_form; + cipher_type_t enc_type = 0; /* NULL Cipher type */ + auth_type_t auth_type = 0; /* NULL Auth type */ + uint32_t cipher_key_len = 0; + uint8_t zsk_flag = 0, aes_gcm = 0; + aead_form = &xform->aead; + void *ctx; + + if (aead_form->op == RTE_CRYPTO_AEAD_OP_ENCRYPT && + aead_form->algo == RTE_CRYPTO_AEAD_AES_GCM) { + sess->cpt_op |= CPT_OP_CIPHER_ENCRYPT; + sess->cpt_op |= CPT_OP_AUTH_GENERATE; + } else if (aead_form->op == RTE_CRYPTO_AEAD_OP_DECRYPT && + aead_form->algo == RTE_CRYPTO_AEAD_AES_GCM) { + sess->cpt_op |= CPT_OP_CIPHER_DECRYPT; + sess->cpt_op |= CPT_OP_AUTH_VERIFY; + } else { + CPT_LOG_DP_ERR("Unknown cipher operation\n"); + return -1; + } + switch (aead_form->algo) { + case RTE_CRYPTO_AEAD_AES_GCM: + enc_type = AES_GCM; + cipher_key_len = 16; + aes_gcm = 1; + break; + case RTE_CRYPTO_AEAD_AES_CCM: + CPT_LOG_DP_ERR("Crypto: Unsupported cipher algo %u", + aead_form->algo); + return -1; + default: + CPT_LOG_DP_ERR("Crypto: Undefined cipher algo %u specified", + aead_form->algo); + return -1; + } + if (aead_form->key.length < cipher_key_len) { + CPT_LOG_DP_ERR("Invalid cipher params keylen %lu", + (unsigned int long)aead_form->key.length); + return -1; + } + sess->zsk_flag = zsk_flag; + sess->aes_gcm = aes_gcm; + sess->mac_len = aead_form->digest_length; + sess->iv_offset = aead_form->iv.offset; + sess->iv_length = aead_form->iv.length; + sess->aad_length = aead_form->aad_length; + ctx = (void *)((uint8_t *)sess + sizeof(struct cpt_sess_misc)), + + cpt_fc_ciph_set_key(ctx, enc_type, aead_form->key.data, + aead_form->key.length, NULL); + + cpt_fc_auth_set_key(ctx, auth_type, NULL, 0, aead_form->digest_length); + + return 0; +} + +static __rte_always_inline int +fill_sess_cipher(struct rte_crypto_sym_xform *xform, + struct cpt_sess_misc *sess) +{ + struct rte_crypto_cipher_xform *c_form; + cipher_type_t enc_type = 0; /* NULL Cipher type */ + uint32_t cipher_key_len = 0; + uint8_t zsk_flag = 0, aes_gcm = 0, aes_ctr = 0, is_null = 0; + + if (xform->type != RTE_CRYPTO_SYM_XFORM_CIPHER) + return -1; + + c_form = &xform->cipher; + + if (c_form->op == RTE_CRYPTO_CIPHER_OP_ENCRYPT) + sess->cpt_op |= CPT_OP_CIPHER_ENCRYPT; + else if (c_form->op == RTE_CRYPTO_CIPHER_OP_DECRYPT) + sess->cpt_op |= CPT_OP_CIPHER_DECRYPT; + else { + CPT_LOG_DP_ERR("Unknown cipher operation\n"); + return -1; + } + + switch (c_form->algo) { + case RTE_CRYPTO_CIPHER_AES_CBC: + enc_type = AES_CBC; + cipher_key_len = 16; + break; + case RTE_CRYPTO_CIPHER_3DES_CBC: + enc_type = DES3_CBC; + cipher_key_len = 24; + break; + case RTE_CRYPTO_CIPHER_DES_CBC: + /* DES is implemented using 3DES in hardware */ + enc_type = DES3_CBC; + cipher_key_len = 8; + break; + case RTE_CRYPTO_CIPHER_AES_CTR: + enc_type = AES_CTR; + cipher_key_len = 16; + aes_ctr = 1; + break; + case RTE_CRYPTO_CIPHER_NULL: + enc_type = 0; + is_null = 1; + break; + case RTE_CRYPTO_CIPHER_KASUMI_F8: + enc_type = KASUMI_F8_ECB; + cipher_key_len = 16; + zsk_flag = K_F8; + break; + case RTE_CRYPTO_CIPHER_SNOW3G_UEA2: + enc_type = SNOW3G_UEA2; + cipher_key_len = 16; + zsk_flag = ZS_EA; + break; + case RTE_CRYPTO_CIPHER_ZUC_EEA3: + enc_type = ZUC_EEA3; + cipher_key_len = 16; + zsk_flag = ZS_EA; + break; + case RTE_CRYPTO_CIPHER_AES_XTS: + enc_type = AES_XTS; + cipher_key_len = 16; + break; + case RTE_CRYPTO_CIPHER_3DES_ECB: + enc_type = DES3_ECB; + cipher_key_len = 24; + break; + case RTE_CRYPTO_CIPHER_AES_ECB: + enc_type = AES_ECB; + cipher_key_len = 16; + break; + case RTE_CRYPTO_CIPHER_3DES_CTR: + case RTE_CRYPTO_CIPHER_AES_F8: + case RTE_CRYPTO_CIPHER_ARC4: + CPT_LOG_DP_ERR("Crypto: Unsupported cipher algo %u", + c_form->algo); + return -1; + default: + CPT_LOG_DP_ERR("Crypto: Undefined cipher algo %u specified", + c_form->algo); + return -1; + } + + if (c_form->key.length < cipher_key_len) { + CPT_LOG_DP_ERR("Invalid cipher params keylen %lu", + (unsigned long) c_form->key.length); + return -1; + } + + sess->zsk_flag = zsk_flag; + sess->aes_gcm = aes_gcm; + sess->aes_ctr = aes_ctr; + sess->iv_offset = c_form->iv.offset; + sess->iv_length = c_form->iv.length; + sess->is_null = is_null; + + cpt_fc_ciph_set_key(SESS_PRIV(sess), enc_type, c_form->key.data, + c_form->key.length, NULL); + + return 0; +} + +static __rte_always_inline int +fill_sess_auth(struct rte_crypto_sym_xform *xform, + struct cpt_sess_misc *sess) +{ + struct rte_crypto_auth_xform *a_form; + auth_type_t auth_type = 0; /* NULL Auth type */ + uint8_t zsk_flag = 0, aes_gcm = 0, is_null = 0; + + if (xform->type != RTE_CRYPTO_SYM_XFORM_AUTH) + goto error_out; + + a_form = &xform->auth; + + if (a_form->op == RTE_CRYPTO_AUTH_OP_VERIFY) + sess->cpt_op |= CPT_OP_AUTH_VERIFY; + else if (a_form->op == RTE_CRYPTO_AUTH_OP_GENERATE) + sess->cpt_op |= CPT_OP_AUTH_GENERATE; + else { + CPT_LOG_DP_ERR("Unknown auth operation"); + return -1; + } + + if (a_form->key.length > 64) { + CPT_LOG_DP_ERR("Auth key length is big"); + return -1; + } + + switch (a_form->algo) { + case RTE_CRYPTO_AUTH_SHA1_HMAC: + /* Fall through */ + case RTE_CRYPTO_AUTH_SHA1: + auth_type = SHA1_TYPE; + break; + case RTE_CRYPTO_AUTH_SHA256_HMAC: + case RTE_CRYPTO_AUTH_SHA256: + auth_type = SHA2_SHA256; + break; + case RTE_CRYPTO_AUTH_SHA512_HMAC: + case RTE_CRYPTO_AUTH_SHA512: + auth_type = SHA2_SHA512; + break; + case RTE_CRYPTO_AUTH_AES_GMAC: + auth_type = GMAC_TYPE; + aes_gcm = 1; + break; + case RTE_CRYPTO_AUTH_SHA224_HMAC: + case RTE_CRYPTO_AUTH_SHA224: + auth_type = SHA2_SHA224; + break; + case RTE_CRYPTO_AUTH_SHA384_HMAC: + case RTE_CRYPTO_AUTH_SHA384: + auth_type = SHA2_SHA384; + break; + case RTE_CRYPTO_AUTH_MD5_HMAC: + case RTE_CRYPTO_AUTH_MD5: + auth_type = MD5_TYPE; + break; + case RTE_CRYPTO_AUTH_KASUMI_F9: + auth_type = KASUMI_F9_ECB; + /* + * Indicate that direction needs to be taken out + * from end of src + */ + zsk_flag = K_F9; + break; + case RTE_CRYPTO_AUTH_SNOW3G_UIA2: + auth_type = SNOW3G_UIA2; + zsk_flag = ZS_IA; + break; + case RTE_CRYPTO_AUTH_ZUC_EIA3: + auth_type = ZUC_EIA3; + zsk_flag = ZS_IA; + break; + case RTE_CRYPTO_AUTH_NULL: + auth_type = 0; + is_null = 1; + break; + case RTE_CRYPTO_AUTH_AES_XCBC_MAC: + case RTE_CRYPTO_AUTH_AES_CMAC: + case RTE_CRYPTO_AUTH_AES_CBC_MAC: + CPT_LOG_DP_ERR("Crypto: Unsupported hash algo %u", + a_form->algo); + goto error_out; + default: + CPT_LOG_DP_ERR("Crypto: Undefined Hash algo %u specified", + a_form->algo); + goto error_out; + } + + sess->zsk_flag = zsk_flag; + sess->aes_gcm = aes_gcm; + sess->mac_len = a_form->digest_length; + sess->is_null = is_null; + if (zsk_flag) { + sess->auth_iv_offset = a_form->iv.offset; + sess->auth_iv_length = a_form->iv.length; + } + cpt_fc_auth_set_key(SESS_PRIV(sess), auth_type, a_form->key.data, + a_form->key.length, a_form->digest_length); + + return 0; + +error_out: + return -1; +} + +static __rte_always_inline int +fill_sess_gmac(struct rte_crypto_sym_xform *xform, + struct cpt_sess_misc *sess) +{ + struct rte_crypto_auth_xform *a_form; + cipher_type_t enc_type = 0; /* NULL Cipher type */ + auth_type_t auth_type = 0; /* NULL Auth type */ + uint8_t zsk_flag = 0, aes_gcm = 0; + void *ctx; + + if (xform->type != RTE_CRYPTO_SYM_XFORM_AUTH) + return -1; + + a_form = &xform->auth; + + if (a_form->op == RTE_CRYPTO_AUTH_OP_GENERATE) + sess->cpt_op |= CPT_OP_ENCODE; + else if (a_form->op == RTE_CRYPTO_AUTH_OP_VERIFY) + sess->cpt_op |= CPT_OP_DECODE; + else { + CPT_LOG_DP_ERR("Unknown auth operation"); + return -1; + } + + switch (a_form->algo) { + case RTE_CRYPTO_AUTH_AES_GMAC: + enc_type = AES_GCM; + auth_type = GMAC_TYPE; + break; + default: + CPT_LOG_DP_ERR("Crypto: Undefined cipher algo %u specified", + a_form->algo); + return -1; + } + + sess->zsk_flag = zsk_flag; + sess->aes_gcm = aes_gcm; + sess->is_gmac = 1; + sess->iv_offset = a_form->iv.offset; + sess->iv_length = a_form->iv.length; + sess->mac_len = a_form->digest_length; + ctx = (void *)((uint8_t *)sess + sizeof(struct cpt_sess_misc)), + + cpt_fc_ciph_set_key(ctx, enc_type, a_form->key.data, + a_form->key.length, NULL); + cpt_fc_auth_set_key(ctx, auth_type, NULL, 0, a_form->digest_length); + + return 0; +} + #endif /*_CPT_UCODE_H_ */ From patchwork Tue Sep 4 03:59:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44199 X-Patchwork-Delegate: gakhil@marvell.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 B4F0C7CBC; Tue, 4 Sep 2018 06:03:34 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0059.outbound.protection.outlook.com [104.47.32.59]) by dpdk.org (Postfix) with ESMTP id 9AD934C88 for ; Tue, 4 Sep 2018 06:03:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D/sZ0bMNl149ohIN7axiNDiE+UFnaqN+r4L5CMWojBk=; b=Ry4KaFB5GjwQglG6il5TqjznaQKO8Qu5PGBM1s5nNHuv8d3iP/eCP7PN8BMpyO++Rces0H+Z8FwlPHg5hiZzVmgwUgnlP1yK1Dp6konskArRlnGyfUnQOy9Vybfi7+dYNWS2+eTL8d1RkCrUODjOadNO2hSFMhD+GUsupkHVV2A= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:06 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ragothaman Jayaraman , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:06 +0530 Message-Id: <1536033560-21541-20-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3731469-2a39-4d70-b86c-08d6121b543e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:6iWFarR6aKvcMrPcaEvU8CfNmzm9fY2YUK0xO1WKzjkm3r92Awq+pW1nvZilx+odxYG3ncmFo9+6yW439ctO62SSrx4GDM5pg/tUx4BeHH5N9paYG5WNbFda2ON1oPXDYd/GMr/NxhcE4232A8F1qgQrmzk6uLZ578vQmHewPi9GVOTk9Jm9dBa9sbGCbMRD3/0uOq6nVYF0o44ts67cdlTQGBaVBgSDvdvP7P73rs4QKFjGeI0DDI7YJaBA161z; 25:/I52WCWXuV+YUO8IeUtdY9q3xOJyz+fJD372ISOTSDefR52DqpxCfbJ+xTQHlFM2YQd5WTLW7jupzDNDzTSDwekFvMpR62XmtCLs5H+eI+IO4fsIqvvwGS1Y5t60ZO0vLHe4MvxirV6e3dQx3jlZAXVa/2oB2XR4xnvPCM7yx2I5QalFEovasYDa3C5bxTuMOpZ3X74/r311Yi/Go/5RKVfm3sEEol8UkoIg9AR2A0sjusVoOibu9q8aXfS8Frb89NPp92IYHwXPwZRSXTs96Us6lht82LfcehtQFKP2/60P4Whk0Hdfe6ESpI+Pd/eQOPLYJVCY1X+tDAKpwUyP1A==; 31:FPFIENg70/uGJccTQadohkzjcwNxW5h4698Lx1ZlZDz4BpHatyP+NO1IP015cg17jE1aKCb33wGIGZExDNnzzzFOHqoKM4iaWq56l1YovIzLp+c+0Qm7UwmWnyL/2/Y0slcTiBAZAv1K22GyTlXTuU34ybxqs/htMUEIMAr3sUrMOD3q3m/mmKOk+5x2iHCleznLEiq+tIjONt2dxhuqupHLzo5JN/nlWykiWb/EyK8= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:Xzlmtsoy7tJPfU/34LhsszFw5mJ/F6xPoAgHo9azM/lJ4NvgtlkabgoFosaeAY6q/1VG0HhkQk5ZWMqsVpAreU440+VK5VaKn3DLdXiMa3Hf4mVODlNGfGHYphHD3QkNUMU+UWUv88MUrmro+yHAYYX3sWbISofTvouCCv7ryyBgKjpv3v50Vzbz3tp2OMkptdk1O0lKmfMVGckdh70xYTydMEQdC1k1tytYw6Rv8bwvY5UB571Kk/hFxrBEgosOrL6sKOMQOBnsyshocNigBmEZSUAwsQ1yUjfM2c5SAUT2xlNym2Rd7lvQ86X+kyIg+fEkf7FegXiIIPJcQGTEsbA1kUqKpc9PQ6CHpJkaWLg6YlOFdPKLpsNeubZGoKemJZhQRdcK+APgsEG5mmIdPnb5miqTiVQg8fqXU+CY36LVIhEItm2QAnaU0ZWoSl0NDR4+I6b9VNJ28sMBbtBWDl8+CpzITrADEe/bc5lltpAFmKLjF7JE6u07vnIqQaRtiPqbNin6oZIBq5nclSl90obL5SS7fXR1ThLfiD621Phj6lWL7IA+t+3nnZ4v+fIsPPYx2VjuHie5YPYRKVDpLpJhjcjaxAX/DvwWpLR0DUw=; 4:6HkygiAA4Y6iwudS3B1GGPDzA0NsoRn2SlvFFkT5a1u1kwSZGvEv5KGVWhkwXGczjbdlT/I1jDa8lDbLJ+IOokFMXTTn9Dvyttie1MNCCZdyAacTCzPiUks4O+bCGG58/Pf+tepdmMvhN6K7bq1389d4i1yAaBWMaXBsLDRzTh5bgFE/FabfDLx0ilCC1hyC707nAq449VTS9OwZPuouHpCkFj9V35Jx0xdWVzoV7FqVL50dCT3Z8B3vMdMXAL9rOMNqj6kV0CQm3ud8mG1jZQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:JC8RG0UkuX7mDWoGOwRAV0DUlFmEcXr2PdUFurcUO?= umXZy8zBtII9f3CQCpZUn5/BN7Oe9s37F5CfhIIyfzCIKWlpO/IS4is8uXM4tqK0cNrvlm/hum1yz9v+MUkx3hWabI7P4SuhQFclqsdCSWP7FzCedu0ac+b2ds5pJn+T+PGrsOxVL9gFmb07a/Y65axavUJKPRfLeZEI02QRIEfK7tkyzoe7MdPNeXDqYMZ1FNj5/xYhmIdbaZNrBSInRugTW02p3PFtRuj7btnZZlXC2qp8v29OUzcZbUMaKBneI7kqAuDmKyzDqN102fnrvLKK1w2xVJtAZvTSAMXpJEIKLKh3u9t7lzX2lIBxBmKKO2jlb9WOVWb8rlie0/YJrE2SApKySRrg4lDM/dmIPFQ1J7T1JlJ73xqQZV3mXeUN2u6/hfPj9Bvz7eMoJP1iYpEDVOcu/bPvzZxGfg7wVmhTJjmh+JJnGHIdCGOcNZMtjqdKHGCUZlaXxc8BdPXaKSR0hJG0wLxJGDJ2twd3eOqmzs/3kChppNGR800uWVylS/MjxGdvwb15jJuycN4M7mtV7LX7CqfO8PvSn181YF7+Rr+1J6FA27CqB3gBkjKCOmWpOkpw5x6xC2nwjfAkV/DwCRZ+OxFL1p2t/5hFN83b01HpCvxJaT6xsupB5VBOKrn8Y+g8T+1pddbFNucfAjihPI1rorKpUXydVTMGcXI6bnE8oq2yk1vGfxaw1tBhaz4oVE1E5RptTb2DmBFuzIgP4D3wchu7MwZfG2AKz38XX4XZVAfEL/fCjVBvXqB1txxNui4eaA4OEgRu31KhU6v4hYY7hLlJyOiKVWEXc/PsP3BHTy7SLjA6OXG5VyIDlHfvMz6FNn+SQity9it8ZnLduJbqkftJ/JgHcCbM0jiNfORh2zAxAkTkCYWdq53PyJ0i8u5pXifrnvPdGfDs95PwVMHk4/GSScZC5ms86Y/8/0ykhbUcDGqE5BiST/dGz9vseth2pb8GnK8J6zVUBt+GSJLwAKNbDqZFmPK5EpLfIylZ9lUGKfG7aFNCNN9M0S0jIRxObgr+Eslu+Ip01Ekog6MIIPCdN5RVoKqyNv44wfF8mEnqcX3D+2GlkbE6D6Uyydm3nYcrJCis+Mr49i9RLuqnpR4v9YKq/lasL7xa0DZYmM8oWDfemVWFI1nSdG3APXceOJdYTt+SHWEv8Zt X-Microsoft-Antispam-Message-Info: cwT04kZlyFAFBwdMvCsBegHaBe79t8czs/ESDPuJ6b+uCkM4U+R9ZFxzxtiMMlTOT4I47LSAdrGT3TAHxirgIxfmrhyw8kxLAUoCxRxCwnnMnwxlxh76M1Id+E37gPTw56azGxYVH9v9zcnEvBrzCZuxjAlJhpgxfUjG1B82/o51AdKKyN9B6V6geESsHv17U+SBWBlMuS5A5x0JpNmj7vajkL5XKttRQ4sfB0JvUXM3w5X4aAjaXu5AE7TCJ3IgE5BfVB6eR3rIiYys+Jp47HRAYPET4mdh9a+BS4eLAFPCZfgqWlpf8rCno47ERHYeezlny7ps565zy3F9oczJICY/iaJMjgaLlzrhw3ozdwU= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:w31fVVi/tDDFwo3cywzcWU250RHgZZXq1sNYd1WSGYfehwcyrzC3UXMVC9BKEOnzrx5Q/bynYysFw8NlKF7MzISWKrx6wtwOsc3ueY+JyorRI1255bRxNqWJbZ0xn/LRu7gdvbtcV/NMrMM3aYN6IDpwOFy+Sxj9d2fWFDolmnZhXQutf51v6deWXpu+nQjezL8xsyh+NN525Paq+h2cNIt7UlHxpGXpEFSItolzBOWkVStMrxLL3pH9zPrJ3BwaqXCp8zhBW9IhDUi+umpltooeNDaKCjY6LbBgorR/+cDERDTNHtp88/cZr7q6jJq9+ps81XmvIvQc/Zzo/DofYjIJJT/TExl/bfGACmjsYVvZMJv2o2fM6Dq/VexBvJ48QrfzOsAAyKCzJUCs9CV/t+1Qqby+bR79P+J19BbxAXyRpygZ2CH6vR4ApM7V4OxQs27u8Xw5DXIpWipLZij0Zg==; 5:omFTyAl2KIPgRg5hdyo2e0GKQ8KcHmhu8Bbwbv03SGrgdI/GdoEiA/O+ebMvBppttG3j0T9vQ5VwSsD0VyqKUOwRJYW+SnNFqtsvnDZAZsJQqijMzpYufYQiwFp9g2/IuW5WxElnauNoJZk0f21ySZjtyelsRZPufVOC26Xgrz8=; 7:RrIm8s0dY5QdHz5uaB0++xEKyyV7EipmZ70Vz0UXbbJwmPs4kgdmWxiCplMA6ipNbmVgCKOG01MOa9GkSLfS6LTzSeCJxQITwqoFvCjuHgwMO0XhcMOEfftw8qfVwVym75FcfDjdluG1w6EGm/yCq/9ITD713o+gTjglU9oQX/Beo9nqkAAaiPrEKNmsqgUsWdOeb3Ev+Ho+M+Cn/maW+fW1ugw7WkwKRQnVE4HvtRuMWwU9mg1RM5UWHfZ36gF8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:06.7411 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f3731469-2a39-4d70-b86c-08d6121b543e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 19/33] crypto/octeontx: add supported sessions 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" From: Ragothaman Jayaraman Adding AEAD, cipher & auth sessions support. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_ops.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index 51f374d..438208c 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -298,6 +298,23 @@ otx_cpt_session_cfg(struct rte_cryptodev *dev, chain = xform; while (chain) { switch (chain->type) { + case RTE_CRYPTO_SYM_XFORM_AEAD: + if (fill_sess_aead(chain, sess_private_data)) + goto err; + break; + case RTE_CRYPTO_SYM_XFORM_CIPHER: + if (fill_sess_cipher(chain, sess_private_data)) + goto err; + break; + case RTE_CRYPTO_SYM_XFORM_AUTH: + if (chain->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC) { + if (fill_sess_gmac(chain, sess_private_data)) + goto err; + } else { + if (fill_sess_auth(chain, sess_private_data)) + goto err; + } + break; default: CPT_LOG_ERR("Invalid crypto xform type"); break; From patchwork Tue Sep 4 03:59:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44200 X-Patchwork-Delegate: gakhil@marvell.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 B219E7CE5; Tue, 4 Sep 2018 06:03:35 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0066.outbound.protection.outlook.com [104.47.32.66]) by dpdk.org (Postfix) with ESMTP id 2ED2A5688 for ; Tue, 4 Sep 2018 06:03:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kaZP1K4T2G+nl1VcgfMX7K8yIE9+4HDCkj81FHX2gQU=; b=m3p81/ibgQYJk56RsnuaQQfZV9K/b7B8nkfmJx+3wqU3fpMKKdj3Oxqe9h7tHq390p3RWIDZ14gUD7UZw2ePV5ZHjFHEwTiywFp79RhCaLI6INnN7hh7U7+LCZLpKxk5GsF4A/+N27b8LmFDLXowx88psKA81dpIsSaGhRjJ71s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:11 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ragothaman Jayaraman , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:07 +0530 Message-Id: <1536033560-21541-21-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9f5e4f4a-0962-488c-a938-08d6121b5739 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:SS4q/5sq71xR+LHOuZJGXNUNzoNtmP4+xLe72TDCFafcjuwK7oCNUmNQ1js72NizkI6nh6hdAzxaaqtm9dyhqgRGsNA00XsY5QCv+1IUu14Trozff02SiD9KKZ6FVoCdENnfftd/x+lOWwlt86oV3vkqHeceDY14Yf0RxjehBNvtbW+4o77TFLcuf0drRrMGuHKpOcFbMiTMQ9yX0Tq0H3qdqcGVQzrZkshtNxs+XxdDon+2zrch9w+kot4ZuFQB; 25:s0YDCY+v5tgnEVtTCmG563JxqP4bTPPvKwV6381EWXnedinyOFec5mmEd89Mw9xGeMHSeh5zdOa37ou/WgjGe8higAt7i+Ni4n2xQJS+qwkbQXaq2EIZUvSTZfR4nIteeLX4OXYdkJvApkDbtLAddx81pKTuwX0+jnDCU3c9BbR4aNPx9DIWu/X+4gHZQzqjPUAnrUqxK/q3T0uGlQGTIwaUXU7onLUoWdqGxVSxFWcCs6yVnm1nrnH1Ar+Q5pLNLjqJBi9E5nIQxtyULKc6/LDWfZ6mopr4RhT34R/+y7wTl61xd0CJw5CZFNAKel/mF+zwJyHl567Nm31LXJwdqQ==; 31:mvETSe9JNvhp0C5324TNXRb6BTA1ldJSS3AhjZJm4nBYE+ueQ2A5KhFn7eSY043AmCW+VbdeZGUHjRIZpoeCgAINgw/2wuYH3LAIm0oe95MeWk//ynTIP1rvyWZ/ktbk2n4AVLZGBPOLm6uQzIusolDwvBWYr7gSEEcSJLEJ60uIunTFZlJ8Wiz3zcgFgihGMvZawsyRXNTO278+CKUJJiOQ+sfuZPa2r3/RbaZUBhU= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:Cg3rBKCjnDbVRVb3MPvETfnGT6ftIAn/2l6b+N15ODKjgnwd+G33eRMtA9RQzuliSF35TcrMRIy97jAGn4Udyz3ckDt8QZcKYkBVOGJ/1hN8hDl6InjoWoolGpQCGIB0hXMKg/q8d6zf7SZdi83AOvV1CCC6O+yVpDxZudESqusCRxg1CX2gmOubhUaDyfYZlMulytq5oZ9M9NoggSXA6mFYOCw09QVTRUAP8RaF2Fc88RZTQCDmo+GqYqatb/UeqeCrVI4csz+nwcbxbzBjdAPpc1Go6M4jD5DCRb4MZS5a/kPYUUhvahYPhOL80k5fuc7FuBdUBnggt8Hre5ewVR8Pi69ccvxKKjFt64MZPKXmt6KwUpZEv5ymSzlYEnyVDjRI5arzJmpw2SpldefyLlTewr5oadl2zit06YbjI8XudtuA+f7jrDRBf1N1mGzIXRcy5iqiC8FUImEW/d7E6fuFGbfGj10uRdCW1gKA+Zsu0SpaRDL/QMHSNi0cY3FdsXxIPjX4Jrfbwe7qiQmmSUJTZvaktvT1iyJR4UfsZ24LnZyfGaF08WFKiGbR4VOfMe/YT6aDmjo00p9gsPJbI2INurIXYTHTBCUBVhmV8AY=; 4:on+Okn73YWZMkNoKdqyAtj/RjtUEwW5IP/ibWkN/VvIvwRLN6BNoC3JKD4tGJw1a+PzoGQxcZ/jHMiWpi9W4lrNa3b4bBZamU+wVBOyK9NnXx3Uq9YjZKCHtM2fQhXxLYXJSlbwXpE7RMIsde/llGxRRT3bV1Laaoce2hCZfl0r28bI6nTFDnw8sfSGYwYzNPSANg0pW7YxnK6acvW6Mpi9hv4Z5Lt2zft0RG2lc/ThcSluVX5vpUJq0BAqh1TpGOnunBGBdz2fq9W73JRGm5YyWKO9Uo8SLQZUiOQZC1dxVocloCg0cfsTu++La15u1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(163750095850); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(575784001)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:7d9FJy3gBVcR6xlvulHNMvo5RQarYNrBL81rnf+hv?= 3ES0EXVN/z/OPhIN+AXPLzF5xXZFTB9H+fCzYadlZfb2K4jimjr+6glnm0UX9YIuaZYObnLsBtqaWfNL2iMaxfKIbNblE9Zsszy70jctCdRZqwnywpogYyYZMP5kMXKu3TMw7J1bUW9JqGeTub17B2h3lZTXOUVJrWS8J55tYE50S4B8w/tUPiZ4Q+FGp6PKpkwjKhMYtP8mW1FxETyEW83HPDk0WKnBSv0GDA6JTGvQdcctydCQVta0SpZ2jtJ9dRZ762HYfINUIkm3oA08zc0oshze4X9Tuy7ZOfLuNKAmda31o+Q474MqBv06CbnNVROVUAV6vSZUS77ilSuiUEk7c3zmBfkE36cGb2cMDvn4k4rWJczp/5jjBm07Q1rJie563XnysOmZBwvkqn7FcU+fH7u4I1ZQVGlSwsc9LjjVh4E/tOBMb/Lph/h9GpFnhyWHirrr/Gb5MiT5V9ZRaB2m9dLM+oKuaVvqWwTOtkfs55q8XVLxvDCrE5KdSqF1hbq2mOnfxG2O6h2oSqFe1MtLn1PpV0Ijuf2YJHv9uaPxdqhwXRTUZQROIbLlrEc5qtwlH2lTu+QeUS1CL7WmlKkw6rHHojz8cRkLpHcx+KTmaS0EzHPbT2dh3Oz1f9fHCewXu8MsnzLROgtd3uqZ93oP9l6ddo7QQl7qEUU1LLKb/W0RjkuqFdHb5ICHENL5nTXbW716Crpc6CAbi411FnRYxTMxYn+HN1iUVA/z/XD8kty6Be7SZE1okrtIb6So8U7wD9atYDcSpG2QoLlcTXuptVxSmST8cB8sTzs8Jt91A/jtRBlIWqtmVyz/uTXKPZJm0IBxhXJX8AonmuvSZptcjoiCHR5qMEiMrK4Q7WkguslSBpGUXmpMTg12skpXMALVtzSTscrm9/F3X3T2+PCtyC/RlNszMPPfx/pn5K6tKncQG4Jq9wX5i+gXYhTfWRjT/CojEQebqvRu8dR0eXGS15HqXHoShXg/tOanoeUE7CwxMROHDMP1PNMqbDVq8ni43jhCz+8khL537GNDxhaGYZ5wUbW1EfIxkL0gNOoog9jL2wyYw8mcnE7de2GHSslYvmIf5IAm7NoSY7uzMT5NGB4DfpFJdI7oRL6bhe4UV0avpk8Mp5P4vCTeRkKm93id3VKlXe8uedCUaKSfuDlkRT+yS5PCumUY0M5vA5RCdmf7eDOZ8JdYgWZhRqOMyClF1MfKq3Gz0aGt6D96s7S X-Microsoft-Antispam-Message-Info: n9zWit592wALcBF/w6w+OATAY9/9ao9xfWYd1omd5sBzrhk8QFSHtc4LusgBaIqAK9bRW+UptFGFUD1nna8AOAOB8OggB79r9deushFLpsXqJ96hgTIzoqVqLImbX25LRNSazYiSUvqaq/+WyzDJ6W3pALGZo3YvplGW5D+rtxD2PeNq0VxJIICBBri145G2yybUnlJeFAEmDdvyBnuJNh04XQsdQ8lkOy0dBwl8YmIswC7WydgOXulgR874m36IZS0VlIwdSlUWRzagJbijIAK5LJhUMLqZYeQtLnP/1+GK22GWugdlRmvpQ9cgVHgCwMt/yExme/qLAidboysjDU3H0YBBQa7s05Kdmvy8q80= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:xrA7yXNcBz2DlDvM6k1pW4Oz3WcfQZOBEn7ptG6uzvtFk7m9AFK5JwnHGifi77oPIDucAh4x1xuO2LHas6ZoUqUEgmjLWcOnmYIlluE9iIXfAGo5i76SNSPXjItwQ4l51qatshcqqIHK7xwySCCkV9Cwo3U4bfNEoAVB8q2Sjcc4kvV4dQLgKtzhdqfQ9NJC+yQ+BqMCAlb1yO5ARWbcp+VCDa8cg2Q3FiJbgEoP9ixGhTqsUtkNIHZQjIIYxRqsB83xEsooLft2prZgheoACnVqVstcJ2v7KAhOvltLO/Ac2BuIERd1sbOhyPEDYL8hAUXHW16sArQf7p8A8zPaMo85lOX3AH/UOKiwjJwnfhNPyDC6/22M4oSOrONWpNZmXDx4ROq6T/LTqqvZR/71kQ9+Hvr/hFExQWcQHRW0AYcxMLwHKU7euPX5UN3mXk656cm5g1uiTeWyNdxdG39LaQ==; 5:abvTTHeCNx8KOLJgZr/QHca1hzRlvgeMgCnz1tgc5ymco1H8abgLfniD0SGkorehUoykoqSkFrHSIqkK0Ly3N3oKFGVPE4HXOuAD0BapQNjR9pbacPU4my2Ql4RQs68yRm8l7+IcIwgEXpgxHSlB1E9vsRMbXw9gitdnYa2OZmU=; 7:YTTwq+xbyKerVz6lQ12TcfESj06DinpxiaxFKdsQp8PssExyMePidi/ke1xp2KzGUpdWRezJPwv/etx3HYBbpRpUVtsLio87oY61MKpvw+bGuTQqHZXtp7MnAhlxTGp2plgLCC8NQOIPkPo3+j7Imgp/3wHsefinP0K33jE/ApmvWgU6M5xHzcpllPQM4yyz+kVWcFP2+uaUoCy2QxTam1c0j+ripJfz/Y5b3sl5XiY2Glj/wmaBF6BdJc6YN9Vt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:11.2567 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f5e4f4a-0962-488c-a938-08d6121b5739 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 20/33] common/cpt: add common defines for microcode 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" From: Ragothaman Jayaraman Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_mcode_defines.h | 121 +++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index 0d2d0db..17b0de3 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -12,6 +12,12 @@ * This file defines macros and structures according to microcode spec * */ +/* SE opcodes */ +#define CPT_MAJOR_OP_FC 0x33 +#define CPT_MAJOR_OP_HASH 0x34 +#define CPT_MAJOR_OP_HMAC 0x35 +#define CPT_MAJOR_OP_ZUC_SNOW3G 0x37 +#define CPT_MAJOR_OP_KASUMI 0x38 #define CPT_BYTE_16 16 #define CPT_BYTE_24 24 @@ -30,6 +36,10 @@ #define CPT_FROM_CTX 0 #define CPT_FROM_DPTR 1 +#define SE_CORE_REQ 1 + +#define CTRL_DMA_MODE_SGIO 2 /* DMA Mode but SGIO is already setup */ + #define FC_GEN 0x1 #define ZUC_SNOW3G 0x2 #define KASUMI 0x3 @@ -54,6 +64,25 @@ /* #define CPT_ALWAYS_USE_SG_MODE */ #define CPT_ALWAYS_USE_SEPARATE_BUF +/* + * Parameters for Flexi Crypto + * requests + */ +#define VALID_AAD_BUF 0x01 +#define VALID_MAC_BUF 0x02 +#define VALID_IV_BUF 0x04 +#define SINGLE_BUF_INPLACE 0x08 +#define SINGLE_BUF_HEADTAILROOM 0x10 + +#define ENCR_IV_OFFSET(__d_offs) ((__d_offs >> 32) & 0xffff) +#define ENCR_OFFSET(__d_offs) ((__d_offs >> 16) & 0xffff) +#define AUTH_OFFSET(__d_offs) (__d_offs & 0xffff) +#define ENCR_DLEN(__d_lens) (__d_lens >> 32) +#define AUTH_DLEN(__d_lens) (__d_lens & 0xffffffff) + +/* FC offset_control at start of DPTR in bytes */ +#define OFF_CTRL_LEN 8 /* bytes */ + typedef enum { MD5_TYPE = 1, SHA1_TYPE = 2, @@ -104,6 +133,48 @@ typedef enum { AES_256_BIT = 0x3 } mc_aes_type_t; +typedef enum { + /* Microcode errors */ + NO_ERR = 0x00, + ERR_OPCODE_UNSUPPORTED = 0x01, + + /* SCATTER GATHER */ + ERR_SCATTER_GATHER_WRITE_LENGTH = 0x02, + ERR_SCATTER_GATHER_LIST = 0x03, + ERR_SCATTER_GATHER_NOT_SUPPORTED = 0x04, + + /* SE GC */ + ERR_GC_LENGTH_INVALID = 0x41, + ERR_GC_RANDOM_LEN_INVALID = 0x42, + ERR_GC_DATA_LEN_INVALID = 0x43, + ERR_GC_DRBG_TYPE_INVALID = 0x44, + ERR_GC_CTX_LEN_INVALID = 0x45, + ERR_GC_CIPHER_UNSUPPORTED = 0x46, + ERR_GC_AUTH_UNSUPPORTED = 0x47, + ERR_GC_OFFSET_INVALID = 0x48, + ERR_GC_HASH_MODE_UNSUPPORTED = 0x49, + ERR_GC_DRBG_ENTROPY_LEN_INVALID = 0x4a, + ERR_GC_DRBG_ADDNL_LEN_INVALID = 0x4b, + ERR_GC_ICV_MISCOMPARE = 0x4c, + ERR_GC_DATA_UNALIGNED = 0x4d, + + /* API Layer */ + ERR_BAD_ALT_CCODE = 0xfd, + ERR_REQ_PENDING = 0xfe, + ERR_REQ_TIMEOUT = 0xff, + + ERR_BAD_INPUT_LENGTH = (0x40000000 | 384), /* 0x40000180 */ + ERR_BAD_KEY_LENGTH, + ERR_BAD_KEY_HANDLE, + ERR_BAD_CONTEXT_HANDLE, + ERR_BAD_SCALAR_LENGTH, + ERR_BAD_DIGEST_LENGTH, + ERR_BAD_INPUT_ARG, + ERR_BAD_RECORD_PADDING, + ERR_NB_REQUEST_PENDING, + ERR_EIO, + ERR_ENODEV, +} mc_error_code_t; typedef struct sglist_comp { union { @@ -220,6 +291,49 @@ struct cpt_ctx { uint8_t auth_key[64]; }; +/* Buffer pointer */ +typedef struct buf_ptr { + void *vaddr; + phys_addr_t dma_addr; + uint32_t size; + uint32_t resv; +} buf_ptr_t; + +/* IOV Pointer */ +typedef struct{ + int buf_cnt; + buf_ptr_t bufs[0]; +} iov_ptr_t; + +typedef union opcode_info { + uint16_t flags; + struct { + uint8_t major; + uint8_t minor; + } s; +} opcode_info_t; + +typedef struct fc_params { + /* 0th cache line */ + union { + buf_ptr_t bufs[1]; + struct { + iov_ptr_t *src_iov; + iov_ptr_t *dst_iov; + }; + }; + void *iv_buf; + void *auth_iv_buf; + buf_ptr_t meta_buf; + buf_ptr_t ctx_buf; + uint64_t rsvd2; + + /* 1st cache line */ + buf_ptr_t aad_buf; + buf_ptr_t mac_buf; + +} fc_params_t; + typedef struct fc_params digest_params_t; /* Cipher Algorithms */ @@ -228,8 +342,15 @@ typedef mc_cipher_type_t cipher_type_t; /* Auth Algorithms */ typedef mc_hash_type_t auth_type_t; +/* Helper macros */ + #define CPT_P_ENC_CTRL(fctx) fctx->enc.enc_ctrl.e +#define SRC_IOV_SIZE \ + (sizeof(iov_ptr_t) + (sizeof(buf_ptr_t) * CPT_MAX_SG_CNT)) +#define DST_IOV_SIZE \ + (sizeof(iov_ptr_t) + (sizeof(buf_ptr_t) * CPT_MAX_SG_CNT)) + #define SESS_PRIV(__sess) \ (void *)((uint8_t *)__sess + sizeof(struct cpt_sess_misc)) From patchwork Tue Sep 4 03:59:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44201 X-Patchwork-Delegate: gakhil@marvell.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 CBA197EB4; Tue, 4 Sep 2018 06:03:36 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0067.outbound.protection.outlook.com [104.47.37.67]) by dpdk.org (Postfix) with ESMTP id C92D55B2E for ; Tue, 4 Sep 2018 06:03:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ddgCZ6JKDkkxkDCWWU0fiq+3eF4kuSM9FDGsZM3qM2I=; b=T4vkImUEcYuFR0ykNYduAsLE2HBbYo9NeMdRHWYP73WXoyb052DLJtlCIZFbmxsM/LlZZNbjMzHHsxWlq/XlgcsPmuFQ32ExdtkhcGHGo7vCBnPmYlSUjwgWOOXuj08pmXeUtRbcc50w35LBQksHE+Fp3nRPxJpKInjhkrOCJ2E= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:16 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ragothaman Jayaraman , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:08 +0530 Message-Id: <1536033560-21541-22-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a658f027-811b-4b21-d84e-08d6121b59f1 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:fhGFs9wr+wKab0YT/s7AQ7SyfNiq7xPqGULDjhi45al6/i7ESy+CxmCQRQCGqGo11p5cvy5z5sikQ1NlhBGMW2FqRht3yOI4A1RktQgOs/g5aZhJT2NFJzo+P2DtpmKi2Hc1t15PVPTOpuKlw+PQHtnZWlLXu596Toh1gCp7enxYL+hIIRipBq+cP3+GOiPJBBmRvtroUHBSYcL73NUh7ygkdhPP54+EcLFdxWgYEyDtAy+mXkoJt0JRlWQ86DEK; 25:kztDStiQOn+fUWt3KqCNUYchL80zMqTwrSnJF/IE9lTh7hvWqbDfYwQLbyMHcu6djwkWLMNORuSkfTUCtxft8afdlaEtuN2wSujYjQriaG2SGzXmtephwE+xjecHHW1B8N+rNgFRjCXtcc7AJo3dlWeeqCPCKjZqBMsaVIxesIw4m+AgVeG/kzc1un41m0LrYA6+/8lMtkWiiFwHOKw2fp7dFM5dEV8X+/9r39/9seyi5S/8Q/oSbfTTVTYIBJL5Q44PSAGC6En/rcGvycm4pFlSq1fTLWMt+N3xp+fzZdw4Mgl8++k0w/CBI1d2tJ6BkKXDcoTNDEOhJacE7SEKsg==; 31:HCafplddvTj7Qx+wVol10IE8Fy/maAwlhaNVWRlrAVDRf7a+9V9iUxNQmWTUD2h8uGNTX/uLcrG3AsTZEgeEVbpqwWbJ0gm1LksIVIcFYxaqBlJX9sp/xAgwYc8QV41IzqZUBtP3XDZ/VFByi+jKsGv3SD2/Ke0OBq2fK5m0xKiBDCPo8dTANtCdNRX/9tWV0yhD25ySVF38kaQXTpQb3cE5gG9dCKMEhkrCR1kohwc= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:cwe7rgxfOo13haCK9bk60Jpr1RnlHkZKn/vYKKfvBcJyAc7iwgbaXYtXPWyXkmr3Q3mlzZRWNNwrJY6eiUc1Yn5E9FOFqhGtxqFU8cOhiFRmHxBy/2btl2/lPPn/jJOIp7M7CpFGk+J4FswmBP1MUGt+Wghn/msXsoq+hMJKMJIuGfbnBepsLpz4KdDp2OHA825hnlOD4sjh79xggqgJBBSnvrNHZ1opEEHQX7+DrUjfqvng06VNrY4vgO1wN2mf90Mf2804zdE5qzELv+q859CvXZa1QWPUd008y26ajL76tsJ5m6Zip4QKkC22BxpXgKiy6Xi+5QHiU7WI/uMaNouL3I+PAHaZwdIRGVkA0eRipzOLbafg/QmsoR9qoUPuCZlyvg3FDxfjJou72l9g7xbv9+eDHjaORFNRsKxIaaEGMq45ZPxpcrbHbqIUXm89zJW0hReVAviMlCt2dOAyJhNIui5YnuOAMk2xnVQAPSljEFmVtQpewl2Obc1irsgLfXPHPeB0knyryRPSkoWSL3pcNzQ2QCt+cZFNScBHhy6RJBPI61NULNec6+GoElJcSwERJPL7hOcXAcF471LeGscw5552nUtB8IEGR9isdoc=; 4:u9iyv5nC6N3gPPr6vG+40FFVG6bCBe+2LTiz0vdsA/SSl35VtgSpdGY8IaVBuICWhHqC5z7VzayoGtk/IzDA39gIqk6LtNV4BOe0JmmCWRuevJnBbueGyjCVP6gZE97hzvCeOTaU/Nj6KGLlfRi7U0m6HWSGtcZgvzcpQsPc3WJtbV/8cv5CV1q4xBRn74XrfH39w8vRxFP3tA5PdZM/zA6TNatFyYH5pdb5J4T5tKnQOZtdlQ7qPu/oXJff/37RAU68YjtC/p85SdCMvLdberF6XTOfUT0bcKtf3KRhYpmTMn4OST/b9U7FWXIbFFnR X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(163750095850); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:mCUfFEXBF8jY6p1l/JYln/2szSIbADN1ZjwG37cvi?= +/vjvNh7X/ANHLDwZFUdHhkylT20ceLeEuJa+7eMb5qd7zy5I2KP03WW4slk0yfgfyqWlJhsVCcQWvs7rYCzCxEoA4AbzfWpTIZ7WAA35dewZuJO6yeyYHCE5rGRTiH8HVJ9nEaVo7B1UgpYlex/WIMEkDS/CuPRF3P7+QywI5LlQzi0wSAfoahHF23Zmlh+Y+KqqKPs8EIY4vARdagaE2hGKrG2IEVkorc8xubYI0fKEGHbZ0zKxWHts9Ai3ihjHsbmBXDGEoLTb6794WDWQatZiVB/jLZuUNltQZxWFtC+HqdKTKDoi5XZlgDhW9OMuZ0sevhNzYjuHnr2toc482cE9jIoi2MVN4v4Ye5F9lEeCaZa/6X1k/YyLdM3DNAMBSBzdA3oCrdIEbMEzB5a2U8hsnS6UKqUQglOlbXkIJNJnZOL3ogjmWXlcbutndHRnmQ9/llu7sZuIYkBUbepgSNwjGP2V/00qhCDURX3IJ9v9nJaB4f2eRwTp++A9+HTT7a5Ea1gysbMu+bdTnjDSnXyaF8/uhHg7L/M7krH0VSnEkGMlVWQR5hNhVGH7hGXB5qt8xXmXNY8fG2OrrQq6QePdYm57rxc9msVhw8DrTv9iKmO0hIHpOhoTGD199b+fda53KUakKqvC26jR2NYn2khZcHj6W24a06J/4Y814GaF+tiC5BKGodY2FMaRy1WRuvUnvFUdBTiNZllsAiXbjqjU1bXiDXWrdKiCBD0eFVYC6sfnif1BdO3fezHLTc1EwxaB8o5pCtRdL9p6PgLxTdLXgtqUI20ZpofIJ+RUNCVxsetGsThkNBL1SUw5RHbmKUXf0dcCppM9dvK63pg6r6DzRABxF9ZOOLYCIdL4SyCnndv73y/+ZuXfcqulZZ5fOchBVJr6cTNSVfdL1J3xczY7+3djmXnaNUF/D62e+VFoKRd+HPi2hUapydAz2k7KGszBKN6CngwPOkRf+DZCDOmeFFCBo9orwLMoAkMAWTmjDN83WkGJdmxxFl2uP+/6Egg7eabpSpH3HUzNPct4W1iB4WIdgsrremvs4wyKiPtjJHeasyaxaLlgYMgxQTgciYMdSgouoElj+cIkZma086Wez/WzvQwkDR0CzZolaOKeKXt4nSrlIaUl9yXcEF8aVdcByJ056m3Ind0ObNK1gCcZERApNrCgwA2a5yuh9bS82tyIr/omIKI+TCDfgnPGk= X-Microsoft-Antispam-Message-Info: BGKxpY+f4SxnUJHxgfXlOL/XXFZS+0Yg2Luf75fHD4XU65/t9G+PL+WuWw9qC/NFvJzFERXWOrUB42qaIsdbjKze55MAivIA74UmNN/2bp1nlNKLFkc6A4Sx0aHr0KNIaxmamXj3ELlSnuEex1Y0b3w1Rfh/1fEEgcKOcv0IdbLt1FPrtVMsI4f6eOIXpugiQGH2llseieSxfmF6u1SRn/WNyOkOxE3IpNt0uA0KYVl6wF94PuGYIKhZyahSY5T0OYuNF/1TT00k8H/uO55f2IR6Dh7lHtxrKuNm6l+nNQCzVuiAK5PcS+wCYrDmtom0wSYQwyGn6ERvyMDFHQFSPnnCKyGsM6iMC0afgNTcwak= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:ONywv0BjlsxiwY7O2YLEMkcYBmAGeweqi2ELU/SjzlgM9PozOmX4e+KETMfQY0iUt+PITT0/gZUdaKk/dgIW21lCzgfCyfsmSr2hTLD0XFOb7datZOHgrjbw2qEBLEbpYzOzG6lQfb33L4CxORH4hFnLBmXBcJ8yjdXaDn0VUM31M9vPaQ4BpgDElkmEIpN72OSPU4Cj3c85GLwPe8D3MJazm8tdJROKNdC69eCBzWl0DPVfVtvcu5LbiPVEhOcAGEPg9Uhvp3ZPAqGrfKh/ls1cL7TqgHAvKae1OCNF2IzaZGW03C6IR/Fa0CHW5owsYCjVrVO9llut9iBaRcGsmB37QPQKIbSysk1T3pegZkt3AJ/AEbVRzCKpkp//2xjxwnpcAguW061RO6ReUSHvmXoAdGIIsIC4MvTaHDBSkiDRC6gCiapShP8bZPcDDmj3BiJxBwb8+f8TJ9i+pvBg5w==; 5:fsOXX7p06w6zEIxbZT4d6c4maqPduBb9GLbNDXkrv22pSmYxS9d38e0zDu4h9d8ajkZgOX+4oGqgF6HT3Dxw7pg5IbLTI1oqV5e9BOB8oVfSlaOjgqVfYU+bmVshOYK/BEG1WaGHc3nlMbeLJw27Urfs/BoyDvSSIcdLAxptARY=; 7:e2Gz4Ogwd7fhQTxdBE0u87nGX5SWLayISkGnicCY3NjnJskFa3trZtE7AmdYnAV/VMfs6Oygwv/FBgBXCeT/G2IjpIsOQFQP/IlAWKDSNEgXAF7ij1p8SPvrKb4QYqxypUPcbuFTzlf3MrRUY02YipcoJaAa0uN2T/93YzBNGaFQEwuRSsgqpCJaSB0wvN6QGP13al4e0A0/RVIEQtl+xUNifae31g1v/ZI6nUAaoi6abCHB+p43XjQEMbpSdGqN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:16.3661 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a658f027-811b-4b21-d84e-08d6121b59f1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 21/33] common/cpt: add microcode interface for encryption 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" From: Ragothaman Jayaraman Adding microcode interface additions for supporting encryption. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_ucode.h | 1003 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1003 insertions(+) diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index a9aef68..add5f95 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -5,6 +5,10 @@ #ifndef _CPT_UCODE_H_ #define _CPT_UCODE_H_ +#include + +#include "cpt_common.h" +#include "cpt_hw_types.h" #include "cpt_mcode_defines.h" /* @@ -64,6 +68,14 @@ gen_key_snow3g(uint8_t *ck, uint32_t *keyx) } } +static __rte_always_inline void +cpt_fc_salt_update(void *ctx, + uint8_t *salt) +{ + struct cpt_ctx *cpt_ctx = ctx; + memcpy(&cpt_ctx->fctx.enc.encr_iv, salt, 4); +} + static __rte_always_inline int cpt_fc_ciph_set_key(void *ctx, cipher_type_t type, uint8_t *key, uint16_t key_len, uint8_t *salt) @@ -217,6 +229,564 @@ cpt_fc_ciph_set_key(void *ctx, cipher_type_t type, uint8_t *key, return 0; } +static __rte_always_inline uint32_t +fill_sg_comp(sg_comp_t *list, + uint32_t i, + phys_addr_t dma_addr, + void *vaddr, + uint32_t size) +{ + sg_comp_t *to = &list[i>>2]; + + to->u.s.len[i%4] = rte_cpu_to_be_16(size); + to->ptr[i%4] = rte_cpu_to_be_64(dma_addr); + (void) vaddr; + i++; + return i; +} + +static __rte_always_inline uint32_t +fill_sg_comp_from_buf(sg_comp_t *list, + uint32_t i, + buf_ptr_t *from) +{ + sg_comp_t *to = &list[i>>2]; + + to->u.s.len[i%4] = rte_cpu_to_be_16(from->size); + to->ptr[i%4] = rte_cpu_to_be_64(from->dma_addr); + i++; + return i; +} + +static __rte_always_inline uint32_t +fill_sg_comp_from_buf_min(sg_comp_t *list, + uint32_t i, + buf_ptr_t *from, + uint32_t *psize) +{ + sg_comp_t *to = &list[i >> 2]; + uint32_t size = *psize; + uint32_t e_len; + + e_len = (size > from->size) ? from->size : size; + to->u.s.len[i % 4] = rte_cpu_to_be_16(e_len); + to->ptr[i % 4] = rte_cpu_to_be_64(from->dma_addr); + *psize -= e_len; + i++; + return i; +} + +/* + * This fills the MC expected SGIO list + * from IOV given by user. + */ +static __rte_always_inline uint32_t +fill_sg_comp_from_iov(sg_comp_t *list, + uint32_t i, + iov_ptr_t *from, uint32_t from_offset, + uint32_t *psize, buf_ptr_t *extra_buf, + uint32_t extra_offset) +{ + int32_t j; + uint32_t extra_len = extra_buf ? extra_buf->size : 0; + uint32_t size = *psize - extra_len; + buf_ptr_t *bufs; + + bufs = from->bufs; + for (j = 0; (j < from->buf_cnt) && size; j++) { + phys_addr_t e_dma_addr; + uint32_t e_len; + sg_comp_t *to = &list[i >> 2]; + + if (!bufs[j].size) + continue; + + if (unlikely(from_offset)) { + if (from_offset >= bufs[j].size) { + from_offset -= bufs[j].size; + continue; + } + e_dma_addr = bufs[j].dma_addr + from_offset; + e_len = (size > (bufs[j].size - from_offset)) ? + (bufs[j].size - from_offset) : size; + from_offset = 0; + } else { + e_dma_addr = bufs[j].dma_addr; + e_len = (size > bufs[j].size) ? + bufs[j].size : size; + } + + to->u.s.len[i % 4] = rte_cpu_to_be_16(e_len); + to->ptr[i % 4] = rte_cpu_to_be_64(e_dma_addr); + + if (extra_len && (e_len >= extra_offset)) { + /* Break the data at given offset */ + uint32_t next_len = e_len - extra_offset; + phys_addr_t next_dma = e_dma_addr + extra_offset; + + if (!extra_offset) { + i--; + } else { + e_len = extra_offset; + size -= e_len; + to->u.s.len[i % 4] = rte_cpu_to_be_16(e_len); + } + + /* Insert extra data ptr */ + if (extra_len) { + i++; + to = &list[i >> 2]; + to->u.s.len[i % 4] = + rte_cpu_to_be_16(extra_buf->size); + to->ptr[i % 4] = + rte_cpu_to_be_64(extra_buf->dma_addr); + + /* size already decremented by extra len */ + } + + /* insert the rest of the data */ + if (next_len) { + i++; + to = &list[i >> 2]; + to->u.s.len[i % 4] = rte_cpu_to_be_16(next_len); + to->ptr[i % 4] = rte_cpu_to_be_64(next_dma); + size -= next_len; + } + extra_len = 0; + + } else { + size -= e_len; + } + if (extra_offset) + extra_offset -= size; + i++; + } + + *psize = size; + return (uint32_t)i; +} + +static __rte_always_inline int +cpt_enc_hmac_prep(uint32_t flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *fc_params, + void *op, + void **prep_req) +{ + uint32_t iv_offset = 0; + int32_t inputlen, outputlen, enc_dlen, auth_dlen; + struct cpt_ctx *cpt_ctx; + uint32_t cipher_type, hash_type; + uint32_t mac_len, size; + uint8_t iv_len = 16; + struct cpt_request_info *req; + buf_ptr_t *meta_p, *aad_buf = NULL; + uint32_t encr_offset, auth_offset; + uint32_t encr_data_len, auth_data_len, aad_len = 0; + uint32_t passthrough_len = 0; + void *m_vaddr, *offset_vaddr; + uint64_t m_dma, offset_dma, ctx_dma; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + void *c_vaddr; + uint64_t c_dma; + int32_t m_size; + opcode_info_t opcode; + + meta_p = &fc_params->meta_buf; + m_vaddr = meta_p->vaddr; + m_dma = meta_p->dma_addr; + m_size = meta_p->size; + + encr_offset = ENCR_OFFSET(d_offs); + auth_offset = AUTH_OFFSET(d_offs); + encr_data_len = ENCR_DLEN(d_lens); + auth_data_len = AUTH_DLEN(d_lens); + if (unlikely(flags & VALID_AAD_BUF)) { + /* + * We dont support both aad + * and auth data separately + */ + auth_data_len = 0; + auth_offset = 0; + aad_len = fc_params->aad_buf.size; + aad_buf = &fc_params->aad_buf; + } + cpt_ctx = fc_params->ctx_buf.vaddr; + cipher_type = cpt_ctx->enc_cipher; + hash_type = cpt_ctx->hash_type; + mac_len = cpt_ctx->mac_len; + + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* start cpt request info struct at 8 byte boundary */ + size = (uint8_t *)RTE_PTR_ALIGN(m_vaddr, 8) - + (uint8_t *)m_vaddr; + + req = (struct cpt_request_info *)((uint8_t *)m_vaddr + size); + + size += sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + if (hash_type == GMAC_TYPE) + encr_data_len = 0; + + if (unlikely(!(flags & VALID_IV_BUF))) { + iv_len = 0; + iv_offset = ENCR_IV_OFFSET(d_offs); + } + + if (unlikely(flags & VALID_AAD_BUF)) { + /* + * When AAD is given, data above encr_offset is pass through + * Since AAD is given as separate pointer and not as offset, + * this is a special case as we need to fragment input data + * into passthrough + encr_data and then insert AAD in between. + */ + if (hash_type != GMAC_TYPE) { + passthrough_len = encr_offset; + auth_offset = passthrough_len + iv_len; + encr_offset = passthrough_len + aad_len + iv_len; + auth_data_len = aad_len + encr_data_len; + } else { + passthrough_len = 16 + aad_len; + auth_offset = passthrough_len + iv_len; + auth_data_len = aad_len; + } + } else { + encr_offset += iv_len; + auth_offset += iv_len; + } + + /* Initialising ctrl and opcode + * fields in cpt request structure + */ + + req->se_req = SE_CORE_REQ; + /* + * We are using DMA mode but indicate that + * SGIO list is already populated. + */ + req->dma_mode = CTRL_DMA_MODE_SGIO; + + /* Encryption */ + opcode.s.major = CPT_MAJOR_OP_FC; + opcode.s.minor = 0; + + auth_dlen = auth_offset + auth_data_len; + enc_dlen = encr_data_len + encr_offset; + if (unlikely(encr_data_len & 0xf)) { + if ((cipher_type == DES3_CBC) || (cipher_type == DES3_ECB)) + enc_dlen = ROUNDUP8(encr_data_len) + encr_offset; + else if (likely((cipher_type == AES_CBC) || + (cipher_type == AES_ECB))) + enc_dlen = ROUNDUP16(encr_data_len) + encr_offset; + } + + if (unlikely(hash_type == GMAC_TYPE)) { + encr_offset = auth_dlen; + enc_dlen = 0; + } + + if (unlikely(auth_dlen > enc_dlen)) { + inputlen = auth_dlen; + outputlen = auth_dlen + mac_len; + } else { + inputlen = enc_dlen; + outputlen = enc_dlen + mac_len; + } + + /*GP op header */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(auth_data_len); + /* + * In 83XX since we have a limitation of + * IV & Offset control word not part of instruction + * and need to be part of Data Buffer, we check if + * head room is there and then only do the Direct mode processing + */ + if (likely((flags & SINGLE_BUF_INPLACE) && + (flags & SINGLE_BUF_HEADTAILROOM))) { + void *dm_vaddr = fc_params->bufs[0].vaddr; + uint64_t dm_dma_addr = fc_params->bufs[0].dma_addr; + /* + * This flag indicates that there is 24 bytes head room and + * 8 bytes tail room available, so that we get to do + * DIRECT MODE with limitation + */ + + offset_vaddr = (uint8_t *)dm_vaddr - OFF_CTRL_LEN - iv_len; + offset_dma = dm_dma_addr - OFF_CTRL_LEN - iv_len; + + /* DPTR */ + req->ist.ei1 = offset_dma; + /* RPTR should just exclude offset control word */ + req->ist.ei2 = dm_dma_addr - iv_len; + req->alternate_caddr = (uint64_t *)((uint8_t *)dm_vaddr + + outputlen - iv_len); + + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(inputlen + OFF_CTRL_LEN); + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint64_t *dest = (uint64_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + uint64_t *src = fc_params->iv_buf; + dest[0] = src[0]; + dest[1] = src[1]; + } + + *(uint64_t *)offset_vaddr = + rte_cpu_to_be_64(((uint64_t)encr_offset << 16) | + ((uint64_t)iv_offset << 8) | + ((uint64_t)auth_offset)); + + } else { + uint32_t i, g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + uint8_t *in_buffer; + + /* This falls under strict SG mode */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + size = OFF_CTRL_LEN + iv_len; + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + opcode.s.major |= CPT_DMA_MODE; + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint64_t *dest = (uint64_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + uint64_t *src = fc_params->iv_buf; + dest[0] = src[0]; + dest[1] = src[1]; + } + + *(uint64_t *)offset_vaddr = + rte_cpu_to_be_64(((uint64_t)encr_offset << 16) | + ((uint64_t)iv_offset << 8) | + ((uint64_t)auth_offset)); + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + + i = 0; + + /* Offset control word that includes iv */ + i = fill_sg_comp(gather_comp, i, offset_dma, + offset_vaddr, OFF_CTRL_LEN + iv_len); + + /* Add input data */ + size = inputlen - iv_len; + if (likely(size)) { + uint32_t aad_offset = aad_len ? passthrough_len : 0; + + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + i = fill_sg_comp_from_buf_min(gather_comp, i, + fc_params->bufs, + &size); + } else { + + i = fill_sg_comp_from_iov(gather_comp, i, + fc_params->src_iov, + 0, &size, + aad_buf, aad_offset); + } + + if (unlikely(size)) { + CPT_LOG_DP_ERR("Insufficient buffer space," + " size %d need\n", size); + return ERR_BAD_INPUT_ARG; + } + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter list + */ + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + /* Add IV */ + if (likely(iv_len)) { + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + } + + /* output data or output data + digest*/ + if (unlikely(flags & VALID_MAC_BUF)) { + size = outputlen - iv_len - mac_len; + if (size) { + uint32_t aad_offset = + aad_len ? passthrough_len : 0; + + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + i = fill_sg_comp_from_buf_min( + scatter_comp, + i, + fc_params->bufs, + &size); + } else { + i = fill_sg_comp_from_iov(scatter_comp, + i, + fc_params->dst_iov, + 0, + &size, + aad_buf, + aad_offset); + } + if (size) + return ERR_BAD_INPUT_ARG; + } + /* mac_data */ + if (mac_len) { + i = fill_sg_comp_from_buf(scatter_comp, i, + &fc_params->mac_buf); + } + } else { + /* Output including mac */ + size = outputlen - iv_len; + if (likely(size)) { + uint32_t aad_offset = + aad_len ? passthrough_len : 0; + + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + i = fill_sg_comp_from_buf_min( + scatter_comp, + i, + fc_params->bufs, + &size); + } else { + i = fill_sg_comp_from_iov(scatter_comp, + i, + fc_params->dst_iov, + 0, + &size, + aad_buf, + aad_offset); + } + if (unlikely(size)) { + CPT_LOG_DP_ERR("Insufficient " + "buffer space, size %d need\n", size); + return ERR_BAD_INPUT_ARG; + } + } + } + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + } + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + ctx_dma = fc_params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, fctx); + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = ctx_dma; + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + +static __rte_always_inline void *__hot +cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, + fc_params_t *fc_params, void *op, int *ret_val) +{ + struct cpt_ctx *ctx = fc_params->ctx_buf.vaddr; + uint8_t fc_type; + void *prep_req = NULL; + int ret; + + fc_type = ctx->fc_type; + + /* Common api for rest of the ops */ + if (likely(fc_type == FC_GEN)) { + ret = cpt_enc_hmac_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); + } else { + ret = ERR_EIO; + } + + if (unlikely(!prep_req)) + *ret_val = ret; + return prep_req; +} + static __rte_always_inline int cpt_fc_auth_set_key(void *ctx, auth_type_t type, uint8_t *key, uint16_t key_len, uint16_t mac_len) @@ -618,4 +1188,437 @@ fill_sess_gmac(struct rte_crypto_sym_xform *xform, return 0; } +static __rte_always_inline void * +alloc_op_meta(struct rte_mbuf *m_src, + buf_ptr_t *buf, + int32_t len, + struct rte_mempool *cpt_meta_pool) +{ + uint8_t *mdata; + +#ifndef CPT_ALWAYS_USE_SEPARATE_BUF + if (likely(m_src && (m_src->nb_segs == 1))) { + int32_t tailroom; + phys_addr_t mphys; + + /* Check if tailroom is sufficient to hold meta data */ + tailroom = rte_pktmbuf_tailroom(m_src); + if (likely(tailroom > len + 8)) { + mdata = (uint8_t *)m_src->buf_addr + m_src->buf_len; + mphys = m_src->buf_physaddr + m_src->buf_len; + mdata -= len; + mphys -= len; + buf->vaddr = mdata; + buf->dma_addr = mphys; + buf->size = len; + /* Indicate that this is a mbuf allocated mdata */ + mdata = (uint8_t *)((uint64_t)mdata | 1ull); + return mdata; + } + } +#else + (void) m_src; +#endif + + if (unlikely(rte_mempool_get(cpt_meta_pool, (void **)&mdata) < 0)) + return NULL; + + buf->vaddr = mdata; + buf->dma_addr = rte_mempool_virt2iova(mdata); + buf->size = len; + + return mdata; +} + +/** + * cpt_free_metabuf - free metabuf to mempool. + * @param instance: pointer to instance. + * @param objp: pointer to the metabuf. + */ +static __rte_always_inline void +free_op_meta(void *mdata, struct rte_mempool *cpt_meta_pool) +{ + bool nofree = ((uintptr_t)mdata & 1ull); + + if (likely(nofree)) + return; + rte_mempool_put(cpt_meta_pool, mdata); +} + +static __rte_always_inline uint32_t +prepare_iov_from_pkt(struct rte_mbuf *pkt, + iov_ptr_t *iovec, uint32_t start_offset) +{ + uint16_t index = 0; + void *seg_data = NULL; + phys_addr_t seg_phys; + int32_t seg_size = 0; + + if (!pkt) { + iovec->buf_cnt = 0; + return 0; + } + + if (!start_offset) { + seg_data = rte_pktmbuf_mtod(pkt, void *); + seg_phys = rte_pktmbuf_mtophys(pkt); + seg_size = pkt->data_len; + } else { + while (start_offset >= pkt->data_len) { + start_offset -= pkt->data_len; + pkt = pkt->next; + } + + seg_data = rte_pktmbuf_mtod_offset(pkt, void *, start_offset); + seg_phys = rte_pktmbuf_mtophys_offset(pkt, start_offset); + seg_size = pkt->data_len - start_offset; + if (!seg_size) + return 1; + } + + /* first seg */ + iovec->bufs[index].vaddr = seg_data; + iovec->bufs[index].dma_addr = seg_phys; + iovec->bufs[index].size = seg_size; + index++; + pkt = pkt->next; + + while (unlikely(pkt != NULL)) { + seg_data = rte_pktmbuf_mtod(pkt, void *); + seg_phys = rte_pktmbuf_mtophys(pkt); + seg_size = pkt->data_len; + if (!seg_size) + break; + + iovec->bufs[index].vaddr = seg_data; + iovec->bufs[index].dma_addr = seg_phys; + iovec->bufs[index].size = seg_size; + + index++; + + /* FIXME: Not depending on wqe.w0.s.bufs to break */ + pkt = pkt->next; + } + + iovec->buf_cnt = index; + return 0; +} + +static __rte_always_inline uint32_t +prepare_iov_from_pkt_inplace(struct rte_mbuf *pkt, + fc_params_t *param, + uint32_t *flags) +{ + uint16_t index = 0; + void *seg_data = NULL; + phys_addr_t seg_phys; + uint32_t seg_size = 0; + iov_ptr_t *iovec; + + seg_data = rte_pktmbuf_mtod(pkt, void *); + seg_phys = rte_pktmbuf_mtophys(pkt); + seg_size = pkt->data_len; + + /* first seg */ + if (likely(!pkt->next)) { + uint32_t headroom, tailroom; + + *flags |= SINGLE_BUF_INPLACE; + headroom = rte_pktmbuf_headroom(pkt); + tailroom = rte_pktmbuf_tailroom(pkt); + if (likely((headroom >= 24) && + (tailroom >= 8))) { + /* In 83XX this is prerequivisit for Direct mode */ + *flags |= SINGLE_BUF_HEADTAILROOM; + } + param->bufs[0].vaddr = seg_data; + param->bufs[0].dma_addr = seg_phys; + param->bufs[0].size = seg_size; + return 0; + } + iovec = param->src_iov; + iovec->bufs[index].vaddr = seg_data; + iovec->bufs[index].dma_addr = seg_phys; + iovec->bufs[index].size = seg_size; + index++; + pkt = pkt->next; + + while (unlikely(pkt != NULL)) { + seg_data = rte_pktmbuf_mtod(pkt, void *); + seg_phys = rte_pktmbuf_mtophys(pkt); + seg_size = pkt->data_len; + + if (!seg_size) + break; + + iovec->bufs[index].vaddr = seg_data; + iovec->bufs[index].dma_addr = seg_phys; + iovec->bufs[index].size = seg_size; + + index++; + + pkt = pkt->next; + } + + iovec->buf_cnt = index; + return 0; +} + +static __rte_always_inline void * +fill_fc_params(struct rte_crypto_op *cop, + struct cpt_sess_misc *sess_misc, + void **mdata_ptr, + int *op_ret) +{ + uint32_t space = 0; + struct rte_crypto_sym_op *sym_op = cop->sym; + void *mdata; + uintptr_t *op; + uint32_t mc_hash_off; + uint32_t flags = 0; + uint64_t d_offs, d_lens; + void *prep_req = NULL; + struct rte_mbuf *m_src, *m_dst; + uint8_t cpt_op = sess_misc->cpt_op; + uint8_t zsk_flag = sess_misc->zsk_flag; + uint8_t aes_gcm = sess_misc->aes_gcm; + uint16_t mac_len = sess_misc->mac_len; +#ifdef CPT_ALWAYS_USE_SG_MODE + uint8_t inplace = 0; +#else + uint8_t inplace = 1; +#endif + fc_params_t fc_params; + char src[SRC_IOV_SIZE]; + char dst[SRC_IOV_SIZE]; + uint32_t iv_buf[4]; + struct cptvf_meta_info *cpt_m_info = + (struct cptvf_meta_info *)(*mdata_ptr); + + if (likely(sess_misc->iv_length)) { + flags |= VALID_IV_BUF; + fc_params.iv_buf = rte_crypto_op_ctod_offset(cop, + uint8_t *, sess_misc->iv_offset); + if (sess_misc->aes_ctr && + unlikely(sess_misc->iv_length != 16)) { + memcpy((uint8_t *)iv_buf, + rte_crypto_op_ctod_offset(cop, + uint8_t *, sess_misc->iv_offset), 12); + iv_buf[3] = rte_cpu_to_be_32(0x1); + fc_params.iv_buf = iv_buf; + } + } + + if (zsk_flag) { + fc_params.auth_iv_buf = rte_crypto_op_ctod_offset(cop, + uint8_t *, + sess_misc->auth_iv_offset); + if (zsk_flag == K_F9) { + CPT_LOG_DP_ERR("Should not reach here for " + "kasumi F9\n"); + } + if (zsk_flag != ZS_EA) + inplace = 0; + } + m_src = sym_op->m_src; + m_dst = sym_op->m_dst; + + if (aes_gcm) { + uint8_t *salt; + uint8_t *aad_data; + uint16_t aad_len; + + d_offs = sym_op->aead.data.offset; + d_lens = sym_op->aead.data.length; + mc_hash_off = sym_op->aead.data.offset + + sym_op->aead.data.length; + + aad_data = sym_op->aead.aad.data; + aad_len = sess_misc->aad_length; + if (likely((aad_data + aad_len) == + rte_pktmbuf_mtod_offset(m_src, + uint8_t *, + sym_op->aead.data.offset))) { + d_offs = (d_offs - aad_len) | (d_offs << 16); + d_lens = (d_lens + aad_len) | (d_lens << 32); + } else { + fc_params.aad_buf.vaddr = sym_op->aead.aad.data; + fc_params.aad_buf.dma_addr = sym_op->aead.aad.phys_addr; + fc_params.aad_buf.size = aad_len; + flags |= VALID_AAD_BUF; + inplace = 0; + d_offs = d_offs << 16; + d_lens = d_lens << 32; + } + + salt = fc_params.iv_buf; + if (unlikely(*(uint32_t *)salt != sess_misc->salt)) { + cpt_fc_salt_update(SESS_PRIV(sess_misc), salt); + sess_misc->salt = *(uint32_t *)salt; + } + fc_params.iv_buf = salt + 4; + if (likely(mac_len)) { + struct rte_mbuf *m = (cpt_op & CPT_OP_ENCODE) ? m_dst : + m_src; + + if (!m) + m = m_src; + + /* hmac immediately following data is best case */ + if (unlikely(rte_pktmbuf_mtod(m, uint8_t *) + + mc_hash_off != + (uint8_t *)sym_op->aead.digest.data)) { + flags |= VALID_MAC_BUF; + fc_params.mac_buf.size = sess_misc->mac_len; + fc_params.mac_buf.vaddr = + sym_op->aead.digest.data; + fc_params.mac_buf.dma_addr = + sym_op->aead.digest.phys_addr; + inplace = 0; + } + } + } else { + d_offs = sym_op->cipher.data.offset; + d_lens = sym_op->cipher.data.length; + mc_hash_off = sym_op->cipher.data.offset + + sym_op->cipher.data.length; + d_offs = (d_offs << 16) | sym_op->auth.data.offset; + d_lens = (d_lens << 32) | sym_op->auth.data.length; + + if (mc_hash_off < (sym_op->auth.data.offset + + sym_op->auth.data.length)){ + mc_hash_off = (sym_op->auth.data.offset + + sym_op->auth.data.length); + } + /* for gmac, salt should be updated like in gcm */ + if (unlikely(sess_misc->is_gmac)) { + uint8_t *salt; + salt = fc_params.iv_buf; + if (unlikely(*(uint32_t *)salt != sess_misc->salt)) { + cpt_fc_salt_update(SESS_PRIV(sess_misc), salt); + sess_misc->salt = *(uint32_t *)salt; + } + fc_params.iv_buf = salt + 4; + } + /* */ + if (likely(mac_len)) { + struct rte_mbuf *m = + (cpt_op & CPT_OP_ENCODE) ? m_dst : m_src; + + if (!m) + m = m_src; + + /* hmac immediately following data is best case */ + if (unlikely(rte_pktmbuf_mtod(m, uint8_t *) + + mc_hash_off != + (uint8_t *)sym_op->auth.digest.data)) { + flags |= VALID_MAC_BUF; + fc_params.mac_buf.size = + sess_misc->mac_len; + fc_params.mac_buf.vaddr = + sym_op->auth.digest.data; + fc_params.mac_buf.dma_addr = + sym_op->auth.digest.phys_addr; + inplace = 0; + } + } + } + fc_params.ctx_buf.vaddr = SESS_PRIV(sess_misc); + fc_params.ctx_buf.dma_addr = sess_misc->ctx_dma_addr; + + if (unlikely(sess_misc->is_null || sess_misc->cpt_op == CPT_OP_DECODE)) + inplace = 0; + + if (likely(!m_dst && inplace)) { + /* Case of single buffer without AAD buf or + * separate mac buf in place and + * not air crypto + */ + fc_params.dst_iov = fc_params.src_iov = (void *)src; + + if (unlikely(prepare_iov_from_pkt_inplace(m_src, + &fc_params, + &flags))) { + CPT_LOG_DP_ERR("Prepare inplace src iov failed\n"); + *op_ret = -1; + return NULL; + } + + } else { + /* Out of place processing */ + fc_params.src_iov = (void *)src; + fc_params.dst_iov = (void *)dst; + + /*Store SG I/O in the api for reuse */ + if (prepare_iov_from_pkt(m_src, fc_params.src_iov, 0)) { + CPT_LOG_DP_ERR("Prepare src iov failed\n"); + *op_ret = -1; + return NULL; + } + + if (unlikely(m_dst != NULL)) { + uint32_t pkt_len; + + /* Try to make room as much as src has */ + m_dst = sym_op->m_dst; + pkt_len = rte_pktmbuf_pkt_len(m_dst); + + if (unlikely(pkt_len < rte_pktmbuf_pkt_len(m_src))) { + pkt_len = rte_pktmbuf_pkt_len(m_src) - pkt_len; + if (!rte_pktmbuf_append(m_dst, pkt_len)) { + CPT_LOG_DP_ERR("Not enough space in " + "m_dst %p, need %u more\n", + m_dst, pkt_len); + return NULL; + } + } + + if (prepare_iov_from_pkt(m_dst, fc_params.dst_iov, 0)) { + CPT_LOG_DP_ERR("Prepare dst iov failed for " + "m_dst %p\n", m_dst); + return NULL; + } + } else { + fc_params.dst_iov = (void *)src; + } + + } + + if (likely(flags & SINGLE_BUF_HEADTAILROOM)) + mdata = alloc_op_meta(m_src, + &fc_params.meta_buf, + cpt_m_info->cptvf_op_sb_mlen, + cpt_m_info->cptvf_meta_pool); + else + mdata = alloc_op_meta(NULL, + &fc_params.meta_buf, + cpt_m_info->cptvf_op_mlen, + cpt_m_info->cptvf_meta_pool); + + if (unlikely(mdata == NULL)) { + CPT_LOG_DP_ERR("Error allocating meta buffer for request\n"); + return NULL; + } + + op = (uintptr_t *)((uintptr_t)mdata & (uintptr_t)~1ull); + op[0] = (uintptr_t)mdata; + op[1] = (uintptr_t)cop; + op[2] = op[3] = 0; /* Used to indicate auth verify */ + space += 4 * sizeof(uint64_t); + + fc_params.meta_buf.vaddr = (uint8_t *)op + space; + fc_params.meta_buf.dma_addr += space; + fc_params.meta_buf.size -= space; + + /* Finally prepare the instruction */ + if (cpt_op & CPT_OP_ENCODE) + prep_req = cpt_fc_enc_hmac_prep(flags, d_offs, d_lens, + &fc_params, op, op_ret); + + if (unlikely(!prep_req)) + free_op_meta(mdata, cpt_m_info->cptvf_meta_pool); + *mdata_ptr = mdata; + return prep_req; +} + #endif /*_CPT_UCODE_H_ */ From patchwork Tue Sep 4 03:59:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44202 X-Patchwork-Delegate: gakhil@marvell.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 622038D8D; Tue, 4 Sep 2018 06:03:38 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0089.outbound.protection.outlook.com [104.47.37.89]) by dpdk.org (Postfix) with ESMTP id 4539F5F25 for ; Tue, 4 Sep 2018 06:03:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kDAP7hMsj/+uHYt27kIYSZIL8fH1fQEdPxCUSK/8SBg=; b=BRG+LHpZmeA/7Ri0KcUfCzNilvnTVBMVxuZfWLfed9BQGWNn/jx3mkI8+Ky162oxO1OzbjlWnhTRNrkaJ30MIBK+u6vPqQWxZpFqsNB7b6U8KGf6ANQJtYOEtxJQMS/dTNqClrDi+kkAoru055aaF4+lirTOXr3NMoaDm1xsdgI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:20 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ragothaman Jayaraman , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:09 +0530 Message-Id: <1536033560-21541-23-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 10c71837-f632-44a5-6976-08d6121b5cac X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:s5PkuGO1GY5hqHxIp8zfSHzxd0c0LKsBXP/11nmXcI1I/SH/3UM2KZm7twx63C4uFrGpHDfjNIcixFIocH8WCW3JWwiQm4J9pLg7S8a8P2aF1acodOh5/9I40vSnFaI8KFw2h5uBtmYMwTmQcb/Z2waxX36rm7P/zgMpc9251Lcpn+A5SBqCFS7Myj+6pt7We36tvmziGpBbDyScAddBYMmVjIlJkk8jMqEt2cBSqFCg61NQD8/Y+DIhfCl5vOzs; 25:QAdX/ZRrGHgUyKdd5N5TgexxGqOGgDvvmkc+9esYrqHFiYi/tYBvfztO5Vq1WgEvYw9RdKrCRZQlHlbURUan0VsCOykpMkhbSONS4oSdVR7cMZmu6DL1s6grwsa8k+MXMwDtuCIhIEfjPsoZihd8Hrb3vLb/mGibeng3mvus9kjNcLFQJll8ED9kH64R8DfV9h6P7aFatd6MsmljXbLd7Rd+lPT0cXc/h4+QNV2db5reVvb6TML4cTSOTY1kGsyqgviWuTt0O8DA1+xrqAw3wiCgsyBKS3d9HTlgafEC1F6SOCZDEIVsGFBUnsLkg2w9kVgOd+w7lEAEiKt2Rr5vkw==; 31:pXYn1qIrUSpUFJ9GnT2aojLC/R2P6fCtBiR4K1nl4K2EIlxzTEchJKugzkVbmYMinh8L7M0QhQXMsAxkhG7SSiXinpf7MIa3zcth1jDLtOMB3uShfFow4byfM4R9Aey+RJK9L41ocLkQcIiqudMNQoBGMDJJmAaeCYFBWofmGnnSO4Rn+kePNI+5qfbjxqlP8NEHzP9OuVHJRSn1/FUdQbFSmPaQZCDpsk6Rlu0M1gk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:9gIW1vOqjyoy5ryFeW0t0TvlBbn29aDiQXt/SvkiB4B2uqVVXZXL4f9C5AqCfoiBc/Ve3+Kr72116/zE3DJVUZtDEnkDB9B5kBm/EKFMpg5Gxjh0mQFF8qZmboxd4MADkLMsQzD3H3OxopXMiYBvDjM/nz6vFMuuJW1ruAQmYrp2YSF87pIss8R3wgLC96P7CSfW86r4nQ6a7VndLW2UatslJOaXH8Vlrvy480fj8HNFrHGOjuwD0nDeOUHaDAz1iNcUJRcNjMQrBpkKCrgxuIOC2gquZwOhP+eW8BwnLbfFR17JjEDjvxpym+TtdWvGq6Asof0LfG43hk047IlsuzgMBkt3V2wh78EllWbPOOx9+pRHOC7RRnJ58ITJN9rUncBOkmA+RBneHvoDSWasxn77wb4Bk9WFNRR75MLWWKech1xIzQlqv9CTFL1zIJzn6q10s9gvD32Xq9eukeRmml68DBBS58it/kxovNF1MaEB1rvrZHjpCO/WVcbOhOeZSAd6vOc0w9b/WBHlDH/ObGsQbK4WVx21GR7o2ZiuFtsBGkdBIMHQxCC212gjAlqR6KHDol8Bj3IG3iF3OU87YBhod+vxl7G7FSuaWJjSg44=; 4:Zj0yNEtn1z9muATA02Pt/ZeGYUfjIpASHM8svVUyWRF8rze8tskyxsa79wrohRbwENDyhODqCViO+Hf6cZ3YHwyF6/S7l4WdZ20DjBW4Rp4OcyZ3+BdjH5lR4bIgwcIhl2ymG9wXuRL+tP0oYsX9LLQMxum1W4EvboqKmJ36+kP/Vq5bk1a3zEG5C2DU7Y3U3/9DFYW0UUQmbKj5L+xkv2BWnPFYJLyC7kwAloy1wgYLfsze5tikCd8rqNgWeAZNSSY5LV02o+y7+hCyN7hgKA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:FU8s38U0pnEntb5o6MJYi5mJWcXaWsngRmAS6tkhU?= oxwO9vIwWZmfDiSvCc+/MngggfvyXPLC19cH871YyK8mojrQ2+OzmJTcsxjzzCZHc2kiPdfH7mmJt2xpyb5+R5tmurN8fbjJT5Gq+W5fA/XgpnnuzsVinn7i+WgcsHrm1OY88F/xv4yGH8G02G7QPCm9VqO2k01mmritVqo6AHE0+5ZCXOJ0JGW9V2aZKk6UGJo3Rn4PEaSqIlT5iIiuynuPovScEcKNssEj3v0IAjaM/MVs+lO2z8HZFCHhm1YhXevj1BuJwVopnqADxcQs8GlptLUSvx0g38tqr2+LevZbPl4brQUyVTxNKQ5D6y1wn5aY/oz7/jEMR4Dxn1dO5Fc9F+JBcGvhEqYGVEh3J/u/aqZfvQPzPeJKVcwEOnZi8jrb4Yi3C3WdJDqfppiKGLYyndtaSdE2KmAMJcds2j5Y8j7ROslvfdl4ZAptZ5BlWdAUWIbd04ECfxK77YQ76VaIdXm31cr1OvQe1POxQBrRB8oi4P4sGH/y8UDAwv+TOhESXBKzQh1b+sNwQJH23ixewiyDzK30hsepSjxj9pFi8HusuXB4i/3WuXMrMLML6MOoCjnbeT5vdYN0eEL8Fmcnvc30hYyYotCkh/xIaIDEuZDg7jhdFWhKyI6J8G3m7vs8mTLbQ25d/q2qTAY4f5okifiCCpfy8l05+cvmnH0YI2jSqbffI8/3O273mvDVOAa6OAEknt0BDNwN05e0M+O8ysw7Q5MnKxlsuRz4W5Tpi1QpvPG9cergPT8O2i86d+i8GEL3LX8bkZaFjtVNIAyYUA/0jlpRrCuQVlMKqAEdcMX/ua3+FbD9YsnmIQ+YfVD7gOmKywA+OK/RJOAhv9BMaOUKNq9sf9XvKjLxR0sFGBAUTZRV0ZQaIinXU1zUnUGMdTbpb9g3vn19MBulmOncZn6f53lSUVVcijVQVpuKApId5w6voUHx1MekUYvI3jsZCUH2BYmDRJatBn/sY2K/ZdwkIcxHDlURG1hBvFVcZt5gJTOnez2CjQiE5bdkaUXxrbBwdBBRzs6ozAAdWXwh2ThVBArmN1PhQ/9E+v9HSuBt4wsN8us1roAu0/1SjpcxmUk/E0ZCyXkeKZqs5WTwUnS33fFbYdhxypjtxSfD3Zqni/L6Sf3qPF7kqytkYjcJfoy0PGxVASwPU45GKasX6YXw0vO8vVwORb6Y2A1coyZJXOEQwI7wob9sv+f0g4= X-Microsoft-Antispam-Message-Info: BIPT9aFOnyr3SCpE0FbPeXGEy02Np8i7afPTv08Cf/RqbBYDbYAATET0pM55Bfpd+B+MBm0a51r6AuY2FmTIsqmR4Vz6U8zq+mNIBGTe/29eYKaI3cysWOCNbIpnuAiJeU2r++a9NrCXKlsWGgAYw2/wy5ZXwjgoj/I3LAgyDYPTHeFh02ZwC3RfY4fDzMjmczB8CPaYHynJmNxYGcDgi/NZWoo/+porSHm04qj87aZl+riZoWVTHIegz5E4BLCSeWovecSAr3to7k3gAt3sRurq8da1NtWk5oKdGzEV6IXzt5//Ic6sMyx/3HN/nl3q60/W4a/bBu/7paBM3amkJc+JbQdK3HJl7Ydooq3yXZw= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:epRUXfhpdTjwHzS50/h815BuoYbKdPlnHxhPFvPj04RHqV/pYj6jAcrNTsJOVOKjXfdHxjrplWOMQHFUZ7NO3be7vV61Kd+nrSfoyHQTMke06SIazXgffmTq1aKf++vYrgxwh/pCsFX/X4IZV1/jnQt9a6E+eBf65JjF2EoPlqXhCd0Aa34i71Dic3MG2bBk/5azz/nJ3iJ/pRNDo8WwRkGPmmk6cyR4JCs8Jo0gK6wqk75eM6fa3uQXFfkS4bVmILMV6bfGECNOK4qx6g6fA0X15t+2xyyETy5s6nG7W9DcJLVHeNAIGTJGcbSpxpn8iNX6DkdQ8JB01JJyxxrVdonSVxLAhxODYOcThyLyV4FKtrUSJ2kAsK2awdgTTcf09JaIA6vtk9rCJX/BqeXepXl3znHiAHzd6wpjDZD671Gq8HkI110D5Q2wPgtUgYU4FWAme54CrtemaDP8owftDQ==; 5:fhHdG+SIaon7UDycQA5nqkFCLgy1lFSkNwoBP13xS0pUJ5GVKCelZ1G2g2c1epGbwFGs3KeTj8XpwMoEgj0IvOzylcxllKuk0h1+ITKEHJQYw12fb2Qpjdi/aKJDgUdOqnBSJriH7IW0x6ZMuCv20u9p/oxuQPWVBorMEGfGOk8=; 7:jXjMqXuzVDyALg6MB4kTZ5vkurs2qb8Hdi8mZ1af3uzJdzXXbqoAYZvYAdVnaANghIHqHhdwDQbI+6JLqb3qlN+OO4QLIeLfoa7fiXjW7FHMhS/B5zkKq6QgI2T0oUN8dTvII11FG5mbVjvw4Z2+Fsb2z+Vqh1MkrZhrmGx2JFuSbPYmU7HECKk3b4Zj0Zh0sKgnff0j4/Kxy7lsKdTqs8oJbUguJjaAdhP8iTtvL/XTt7XrAfV+CF1Y/cr0ozE8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:20.9286 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 10c71837-f632-44a5-6976-08d6121b5cac X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 22/33] common/cpt: add microcode interface for decryption 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" From: Ragothaman Jayaraman Adding microcode interface additions for supporting decryption. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_ucode.h | 436 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 436 insertions(+) diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index add5f95..e14d9c3 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -763,6 +763,439 @@ cpt_enc_hmac_prep(uint32_t flags, return 0; } +static __rte_always_inline int +cpt_dec_hmac_prep(uint32_t flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *fc_params, + void *op, + void **prep_req) +{ + uint32_t iv_offset = 0, size; + int32_t inputlen, outputlen, enc_dlen, auth_dlen; + struct cpt_ctx *cpt_ctx; + int32_t hash_type, mac_len, m_size; + uint8_t iv_len = 16; + struct cpt_request_info *req; + buf_ptr_t *meta_p, *aad_buf = NULL; + uint32_t encr_offset, auth_offset; + uint32_t encr_data_len, auth_data_len, aad_len = 0; + uint32_t passthrough_len = 0; + void *m_vaddr, *offset_vaddr; + uint64_t m_dma, offset_dma, ctx_dma; + opcode_info_t opcode; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + void *c_vaddr; + uint64_t c_dma; + + meta_p = &fc_params->meta_buf; + m_vaddr = meta_p->vaddr; + m_dma = meta_p->dma_addr; + m_size = meta_p->size; + + encr_offset = ENCR_OFFSET(d_offs); + auth_offset = AUTH_OFFSET(d_offs); + encr_data_len = ENCR_DLEN(d_lens); + auth_data_len = AUTH_DLEN(d_lens); + + if (unlikely(flags & VALID_AAD_BUF)) { + /* + * We dont support both aad + * and auth data separately + */ + auth_data_len = 0; + auth_offset = 0; + aad_len = fc_params->aad_buf.size; + aad_buf = &fc_params->aad_buf; + } + + cpt_ctx = fc_params->ctx_buf.vaddr; + hash_type = cpt_ctx->hash_type; + mac_len = cpt_ctx->mac_len; + + if (hash_type == GMAC_TYPE) + encr_data_len = 0; + + if (unlikely(!(flags & VALID_IV_BUF))) { + iv_len = 0; + iv_offset = ENCR_IV_OFFSET(d_offs); + } + + if (unlikely(flags & VALID_AAD_BUF)) { + /* + * When AAD is given, data above encr_offset is pass through + * Since AAD is given as separate pointer and not as offset, + * this is a special case as we need to fragment input data + * into passthrough + encr_data and then insert AAD in between. + */ + if (hash_type != GMAC_TYPE) { + passthrough_len = encr_offset; + auth_offset = passthrough_len + iv_len; + encr_offset = passthrough_len + aad_len + iv_len; + auth_data_len = aad_len + encr_data_len; + } else { + passthrough_len = 16 + aad_len; + auth_offset = passthrough_len + iv_len; + auth_data_len = aad_len; + } + } else { + encr_offset += iv_len; + auth_offset += iv_len; + } + + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* start cpt request info structure at 8 byte alignment */ + size = (uint8_t *)RTE_PTR_ALIGN(m_vaddr, 8) - + (uint8_t *)m_vaddr; + + req = (struct cpt_request_info *)((uint8_t *)m_vaddr + size); + + size += sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode + * fields in cpt request structure + */ + + req->se_req = SE_CORE_REQ; + /* + * We are using DMA mode but indicate that + * SGIO list is already populated. + */ + req->dma_mode = CTRL_DMA_MODE_SGIO; + + /* Decryption */ + opcode.s.major = CPT_MAJOR_OP_FC; + opcode.s.minor = 1; + + enc_dlen = encr_offset + encr_data_len; + auth_dlen = auth_offset + auth_data_len; + + if (auth_dlen > enc_dlen) { + inputlen = auth_dlen + mac_len; + outputlen = auth_dlen; + } else { + inputlen = enc_dlen + mac_len; + outputlen = enc_dlen; + } + + if (hash_type == GMAC_TYPE) + encr_offset = inputlen; + + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(auth_data_len); + + /* + * In 83XX since we have a limitation of + * IV & Offset control word not part of instruction + * and need to be part of Data Buffer, we check if + * head room is there and then only do the Direct mode processing + */ + if (likely((flags & SINGLE_BUF_INPLACE) && + (flags & SINGLE_BUF_HEADTAILROOM))) { + void *dm_vaddr = fc_params->bufs[0].vaddr; + uint64_t dm_dma_addr = fc_params->bufs[0].dma_addr; + /* + * This flag indicates that there is 24 bytes head room and + * 8 bytes tail room available, so that we get to do + * DIRECT MODE with limitation + */ + + offset_vaddr = (uint8_t *)dm_vaddr - OFF_CTRL_LEN - iv_len; + offset_dma = dm_dma_addr - OFF_CTRL_LEN - iv_len; + req->ist.ei1 = offset_dma; + + /* RPTR should just exclude offset control word */ + req->ist.ei2 = dm_dma_addr - iv_len; + + /* In direct mode,changing the alternate completion code address + * to start of rptr,the assumption is that most auth iv failure + * are reported at first byte only.This will not give the + * correct alternate completion code the auth iv fail is + * reported after some bytes. + * FIXME + */ + req->alternate_caddr = (uint64_t *)((uint8_t *)dm_vaddr - + iv_len); + /* since this is decryption, + * don't touch the content of + * alternate ccode space as it contains + * hmac. + */ + + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(inputlen + OFF_CTRL_LEN); + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint64_t *dest = (uint64_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + uint64_t *src = fc_params->iv_buf; + dest[0] = src[0]; + dest[1] = src[1]; + } + + *(uint64_t *)offset_vaddr = + rte_cpu_to_be_64(((uint64_t)encr_offset << 16) | + ((uint64_t)iv_offset << 8) | + ((uint64_t)auth_offset)); + + } else { + uint64_t dptr_dma, rptr_dma; + uint32_t g_size_bytes, s_size_bytes; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + uint8_t *in_buffer; + uint8_t i = 0; + + /* This falls under strict SG mode */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + size = OFF_CTRL_LEN + iv_len; + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + opcode.s.major |= CPT_DMA_MODE; + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint64_t *dest = (uint64_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + uint64_t *src = fc_params->iv_buf; + dest[0] = src[0]; + dest[1] = src[1]; + } + + *(uint64_t *)offset_vaddr = + rte_cpu_to_be_64(((uint64_t)encr_offset << 16) | + ((uint64_t)iv_offset << 8) | + ((uint64_t)auth_offset)); + + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + i = 0; + + /* Offset control word that includes iv */ + i = fill_sg_comp(gather_comp, i, offset_dma, + offset_vaddr, OFF_CTRL_LEN + iv_len); + + /* Add input data */ + if (flags & VALID_MAC_BUF) { + size = inputlen - iv_len - mac_len; + if (size) { + /* input data only */ + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + i = fill_sg_comp_from_buf_min( + gather_comp, i, + fc_params->bufs, + &size); + } else { + uint32_t aad_offset = aad_len ? + passthrough_len : 0; + + i = fill_sg_comp_from_iov(gather_comp, + i, + fc_params->src_iov, + 0, &size, + aad_buf, + aad_offset); + } + if (size) + return ERR_BAD_INPUT_ARG; + } + + /* mac data */ + if (mac_len) { + i = fill_sg_comp_from_buf(gather_comp, i, + &fc_params->mac_buf); + } + } else { + /* input data + mac */ + size = inputlen - iv_len; + if (size) { + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + i = fill_sg_comp_from_buf_min( + gather_comp, i, + fc_params->bufs, + &size); + } else { + uint32_t aad_offset = aad_len ? + passthrough_len : 0; + + if (!fc_params->src_iov) + return ERR_BAD_INPUT_ARG; + + i = fill_sg_comp_from_iov(gather_comp, i, + fc_params->src_iov, + 0, &size, + aad_buf, + aad_offset); + } + + if (size) + return ERR_BAD_INPUT_ARG; + } + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter List + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + /* Add iv */ + if (iv_len) { + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + } + + /* Add output data */ + size = outputlen - iv_len; + if (size) { + if (unlikely(flags & SINGLE_BUF_INPLACE)) { + /* handle single buffer here */ + i = fill_sg_comp_from_buf_min(scatter_comp, i, + fc_params->bufs, + &size); + } else { + uint32_t aad_offset = aad_len ? + passthrough_len : 0; + + if (!fc_params->dst_iov) + return ERR_BAD_INPUT_ARG; + + i = fill_sg_comp_from_iov(scatter_comp, i, + fc_params->dst_iov, 0, + &size, aad_buf, + aad_offset); + } + + if (unlikely(size)) + return ERR_BAD_INPUT_ARG; + } + + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + size += COMPLETION_CODE_SIZE; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + } + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + ctx_dma = fc_params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, fctx); + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = ctx_dma; + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + +static __rte_always_inline void * +cpt_fc_dec_hmac_prep(uint32_t flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *fc_params, + void *op, int *ret_val) +{ + struct cpt_ctx *ctx = fc_params->ctx_buf.vaddr; + uint8_t fc_type; + void *prep_req = NULL; + int ret; + + fc_type = ctx->fc_type; + + if (likely(fc_type == FC_GEN)) { + ret = cpt_dec_hmac_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); + } else { + /* + * For AUTH_ONLY case, + * MC only supports digest generation and verification + * should be done in software by memcmp() + */ + + ret = ERR_EIO; + } + + if (unlikely(!prep_req)) + *ret_val = ret; + return prep_req; +} + static __rte_always_inline void *__hot cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, fc_params_t *fc_params, void *op, int *ret_val) @@ -1614,6 +2047,9 @@ fill_fc_params(struct rte_crypto_op *cop, if (cpt_op & CPT_OP_ENCODE) prep_req = cpt_fc_enc_hmac_prep(flags, d_offs, d_lens, &fc_params, op, op_ret); + else + prep_req = cpt_fc_dec_hmac_prep(flags, d_offs, d_lens, + &fc_params, op, op_ret); if (unlikely(!prep_req)) free_op_meta(mdata, cpt_m_info->cptvf_meta_pool); From patchwork Tue Sep 4 03:59:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44203 X-Patchwork-Delegate: gakhil@marvell.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 7CA7F8DAF; Tue, 4 Sep 2018 06:03:39 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0063.outbound.protection.outlook.com [104.47.32.63]) by dpdk.org (Postfix) with ESMTP id 0E50B5F38 for ; Tue, 4 Sep 2018 06:03:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hA8WSbHbn3xjjwP+DC1CiDbSnmMqNflHR7F/mjGyt6w=; b=TOTl4BmEMALWBjp6jPtqMcR6si4vxzoade3nKFCOzFYkopPXEq5JEf9tn7riYXpkIQWUOq5MVs4Qxqv6PzA7jBYM3GrdS9cTmeX6/+rIqEcDDCvu1bM1fncuK/dvnjtUvhuM2/tLMgEJOjLJsW9CqsFG/iC6ZurW9P5XemWTVK0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:25 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ragothaman Jayaraman , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:10 +0530 Message-Id: <1536033560-21541-24-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cf2bc238-5ac9-4e58-0db4-08d6121b5f7a X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:cVxTvxNM3sAsBTk48MfsNZMtP6jlorqNottxkgxGob5x1mua1w9ZlGeF+Otq21FtVeFzayLYYk8vdSG2wOhoxBO8k+0dpMIWwutqC/HKb32Oag83SdD7HS9e58HV+d2NwfG58hKIqBXHXtQyIOBMwzto99jrk8FaMHpbDnho5kQ/SD5J1smgymoEjZGaqJnpSuBhQMeywqjPInWMRKtToJswjxO49xWVeU8bE3xm4Tr8MtN/Q0qRbNqz72C2wHMU; 25:OssAKLAzWku9eTtXIvtclJZWNjRcFtUbdm9Mx+6gWqqL5Mqeumeh3AyxTf6f8weR1ZI+9GMQ645eL7efD35vT9mZl6bAVBZ/f7sZ3Z8odqiM4TdhpEuyM/4RdxW6ebGn0Cep1MhwRHdXDezXL0TvIyJX7vWBQz+npGdj9TgEM4g4zoKfcUwjb5Cqec/ZiNLlCv0wFhokrK76O0o1CRyuJ9YKPp6ayp9NzC6vTIPZDRtuvghDgQIKHycI19fLja8HpNvjBSX2oeAqDxTAZoGD3CnWx1FNxs42kPgMmUI2eYBP3pBlBVFbJCQN/2yAqBJIkJkVih25ZZC4Ickw/nXoAQ==; 31:3J+UzSWFYGLYiNd8Tw5l+M3WlaLnlBilABlsnANtCbs/154VSXqEultGSDRtXCNwWg5m+UszOpxjTNKxppclrmPpkCvMUyMDTnKh6WTx/rA1dM3IZeB7orrCdzrZqOEPqSv7Cl571+tqL4wKQPH739uk5ASVj8AaMB5Z+weZW5/6I3GiwbFeTCeZbLDGHwxKCVLGBDs6K0cRQmyXQHYXrRqAqLAa5/PfPz3SPnKz0hU= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:onKt+23BgyYRaKvDDrgfNBC7uX8BUfM4cWyc5CC1TNq9MKIyWPtQ2nA0kmYMPvuMCOFBhqp5eIVE4x0XPj9tPTbLtWObgB4gtnWBGzN1ORdIdkLaLVXB65rn2Y8GaIW2UfwUYbTjWKh0PsJEWArAXNiXEfqmpGckVB/cHBGevoCeY3oQ1zMCcix81unbXbGEClXiWVqRRjketTGoRKa2bkcs/pkvj4WGZD0r/amE4PZrfjOKPkcv4omMhPAd9ZFrrUrjKL5MeHw8OLR3V40oyYROInaeMVemob3zkCEEnPu7CvGuhFFCdhsELj14WLH/EGBOf97rVdJl/4UW6YWNcRqwMIB+rPxcqOrFnknfeKqIelVX9mcER+2kFz9E4ZcF7ZxObwa4lAlOmnUAjOYY9vpr9YTaT1uolCb6UsNshpsC7VLBzrfqyo+O0BsO6uQ/pUAwf3EpsU1tllsrtDCB/rTICRt9LnfUsGgRegbatGog6P4e3DdJistkihJyK/q8Ddt3waBDclKBAC0jPkg1g40fAfVGpPNNyIU9Q27Qv57B7WHOni+kZN3o+DOWnd2IoH92C1Fyg75Hso6ON7CM/qaVJvviYIgJAa3lU/6G1qA=; 4:OSwh3dXQu7jNXpwzGPj/Ri1lyqZYfFXLWWuhYz+XVSLH2qbDM+cWYgAs4dZFpeE/yNealW7d/ijV1sKOsix48Arw42g41DRaF9n5ZmgVvKJx8kHfjFbFZZbgBje4tli5iADRoppSltIe982Z20vs9ChmOgZbJcUv5GxCi3r+Jq2V5HUso9s8dRdJmR1AqGMWhzw5TI5LFigcKRR4EUpVdKZEwqkfvTPF1T1Qpg1RH35hvB/ob1pMHldSL391W9sUK/ofizf3dDmOG6nMhM+iTg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:Cll3na8dEAUyeke5k7lSTbrhtCkjOenaiMDjNv49f?= nwOy3MvhswS9RsDV+9xwS5xQ3K30gBp1WShmX8PMkM9IB6If92NYbrDm/Dg8Z+rwEuPWIH1gW85FmKVMBGrGTpgbmRxxSHoJcQtyYTvHiIFQcYTh8JA1iIcYdRxC21RlvK4NQ3s1qBRZ0Roc9PFSVeFQ9XStDNRZ5Qsfsv2nMPsoMwaU0njBmESxWa0yP+xcbcd/HWz89bjSETxzejuC5SmaKSsnKHQuHSPgSvX8S623WbyLvBnT3MjiQNnrDwlYMdjwf5qQCql7NMXzyVvmk9odN3CnBC7QvbWbRe6Dgtqimnm9ryWrhxeWalsQgUNgqhFPsbczRMEpe3kCeuhB0kG9TwHGGfrNd32EACOcBgk1flSKU98j8rBiQVde9wJEnSiE5XKja2eMytSPRtzaAywOrVoeFQVHll43ZCnihR4TMflHy+HxyI6CNLwQ5x4XqjSejFh+rv69B8ICTmWqioU85ZL1HnqIezPG1+VbQM9Hn+WKqMJ06jKPKRGLpDftCvhEpdVtl0lO22CcP8v2Qx8NVnIt7GOiBdR3lkgGzjvc86WLjzITpkE3Y38iRBrPeFwhl5nvoljtnio1o3ZNax5l9E/rhm4Wnk6ZGIlc6gVps1I+JMA4yHgHhU85AjAI+330udy7Lm3fLJYxhTK90xsXdp526tFBaEd3PkFSSSzq6VFaHjpZk6/eAY0x2s9dAjH0lX07AgriwHmHysQop90BCpgrX2fmBFNdYFX4o+0b3maj3oW0l2Tp9JSL+boDjpyMxbzTCtlh1z7cQ62HuYgqGXXCx13w4Cp5W+r0OBhg6hSkv91/hbvdvNhku0Wxtef/RZykGnSIbM7MU0/+0HPONyjLsAOKsTQoqTKw6IcbbJRabRiAg1c2anFZdWeZApFiMuwlMeRQgsW0226d2DOKMmrFdHJgOpxRcFQgmlQHLdUFvFnD/wJVx5+HOCPtBPh9Qv8+UIv7CQgCwk0UYXPWM3J/XH+9ZjeYk74OknnPkRga4R+uAQXsr1UrAfqQr8ha4NkDno7ufj3Tdg5n+VRmAPJ65l5u/3fqNgEX8PVP7vGZfWQNqZ6ccppnU+zRu6Ee+ZeMTd4OXyt4dWQrYaOMWndBX9HTNDfCvg8+mEvlfhboz1OnbbN2ulrDKrXtAs9/zdEdPLpEBxcr8mwnWG/hXYSxF9KjeoZ/qlGNVcsB5x3bG9rWYfAYcA/0u8bXoI= X-Microsoft-Antispam-Message-Info: GWHw+pipdOjBRkQ19WrBz9Yb3dxNYtxj4ze9P/+Idb9PTv9m5j3RkgjarV0AC266R5lRlkN+ISy28IwnqHTxRH51w00PBsqo9xvybPMUcseoDkuH/x2jiLwwIlisvgfXbempVa5KRAi1RI+cInqxbUm4NXauZYrpzgcnNllcvnbbJxJkiOSKptNPM5fQrMhQRy2N9OpxeHc94xO0m0sVybjHcez6mJ4W6sa1gFU+bxHRzRP2i8zVsmFjKyjR1om7tk6TEN0ridIEfQMJNuRKB7tfcF8sJ/IsXD0kurD1yxyFkiBA+EzZGuP7DLb2aMGhx5Yh0rpbOfQsYTHEqaV1cRkSu2YL0Adi8pOV/IsS5Mw= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:KBvKsl5rgykWpPSYaFypL9VOBHgZqUVjSPJnIA+bCFj0UOESy+FJyv11rE4fpJhhQ6+rW2tSE4aaoP8A6Gu1qKep4MTQRtyHtgE88B3BQvV89lJhVdL3Ms1tjsV6jdVKRz/OYDwW15MyyNnYhz/xcbhmmN/qhi2sdW6O5zVIYhTZ8W+PdY5vXgboL+fDK2sGjqP1V9iCIUQBxd85GYOxl+108kFzR5zC6C9NC4Wux8E7lvQbOlkijZkBIRgM8FKxaGQzXT3XLO31wGVEMa0E2BsrBO/74z49oQKZ6xacCgtbUpgGZZQ5wzIdF7TeYT+Wco0Kq5NbCoruVVGffTfmpdpdkcXxUb0JXeSZvz5ZIgTQIe6NBCctQLGj8LcgTuEnagCN2kpFJHDfbftLWS4mbMubpXYBP6tzCZD1FxEuEgeiRZXKHNlM7852Qpbt4rdovlSFTGQxBPnT6uo/2n8ujw==; 5:C30X2VwSauekb8mSHSm9/6hu9kqCpbgND9uCwlbUiIlPcA7nAlDDZVE9nTHVzDUvC5JGyLm0IG3ZNE78YnXUykMPIJVHa7VblZtmk67GW3e1JYYjGpCDRVG6z1HfTe4I1WATHdyIN0H0H81EuIrhDeDDVkTeNpPvbEn0r2+gSDg=; 7:Cnfv1c/lzR5H1jqm83tDwN/v+yDBolGhQf33Uy3Sku9tuYO7gC+SvdS3XTrxdnVpQbmL6WuediCS63GmVivriebZ4g5F9kxC7UK5sgpPeIDBAkmAMIbwdhALgFGHMIinP+SzIIufXcUxEcZTS5Zmpmp13u5Px/DRwW5B5MbWR0Gdumc4uRzL/xcsyf+LYApYIFGcGHEyL0pYe/NGfQHA4jWZSJ3GGghOCzgy29FGGcoKqzkcdWhREsrGulM212Ky SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:25.6317 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf2bc238-5ac9-4e58-0db4-08d6121b5f7a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 23/33] common/cpt: add crypo op enqueue request manager framework 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" From: Ragothaman Jayaraman Adding crypto enqueue op request manager framework. This routine won't submit to the hardware yet. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_request_mgr.h | 68 ++++++++++++++++++++++++++++++++++++ drivers/common/cpt/cpt_ucode.h | 43 +++++++++++++++++++++++ 2 files changed, 111 insertions(+) diff --git a/drivers/common/cpt/cpt_request_mgr.h b/drivers/common/cpt/cpt_request_mgr.h index 733c402..c082e21 100644 --- a/drivers/common/cpt/cpt_request_mgr.h +++ b/drivers/common/cpt/cpt_request_mgr.h @@ -5,8 +5,13 @@ #ifndef _CPT_REQUEST_MGR_H_ #define _CPT_REQUEST_MGR_H_ +#include "cpt_common.h" #include "cpt_mcode_defines.h" +#if CPT_MODEL == CRYPTO_OCTEONTX +#include "../../crypto/octeontx/otx_cryptodev_hw_access.h" +#endif + /* * This file defines the agreement between the common layer and the individual * crypto drivers for OcteonTX series. Datapath in otx* directory include this @@ -29,4 +34,67 @@ cpt_get_session_size(void) return (sizeof(struct cpt_sess_misc) + RTE_ALIGN_CEIL(ctx_len, 8)); } +static __rte_always_inline int __hot +cpt_pmd_crypto_operation(struct cpt_instance *instance, + struct rte_crypto_op *op, struct pending_queue *pqueue, + uint8_t cpt_driver_id) +{ + struct cpt_sess_misc *sess = NULL; + struct rte_crypto_sym_op *sym_op = op->sym; + void *prep_req = NULL, *mdata = NULL; + int ret = 0; + uint64_t cpt_op; + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + RTE_SET_USED(pqueue); + + if (unlikely(op->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) { + int sess_len; + + sess_len = cpt_get_session_size(); + + sess = rte_calloc(__func__, 1, sess_len, 8); + if (!sess) + return -ENOMEM; + + sess->ctx_dma_addr = rte_malloc_virt2iova(sess) + + sizeof(struct cpt_sess_misc); + + ret = instance_session_cfg(sym_op->xform, (void *)sess); + if (unlikely(ret)) + return -EINVAL; + } else { + sess = (struct cpt_sess_misc *) + get_sym_session_private_data(sym_op->session, + cpt_driver_id); + } + + cpt_op = sess->cpt_op; + + mdata = &(cptvf->meta_info); + + if (likely(cpt_op & CPT_OP_CIPHER_MASK)) + prep_req = fill_fc_params(op, sess, &mdata, &ret); + + if (unlikely(!prep_req)) { + CPT_LOG_DP_ERR("prep cryto req : op %p, cpt_op 0x%x " + "ret 0x%x\n", op, (unsigned int)cpt_op, ret); + goto req_fail; + } + + if (unlikely(ret)) { + if (unlikely(ret == -EAGAIN)) + goto req_fail; + CPT_LOG_DP_ERR("Error enqueing crypto request : error " + "code %d\n", ret); + goto req_fail; + } + + return 0; + +req_fail: + if (mdata) + free_op_meta(mdata, cptvf->meta_info.cptvf_meta_pool); + return ret; +} + #endif /* _CPT_REQUEST_MGR_H_ */ diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index e14d9c3..6949d35 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -2057,4 +2057,47 @@ fill_fc_params(struct rte_crypto_op *cop, return prep_req; } +static __rte_always_inline int +instance_session_cfg(struct rte_crypto_sym_xform *xform, void *sess) +{ + struct rte_crypto_sym_xform *chain; + + CPT_PMD_INIT_FUNC_TRACE(); + + if (cpt_is_algo_supported(xform)) + goto err; + + chain = xform; + while (chain) { + switch (chain->type) { + case RTE_CRYPTO_SYM_XFORM_AEAD: + if (fill_sess_aead(chain, sess)) + goto err; + break; + case RTE_CRYPTO_SYM_XFORM_CIPHER: + if (fill_sess_cipher(chain, sess)) + goto err; + break; + case RTE_CRYPTO_SYM_XFORM_AUTH: + if (chain->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC) { + if (fill_sess_gmac(chain, sess)) + goto err; + } else { + if (fill_sess_auth(chain, sess)) + goto err; + } + break; + default: + CPT_LOG_DP_ERR("Invalid crypto xform type"); + break; + } + chain = chain->next; + } + + return 0; + +err: + return -1; +} + #endif /*_CPT_UCODE_H_ */ From patchwork Tue Sep 4 03:59:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44204 X-Patchwork-Delegate: gakhil@marvell.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 D99D4AAB5; Tue, 4 Sep 2018 06:03:40 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0084.outbound.protection.outlook.com [104.47.32.84]) by dpdk.org (Postfix) with ESMTP id CAB167D05 for ; Tue, 4 Sep 2018 06:03:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JOPF2NEMS2MQu17LoG5roAJUZ1ODsaEmlUE7APDV/8M=; b=oQsX/XtcOQ8obaoS/MwfJ3iS0A++BZaRZvamzPSg9CFIc6v99nQ3IV5pxuHRhAqg+nYSXT4WK0xCd5D+AZSTa2sp5SlTY0UypTgzrfCO5abH9W+Pq1ShwhPcY5NOzGO2LhpKUT0b5FaUWOXfByfxNMV9q6AqnTYnxcIg7qeBC1I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:30 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Srisivasubramanian S , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:11 +0530 Message-Id: <1536033560-21541-25-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f300846-64b0-4d43-4e89-08d6121b6264 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:TilexfLNZLfCBgM4eEgPmniQG2CXEdUyOalj0Yp/lUpWU8SCGc/3lOGk6QQwLjBnl9waum8VeyhU9JnxGLV5n0nTrKYGFMdS6Vv4QV/DV4wgPswycyDqBzuI+WX46PYqglz5wYSHD6eyMA363tBHdS2kHXyh0vKKx120wvot5YSER4IRbTxqtD41B5fP66xIHzkKK36F8xqZ3LVpzXdtiJExOAnaTlrevITtMCV9pM0LUXs+c8j3uEUngHG6Cw0D; 25:pJRuICRcwpG5IuE2gtW0VAj5+k0w7Ka4f7XljCcWezRy2E1GS0QAQApdnJN2DSNldIJjxp5bPcMEv+33wvsJ3YzW02V1+XuFOD2zMzvdZOiMdILGNLhoeSdi8N4IVNdEkPNgpmBwK3poCfWGr5exC6AlSRjCDU2hvWLw0+Q09W/Gv+IJBohmM1nFQN5Q+w8sKJqnTvZjLqE1R3kIrmiNMqcaPBtkxJtWfGlQ6x8IPNeveD5N+VIYFI2R7YpigIgMDfoxohuayfkd1jSS+RNXh/y6JRc0VDRWP0Zynmm45srnsjJKw1++Wycb9R9mEKPkc64AKw2tjnWT0Gj6iVy2DQ==; 31:ji1ympyzYAKEXmd95rqGVBbjwpx0/2Lx+4w0KawSdNIohqVhYprfk5+ycRFgnIsN3bn+vnnSc4Sa9vwyVFW3UZe2cAYNofbfGr2P5AGwz+BOwDbH9gqTNIiVaj40KSdWlkuKreD9OyOWMJT+izUy7ajP+wHtk/oXZaa+m5l1GIn2tuhDdY7aXCf2fqLab3HzbfS4v0dE0B2mW2J5jr3ECeYMxvmCciXQTljDUpDKyIY= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:YogXyyZDwVePdGuBTEzpwMv2rWbjsX4isDYbZN4XKL+caRFozdGrZMMYmnaIKHq1pLwS0O3pBlkjLh/o0vlu9jsAOiQSC55+KpLguJkL6QjndV2z7Ih5j4b55TjjGy2uNXUQ45kzUoPsDLPbcRvkgnLE71QjBpG/380swel2l9EO9gfO62iM7zbrC9jph+fCsHcLODo/7lVlN3w2MzMb0bTtBgq/N7rrfY9TrYwbDtqFWeXBxQ69O8e4ewOGaF0eIMx1NGrrpPDL8P4vmwTJujkiLgKReqocjMhaZmT2PMTS6vDGKomp7vh7Bxm70R2TQU6egxbiFSRddfjaXCRpmIryzJsHAyfRvRvxUPbtA9OzJMBF7vgiYqW4GStOP54pqkdoKrGrUk0F6jBxzPmos/CFqjNGx86iRZOSO6VeQiGe3sOCj3Q5s/lg4grQYM/x2XzLoyoXqGy/XMRRLGRBVY3/iLrODB44SW74Zt43/V6bc8Jogyjo3SngY4zTeo91RUGlshTKDx6xnTDn1H0fxDVz2AhjCtYnnsFRze28WJivbDQf381h/srUxYQle292AFne8hvdgajI67Ccu+V9oZyeosKXA1lXDAe0enGo0i0=; 4:vNdGrq8oANu95Lpe3nwjT10UInNNHyR1uHY9QVvmDxCVBlizyS4b1KjTYJj1Sq5N7UAnC94Q9ksmhzJa5R94S1vkXtvvL8/HCxh+YJJsfK1WI5uU4dzHIV2XC3Y6vzeZ0Dg3kzki1R1MMwbxbDyVzYC1IaHZxxdatCr5+Zvpu4NYxpAppmU4HtQ/FuKkrhjzex1oY5SDzhIKUK7solcD1vOWsc7JsxgZ68bu4h/9nQFxYxjLEoUv1r/anFAzsIM6HU8FKa0AIt7lx2I18qW9Gw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:yZBPRt+QQnpdLZMcyfUlhYk7NQZeCpfdHkPtLRZ1k?= JfDj86Bqu+uPJ6X0hCjPDKOUh28Zp9SJdVo2GqVQJlBXt4v1TCFrEzdP8QYhfjiXYqTuzXw0AkUTxlGlVvoeXVlmLxxDH02hNvO64wI3yNIQrBRPhWw7CwiGe8FsFDXJyqkpPcIlq2xNTlSV7/5ZQgEL3mNH/wO70EvpDoUKY8ncHTh/v1V+gwRseSl/blFnZVow34Ts5hQ7OhvVo7zfJYA52SkzJlMuTs9sv+MFOam8/fbese/jtrD0KOSGe4jrDXbEUeWEmymG14NtjsuCJGSMlY+g45OcC3oq50yEEcnUmipbWyyH3OMlGHjk7QkojMPxj+g5b1lgtc84WOocc0Bwx+xFNZfoEKGtnhKiWhRQU9THBAJVLIvN72n5eaJ+/lmjJh0TGQlOf/FN+1L1WHERbuHtJgEdvg59uh8uTvTHWQ3cZEtWOD/JOVSjk9T7rpYKIPvX7gb9TuQwBYsKMHkfRf068NFREt8sjsG0nJ6iWkjqLpKb0f4n6OcCnByJwTQOM04rODU8DnOEgqsTYK1Q7R9Bh5AG+fYv2ZDqzGRf7LLJKZWKxupGfkzbT+auwUXzzxtVQKgISLsIBviZjy6zUiSn0d3wyoWinbZT1oorxstzoffn4NDiQEddB9e3KbDen5TW7rWp7uoG2d5zyAA+kj+HwbUnHonUStTORaY3bVWgG/2uGg02wY3YuqG7jNGAMRkE5jTEtY2kQAm0P00f0bFuaMO45kIf1q2x5Ci6mpBclV74VX3qSJnJ9WMsmF3CaSDlJ21pKcFP3Dex8DrBg//uY/Rwp5iqc71NHBkj+ZZKIzy83K1YRitTS5eCc5B5nnzuipw4gFTiep6TtCIvrfAs/z+LhNuBNwBwH5T+ekb2KXlwof/zVFUO4t0vdlaQ7lg/RKQiLoi3CZzzwRKyVshQd/032qajSX38GO8z9U6x06ay+urCLDdViNV66AEJJiY8IXAjuVAuTYXAZd0ROfuEyRRDyaRCUbMcqMFXoLW7s6GePA+TiOPJV0/o6JvugQ7shuV6i6iNmqycP8shcnGSa8iOPAA2i6TwHgwNztObxOQjmXa3VkTDtFfbDweEGCU6JyUsdWlENgmNAbG503XvAenlz39mJdf0TFNv1yxIlFHV6lf/YsiidVbRDiEIQKxmKndK72+Ex9DgDLMIJLbr4hvBR8HmCAVinplINCMTDRa96vWp8Al5dnqk9xZs3MJp2VIxHMxXbw13AU2 X-Microsoft-Antispam-Message-Info: YlhXwqsucSQu21GTFIQ41SVZ7VJwdwGYAqjhf7e2AeBzWZPscwEwUafDS/6DRKIL2VgCOiQI+w4bV7T1ZBKB1rW1TzUr6H6pb5PuqhhMdvUeNAKzTxKVKYfsioqyWhO9a34fvJTjia/icKYzKJDk4vWzxWBltD6+V7Hb6DKCk8aXx10h7gnWbg0oxCtmhaPb/OLPVeUGOS16/irEdPD4eUrbCBqpf8iphVNGYH6S0DJagGBYZlozpVFH79UPhY2EOFxrv0Age1VCG78nsuPRlqDpJEeOfqGYDB3ywuibigcf0PxtM8yRvolJl/rJ0Mc1ACJDEiB5iSAvydgcT+bLr2TYcYr9KWybhQIaArslUNk= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:RydUtiLYXkTxKS3swgc6wlTMY0SbhLBzLGcaf8jzh39B8ZP5P2irPlbConRVzzIHWLDzhyyZ5X34gO8xO2qXSPUCfpNtBOdP8MWJ+bTkDZu9P2P/Ca43FpDgaATDS/XYRUhwRS81anNBYJLQAQYncZr2uBlzVMN+bhz5mtDFa4gC4YXtKEibwCfatVoMeuuy2eAXmOC1MrEiDtQ1T1zoSVRhzagjcNOT6/IXz1YCaIQfzqINifq7H/4eWjkOwjuvIQEmridu8ZoSwI4vPP3Ld+woxJ5lqj54emHszFOsvB9GPcHlkRs8o/3LZC+wi+eUcj9hBL87cra+9RSGG6zjldvKCq+WWgOpKMNwprBeWyJiAOEnVN4OkXiGs0F+4JXbua5Zci2aPeO0SVs40xjuGOY0tu6OKZGHGeI5QynzAF0zup+QUXWmkvrYomGtiQBakanMX7Uv7Cj1gJY+wjQYLQ==; 5:GYpDrW8qHhF+TCBIiVgSFfH7AUQiSqJ1nye9BFbteBefCrd4WtxqFwP4Lb8GrTVhRvravyQHJMOQpGXLs7DWrI2mKyxaA6ZNg8e6vYUSKN2+Xd5x/flO5MyBb5M+vf2MJ7UIyHbUAIvdbzcOOOm5CTCpaoo/AhWS18irn00Dgnk=; 7:xnh0pZsfT8SCwpdJTLmivFrwmVnJl5MaFDOXcQa79iWRBtn6Dw5DSvozD9XrGTvmv9gQUv4gsf1HGrz+0+K7MIaeSSbv5GrY/A+z107HEyLyfaOPdaA0Ut2mr78Ox1XoCmQYX5bT+Tfltk1aEIJJE5o3pbzZK61kwxOKu9wL4sKJPputJIi+TZ82AcbpLCaj/ghwrgvhph47p+kmzaWbawLnmhcylICfFyFU6r7TCz4rV0YfDheFil6zSu3KG3RW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:30.5224 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6f300846-64b0-4d43-4e89-08d6121b6264 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 24/33] common/cpt: add support for zuc and snow3g 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" From: Srisivasubramanian S Adding microcode interface for supporting ZUC and SNOW3G. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_ucode.h | 618 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 618 insertions(+) diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index 6949d35..383dff2 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -1164,6 +1164,618 @@ cpt_dec_hmac_prep(uint32_t flags, return 0; } +static __rte_always_inline int +cpt_zuc_snow3g_enc_prep(uint32_t req_flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *params, + void *op, + void **prep_req) +{ + uint32_t size; + int32_t inputlen, outputlen; + struct cpt_ctx *cpt_ctx; + uint32_t mac_len = 0; + uint8_t snow3g, j; + struct cpt_request_info *req; + buf_ptr_t *buf_p; + uint32_t encr_offset = 0, auth_offset = 0; + uint32_t encr_data_len = 0, auth_data_len = 0; + int flags, iv_len = 16, m_size; + void *m_vaddr, *c_vaddr; + uint64_t m_dma, c_dma, offset_ctrl; + uint64_t *offset_vaddr, offset_dma; + uint32_t *iv_s, iv[4]; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + opcode_info_t opcode; + + buf_p = ¶ms->meta_buf; + m_vaddr = buf_p->vaddr; + m_dma = buf_p->dma_addr; + m_size = buf_p->size; + + cpt_ctx = params->ctx_buf.vaddr; + flags = cpt_ctx->zsk_flags; + mac_len = cpt_ctx->mac_len; + snow3g = cpt_ctx->snow3g; + + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Reserve memory for cpt request info */ + req = m_vaddr; + + size = sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode + * fields for cpt request + */ + + req->se_req = SE_CORE_REQ; + req->dma_mode = CTRL_DMA_MODE_SGIO; + + opcode.s.major = CPT_MAJOR_OP_ZUC_SNOW3G; + + /* indicates CPTR ctx, operation type, KEY & IV mode from DPTR */ + opcode.s.minor = ((1 << 6) | (snow3g << 5) | (0 << 4) | + (0 << 3) | (flags & 0x7)); + + if (flags == 0x1) { + /* + * Microcode expects offsets in bytes + * TODO: Rounding off + */ + auth_data_len = AUTH_DLEN(d_lens); + + /* EIA3 or UIA2 */ + auth_offset = AUTH_OFFSET(d_offs); + auth_offset = auth_offset / 8; + + /* consider iv len */ + auth_offset += iv_len; + + inputlen = auth_offset + + (RTE_ALIGN(auth_data_len, 8) / 8); + outputlen = mac_len; + + offset_ctrl = rte_cpu_to_be_64((uint64_t)auth_offset); + + } else { + /* EEA3 or UEA2 */ + /* + * Microcode expects offsets in bytes + * TODO: Rounding off + */ + encr_data_len = ENCR_DLEN(d_lens); + + + encr_offset = ENCR_OFFSET(d_offs); + encr_offset = encr_offset / 8; + /* consider iv len */ + encr_offset += iv_len; + + inputlen = encr_offset + + (RTE_ALIGN(encr_data_len, 8) / 8); + outputlen = inputlen; + + /* iv offset is 0 */ + offset_ctrl = rte_cpu_to_be_64((uint64_t)encr_offset << 16); + } + + /* IV */ + iv_s = (flags == 0x1) ? params->auth_iv_buf : + params->iv_buf; + + if (snow3g) { + /* + * DPDK seems to provide it in form of IV3 IV2 IV1 IV0 + * and BigEndian, MC needs it as IV0 IV1 IV2 IV3 + */ + + for (j = 0; j < 4; j++) + iv[j] = iv_s[3 - j]; + } else { + /* ZUC doesn't need a swap */ + for (j = 0; j < 4; j++) + iv[j] = iv_s[j]; + } + + /* + * GP op header, lengths are expected in bits. + */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(auth_data_len); + + /* + * In 83XX since we have a limitation of + * IV & Offset control word not part of instruction + * and need to be part of Data Buffer, we check if + * head room is there and then only do the Direct mode processing + */ + if (likely((req_flags & SINGLE_BUF_INPLACE) && + (req_flags & SINGLE_BUF_HEADTAILROOM))) { + void *dm_vaddr = params->bufs[0].vaddr; + uint64_t dm_dma_addr = params->bufs[0].dma_addr; + /* + * This flag indicates that there is 24 bytes head room and + * 8 bytes tail room available, so that we get to do + * DIRECT MODE with limitation + */ + + offset_vaddr = (uint64_t *)((uint8_t *)dm_vaddr - + OFF_CTRL_LEN - iv_len); + offset_dma = dm_dma_addr - OFF_CTRL_LEN - iv_len; + + /* DPTR */ + req->ist.ei1 = offset_dma; + /* RPTR should just exclude offset control word */ + req->ist.ei2 = dm_dma_addr - iv_len; + req->alternate_caddr = (uint64_t *)((uint8_t *)dm_vaddr + + outputlen - iv_len); + + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(inputlen + OFF_CTRL_LEN); + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint32_t *iv_d = (uint32_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + memcpy(iv_d, iv, 16); + } + + *offset_vaddr = offset_ctrl; + } else { + uint32_t i, g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + uint8_t *in_buffer; + uint32_t *iv_d; + + /*save space for iv */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + + m_vaddr = (uint8_t *)m_vaddr + OFF_CTRL_LEN + iv_len; + m_dma += OFF_CTRL_LEN + iv_len; + m_size -= OFF_CTRL_LEN + iv_len; + + opcode.s.major |= CPT_DMA_MODE; + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + i = 0; + + /* Offset control word followed by iv */ + + i = fill_sg_comp(gather_comp, i, offset_dma, + offset_vaddr, OFF_CTRL_LEN + iv_len); + + /* iv offset is 0 */ + *offset_vaddr = offset_ctrl; + + iv_d = (uint32_t *)((uint8_t *)offset_vaddr + OFF_CTRL_LEN); + memcpy(iv_d, iv, 16); + + /* input data */ + size = inputlen - iv_len; + if (size) { + + i = fill_sg_comp_from_iov(gather_comp, i, + params->src_iov, + 0, &size, NULL, 0); + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter List + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + if (flags == 0x1) { + /* IV in SLIST only for EEA3 & UEA2 */ + iv_len = 0; + } + + if (iv_len) { + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + } + + /* Add output data */ + if (req_flags & VALID_MAC_BUF) { + size = outputlen - iv_len - mac_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + + /* mac data */ + if (mac_len) { + i = fill_sg_comp_from_buf(scatter_comp, i, + ¶ms->mac_buf); + } + } else { + /* Output including mac */ + size = outputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + } + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + } + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, zs_ctx); + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + +static __rte_always_inline int +cpt_zuc_snow3g_dec_prep(uint32_t req_flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *params, + void *op, + void **prep_req) +{ + uint32_t size; + int32_t inputlen = 0, outputlen; + struct cpt_ctx *cpt_ctx; + uint8_t snow3g, iv_len = 16; + struct cpt_request_info *req; + buf_ptr_t *buf_p; + uint32_t encr_offset; + uint32_t encr_data_len; + int flags, m_size; + void *m_vaddr, *c_vaddr; + uint64_t m_dma, c_dma; + uint64_t *offset_vaddr, offset_dma; + uint32_t *iv_s, iv[4], j; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + opcode_info_t opcode; + + (void)req_flags; + buf_p = ¶ms->meta_buf; + m_vaddr = buf_p->vaddr; + m_dma = buf_p->dma_addr; + m_size = buf_p->size; + + /* + * Microcode expects offsets in bytes + * TODO: Rounding off + */ + encr_offset = ENCR_OFFSET(d_offs) / 8; + encr_data_len = ENCR_DLEN(d_lens); + + cpt_ctx = params->ctx_buf.vaddr; + flags = cpt_ctx->zsk_flags; + snow3g = cpt_ctx->snow3g; + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Reserve memory for cpt request info */ + req = m_vaddr; + + size = sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode + * fields for cpt request + */ + + req->se_req = SE_CORE_REQ; + req->dma_mode = CTRL_DMA_MODE_SGIO; + + opcode.s.major = CPT_MAJOR_OP_ZUC_SNOW3G; + + /* indicates CPTR ctx, operation type, KEY & IV mode from DPTR */ + opcode.s.minor = ((1 << 6) | (snow3g << 5) | (0 << 4) | + (0 << 3) | (flags & 0x7)); + + /* consider iv len */ + encr_offset += iv_len; + + inputlen = encr_offset + + (RTE_ALIGN(encr_data_len, 8) / 8); + outputlen = inputlen; + + /* IV */ + iv_s = params->iv_buf; + if (snow3g) { + /* + * DPDK seems to provide it in form of IV3 IV2 IV1 IV0 + * and BigEndian, MC needs it as IV0 IV1 IV2 IV3 + */ + + for (j = 0; j < 4; j++) + iv[j] = iv_s[3 - j]; + } else { + /* ZUC doesn't need a swap */ + for (j = 0; j < 4; j++) + iv[j] = iv_s[j]; + } + + /* + * GP op header, lengths are expected in bits. + */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + + /* + * In 83XX since we have a limitation of + * IV & Offset control word not part of instruction + * and need to be part of Data Buffer, we check if + * head room is there and then only do the Direct mode processing + */ + if (likely((req_flags & SINGLE_BUF_INPLACE) && + (req_flags & SINGLE_BUF_HEADTAILROOM))) { + void *dm_vaddr = params->bufs[0].vaddr; + uint64_t dm_dma_addr = params->bufs[0].dma_addr; + /* + * This flag indicates that there is 24 bytes head room and + * 8 bytes tail room available, so that we get to do + * DIRECT MODE with limitation + */ + + offset_vaddr = (uint64_t *)((uint8_t *)dm_vaddr - + OFF_CTRL_LEN - iv_len); + offset_dma = dm_dma_addr - OFF_CTRL_LEN - iv_len; + + /* DPTR */ + req->ist.ei1 = offset_dma; + /* RPTR should just exclude offset control word */ + req->ist.ei2 = dm_dma_addr - iv_len; + req->alternate_caddr = (uint64_t *)((uint8_t *)dm_vaddr + + outputlen - iv_len); + + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(inputlen + OFF_CTRL_LEN); + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + if (likely(iv_len)) { + uint32_t *iv_d = (uint32_t *)((uint8_t *)offset_vaddr + + OFF_CTRL_LEN); + memcpy(iv_d, iv, 16); + } + + /* iv offset is 0 */ + *offset_vaddr = rte_cpu_to_be_64((uint64_t)encr_offset << 16); + } else { + uint32_t i, g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + uint8_t *in_buffer; + uint32_t *iv_d; + + /* save space for offset and iv... */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + + m_vaddr = (uint8_t *)m_vaddr + OFF_CTRL_LEN + iv_len; + m_dma += OFF_CTRL_LEN + iv_len; + m_size -= OFF_CTRL_LEN + iv_len; + + opcode.s.major |= CPT_DMA_MODE; + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + i = 0; + + /* Offset control word */ + + /* iv offset is 0 */ + *offset_vaddr = rte_cpu_to_be_64((uint64_t)encr_offset << 16); + + i = fill_sg_comp(gather_comp, i, offset_dma, offset_vaddr, + OFF_CTRL_LEN + iv_len); + + iv_d = (uint32_t *)((uint8_t *)offset_vaddr + OFF_CTRL_LEN); + memcpy(iv_d, iv, 16); + + /* Add input data */ + size = inputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(gather_comp, i, + params->src_iov, + 0, &size, NULL, 0); + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter List + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + /* IV */ + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + + /* Add output data */ + size = outputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + } + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, zs_ctx); + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + static __rte_always_inline void * cpt_fc_dec_hmac_prep(uint32_t flags, uint64_t d_offs, @@ -1181,6 +1793,9 @@ cpt_fc_dec_hmac_prep(uint32_t flags, if (likely(fc_type == FC_GEN)) { ret = cpt_dec_hmac_prep(flags, d_offs, d_lens, fc_params, op, &prep_req); + } else if (fc_type == ZUC_SNOW3G) { + ret = cpt_zuc_snow3g_dec_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); } else { /* * For AUTH_ONLY case, @@ -1211,6 +1826,9 @@ cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, if (likely(fc_type == FC_GEN)) { ret = cpt_enc_hmac_prep(flags, d_offs, d_lens, fc_params, op, &prep_req); + } else if (fc_type == ZUC_SNOW3G) { + ret = cpt_zuc_snow3g_enc_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); } else { ret = ERR_EIO; } From patchwork Tue Sep 4 03:59:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44205 X-Patchwork-Delegate: gakhil@marvell.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 3DA0D199AE; Tue, 4 Sep 2018 06:03:42 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0079.outbound.protection.outlook.com [104.47.37.79]) by dpdk.org (Postfix) with ESMTP id 309448E60 for ; Tue, 4 Sep 2018 06:03:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zcsMXwjtIiDTSOuTaduAcJKJnIhT76fU7IkhcNoM058=; b=E7z6mDSgFOKns3RuQQm1RsBRrWyYXDIvTLk54GxH/gfW7dfuglM59p5pwSMzy+UJx5Rl0re6VXr+ITeRTOKYv8mK2Lr8GNjegRoJreEHJKWaysPoapknDZ2gbBnTxzEcGLTdJ7wJ77dnQ4dP3nlX3jnUg9l4O49pE7w33nTP2UM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:35 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Srisivasubramanian S , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:12 +0530 Message-Id: <1536033560-21541-26-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1780a8fe-8f37-48b8-41a9-08d6121b6521 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:J0Ux7buZMQr6LBsLb/cuaPEr3shlCY8Z7zD75F41Km46rG6Ubf5Hr7Lv25QA/532it4KqRd0eAC5Xbh/Bo9eMDeOaOl6IXWs2K8UrNpOCAmNzeb3y5J6KQi0++UNyT3H2g3ltswgGNBry6adFoIHHQxC7htT0GfXgcWduDPbb8dI+5fleKjFnlFQtFzbvHw8GeIi9Rlru4iMcOPI/BQ+38H/5T4VM64r7auKGPV/uiFALxuQP9L/spPDX7S5oH2t; 25:yZW3wCKuRtFe4kDDdPNwsdzq5iC5wYWAhifetpT2u3hvYgcY3anfydnOGzFWrnYq6kcfcSWvNFZqs1qe0MAs9VAlMNsqaI+0P3YvYcfhc4Cd5oACWM9vvoMDdOESI5CFaJzcTbhSm5UJ9Od+tUoYFr/n80c+G2wtxGamzPjTIjqrkNVKWpV7ON7YIUywouKXkVOGrUGtDIulV1TWknFjft+s425Rm8NjxiGiaZzsKikdDIR7+g+ib3yKXpRAtDuAkdvmuWWl2FAYpobS5SkmXDY6pXzRdMjwvIAkhHmnPVaibA8OzGO6fs0Oc0lMdmD95TbKz/hMQJ9Us3vKil5CVw==; 31:3ed0YAOM3EDqvB3p5Ym8Zp/nG3QY+X2IYAGGlVhyS/fEbq88Q0GJoL+GgmjroHdWOtCgwLF0l/U0GOUntuKJ33McVgpUuOYpM3g8qf4imWmqLwGd379V7AIcf79uLYWtSpydoRYjFft3N9qXyyLZLSKNDqTmWaGIWF9uEkdvLZdQGwZPyVEELfumgtd+6h+3j+/jLJwQFM7vACZLvJB1zb36n1Wviu8bsueCO0K3Xdo= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:fEuE74CLGAV7J52RPg7H0LoNVh2iDzOYAFhi/tw/WNVSYRX4ve5A4Za+S3TeACjJP8jKxX1jLaqmhBFCXP0/D3E2gfN6XDAKdYouqcYOLusPRR4k6k5IquIUqlndyNWeKWhg9t9r3xu/vctDFrlGGcy4iJlwjmYaPKuJ+0RPaSFrZIvn2fgp9JIA/eUdY4du3RrBLIqOVbAygi+rH4gSfdq7OWze7oT2MCxVLGHZrVy/F012kH2KThmM5FMkJcE1n2lLf1nhVC9flIsfT0E1jyqI39KlSh4hqIK12psQXlVP6nN0qCynPRQNNrlPVlxmJ+9vdQXI6QWhUT+zbG5ozXNvuDfowZJLTIsi0KMUwUQtmfeojBCtZJG6RDPL8/gI7FUUg5foFht1GmyxL95vx7/X2TXP51zr+01Oo/44Lc0r1JjDpfmcLvt74X+c6PQtpknfi7c2VfrnLDRZFzx6jnMxznumwgQBZmVYC8T9rgLQG0EuSf22eFtWDtgKCPNxJYt2xydkyuQonFurTMYHzkpqbHevcEooKYYh1G1tC5up9nYJUvZWBOAJaTB7XWfaz9/5pBAEvzjIVXxyedRwNnMrBbbr+vpCF6nXNlibJS0=; 4:EK0DLaqGbb6Yeurre6tRMU/coFs943bCK4ldeBu3hMUWf4EcV5bv5+Le0lir6MUIjA8fYZYgR2aaq7HA63dvAKm5egLoxAfSg2KEwfsVuhELyYfQR16QMKaa6qvwW7Rlv7dZFML/b2CfIYI+rUJhHwpCXgGPCUavooS5ICWFVb/3uW4zNQBT5/sPTHmj2x/uykMBbtfnF7zsoSxxntK/vWZIIlbBjfg5U9EPpyoZT4WDhi06QV374meRrvJ+PHRcKa5Mpz1heakwAfoqMd7npw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:BYsCt37Ej4IMddd3JqSu2taChpjBAUk6hOH7KJiPX?= RHJrB65q6IicAQN6zNcohNt+WynbgS0Xin00ZiqxgZxtQCueAGiOtOefOCcQDfaUgk1QwO4qSJWfpFAiMZJN+eWVhxmluSP0fp5WCZm5tYpvKnmU4mXGCKK1yBlC37cPVEcNN3Xl5//f12QR+xP9XSluGptzFHszej39fKaLv3RMjZZ1BiW+1UsaQhG8ayx7FQnldxgfi2XDsvpiaanf7r9omb2P+B+wsfWgIVTG6RaUBA/FrKLP6xB8Dzu/4eeHZWNbXHlgJwUKnuF9h+Xg/pUKCNsKWdjUDxG8w0hz8V251RxyOcOIij3Youc7+SoLaUvBAs2bV/EbYueUX8GFG+xuJpSFggZ2VS8uBatO/Y8tdnZC5uW7HH9TdyanmUXHKYtVkZ5s/GShXXg8KF1vUQjn+XJnarwlPbhjkip0rGlx0+Nz5Lcjg/n2HevM+tH6Qz6p7SfSyXMNv6NZGBp5D3y3XoI5pv3+Apkbc4ldrKX72XIdEg4dUXzMsXXXhoshYjPdLFaPKUBJxTJsfnTWx1AWW+T0ZS6W9hGVD27vDv66k8+A5/zovY+5MBr14RUm1/aDv0QkSKB2B1oukQPbIilebKKe23+UFGOEcfqWqjh/kYv4C1D3y/+4zOlrBbtMA4Rhaty6TT0PsqVtb/ghX+VZeYHR4J9HTasEPJ6aWIKgnPjKYSBrbuuUevGcxgzDU2OsW8JkQzMp1nUTfrM3Bj6jeJUHr9dJkEQYGmPtKnGKHPQWMklLPfmbM4rzrifrORyoGB20ZQdH4YUm+uph7ezZhXmJBCFMb+X/caaou4Bd0Uqx8yEPu0Nk1FcJt7xLZzlG8tCAZhRabYuppfeIT/IfnhVbG3IsCkXtcbnWX0ORh1xVeoS5DffB1FXv2xXS1P6c41NlaQaFRM8U/UNDU5WeRsrqYKpR12zlzsv60+I/R+jA0liNASrLCWdQDWV+q6QmxLicIfVm8yQauI9GudJv79Er8AdPZ7dmIwkqHN2R+3nDYc1tR+mUfaA5CW47eLXO/UP53RtZNtXZs6+XvunK8Aq0XMnzyNUDp9LXhGCvgU8KwlPi+yAPpKE/DaGlL5RcuMgT0H1zS8zbVAqSn0BunoHrHB06L4P+VnehjGZdUC4WWepmOb5R8tkWfTwp+FpC9Mjr4Mg33CJHa/02yIKxQko/fZbG4iuFGgwYIcePlfD/lZxC4i4hatDq/jVjmg= X-Microsoft-Antispam-Message-Info: 7GL+DkcXKJlIw232wTcoL0RJJk9xDgcZIRA1iUcQ5A6/cveevaeEbgGqS18+QFu6c03EufGfYnQrkhHswMbAx8NO9OzLNvwxHFUxYPBYFs1MGSXq9kSrUeULgTtjMmEu0/S40Q/Qo/c4LS9lEhfmL7GS1748D3lx24mRn5P0c61qVWtfJaVmSfPaJqD78Y/PZszZ5G9io9AAQlG1kkA72ugL2iJ49FBrgezUbi9b7BFzpjT1XPL5wkNMZ/dO5mfqENCjGFc+LSvL9w3mbQBMAuqqZQjaptr/SQK1eaGQpZy9geYvKSskKbMRsbG9Zm5EJfxTuOP75ABPxoGVpSGHLnM53XoXOq6v7wJRA1Gpf7Q= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:TVlxgqibjgoI3qnQMA4wCgQ2sNTRLm/jXEDRp9hWZ8pWAp40+kSK69VTC8MBI2g82oaBKX1HhZKYhLr9br9Wp7mgJ4DC8WwuACd3e3x64I/jcXlXd5aT3ax/bM9XM9idXM9koxAQ3RKOX5eQUF/1XcKxvKPgqSGHEh4MvE+W5BCkI4mVMAT5v1lKiQTpwH9ZqkSjZl+CubxwfE9zjoM+3CmOvwE36G9L+Q0xnYqCnkXQo27vBwbbM4tQr+Ra0EwBebmGzS9MNkVijNcTem1VcxjW6OSPMb/rbl+xIsY1ikC6FKX9akBG/bTabAg0xpDY8F7e2xB1dE/s8XuLNocvLJDpna85pVi4qYynq7/hVHT/A3etvupj0BZYrZ89m6aE70JzMBMZ+4Q/IXiLobKLd1iTun3RW/AK0DPCV0iS+Z30RO9gJhnCVegQlAUrm/tFtfCFhOk+u8upWsuYFZLafg==; 5:GgB5krlORR3+9tKjSee13OFs62HMOOSqjp3MlqYt2QnpGeqmPpx0WM6eSqJGOyWU8g/b5ljH4obtx42BlTa/SBsrxxjz8fIdjheGKWUbtsXAMDguUq5iCqhGBimfLs3jMrXUsolzNBULNd7fdO8fUCrX2fLXva2JdL+KsdmKBBM=; 7:y6JeCAffkreug/6YwS8fmFjKpcBKNGuTx1Pri6XvK3XXm8o0NeIsoVRPNuEt0ASnvNO+jzdqPfMZPXnLY8z7ErqGwVLAmEqCEeP48pMos+wwAszlUzjmzYKjx0FsHCDuTRrfZbvc0C8aBpXEKwNeOhcKN8Syb+F/n2cgiWZVRkUiHVu0BRXN70l6XI42Xh89cAuu8mh+Yu9era8JgxgCeIfU459OzatG5HU7AYON6pXTw+94ExVvgq6V5J3ZcDxA SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:35.1317 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1780a8fe-8f37-48b8-41a9-08d6121b6521 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 25/33] common/cpt: add support for kasumi 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" From: Srisivasubramanian S Adding microcode interface for supporting kasumi. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_ucode.h | 477 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 477 insertions(+) diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index 383dff2..f618203 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -1776,6 +1776,477 @@ cpt_zuc_snow3g_dec_prep(uint32_t req_flags, return 0; } +static __rte_always_inline int +cpt_kasumi_enc_prep(uint32_t req_flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *params, + void *op, + void **prep_req) +{ + uint32_t size; + int32_t inputlen = 0, outputlen = 0; + struct cpt_ctx *cpt_ctx; + uint32_t mac_len = 0; + uint8_t i = 0; + struct cpt_request_info *req; + buf_ptr_t *buf_p; + uint32_t encr_offset, auth_offset; + uint32_t encr_data_len, auth_data_len; + int flags, m_size; + uint8_t *iv_s, *iv_d, iv_len = 8; + uint8_t dir = 0; + void *m_vaddr, *c_vaddr; + uint64_t m_dma, c_dma; + uint64_t *offset_vaddr, offset_dma; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + opcode_info_t opcode; + uint8_t *in_buffer; + uint32_t g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + + buf_p = ¶ms->meta_buf; + m_vaddr = buf_p->vaddr; + m_dma = buf_p->dma_addr; + m_size = buf_p->size; + + encr_offset = ENCR_OFFSET(d_offs) / 8; + auth_offset = AUTH_OFFSET(d_offs) / 8; + encr_data_len = ENCR_DLEN(d_lens); + auth_data_len = AUTH_DLEN(d_lens); + + cpt_ctx = params->ctx_buf.vaddr; + flags = cpt_ctx->zsk_flags; + mac_len = cpt_ctx->mac_len; + + if (flags == 0x0) + iv_s = params->iv_buf; + else + iv_s = params->auth_iv_buf; + + dir = iv_s[8] & 0x1; + + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Reserve memory for cpt request info */ + req = m_vaddr; + + size = sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode + * fields for cpt request + */ + + req->se_req = SE_CORE_REQ; + req->dma_mode = CTRL_DMA_MODE_SGIO; + + opcode.s.major = CPT_MAJOR_OP_KASUMI | CPT_DMA_MODE; + + /* indicates ECB/CBC, direction, ctx from cptr, iv from dptr */ + opcode.s.minor = ((1 << 6) | (cpt_ctx->k_ecb << 5) | + (dir << 4) | (0 << 3) | (flags & 0x7)); + + /* + * GP op header, lengths are expected in bits. + */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(auth_data_len); + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + /* consider iv len */ + if (flags == 0x0) { + encr_offset += iv_len; + auth_offset += iv_len; + } + + /* save space for offset ctrl and iv */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + + m_vaddr = (uint8_t *)m_vaddr + OFF_CTRL_LEN + iv_len; + m_dma += OFF_CTRL_LEN + iv_len; + m_size -= OFF_CTRL_LEN + iv_len; + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + i = 0; + + /* Offset control word followed by iv */ + + if (flags == 0x0) { + inputlen = encr_offset + + (RTE_ALIGN(encr_data_len, 8) / 8); + outputlen = inputlen; + /* iv offset is 0 */ + *offset_vaddr = rte_cpu_to_be_64((uint64_t)encr_offset << 16); + } else { + inputlen = auth_offset + + (RTE_ALIGN(auth_data_len, 8) / 8); + outputlen = mac_len; + /* iv offset is 0 */ + *offset_vaddr = rte_cpu_to_be_64((uint64_t)auth_offset); + } + + i = fill_sg_comp(gather_comp, i, offset_dma, + offset_vaddr, OFF_CTRL_LEN + iv_len); + + /* IV */ + iv_d = (uint8_t *)offset_vaddr + OFF_CTRL_LEN; + memcpy(iv_d, iv_s, iv_len); + + /* input data */ + size = inputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(gather_comp, i, + params->src_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter List + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + if (flags == 0x1) { + /* IV in SLIST only for F8 */ + iv_len = 0; + } + + /* IV */ + if (iv_len) { + + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + } + + /* Add output data */ + if (req_flags & VALID_MAC_BUF) { + size = outputlen - iv_len - mac_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + + /* mac data */ + if (mac_len) { + i = fill_sg_comp_from_buf(scatter_comp, i, + ¶ms->mac_buf); + } + } else { + /* Output including mac */ + size = outputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + + if (size) + return ERR_BAD_INPUT_ARG; + } + } + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, k_ctx); + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + + +static __rte_always_inline int +cpt_kasumi_dec_prep(uint32_t req_flags, + uint64_t d_offs, + uint64_t d_lens, + fc_params_t *params, + void *op, + void **prep_req) +{ + uint32_t size; + int32_t inputlen = 0, outputlen; + struct cpt_ctx *cpt_ctx; + uint8_t i = 0, iv_len = 8; + struct cpt_request_info *req; + buf_ptr_t *buf_p; + uint32_t encr_offset; + uint32_t encr_data_len; + int flags, m_size; + uint8_t dir = 0; + void *m_vaddr, *c_vaddr; + uint64_t m_dma, c_dma; + uint64_t *offset_vaddr, offset_dma; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + opcode_info_t opcode; + uint8_t *in_buffer; + uint32_t g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + + (void)req_flags; + buf_p = ¶ms->meta_buf; + m_vaddr = buf_p->vaddr; + m_dma = buf_p->dma_addr; + m_size = buf_p->size; + + encr_offset = ENCR_OFFSET(d_offs) / 8; + encr_data_len = ENCR_DLEN(d_lens); + + cpt_ctx = params->ctx_buf.vaddr; + flags = cpt_ctx->zsk_flags; + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Reserve memory for cpt request info */ + req = m_vaddr; + + size = sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode + * fields for cpt req + */ + + req->se_req = SE_CORE_REQ; + req->dma_mode = CTRL_DMA_MODE_SGIO; + + opcode.s.major = CPT_MAJOR_OP_KASUMI | CPT_DMA_MODE; + + /* indicates ECB/CBC, direction, ctx from cptr, iv from dptr */ + opcode.s.minor = ((1 << 6) | (cpt_ctx->k_ecb << 5) | + (dir << 4) | (0 << 3) | (flags & 0x7)); + + /* + * GP op header, lengths are expected in bits. + */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(encr_data_len); + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + /* consider iv len */ + encr_offset += iv_len; + + inputlen = iv_len + (RTE_ALIGN(encr_data_len, 8) / 8); + outputlen = inputlen; + + /* save space for offset ctrl & iv */ + offset_vaddr = m_vaddr; + offset_dma = m_dma; + + m_vaddr = (uint8_t *)m_vaddr + OFF_CTRL_LEN + iv_len; + m_dma += OFF_CTRL_LEN + iv_len; + m_size -= OFF_CTRL_LEN + iv_len; + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input Gather List + */ + i = 0; + + /* Offset control word followed by iv */ + *offset_vaddr = rte_cpu_to_be_64((uint64_t)encr_offset << 16); + + i = fill_sg_comp(gather_comp, i, offset_dma, offset_vaddr, + OFF_CTRL_LEN + iv_len); + + + /* IV */ + memcpy((uint8_t *)offset_vaddr + OFF_CTRL_LEN, + params->iv_buf, iv_len); + + /* Add input data */ + size = inputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(gather_comp, i, + params->src_iov, + 0, &size, NULL, 0); + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + /* + * Output Scatter List + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + /* IV */ + i = fill_sg_comp(scatter_comp, i, + offset_dma + OFF_CTRL_LEN, + (uint8_t *)offset_vaddr + OFF_CTRL_LEN, + iv_len); + + /* Add output data */ + size = outputlen - iv_len; + if (size) { + i = fill_sg_comp_from_iov(scatter_comp, i, + params->dst_iov, 0, + &size, NULL, 0); + if (size) + return ERR_BAD_INPUT_ARG; + } + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + vq_cmd_w3.s.grp = 0; + vq_cmd_w3.s.cptr = params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, k_ctx); + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + static __rte_always_inline void * cpt_fc_dec_hmac_prep(uint32_t flags, uint64_t d_offs, @@ -1796,6 +2267,9 @@ cpt_fc_dec_hmac_prep(uint32_t flags, } else if (fc_type == ZUC_SNOW3G) { ret = cpt_zuc_snow3g_dec_prep(flags, d_offs, d_lens, fc_params, op, &prep_req); + } else if (fc_type == KASUMI) { + ret = cpt_kasumi_dec_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); } else { /* * For AUTH_ONLY case, @@ -1829,6 +2303,9 @@ cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, } else if (fc_type == ZUC_SNOW3G) { ret = cpt_zuc_snow3g_enc_prep(flags, d_offs, d_lens, fc_params, op, &prep_req); + } else if (fc_type == KASUMI) { + ret = cpt_kasumi_enc_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); } else { ret = ERR_EIO; } From patchwork Tue Sep 4 03:59:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44194 X-Patchwork-Delegate: gakhil@marvell.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 C31282BF3; Tue, 4 Sep 2018 06:03:46 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0055.outbound.protection.outlook.com [104.47.37.55]) by dpdk.org (Postfix) with ESMTP id 908231AEE9 for ; Tue, 4 Sep 2018 06:03:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ab4TDxZl7GxMm+8tN/ry5HUSiqNUl9H/ZOJCA+c85HQ=; b=bBIRBY8sZCmSt7BklCY6NYM5puwJlA5/eot0TtlVOtGO/8Ja+z9W5rLNJCE9JQpbFemq8WwT3MwNk3A+0MpcAXH/CqMrqPmd01FZq8P+Hf8+gtPSbGtrvNpk3SBBnh8LMZp5xu05V8JtpM46Uesw6V0Rj9oWFaeDt4t31aFfrXM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:39 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Srisivasubramanian S , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:13 +0530 Message-Id: <1536033560-21541-27-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7bcb7fd4-08cf-4980-d48c-08d6121b67bc X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:CEPdsfU/srum9ucHx7JF3CcL6VS5+eqtGvDNs8stRbZMfIs5/3+dtP2g/J4qjUsPCo5CSlt2FK6YZ05X5lZuXTkvEBu/5UQHp0EiiZV8ZWa2qYrQ8esUZZqiS3APIRtHd86OYbIpGOww2NUhSQ8O3xctuv5iCiX9LvqWn990/cFN/kmxKbAsoFAN6ytJOxHBujaY8XPbgnhDFSWCUP5RLi8LAUXM3RlPEJCYV6BqT3FAtEe1qcS1fQT/6fR9UsIP; 25:HkVMBQ3U928l5jIxEkk0oAwNvAi9fY8I4dOOCiLIoy3rCJ/kESTA7ylS9D8liCEdcizWiU4mGUkgJEY9PPdBOnab8jSmQWt/1VGTvKgvyuBUzfJWKwnsv8Zisru9BwPz64mPwXvx6wJLPvjjpHi8ZMd2EhX6zvtAuAnI3m24px4uZIecU3UzWY0Lg01ucwH433AP1evgyqlvQq/twI1t1PxYtUk/sKe5AaaDaVn7C2FweOC5Az18FDpsGqDZkoqtCLLsjKv0Iz1jsvWTshXof+nlx37kNuvkCEfHqowmNRWPxzhZPfacCaExkk96WXlWlg2g7SiSsvFfrYk1G5A0uw==; 31:9HwaWPtVw9eGRV36FypKBietXK1ZIFC1Yk9B2S9nAJR7r4BMUnFNTkH9vSVMO+CTmDe+QR/QDlSWsn4nW6xoUYSZXi0xZKNDddn8tXmBTjMjRNdymociee0+4r29oNuX0AOJDH3AbOtpHTtbFQeo4G8q+PGAXkHhm5p1J29fjcFfmx7UuUAa37jEE41JD3zGY/bOvhgx2FFcckp7pbXa/E1s3z2S1QBA+OBY1PhXHRk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:k4bVlQ6Nn0LXQJvTArkInvxiQzJQZt/yrTmIHVgw/OwA2Q5TcJAbc+qzsmvKP2Y445ltle3zqhHTIu/a23+94iTrI58NPHAcrt8fXn+XZWKklLcYyxoxwWq0DvKZ9Vxb0TFUoaPxhlhdEiqvGGQ6QQMbJFSZkfO3PA7Lz9+JY5Hf3VPzmF6wbdoxi6KWBylv8mbl7dX5m+zg1SO4y+DY0NMWAsaBVKAFUBxDAx7zz5TzvuzPgDM5qTXHH/2sSQj5gz/Tbs38vE06+GklNkqqhoI37ixi/R67DPTRwJ+OpfdVHDo1Nu4liBgs8+PyWa1XX1cEzaVmnCxdYtJwHFbyJTjSoCEERj6dqI8ZGwpcVV1C0hTEj7hD3eL8sHCyT5IIxxzDlilQcNbQiyka8/n0Z2aL0cOxKkstYKEncdCGcrFPf9+ZBotKB7JUkmVN12H0kwHvVR1ozWJ4e9jelFZXgQLIDxPF7spm6snGgxakonqKIsnRRJ0VqSbCRYj8lwcw0BpPvBenDNyEAa8TLkrbV2FWNhkWYtw1Q7HJZC4kGtPrlmpIYyAQIFLq7QUXuRhJdqB7yBDxs8nW5GRFr2la/RNWnDDMMN4hdLD1jS7bFZU=; 4:ecbAlpAoi63Ysmyt62xtYVvPHRimCgeLVnOk274ZfJvA21kikCHfLi1EX/a0wxxS4G11l73ILH3D1ds0pnnMzwFBGKT4sh+s33oDwy/Y6VUoD7ql95T78MQV+Gierz7nhHT6NGsSu8xt8FtK6WlkXtLzL2cE3a5/2MphLus5zKfkmolQi00yZRB3M8piXd5XVBIg/jf9ZF5IeiArwTF5D4jUC7b56F5GMBw5uJyQMHBfd6++amR9YntDb6TKVZH/sKh3NcQGJs5S+RIiZcvbEQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(575784001)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:X5WA6UlOPrGBCh75LlMfZ4TyiUkJmezRk+RO9TsJ/?= J+QhJMTeq9j3E9e4BUSaD0ELQ0hAziZOGpFuAWlgDWadp1S5nrMkiKnMwCVWPytRVfudGApQFkCkvaLx2gxLftXs9mXkPRr9GP3pjayHc2OzuUQT3w48B/e2IJ0plR6F++X4OWlG7CmOTaR3Jwm9/9awEnktDrXaJQBDNtaLB9J1XAAPIKAzrjIMrpXUqF6LJY6ccw3WuRHYt/2B37+Wg7Zy+umholyrvPFDknHFzzj7r7DaYdsdE9U4dftG00T7HYwUjb5D5wjx//4l1FVAMphAHoojXH61SF2v85Ral2gvTJpgRWp9bggpHht7oIHynjLdEEfsta7VTWvU8LhkQ2rnhfjs8vtB0BpuUceg54V0yphn/ttruOrfUnlRHsxvluw9g1NFcrhLT6VXj2PeSvYPRrXDM9UqBePMOHwUV/Dqtes4DveMHTcn5JL7G5sMtGS+ZND1W416TuE54JMIQEH/9y9BE4Oj1bzmO/MbNF6CSe3LbTL+RuX+IqPhZapx92bGB1a9nVHV4+466dtyprfZoKLB62DrYokwJdaLKOEcqltl1hF5/pHGOacGrXvOVYbzwLh99QwYKHJ5Y1dWj07DyDlpuDP2y26DDodLOOTZtiXIIAGcl3gWgmXD9y6rCuXx7oCgknEU8L+LkcHxzHD9Js97z+Sm5gTqPhhIxcUSgQsB+U55RAADFPYTwYD8hkWFhSLBdsM6F/bM4CyIZL0HuH+/pB058y0qA05kMjbIE6JJ9Axmf/2AlDEUqc852cYOylw9id4s/U64+1pGY7GAx0lqc/EjpQr/VN6mGZr2k1P5jguyvBrkD0BL2srHKgzpeVbXmceGFmVld70qEID3xiJCqKKy7volZ9nn4KA0KklI/naAq1iSvfwgKq1+9MEe1/rAEN3z5v7Po4g65fzDOUTnAvZx7F3ZzlMx1El8LRtgzkauFrfd0D/c+FuWgHhEWjs2WK5NIR2g5h7MkFa/BgGYNtIWCx9bQfKjOAtE3jG1TxoURVM6DUMpnS/LJFUA1NH6cNBLmMzE/AWsypZ1RSQDjUeFowZ6pF+5z7+97/a6hrK5HDuzQOFFeCnyXsBG+4xh78EVFh79x071mmL6GaS/cDhlpQs4XJSOXd3nnELLp5afKE75ppdF9U0MpT6raVCdlZ3A2pn6kntlScf2BI4epqu8cIqR4yiXJiEn9gpB7Cg+SAffZPMrEO9I7NCJLOLxyAzHmcjN+ukvY9m X-Microsoft-Antispam-Message-Info: UqkITQT3npAq2y7hskooJdTK76nIDksq1ygUk5mxrXYSsD3vlathmAv2Y9J05Fzm4oDnXfdWELYQRMVngtR4ec30lQ0Nv9OxYNN6uO+BaPN3+Y/GXJ+54JYIknME+xR81bNCYWCyveqjGNJTUqK58YtoXcpaFrTIvjtgKTWkzNUmnthqiWsINwSZ+3zL58SagMQAZGnErqz5LQB+JvsdNRXQEJP2Sq5OBgWwQxS+69/VEox7OTprGbNN1SFtI0WT6FRCqU8Bm1Kx+eZ86vO24sp4SzTAyv63E/fuxvAjEIefLMRXD/J4tQ7WGm0j3JSt40ATNvvfE7tfWAMjgsdaF2OlKT1xC6WURzi3V5kKe+U= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:glZoSEZWBae/+TO58E1WOLBu/tuc9pvOZAglzABiiAEuOLG6m9xHuYFIbuN9Nrq3icwhFrJWyG/s/vhDcySnUI8t0Hem9cQW8YD8LJTYNUmhLV2WC7/NULwMaCV0Ri6FD7ydD624KZwqdX/FFIpE4OIQCiHynWqA0q958E69J3TTUUUkzXHF1fY+e4YYEmOvL2il4+mjF8VVtkIEWl/Ut+6ig+0+eo1fkexS1XM3RZhDcV0xXFSsbkYKT9zm58vdqM1mKT9j50LeQAQr9D9L7xiDUtoK11b2i5bdfhQGkvtzqvtBwjRAW6VKNQ0AKhNybNBjzgBOjQuwZibPV4Gd8Yi+eFoF+0xHD+XUi4oAhSfIIdVkHBkqv1i33cajwYgmAza0u74mBLu+NI02NnxMEnSN2ITIPM4ajEh4HNN9nWkKm38epZX9yyPHCqi2Ij5xZbjq5PCvtL4vtulOcypMMA==; 5:gAFypzPflZv5OvrWyoPgRkEhNAF3+6C+xyboVCXky5Si0HRZSjzfQqWvQY7SlllXo0Jbpl90dtoxISEbW6QjxiX0HKGxF8vxp96nfiDtOoSc9bJNhI4slVAvnSia8c9kEWOl2qVBVSq0Idu5zlkvKbn2lCI6HTbOIIpFIYFg75E=; 7:zEDTV6uwsxM8zsCvRqMK7dVLVxb9liinnCaB4kXfvr2d3+XzXXgQcVf7tqt8kFRw0A7W5yRJAY/tKp7cQK5kVFenhMFb1fFDbrxxEdkkVvzrc1aT+6wIYoWk+EWZWZI5AtUIGqBBLSEyusJAuan6ZQ7IL3GD4I+UvUPk57GSJf2fcGJYwkdZaNjXIcYqpG62SrpmDXrzunFFbBSvvJxujPZ5Qj1HqSbVr+SIkS8z3DgO+J4uaRESiZbBYTblsC+u SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:39.5067 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7bcb7fd4-08cf-4980-d48c-08d6121b67bc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 26/33] common/cpt: add support for hash 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" From: Srisivasubramanian S Adding microcode interface for supporting verify and authentication Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_mcode_defines.h | 6 + drivers/common/cpt/cpt_request_mgr.h | 2 + drivers/common/cpt/cpt_ucode.h | 424 ++++++++++++++++++++++++++++++++- 3 files changed, 431 insertions(+), 1 deletion(-) diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index 17b0de3..b580289 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -334,6 +334,12 @@ typedef struct fc_params { } fc_params_t; +/* + * Parameters for digest + * generate requests + * Only src_iov, op, ctx_buf, mac_buf, prep_req + * meta_buf, auth_data_len are used for digest gen. + */ typedef struct fc_params digest_params_t; /* Cipher Algorithms */ diff --git a/drivers/common/cpt/cpt_request_mgr.h b/drivers/common/cpt/cpt_request_mgr.h index c082e21..d843ee7 100644 --- a/drivers/common/cpt/cpt_request_mgr.h +++ b/drivers/common/cpt/cpt_request_mgr.h @@ -74,6 +74,8 @@ cpt_pmd_crypto_operation(struct cpt_instance *instance, if (likely(cpt_op & CPT_OP_CIPHER_MASK)) prep_req = fill_fc_params(op, sess, &mdata, &ret); + else + prep_req = fill_digest_params(op, sess, &mdata, &ret); if (unlikely(!prep_req)) { CPT_LOG_DP_ERR("prep cryto req : op %p, cpt_op 0x%x " diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index f618203..7d2b3ef 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -4,7 +4,6 @@ #ifndef _CPT_UCODE_H_ #define _CPT_UCODE_H_ - #include #include "cpt_common.h" @@ -367,6 +366,218 @@ fill_sg_comp_from_iov(sg_comp_t *list, } static __rte_always_inline int +cpt_digest_gen_prep(uint32_t flags, + uint64_t d_offs, + uint64_t d_lens, + digest_params_t *params, + void *op, + void **prep_req) +{ + struct cpt_request_info *req; + uint32_t size, i; + int32_t m_size; + uint16_t data_len, mac_len, key_len; + auth_type_t hash_type; + buf_ptr_t *meta_p; + struct cpt_ctx *ctx; + sg_comp_t *gather_comp; + sg_comp_t *scatter_comp; + uint8_t *in_buffer; + uint32_t g_size_bytes, s_size_bytes; + uint64_t dptr_dma, rptr_dma; + vq_cmd_word0_t vq_cmd_w0; + vq_cmd_word3_t vq_cmd_w3; + void *c_vaddr, *m_vaddr; + uint64_t c_dma, m_dma; + opcode_info_t opcode; + + if (!params || !params->ctx_buf.vaddr) + return ERR_BAD_INPUT_ARG; + + (void)d_offs; + ctx = params->ctx_buf.vaddr; + meta_p = ¶ms->meta_buf; + + if (!meta_p->vaddr || !meta_p->dma_addr) + return ERR_BAD_INPUT_ARG; + + if (meta_p->size < sizeof(struct cpt_request_info)) + return ERR_BAD_INPUT_ARG; + + m_vaddr = meta_p->vaddr; + m_dma = meta_p->dma_addr; + m_size = meta_p->size; + + /* + * Save initial space that followed app data for completion code & + * alternate completion code to fall in same cache line as app data + */ + m_vaddr = (uint8_t *)m_vaddr + COMPLETION_CODE_SIZE; + m_dma += COMPLETION_CODE_SIZE; + size = (uint8_t *)RTE_PTR_ALIGN((uint8_t *)m_vaddr, 16) - + (uint8_t *)m_vaddr; + c_vaddr = (uint8_t *)m_vaddr + size; + c_dma = m_dma + size; + size += sizeof(cpt_res_s_t); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + req = m_vaddr; + + size = sizeof(struct cpt_request_info); + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* Initialising ctrl and opcode fields */ + + req->dma_mode = CTRL_DMA_MODE_SGIO; + req->se_req = SE_CORE_REQ; + + hash_type = ctx->hash_type; + mac_len = ctx->mac_len; + key_len = ctx->auth_key_len; + data_len = AUTH_DLEN(d_lens); + + /*GP op header */ + vq_cmd_w0.u64 = 0; + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(((uint16_t)hash_type << 8)); + if (ctx->hmac) { + opcode.s.major = CPT_MAJOR_OP_HMAC | CPT_DMA_MODE; + vq_cmd_w0.s.param1 = rte_cpu_to_be_16(key_len); + vq_cmd_w0.s.dlen = + rte_cpu_to_be_16((data_len + ROUNDUP8(key_len))); + } else { + opcode.s.major = CPT_MAJOR_OP_HASH | CPT_DMA_MODE; + vq_cmd_w0.s.param1 = 0; + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(data_len); + /* This is required for null auth only case */ + if (!hash_type && !ctx->enc_cipher) + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(data_len); + } + + opcode.s.minor = 0; + + vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); + + /* DPTR has SG list */ + in_buffer = m_vaddr; + dptr_dma = m_dma; + + ((uint16_t *)in_buffer)[0] = 0; + ((uint16_t *)in_buffer)[1] = 0; + + /* TODO Add error check if space will be sufficient */ + gather_comp = (sg_comp_t *)((uint8_t *)m_vaddr + 8); + + /* + * Input gather list + */ + + i = 0; + + if (ctx->hmac) { + uint64_t k_dma = params->ctx_buf.dma_addr + + offsetof(struct cpt_ctx, auth_key); + /* Key */ + i = fill_sg_comp(gather_comp, i, k_dma, + ctx->auth_key, ROUNDUP8(key_len)); + } + + /* input data */ + size = data_len; + if (size) { + i = fill_sg_comp_from_iov(gather_comp, i, params->src_iov, + 0, &size, NULL, 0); + if (size) { + CPT_LOG_DP_DEBUG("Insufficient dst IOV size, short" + " by %dB\n", size); + return ERR_BAD_INPUT_ARG; + } + } else { + /* + * Looks like we need to support zero data + * gather ptr in case of hash & hmac + */ + i++; + } + ((uint16_t *)in_buffer)[2] = rte_cpu_to_be_16(i); + g_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + + /* + * Output Gather list + */ + + i = 0; + scatter_comp = + (sg_comp_t *)((uint8_t *)gather_comp + g_size_bytes); + + if (flags & VALID_MAC_BUF) { + if (params->mac_buf.size < mac_len) + return ERR_BAD_INPUT_ARG; + + size = mac_len; + i = fill_sg_comp_from_buf_min(scatter_comp, i, + ¶ms->mac_buf, &size); + } else { + size = mac_len; + i = fill_sg_comp_from_iov(scatter_comp, i, + params->src_iov, data_len, + &size, NULL, 0); + if (size) { + CPT_LOG_DP_DEBUG("Insufficient dst IOV size, short by" + " %dB\n", size); + return ERR_BAD_INPUT_ARG; + } + } + + ((uint16_t *)in_buffer)[3] = rte_cpu_to_be_16(i); + s_size_bytes = ((i + 3) / 4) * sizeof(sg_comp_t); + + size = g_size_bytes + s_size_bytes + SG_LIST_HDR_SIZE; + + /* This is DPTR len incase of SG mode */ + vq_cmd_w0.s.dlen = rte_cpu_to_be_16(size); + + m_vaddr = (uint8_t *)m_vaddr + size; + m_dma += size; + m_size -= size; + + /* cpt alternate completion address saved earlier */ + req->alternate_caddr = (uint64_t *)((uint8_t *)c_vaddr - 8); + *req->alternate_caddr = ~((uint64_t)COMPLETION_CODE_INIT); + rptr_dma = c_dma - 8; + + req->ist.ei1 = dptr_dma; + req->ist.ei2 = rptr_dma; + /* First 16-bit swap then 64-bit swap */ + /* TODO: HACK: Reverse the vq_cmd and cpt_req bit field definitions + * to eliminate all the swapping + */ + vq_cmd_w0.u64 = rte_cpu_to_be_64(vq_cmd_w0.u64); + + /* vq command w3 */ + vq_cmd_w3.u64 = 0; + + /* 16 byte aligned cpt res address */ + req->completion_addr = (uint64_t *)((uint8_t *)c_vaddr); + *req->completion_addr = COMPLETION_CODE_INIT; + req->comp_baddr = c_dma; + + /* Fill microcode part of instruction */ + req->ist.ei0 = vq_cmd_w0.u64; + req->ist.ei3 = vq_cmd_w3.u64; + + req->op = op; + + *prep_req = req; + return 0; +} + +static __rte_always_inline int cpt_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, @@ -2306,6 +2517,9 @@ cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens, } else if (fc_type == KASUMI) { ret = cpt_kasumi_enc_prep(flags, d_offs, d_lens, fc_params, op, &prep_req); + } else if (fc_type == HASH_HMAC) { + ret = cpt_digest_gen_prep(flags, d_offs, d_lens, + fc_params, op, &prep_req); } else { ret = ERR_EIO; } @@ -3195,4 +3409,212 @@ instance_session_cfg(struct rte_crypto_sym_xform *xform, void *sess) return -1; } +static __rte_always_inline void +find_kasumif9_direction_and_length(uint8_t *src, + uint32_t counter_num_bytes, + uint32_t *addr_length_in_bits, + uint8_t *addr_direction) +{ + uint8_t found = 0; + while (!found && counter_num_bytes > 0) { + counter_num_bytes--; + if (src[counter_num_bytes] == 0x00) + continue; + if (src[counter_num_bytes] == 0x80) { + *addr_direction = src[counter_num_bytes - 1] & 0x1; + *addr_length_in_bits = counter_num_bytes * 8 - 1; + found = 1; + } else { + int i = 0; + uint8_t last_byte = src[counter_num_bytes]; + for (i = 0; i < 8 && found == 0; i++) { + if (last_byte & (1 << i)) { + *addr_direction = (last_byte >> (i+1)) + & 0x1; + if (i != 6) + *addr_length_in_bits = + counter_num_bytes * 8 + + (8 - (i + 2)); + else + *addr_length_in_bits = + counter_num_bytes * 8; + + found = 1; + } + } + } + } +} +/* + * This handles all auth only except AES_GMAC + */ +static __rte_always_inline void * +fill_digest_params(struct rte_crypto_op *cop, + struct cpt_sess_misc *sess, + void **mdata_ptr, + int *op_ret) +{ + uint32_t space = 0; + struct rte_crypto_sym_op *sym_op = cop->sym; + void *mdata; + phys_addr_t mphys; + uint64_t *op; + uint32_t auth_range_off; + uint32_t flags = 0; + uint64_t d_offs = 0, d_lens; + void *prep_req = NULL; + struct rte_mbuf *m_src, *m_dst; + uint16_t auth_op = sess->cpt_op & CPT_OP_AUTH_MASK; + uint8_t zsk_flag = sess->zsk_flag; + uint16_t mac_len = sess->mac_len; + fc_params_t params; + char src[SRC_IOV_SIZE]; + uint8_t iv_buf[16]; + memset(¶ms, 0, sizeof(fc_params_t)); + struct cptvf_meta_info *cpt_m_info = + (struct cptvf_meta_info *)(*mdata_ptr); + + m_src = sym_op->m_src; + + /* For just digest lets force mempool alloc */ + mdata = alloc_op_meta(NULL, ¶ms.meta_buf, cpt_m_info->cptvf_op_mlen, + cpt_m_info->cptvf_meta_pool); + if (mdata == NULL) { + CPT_LOG_DP_ERR("Error allocating meta buffer for" + " request\n"); + *op_ret = -ENOMEM; + return NULL; + } + + mphys = params.meta_buf.dma_addr; + + op = mdata; + op[0] = (uintptr_t)mdata; + op[1] = (uintptr_t)cop; + op[2] = op[3] = 0; /* Used to indicate auth verify */ + space += 4 * sizeof(uint64_t); + + auth_range_off = sym_op->auth.data.offset; + + flags = VALID_MAC_BUF; + params.src_iov = (void *)src; + if (unlikely(zsk_flag)) { + /* + * Since for Zuc, Kasumi, Snow3g offsets are in bits + * we will send pass through even for auth only case, + * let MC handle it + */ + d_offs = auth_range_off; + auth_range_off = 0; + params.auth_iv_buf = rte_crypto_op_ctod_offset(cop, + uint8_t *, sess->auth_iv_offset); + if (zsk_flag == K_F9) { + uint32_t length_in_bits, num_bytes; + uint8_t *src, direction = 0; + uint32_t counter_num_bytes; + + memcpy(iv_buf, rte_pktmbuf_mtod(cop->sym->m_src, + uint8_t *), 8); + /* + * This is kasumi f9, take direction from + * source buffer + */ + length_in_bits = cop->sym->auth.data.length; + num_bytes = (length_in_bits >> 3); + counter_num_bytes = num_bytes; + src = rte_pktmbuf_mtod(cop->sym->m_src, uint8_t *); + find_kasumif9_direction_and_length(src, + counter_num_bytes, + &length_in_bits, + &direction); + length_in_bits -= 64; + cop->sym->auth.data.offset += 64; + d_offs = cop->sym->auth.data.offset; + auth_range_off = d_offs / 8; + cop->sym->auth.data.length = length_in_bits; + + /* Store it at end of auth iv */ + iv_buf[8] = direction; + params.auth_iv_buf = iv_buf; + } + } + + d_lens = sym_op->auth.data.length; + + params.ctx_buf.vaddr = SESS_PRIV(sess); + params.ctx_buf.dma_addr = sess->ctx_dma_addr; + + if (auth_op == CPT_OP_AUTH_GENERATE) { + if (sym_op->auth.digest.data) { + /* + * Digest to be generated + * in separate buffer + */ + params.mac_buf.size = + sess->mac_len; + params.mac_buf.vaddr = + sym_op->auth.digest.data; + params.mac_buf.dma_addr = + sym_op->auth.digest.phys_addr; + } else { + uint32_t off = sym_op->auth.data.offset + + sym_op->auth.data.length; + int32_t dlen, space; + + m_dst = sym_op->m_dst ? + sym_op->m_dst : sym_op->m_src; + dlen = rte_pktmbuf_pkt_len(m_dst); + + space = off + mac_len - dlen; + if (space > 0) + if (!rte_pktmbuf_append(m_dst, space)) { + CPT_LOG_DP_ERR("Failed to extend " + "mbuf by %uB\n", space); + goto err; + } + + params.mac_buf.vaddr = + rte_pktmbuf_mtod_offset(m_dst, + void *, off); + params.mac_buf.dma_addr = + rte_pktmbuf_mtophys_offset(m_dst, off); + params.mac_buf.size = mac_len; + } + } else { + /* Need space for storing generated mac */ + params.mac_buf.vaddr = + (uint8_t *)mdata + space; + params.mac_buf.dma_addr = mphys + space; + params.mac_buf.size = mac_len; + space += RTE_ALIGN_CEIL(mac_len, 8); + op[2] = (uintptr_t)params.mac_buf.vaddr; + op[3] = mac_len; + + } + + params.meta_buf.vaddr = (uint8_t *)mdata + space; + params.meta_buf.dma_addr = mphys + space; + params.meta_buf.size -= space; + + /* Out of place processing */ + params.src_iov = (void *)src; + + /*Store SG I/O in the api for reuse */ + if (prepare_iov_from_pkt(m_src, params.src_iov, + auth_range_off)) { + CPT_LOG_DP_ERR("Prepare src iov failed\n"); + *op_ret = -1; + goto err; + } + + prep_req = cpt_fc_enc_hmac_prep(flags, d_offs, d_lens, + ¶ms, op, op_ret); + *mdata_ptr = mdata; + return prep_req; +err: + if (unlikely(!prep_req)) + free_op_meta(mdata, cpt_m_info->cptvf_meta_pool); + return NULL; +} + #endif /*_CPT_UCODE_H_ */ From patchwork Tue Sep 4 03:59:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44195 X-Patchwork-Delegate: gakhil@marvell.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 1CB705F1C; Tue, 4 Sep 2018 06:03:51 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0047.outbound.protection.outlook.com [104.47.37.47]) by dpdk.org (Postfix) with ESMTP id B25C44CC3 for ; Tue, 4 Sep 2018 06:03:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CjDqiC633Vj+HhB5yAk3Yz2cmRLxo3hw1Fir4dZGYss=; b=BsD5yfJ9clqTwrWTa+qeTQHZvTXbZYHS/H9KwOipstHKy4J6jxA06O7mP8KknZh4jw+7eEgMmk0X4ioWdW0zVbBpgDQdVfX5GmrIgX/Lfbvvt/i2a2W+5eyXC5JIRx2bnQO9rzfSFcPYa4j9B+ek/VaIRTRNkfUA4fBuaX/pTPw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:43 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Srisivasubramanian S , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:14 +0530 Message-Id: <1536033560-21541-28-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ea5ffe5e-3269-4b21-c982-08d6121b6a5a X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:9AjTDJXImr/0eogFWuEOtUssQvu7V8v3yxWvy1esE1XpP5/CENh+BIjP3+Z/zTeCH1CDQ3Q8+G+n17JEJLOdY9PJKp7cq+IgdyeMzhV0rytsNWTcMJouvsjggf4Hiczn7P/HFR6/DEFqLJgMhZJ7vOMZiYLE/U4EVOcj6oD3gPf+pA9c4dh3XH3dyKXkshN5WV1+e2Iz/YiaNQLWOC7BWHqrnjh8sLJUjygHn1M5ivu8fOnt42xX7/bJyJJ7HmxR; 25:5OnnT/AzbhkIb9Z2FOoHRg5zP5R5FEQV+NS1FeB6Fk63d8ePZH1q8M7O0v3sDhRsRZJsWZbAUCa95SZkZM7xoO/4KWs5kzq3tsznOpqGo4lyK4J8jR+UlhjqhvPZIr7C8kFqKkEQuapSBOeKdNwobLxcjUdn4Gy0y2vgnveaX+WZWBpVa5xyMNkRC4jm4EETY3M9qTz15TQWKXoX1w3wuvwK35idq9yJi6RGuOUgY+8F7/HP0d9LtVzjw5lTN2zUSO+5ZBLFD5sLw+xPFYDXOZHhfp9kjRwE3O5rgl88E8EwmBOgS7s33ru1i/++tip3xuFmI3Zo6EMF6T6a691mNw==; 31:q7Ngt2lNamvICmgqpVgtydxw1Wx9gaMukvbMA0uK1A0mrpcm4OYptsUJt9F1Cf8aAj4RzzJmI2TRceFn89LKcpfZb1gK7SO9lBIwtkcYwjyyUm7Lxmymy7IIAQbM4M8h79tdah76I5GvFlqxqBzaYK4AVLZukjl/eTaa5elXMf9+l0i4HVqF2HkMMwzyegbDKAkndrKO6OBYZwjtTIlTWAIQie6yL3PxnALkDkFnsMs= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:DdIqf0Pe+NZU4a/Pl+ZrjCGd0GpcZIEWqFxXEUnadGCRTgE8fthMKHNbT1UJvP1nl1p1W7VJgR4FumLWnwkH5WJsNwER0fuchNdD//Xwj3Db1CZzZeT/TlqQhAbHSjVryb4CnOlfKgMYlsMREyAVlIQ+hHO6vEhZbb2C2rB9BGNQM0UHRr7z3pLqW1bR7yYRBvqMkLbvgDZmn+VF4FAiUn96COSiiXwwm1+kTuxuZATzSUYQPRyK+46VwOS2PrXHo/gjP58/o7O8HbOD09qkmAc3TAVW8a1NzvVIsrwk6mIaplwfiL9zIclEKgJRH4oKs3b3iON99PNGLUPP/LMZh7gc7ql1HtSq4YfHGnIFpnmdzj9Mb8VI3i13OYb5QC/UWsIPfjmdlz/Xfd/prBd/YPdPXcBBwJaLp27wzjtHV2Paq/PQsY1FCoItLrqRGf3/nGQcjW3M8tEEy+wtxiYtSe9x/EobXgQiey10+mxZPEmwTrN5HEbusYq7oyk/G13Fe4b/aEnyrnSYo/2uhqA3oLYtVv9nebMDCZh3keWjKUPpazN0JilzITBqtqlLyJdRuBWuPZBIMUP0C62GUSL/zUXNPbc6qg/3SckLS3lwbH0=; 4:obEkDnjpl/WQBS2yU0N5iRf83q+C2sxheap92yzb94VZEOqrvxpuB/4GX2V91d13mC0y74w0yovgZDBGpFm3bXPwGp2QTYFoKWQunwoYqnUWP0F1WD/9KoHQTuI3qGmGUg+iZDW53xPbrFiaM5+60EF80BQG6smWqr6sewKH2Cgbg1BnK9OzbEvPL2fjpDZ/LfmPUYTNamM4n320d5fJCCPqA8pBdCVH/UBYwhWeBvoa74AkS5ORJi3oovyiI6DI5LA4kDpXUBEZ/Lkr5JyPjQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:tlMANrn3JXeclc/5GBvQ9A9IOh3i7KBgL/2z3+/nP?= oRkMBg+hXLD2f4X3xMIQf04ohZWZO5YdzskrBMpjz013gjYes03VMtl1NrWaivY+hD60G9617GYOX+H6eIVmX0xolmoAbHcJWmLWH2OOLm6ILlqyIH2BZze3deY0WNC6yMRRMwOKfaayJPMdz6roajHo85ZOrS4vN9su0SO9pnJli7w5R+Bt8P5UUOIp8sPo6FH6UeiS+2GrqYpRc5/qX1+5UVvAMirX422YPogi5Luwjj1Kah4B+mDfitydv+dG7F9m0PIBdNQmF5wNvbVl8ISlMOoe9yaz8j4KvyUldkI+46aw3YLQXEhL1Z3HTTyjN8NsyslzDBDIg9o1nyYU4vfAovxwqe6wDVhPDDAFj7ZzEMXFLrsCl4zM0M9ZFNnhXbMh06JNJwrJabKZoEw+Y21OKuT8SdbpSYLDvMAgFTiqX6rqjSuMpripaoiOBIkDR/Jj97t/GC850Y+psN0/+wYpvKHXDzLyDT78aEhzPCGsLl16515qcy0Z2rVYG5xgiQoxtoi8zTF+jS+W6q8IKjVdYA+/qFPrvyxUWOGY9htnuJOL4k2AgW2/SO0RqQdxa2HAaV+WG8mDeXjS995+2WrtmiVnKx0IKp0cl1uMVxD2AyJHmUElJwvQYiS7c1lvhotAgM/R1sNvIzWoWGzS1PD7cFa+zDE8T4eaDOUnmPIkN/H9u+nGClrStb3LEorwPlUopB43Lr9VlPQBE4sb1mBqrZwqq9nH3FdXYu3w25o8cgC5fRT6n01vr1W/TiSfnGSZxIcdzxAte1/LRq6nP+PpTY+kgbqyKq7TULH+MlfG4XH4Zok8jWjN/dcwr6ph4PdEef1WRYJmDZyHYkw2fvwPQrS0FLmEjB8E4gl6B5w7/IZxn94QPH78I99YO6snuJFn2q1WXENIZUUCcG+SA2HcPl7PIz4edSirfWVMxXQkWLATebF6JzxHEQpHqpkkMLvxdhdJIEujt/7cvFto4e16EFAFoN8AH3QfHQLmOAf/9bQjFiXotV7VZEmkTyzhJEHCp/ukAsupGZaQDYnOLGEj5JLMHkSrvhQq0sX70m0RvJV4h5qai+NCjZGqZwz0dxuGxVEPKSz6GxH6tiUrB+mG2+8XaTLJPFwxjuiJKxs1qYs9J6zFDMA3FcecDl7Unh0P0hrYak3ziex97N59zRBnWCy43Szwjnq9YOlvVkv4VojASjGiIMi4OmaAhe4Hd4= X-Microsoft-Antispam-Message-Info: ZqoD2rfSxaOatiuOlKXOt/lc7Q5XLZT8yltTJaF+qq9Tv+gar5pfVNBh4ibrIFoRf6tz6YekSaMN/KU2EjUtLJjxgs96OipqIyRGarJy+LmkM6KTpqV9wDYaS5yK2ebZnQJ+h1QY8zV2Y57NghVVdqBG12DEKyFA8PIs5yv8/N85Mx2YY8KMivK7M98mwVFExHe0Cu3hf00Y7XO1mzzgJMEekuG3fEccHbSTrxn4BVIbMuFHK+WULTWnSNqDGHZoIsD4ZElcRb3jwYFPdXsQDfr1KHVAlf95REiQgWwrgRxGZPELmFBUjZlQATm9HY/YS7epKgCqyphwz3bTUabuD/mKgnRxMIFJ7MEdaBdmjDE= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:gmnLxUjLOXRnynps4BrjvfgJiIPE3cBqQBP1mEZpW+rh/s3DxVfvE70VIbtVSlGITW8il0CxqH1i6XuOtgzRbCdckVWqxjDBuonlxG7w588446LNdhvJLYA6cVClwGjR7pfkNzuzJGmYuniLdoRok2AELe18144EmeclzSjbIDjQ5Nj0yk+fEM09EvModV9QWX2VPnRqPRFuflf+IjJqCfh+oBIPqckMxFuQS0v/49QuQ9uGYQGY9ZMQFbSA6LM97QElw+VMVee5ZwGVFibwAKym/1CgyzhXk9ltuGsbSYbqr++lYHFNV/iibGMgbYDCrbI29I39odnjD9EYfG21wZlMau2N/xePjUDg2a4EkSlAO43U0QhdX8UpsAekZ5crRL11yrPRgGUyUK33Gi+dFO95blListX/w6QmlIIP+TUCLnhShNgsUIQFfFlMub5ARW2ejaFjAWWhGY0ISLGNXg==; 5:9AT7EGorWGfloJTH0Xuz7I4yHVPb89kY2QGDdSRsjr7Vawk+X7dIXOLw7lxYlaiGL8gv4/Xz96VkC1alyER2eFSRIqQVkVXqJelzehdYsT6soZvLhcvo+qIR8sZei9AXUIfvYG9X3APfR226cKrSwj10SSy95FH9rni0ZjcKhS8=; 7:+actXvn5tdzUOjMxLmFOR1b60yICDIUqYzV+9GVHoaXh9KHqwx4djqvq3qx7yaY0aB/+mgjcYyR1+eJKRH4Yb2gLnaltr4GW5s7jzklRsbyKnKIwJ6OEQ/8bu47FmBE7gSWvkVytQEAN/2/NpDBas+L4VYpO+1d1smSzWrbYH+iPGgKsmcwS7vPdNwh+KXiZXH7Z6PQmbD1A2EQWgk4nj+H0wQ+pxeSWUZbNEQkIud0lqOxK9mz+OUliozrDsQZ8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:43.8974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ea5ffe5e-3269-4b21-c982-08d6121b6a5a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 27/33] crypto/octeontx: add routines to prepare instructions 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" From: Srisivasubramanian S Adding hardware specific routines which prepare cpt instructions. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index b9a634b..cff09b2 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -7,11 +7,14 @@ #include +#include #include #include +#include #include "cpt_common.h" #include "cpt_hw_types.h" +#include "cpt_pmd_logs.h" /* Flags to indicate the features supported */ #define CPT_FLAG_VF_DRIVER (uint16_t)(1 << 3) @@ -188,4 +191,57 @@ otx_cpt_read_vq_doorbell(struct cpt_vf *cptvf) return vqx_dbell.s.dbell_cnt; } +static __rte_always_inline void * +get_cpt_inst(struct command_queue *cqueue) +{ + CPT_LOG_DP_DEBUG("CPT queue idx %u\n", cqueue->idx); + return &cqueue->qhead[cqueue->idx * CPT_INST_SIZE]; +} + +static __rte_always_inline void +fill_cpt_inst(struct cpt_instance *instance, void *req) +{ + struct command_queue *cqueue; + cpt_inst_s_t *cpt_ist_p; + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + struct cpt_request_info *user_req = (struct cpt_request_info *)req; + cqueue = &cptvf->cqueue; + cpt_ist_p = get_cpt_inst(cqueue); + rte_prefetch_non_temporal(cpt_ist_p); + + /* EI0, EI1, EI2, EI3 are already prepared */ + /* HW W0 */ + cpt_ist_p->u[0] = 0; + /* HW W1 */ + cpt_ist_p->s8x.res_addr = user_req->comp_baddr; + /* HW W2 */ + cpt_ist_p->u[2] = 0; + /* HW W3 */ + cpt_ist_p->s8x.wq_ptr = 0; + + /* MC EI0 */ + cpt_ist_p->s8x.ei0 = user_req->ist.ei0; + /* MC EI1 */ + cpt_ist_p->s8x.ei1 = user_req->ist.ei1; + /* MC EI2 */ + cpt_ist_p->s8x.ei2 = user_req->ist.ei2; + /* MC EI3 */ + cpt_ist_p->s8x.ei3 = user_req->ist.ei3; +} + +static __rte_always_inline void +mark_cpt_inst(struct cpt_instance *instance) +{ + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + struct command_queue *queue = &cptvf->cqueue; + if (unlikely(++queue->idx >= DEFAULT_CMD_QCHUNK_SIZE)) { + uint32_t cchunk = queue->cchunk; + MOD_INC(cchunk, DEFAULT_CMD_QCHUNKS); + queue->qhead = queue->chead[cchunk].head; + queue->idx = 0; + queue->cchunk = cchunk; + } + +} + #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ From patchwork Tue Sep 4 03:59:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44196 X-Patchwork-Delegate: gakhil@marvell.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 A910C4CC0; Tue, 4 Sep 2018 06:03:54 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0045.outbound.protection.outlook.com [104.47.32.45]) by dpdk.org (Postfix) with ESMTP id 121407EDC for ; Tue, 4 Sep 2018 06:03:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hPRrecACZYOvBnf3kAqw7PpIlUBNwsoQ67PNecZHOMw=; b=L7Etzr3jZnLGWchZDI6K+nALxw9mBsuC2dDlyNhn5CI3W0gGSo9J1w9wrIQLYdoxyGQ6/Feo72R0XV9Bms/jgV8sEUVxCnGxmo5ORpE1CFZCMUeYwpRmBxksOxZ9HjbRvPFHwGcFnXbXyh4JnC+4TZq10UKVys9SrMqVMGQS/Es= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:48 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Srisivasubramanian S , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:15 +0530 Message-Id: <1536033560-21541-29-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8bfe80df-eee2-4f37-3540-08d6121b6cef X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:KfN9GDL4CI58nHfItoK3o2jjlYjnmOXRX+2RmqK7wAQP0HJ3f/7QB7Py7pjXv0IvdidV2ON2gfPlkSJXFxhVNHkZ2p57/hgO4WV0cSE8KEbsmbnE5jKGc7X/eFSlRKJ4gb4VId0Y8hOhIvi518alcFVbDaiT/sdV/IzQjw4Z3roAzG1TFn8OpWQ+CaaTQJOkmJhaRpP4J5xkxT/sExHSbJUsvW4qSphBTjFPh1Hxh4IGfbKESzcP4dcYn3VqKgpQ; 25:SvFLDfU9XFDOiH7ZIOzT/PjjpztXEOQiPBITrTHOdLWtOTjXT2xmrBR4oR9wAA16DbOlC+LiJ6fVY/99jux4pN+QXSV4ulyDxWwx73lB+achoZ9SJiBexWDJSOM3L1pAWnSjsxZUSKVZs5LPHa5vieianljy87+UbJWPQBU2sM4l7zRAKOsHbEO1qM5orzLm+F1fHS4aFsl/QhouhuQk7z/2Jr/ZpXjZvAFaiTK8qJfezOUCUYez1E4rpreQ+qm0r7DbOVxtcsmjsn5J5V7xfzy77pJBPyyJEGhyHtmUtG1duJ5t5Z99lAm4yLFj3ZR8XaUBymxNCEZjX1278sMXog==; 31:zs1AVWeH4/3LUDU7SQY20foCoUgAQIGfGdWY48KLpoFoVjToiqd47w/HxCgBM8KS8+OdcT9ZwaMTo2msOBHgxN3bJmoTNVRh5WbBfgn3xK9+i7ir7EzEuU0PKjV563r0PMkTj0DeRF3KfL159am6RmHXU9zOU0OZpuTcq9vJb5E6vVWXO/Ly09DLJ/L4hHYOG8NwDTEwymaFLdb6Ddcfq0C6SjizABHnkRJbb7n3ckk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:+PpTyTGzXh8f7gey9jkcMn4amdX4GvYz4dUmSJHySz9dOqdci9uO6Br3cc4djmuHCg+vwR7SXa4jwJzXSzLX9LFUvNzDxAb2K2Fn1OA4ok3RepYH/YLodk2CoUpAuVgL8m4/Is+WUJXhPbuS+1nEy1/k+tmGyMzGPkvYqCb9G16ztNp7IelMpwDTCEo1Z9oaKyXvh4Yef4k+5NmRmMY9tROYauAmY4j6c6zSIyBCgDTcKgkSa971RItyksrJivPxCqDVQG0NrhvH/0Ykp93yRTnIr4mGGnPkexX8vtzDcAuUyWidQg+RV9UGY1Qmgpp56mRxdfPF2l0QsplOFHv4twwrfNxfW88msNJwHjzPyrG8OAUlGWShCDRxm0W8H2Tdj9eKqlSdNb/WOfqoUl+Rm1S3uGVUznJHeZk0ctMkZd6FWbC2MRYsVnQUZEFJbJVmPks1BLVOA6gGuTqsEqEqwoGER1OTa7fO5Ovxz1CftySwIg/dIKByq+CKLBhWecHEcPlNZOwkFYrTfcL3y5XtwrfDk/hC4RGZg3Gx7+WFjmdDBrnScKS2M/lq77tMqGQ+fNiLBYWk7fMTQ5U0kNJ98o4d7sETFk2R/yDll8qlu3I=; 4:Z1x4MAwllgl/LoJfb2uQEC+v62GDcZNL7Gnn+oUccXFdnHGlmrxJmR7jC+PVXv0d+CTo1wndC7O6f7IIRNyGeis7sREr8KZvxjrxGdSUGelppaAEcTnhd6nvvej8nbPIsYwPoYBkJraBvpuv8peQCLQz41y9LgQrIrP6/KseRari4E6FCxvQkm4w/LRH7fLj/8wXzOMHPaXvcsSH/Aa2O2Kgypu/AJqOgI96gWDLJPgvVPLeuy+Tfhxqoff5xiYs28TRholcQUBOrfRQ3OHHqQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:kzTpPI305VnDFvHkd+CHLGHnJ0S5iMBbySq2Owx9i?= vpsSftcF6SiszNivm6wfEPBO/b8kAAxWkw1zAYEJ2t5X44OuFmjZlBOz7kgv7P+UoZOCbQgEYvQPRmW3P+tLdt9VyEP96HBxFuxK7BbClq9mk6fwHn5BwkKPkxPrnEMIyqlcfF8Kz2R72WsB9nbq37V3wVnAzW7UM5xK6J9/07zpesAFOjeJuGENzf3LA4LVbWDALAdltP/YczOhgF1vjzDSZZauv+dJyAwjziRMoSA/b4f/gZD4TRyWXfE6obVLsIPmJ5kdAWGtXjZ9xTUjnl6vyDcS4tnsjqGSmi4DeYo1oFMvO6EIUDhbCahLnLoSYjnttPmifJKRw7XOxYt3ysDPkQS/1q7v9cGFtvcznlRR+WLFWAfLLKfedV9du56yggivSbydn1tgs1mhKgOCaZ4k86XikkY8iLzZRQJvUSB5Qbq3nCjU+KBOc+7OhDDjj6uj4k28/VzZQnHanm/5k7cHcdCv3qeceDOTrf77p6SM2CExU9c8vIc5rnUBLWaZzcpDme6vf9cThCQFoSpCrvsTTmPX0ocrxrVvdGhH4Dyauk1evp2WWp/El44gGKxBrw59wVa9BtHFtfTvk3Podqm1FHMKKGSjywAcngRtd9r/ulLDmLt5rI3U9L4+GF9a1g3ptnXxktePGIAK2yPRcUAid1ZQmBi0nFJOnp0t/tAomqvDp9wjH6fig/KDMwC/2STEWxFto/hxcHmm/mKz+YzM9ZhmkhaPvJ3KWtkU2V7ZhdFYtbdISGhmeqhsNduJquW6eUCFT0zvCDp7lWUHC5CMcNyi/ZVOyI+HZfght1uP63GXPurgkW2aH8bcURWqgo+jAJ7ZNnkzGvc67DIGDBJT348lhFIiak2AmVixfN4HTNpLkFD1JEchNN9pUQMGdxH4BV14m236H1QSgLpHg0IgN6PWwarHTVr4zq0m8/Q8dOZ2VS9b7V/m2yeRpY0+gufoHH2ZKm8KaryAxztFGQcem2M1xjYJYBfhpqtbhhrtyx3HcNefMBcluhq3FXUFRhNiXs0J4VUFKdEfLYqhnzhj92o0JqMhMBwvlacE+aB7VUgGBpXp9oRVn147WEXH1enygV0Iu5470rMh3Ca/84168lCuxUUdMCA+pwVw84u3Glei0Lj+iQD4npcoKuU1kNbArt22ny0aY9BkH7RA/K8Lzb11ZIc1c5wZ64Kj13RK0uPo4io/R722oopS6TJXfk= X-Microsoft-Antispam-Message-Info: UoBkY3YWHaOnQAylBp8t0wXjv5QzaTR1IXklyJZqiPSxsEhpfAaPPCO/xU5TQrsVW2AIFC6UnBTi5qp04n/Cx5dweG3tE5St5umIJc3W4n+ZoeImafZ94d3lOWXewmjLg9OmbDoivM/yO1xYQoDtrdmv2AnaYohONmr6lojHqsMFIROqLtrHa86054XVMmMoh14O3Ztg1LM+vYCdmni5YbHCyW+hIJ09WCD/jUfEOIVab1ae3Gj1rKKCz2qEfKeUGMT2bCRjR7rOLJ/lLB2ZlvyrzaKGHvozrUn5OmKB8LqLMRiLtQp5Fc0ncNUG4W0SCCm9zyAELapYbiLW9C6BV8q0UWYKoBl0vU+lvCJgYjg= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:wTwZchSk/PL+PSzr5Y/8sFo1+XOfL3TCRtofYoDMSD9O2nDk8R603tRc8kdoTxoY9G747xF6CYKF3P+6m0Gc3ZmXOPqH1UUVsGU3MotutONixoWpkLZl7gBU0uYl4owNt5LHSyTAp2AcbSaFWdZGOb9uFBjk3qXBUIJhiVnepAzoCTiQbkvX5j0xrLx1Qy7LoJxVg9HO6e3p6p6qn2w1EcdQsyVwgJyZSZfZaBVnnCJUikmyuZgnH6JqvH7IkarvKWQyb/jDLw8v3Vj0SUOr1JUibqcBEUhfx535mb4stA0B3IPx20xYvV64ry0XXH7KLAQFVSmTyjhNoCYZYtLDZXpMONJfZ5jOySjng5qOvhaFjuIR7ndUiXYwZwU5KBuJhNbdt+C7opoCtT2KHByOZcR/22sPO0t9DFnFYhLNpUX2NO6Wte1cwrQQwJ32JrfHYr4m1h4XHvh6M8oToRGZoQ==; 5:RUC/Yh8OEUiC2i6SAN1hSVZBBJSs5a35aI79TkySvQbyj+GQLzvZUrLzRnvPXu1gznvYmiiJVUO13ZbmaSE6T7HRVzFjgLCLPCxcmxANFIB2uiJG0aLXclXgwk03576RoNg8j6V9CZceVCMUBboUW2lbPeYC/4/FOwJSQonCoKY=; 7:HnON4+GLaUA7tqi49qJTZ1WG07/oFLrhNGjuru0YFioTbigyZ/nHHZuMKfAUYktdPc9aS1Dp/3GZgdD8gl+LteF9KKhnlP4msiNvvRvG3QCa9h0BuR7kbeIXJeCfwCrSIHkOs9C6zHzHQONl2+oF+gNpXXCcBEKR+knXcYR8eNt6atBlNYleylGz+QEZHdnkcwqd9Mc9jaLcSxPfSkQESu8hKoubRYWbzfNDst65QYpDpZS4LedkXC9ichWR3GOA SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:48.2255 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8bfe80df-eee2-4f37-3540-08d6121b6cef X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 28/33] common/cpt: add common code for enqueuing cpt instruction 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" From: Srisivasubramanian S Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_common.h | 4 +++ drivers/common/cpt/cpt_request_mgr.h | 50 +++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h index 61621dc..6debf42 100644 --- a/drivers/common/cpt/cpt_common.h +++ b/drivers/common/cpt/cpt_common.h @@ -15,6 +15,10 @@ */ #define CRYPTO_OCTEONTX 0x1 + +/* Default command timeout in seconds */ +#define DEFAULT_COMMAND_TIMEOUT 4 + #define CPT_COUNT_THOLD 32 #define CPT_TIMER_THOLD 0x3F diff --git a/drivers/common/cpt/cpt_request_mgr.h b/drivers/common/cpt/cpt_request_mgr.h index d843ee7..4bf8de3 100644 --- a/drivers/common/cpt/cpt_request_mgr.h +++ b/drivers/common/cpt/cpt_request_mgr.h @@ -5,6 +5,9 @@ #ifndef _CPT_REQUEST_MGR_H_ #define _CPT_REQUEST_MGR_H_ +#include +#include + #include "cpt_common.h" #include "cpt_mcode_defines.h" @@ -34,6 +37,49 @@ cpt_get_session_size(void) return (sizeof(struct cpt_sess_misc) + RTE_ALIGN_CEIL(ctx_len, 8)); } +static __rte_always_inline int32_t __hot +cpt_enqueue_req(struct cpt_instance *instance, struct pending_queue *pqueue, + void *req) +{ + struct cpt_request_info *user_req = (struct cpt_request_info *)req; + int32_t ret = 0; + + if (unlikely(!req)) + return 0; + + if (unlikely(pqueue->pending_count >= DEFAULT_CMD_QLEN)) + return -EAGAIN; + + fill_cpt_inst(instance, req); + + CPT_LOG_DP_DEBUG("req: %p op: %p dma_mode 0x%x se_req %u\n", + req, + user_req->op, + user_req->dma_mode, + user_req->se_req); + + /* Fill time_out cycles */ + user_req->time_out = rte_get_timer_cycles() + + DEFAULT_COMMAND_TIMEOUT * rte_get_timer_hz(); + user_req->extra_time = 0; + + /* Default mode of software queue */ + mark_cpt_inst(instance); + + pqueue->rid_queue[pqueue->enq_tail].rid = + (uintptr_t)user_req; + /* We will use soft queue length here to limit + * requests + */ + MOD_INC(pqueue->enq_tail, DEFAULT_CMD_QLEN); + pqueue->pending_count += 1; + + CPT_LOG_DP_DEBUG("Submitted NB cmd with request: %p " + "op: %p\n", user_req, user_req->op); + + return ret; +} + static __rte_always_inline int __hot cpt_pmd_crypto_operation(struct cpt_instance *instance, struct rte_crypto_op *op, struct pending_queue *pqueue, @@ -45,7 +91,6 @@ cpt_pmd_crypto_operation(struct cpt_instance *instance, int ret = 0; uint64_t cpt_op; struct cpt_vf *cptvf = (struct cpt_vf *)instance; - RTE_SET_USED(pqueue); if (unlikely(op->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) { int sess_len; @@ -83,6 +128,9 @@ cpt_pmd_crypto_operation(struct cpt_instance *instance, goto req_fail; } + /* Enqueue prepared instruction to HW */ + ret = cpt_enqueue_req(instance, pqueue, prep_req); + if (unlikely(ret)) { if (unlikely(ret == -EAGAIN)) goto req_fail; From patchwork Tue Sep 4 03:59:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44197 X-Patchwork-Delegate: gakhil@marvell.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 E481A1AF03; Tue, 4 Sep 2018 06:03:58 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0065.outbound.protection.outlook.com [104.47.32.65]) by dpdk.org (Postfix) with ESMTP id 8D60E1AF03 for ; Tue, 4 Sep 2018 06:03:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WPH2qmTNimWKYfSK5nHaUcjkou2+nM3bc9yCvfEnt64=; b=WkvLGb1ry559a+uOVciaDOoXhtQ487vCvrMvf/qe0V4UM54H2PTfqT3a9mmMqI2sFyAcyW3XwCs8MBGpg/Go8/vpuLiR2RK2ZG1BTOI0sV9jLE2Bk1AYdRFziKSv+N9nYwyZ6xozT6TaM6d7NSde+Yr+JTPLyYQg+QSKSyz1f0c= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:52 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Tejasree Kondoj , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S Date: Tue, 4 Sep 2018 09:29:16 +0530 Message-Id: <1536033560-21541-30-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e5aafb43-0433-4ea4-2a36-08d6121b6f8d X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:yVSNaeJSadVVxyvTVTJufWOygo9rDa69iQti2pyyM32ewW/lGzlmTeJJCPhOU234XC2VrYw4Dml8l5P61vpAQsYCrGmg9ipRMz3pGrKTct/T+GZIPrJ0d+inKKXl8R6EC4j28FvF0UHJ2+zy5pc6vcTI7Y8NyYnUVkE9C0+xSBOtxNc+B178hkewG4Pgy1DhqJvdpjdHcPeH0Fs3sYcv0zn1GGEk8Vz8c/ToMbRuTkZ21lQHBS48Ve3JyaxHsUye; 25:Vkph86OLxCwYoy1F4OXWmgDgvk9f3w6weLnqg4jM06RnkTQphWO0RXjWekhZx3gpLn9GDqk9GMIWbpGtqwqUeNIcmp4yJ0GkfK865ZzUNcDlOu/CXqsRGlJBIt7b2ULTCK4dRvuFYNqbXgheBGjDo1o3ymmYBuXHzFB8Ts8iZ5eD/QqZC6YEL8Fs1ZTgkAwOy0/F8a7r7ZCzcWJtfuQwwycBV0sYABWX8j7Un3rFxuYfN+ebrtgPyNk2+Z1KlZV5WajPXGLlHqhPTnZunNOqCnWrHuw7aqaUgyn3hq6N7JLXltCTCJUPNWBiipJNgO+di5/YjP/gQVknXpmVr+MNLA==; 31:IAHuMzmcYPF/rzi2ClALPBWgxR5pkfB+qwxe/u3K7r1RT12RGd3M7nrE3GNFhw3JhtfrfQktiyhQNtPu1ZS1JSM9sVljG+m7gKA/vNPIWfkxFLiDCu3lHZC/HHh0lG+jl9cVLCDZHFehYz4YUoTkifSt6HaboRlyVoJjEvBmKUQWR67Rk7mWzFhJeOWc7pIzXIe/ZThqhnnPodZjKvnHsRIKdy/Tb0NVoVGxaYbvpsU= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:PmTrGk3KCVF9DdB/oyCl0vrStMGHem7JDzCR4i2l394SFlMeIT0Yd+jzwiXXfbg4qjaXqxXn0I1MFsXYyAGUrJ69rm/Yk5pg3Ifhh2ToOj34YwfTfLbYvu0gYt6IVLJle5vINIsuiMo3o+f+wcZ7mQBftiLNecXTb0Ww8QLJTcLforOLLfuA+oTGYgz5TuaSkCAQcB50qUlsJkjnaMwYOpBnlsNIYbF4vkgYRV2QLpFpC8/fBDA5MS0xFeCEjaoZunZ4MmxLbKXGvvyxH44VuN3X3DqSQbaubkqflDRT8ju4rbTMaaw8Mcoluh/y/lMtsOBAzHO+fITVukxeo0az/mgoFoAI4c1RPPkAF2YmV/8N/XximXlrnCRzPP17QHF6pDGutfTs9AUp3g8/+HMmRrlxDXsNahfdifExdd/GDIuR3DDeCohNhpLxsR5/yJSXdmx99RRah+2SLqdgacoVzeGr962U1QqHkRg/GZa3BS12oMai5it4VgDrQMX0OoXjLd1bhOK34sK3L1c0HF0CKkgvlj+4sxbgNsMgpdxzHcN+zDhxTSx32dorZIgifb4GATQDb1s0OUYKOzZQImrTjdLFwzuNFqO8h+OCnd5VkII=; 4:/GkB9XFWvD/zy33byQ7DKQ+u4NFhYIMsNnjFBii8gVxmrWAX2PjywPWjRlVzE357Q4pnXBa0LeQHuoIpjBbiVEJgQHZl4RxBMfDt07StK9M1rdgH2lY1McP0RHbDPmGtIQLmYYm5sG5e87TuM1Kt/E2HOBXwkkC9qcf82ICuuyw9HLQ1zvMtx/2nE8PNe/Avu7CnRH/D2hvAQ4xD/AwN1t90W+eS+UdPmb4jnlotjIH2pnmtIJo3wrDSYJtdo3AQ2a9eEqq5PID8GjgNvaoiYg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:MvwWQwKAxglHw3AlRzcmlmPrnaRm2/q0/IQsTwVpJ?= ANIbsK/ugvi34F9usslIhVA/o2QzQGDN/MruwKYr8lHvqFUtXYzoV6gseXbbjOv5yjbDAamhYOnycmvEakK57HxXyS+uCX7A9e09FjrDncA6Xn0yBQOqrSUeC433Qqbys3n/sx/hSwb4hy6oyeh7DZkXvnqpz9Ap0nXQlik3Fk1lT3b1e5192z0/VkjEtZlmsMq3gdXXVeiSHSMlvjKiWkZNUMIz4RZfGUcoO6FAo1MLg1RbLe0H/ejMztdty87HC70g014H0rV7NpAKeD3RRfR6z46o2xjZl0mhOxtWFzoHb5NlCm/vcV2Mr5M1k4ShH7RZOL4x2vAG3MmJEAgFSLjxKtLpgaCgSqn9wCYvCO5aJNLE18VwB9gdhS1ONUA+MI3l1n5DDzsiauRoIuXiSv2dnJ1ahvwnyRZhj/EdKyQFX7eUQIn/m/v9QISD1a+QC05dR5ho1E12wP2W8pPj8uLkaoG93A37+6o3ou1tJcIFebPIanmZRWZ/Fdoa5glxuXZuu2O6mJ0kEdSRRdueeH+kDAfcTc95YUUW45afCHZQRWNUDRinV55lW36KDjvBpTXwieittRllqSE67IrETpb6B2+y7KP3VEE+vvWhEqxkxrdBFz0BqOtfJANeMzIO2Wn/ck8Egvi9RReZGy1rEvAwaOTFpwY0dO+W78KMgRNCZiZUfYUVcc0KLT5dAWYgclfuOzV8EVhwLFBvAh/J8KZaTwYGrQLeUodq6CMmDxl4ljGMl2sY4vzmnG5rMAk2cdgJEj1ASqpmyzwGJ/OZnNJAeMSu+YqfDQvNB25kk71FFkkKkTiSU5QUR0Fa4m7SSLfLqjnrticKqIArM7QB5SJjL6S8Km1ul8WjGj7fFu+ue0XaDW9mSZVnoKQXpgducjbwI3yxKJAinXBd5mfv2s46lMvxLNaxHKTleqSDwAPo8S2czoT0l74qVTZeivpEmf/lZABzQoAFIt5rNVinn/y4O6cCUgLEXGFamoly8/PCrBHUzwenrixDmnLQ4UaTwrM/zRdQbMblw14K/OTt0CO7JpT5ejIBPPZLcrs+O5RF/xYpcLPQ+5qQoJ+L9WTJhsnOW+vuyLpUMUWY6zJ4vqgc1VQIJZMf352premrJvKhjTYWuePoKPMgcYOIRtXAuPig9Y449NZQSYOVbHqU1lnNLaCxZeGDyV5LlTvLOOda4iIzOEXPZwIsOxNSl/6NZY= X-Microsoft-Antispam-Message-Info: ztSPCFe2DpGwJ+1FA6ecbLfJsDjwAtKlpeG6WY35AaeCPGYE/yBKZyfxc9un/S4Ey7CvqS77fS6Y5xQONROhzxZVVrx+jxgi8XXMsJrgKs3zlOArJlXbRGtrg1R7aNh+yPn7HAaWr7scY+5OP62219YGsGh0qt5ncNG87tNfr85Q8gMpRHhuazRJyLoYnk7sYFItCNAH+NkmFvZ9wJuWGRhDSSA3WiztHCPp+xJG0iTEORzUX7eCK05IdaTb8XAf/0xGC/3uF5wYe5pzaQCqGxYPaEKcoIu6Lo72vcqmtTfPkn1tStGOnO8kjItl9TFsstBbhHauCehaPvYw2k1AY2SmdgFvAbbmG6bW9jD9YU0= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:rfINs0hCzAqsQ7EHD0YlMddgFDXHWqjQqKzUJ/kx5Wsrj7/AiOr0fKvGJ6pTibA0NsLVtCQ3DYyJWNRI6pRRm1JZ7/nsGmHQJsKTiTmZ8bGA+G1VJa7efL+Q4FjVN//Wchghd5bCV03qcmEuU25CEF4PaXFnhIQwdSC7LWAog9ElnDYDDjGRQkn1lsh7jl/Yzx4XazFVk75Wif5YA6/sFqk+t+EhyBw3yKmYGGUeEcHvs/B+7bgBdcsLdlnIDTHcwqDHOPaSUK81mQ9fOOSaQq7/iELRyTwvmAO/7mS/ieIuOKb3TqfUwvYYw936uhkSrAOHE9hYlWsUaaTpwVDi5FxCGv1DQ6xYAZU1VCFTvmrSt/g08qg+ULHuIVjgHOOL1JTwxhNUb03Lxti0ZZr2goxItG7A+EFEl4aTRItu5YuqlLvRCF+H8nTZzuLBcQyFqPJnSgpAuz+R55RR3+DkuQ==; 5:YQwTSOH7O/5nq9dzlYWtCZZ+XOM3zqu9SqeLvfP0EaB7M8EIYBPWt87KjaWL8jlV8pd5zvrfs9YHenNV2reHOzCA/d2vEYwWDDeUL5GqFSfj8Oxqf6BJiYh5gy5Dsa3TBDxunPHI2+aRMPgSBt0DBGaHhuTAlyr4wWLfcu5fSJI=; 7:M5PZhGvNqTFofyfpPrPYB8AvTJOVR6JvJmgiFOoTGu6ZaW0L3SY0e0514ZSIC7AOV2/IPMnW2WVEoXKIGsKgV4EcIm8kCt+S4ytMx3d+5FxLl8rutcuy2LDCAHRyTo8dPXwMjANU67gSQG9QCIARTuhHxXTgU3LwQfsV85fRlyE3D2FsASwUqULqMLmc9fikrk02VaGIZoSl+zmKxtELzE0ed9cGvaQowUU/pPKnwoU05ykjcwtYqOKSZnHwtlJB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:52.6161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e5aafb43-0433-4ea4-2a36-08d6121b6f8d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 29/33] crypto/octeontx: add enqueue burst op 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" From: Tejasree Kondoj Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 18 +++++++++++++++ drivers/crypto/octeontx/otx_cryptodev_ops.c | 27 ++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index cff09b2..f2d7ee7 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -191,6 +191,15 @@ otx_cpt_read_vq_doorbell(struct cpt_vf *cptvf) return vqx_dbell.s.dbell_cnt; } +static __rte_always_inline void +otx_cpt_ring_dbell(struct cpt_instance *instance, uint16_t count) +{ + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + /* Memory barrier to flush pending writes */ + rte_smp_wmb(); + otx_cpt_write_vq_doorbell(cptvf, count); +} + static __rte_always_inline void * get_cpt_inst(struct command_queue *cqueue) { @@ -241,7 +250,16 @@ mark_cpt_inst(struct cpt_instance *instance) queue->idx = 0; queue->cchunk = cchunk; } +} +static __rte_always_inline uint8_t +check_nb_command_id(struct cpt_request_info *user_req, + struct cpt_instance *instance) +{ + /* Required for dequeue operation. Adding a dummy routine for now */ + RTE_SET_USED(user_req); + RTE_SET_USED(instance); + return 0; } #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index 438208c..b20cbe0 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -345,6 +345,31 @@ otx_cpt_session_clear(struct rte_cryptodev *dev, } } +static uint16_t +otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops) +{ + struct cpt_instance *instance = (struct cpt_instance *)qptr; + uint16_t count = 0; + int ret; + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + struct pending_queue *pqueue = &cptvf->pqueue; + + count = DEFAULT_CMD_QLEN - pqueue->pending_count; + if (nb_ops > count) + nb_ops = count; + + count = 0; + while (likely(count < nb_ops)) { + ret = cpt_pmd_crypto_operation(instance, ops[count], pqueue, + otx_cryptodev_driver_id); + if (unlikely(ret)) + break; + count++; + } + otx_cpt_ring_dbell(instance, count); + return count; +} + static struct rte_cryptodev_ops cptvf_ops = { /* Device related operations */ .dev_configure = otx_cpt_dev_config, @@ -436,7 +461,7 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev) c_dev->dev_ops = &cptvf_ops; - c_dev->enqueue_burst = NULL; + c_dev->enqueue_burst = otx_cpt_pkt_enqueue; c_dev->dequeue_burst = NULL; c_dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | From patchwork Tue Sep 4 03:59:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44198 X-Patchwork-Delegate: gakhil@marvell.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 9D9981B04E; Tue, 4 Sep 2018 06:04:05 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0088.outbound.protection.outlook.com [104.47.37.88]) by dpdk.org (Postfix) with ESMTP id 586C01AFFA for ; Tue, 4 Sep 2018 06:04:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OuK7iTFjvXABfBkEDvomNvrumEdwL8cznxr7CM3gfCw=; b=DcKEm+cgZnayXXxdTKJbYWtodTrSsiRbKAoHFRdOVI4SqhzSo06Lp4sejhQUyzAq+BZHykEywnIbbUsKpk3b0ZixwyAFvRf5sXNwetTPX8DSK+aIqGiB5eVkG2cdezKXXiBTRDr3lzkuU6EoBPQanKMMvQnVi7hRew9tkD3xzuw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:03:57 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Tejasree Kondoj , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S Date: Tue, 4 Sep 2018 09:29:17 +0530 Message-Id: <1536033560-21541-31-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 64a0d57b-2e1a-4ae8-a8be-08d6121b7234 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:RcfwB9/rSaUUxTq+tnzX81+tv8FF20M7jiREW7d8T9iabmrzo5ZJZ0lCmFS2OYjb2VLoPiVYxfyHHsly9AWgimt73nQLjfHxPZ9l01x8boV/dMK50Uo6mm518jCO2fjAtiZ0buVXTELh4+uTO3ej0Xf7M+/KmcKUqrxNJAhti5WKUocb8RAgY/3T3rpvnYLnulbfsNNhlxYWntiRJykQHPUfq2mA70/FS2+fgaZK9qiGXm/SMIEfi0+jtByqJFNV; 25:jD+lw2B/gLdxCy1pkhvsVzTyttkw9CT7obSN9pstx0TWV40+pmPzD7A+zkZIdmvOYjuQeeoFU1fbWgPOFRBMcOhg9qStJs7j3t3XhCCmJePqVFqEzncfsBdNV+c4ZVNcLHe3BVbQtzfFJu9gLH98LbZ4dcBlkQOT6HPwQ4N60y3XSbEAF5ORI4cH/iZe3diaGK+6s7vxFEIoBcBbKoZ3QCYThX5ewGJux4VT8lRJ0C+2VSjnABECrM2Tvly7Q1n5XkRDSIVh3dwOXSiETHuaHw7U3my09KDwCHax4sRSYzlYZ96x4B/p0pLBA7sCcdvbyVy/zQJOwLqKKNYGvIIZug==; 31:BmFCuVfALNEIdpJRBUDwFVHR1CvjB1zkzr+sN1MA8vgvpFxJPMy9gKsq/mToy8dworHvZlLarXonZEnwP7c24O4kLHrfKDr2AuP+vxmVE3CYuUdKd5t6yy1VZ+oPoZMayIo1RDXJFmHum1FbZFUUee091UUJaOiWgZwED9ENl8a1tBX8cGLmoSFbkrasfU1hPTWWgYp8DU100irL5qBqrRpL7z2wTsye2PohqaJDMhI= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:cbaFNE2TiUxAcMyN6oI+z/wUZMu1MO+LJ36/rokXf0Oo4tDhG2wPww2hUOhvtYLQ4WhlHiSyU4Qp+OCrlnr3jkdfcdxjrJq9r7Cpa1cc2O09+m7iXvKnKRsnAFtmSiqEDYHMm0wUxJbniMzw2m02jRNOsodZG3xiwEY1aFvC1O7Ga9L+kIOCp0N5uaZMy/lR45yfPRuVnJLJM+IYEiR+0fgWzWzCIkZ3foGOOw9CRu040n8FDwVb1gXrCxVLvGLOpgMdVvfIaDZjWB9+0Rt0+0b/6y6l4AIXOrrIJz6/QIijKIQ4zfvPkWCAMpCGwwP5qp6ygwrcszSfVYBGV+cH89oRIAEcXivzhfKEEjAzhgh6E8exWcB2hxLhgirdN7dDueqsuG/481revMxqknnZLf90E07SFIxQgjwjdT5wFEe6QvQIekh7A9j2vkYs127aIjmSvZpaCtHdTH3LqJgNfDg5SuFxL2zlxJp5r+DmGlMX1OTSPxuaB10vgLRuvUi+Cc0KUqhYq/q87EH6HBg2Yb9mwtHEZnj7QG0E9bMh3Zlg4mRLzpz1Q2TRG9ZYXGfrleDMPaZeiLMWjaCLFtI1UvpZ2zeBb+JoNfdK7PX+wnc=; 4:tBMhl7GR51M86wQ262hJKHgku10rAKoa9jYj4VzL1vIO+f7awPK74GvjD86t//xGn82k5P9LXW2YjcOJraEHl0d0ZCqX8ODc+oqs35JZZPWLJeP/IgUKmm3kruj1JMGIKuzIcSQ/JWJOU0LZy8Ykmr9OSZlVuf4WgBUPQrl2Y6PSQF1O02yvlqgoXAyNLdCo0ab+HzABIJ7P9BRQhFEQao7Ev9rhKvN2WyHB4a5mO1VDlD3hSUwgATw4jrlMeGjiF+DKGvl0yV3h8s7/ZdGgrw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:wTt/7KCVNgNGzjPljh5gTYADfiQ0wvddK38iCU/j/?= 0cKgZ9FX+skJb+UEMI41fpK27PJ8Fj9HOpP0Wk8/RL0HtptBtul9FsdA2It5aOqKXc0/TWnIt+oN5UVkMeO5w4tE18WNFzk2o2uC6obxcBzKz3xtyTxPfqtmYx5CQkqpo9n8GvcXlrR7IKDpsOCcfA++QA4vipDFDTUR9JxarD9JVX74mwfNLHpfyhTbVe4nzdRMLhIuY6f3uU3pSYF90arlG2mdEmkW0y8eY9zIG/hjSYu08XWsDbFt9hGyt2w2ftqRS+t6BW6wWhU27MIprzuyyO1NTC95fM0qHRetKh+4s3XDfcurU2zs9fNEdujyRtTNzzRrw2LNuVW/9I15AvA4W85Qy0O03YXerPIMjQIGI/nUHIRSb6f+eNWEYlAdSd1UMsF9nPZ4XcaHnbPsk5EfUuePz+HKtZEQ2PrYhBgbOokO65rfpBBD2Kb74Lan/Rc3WauPZD/DiQp482o3KfshPYQPYRs/cfMznwmddq4Mtpke1rLuFoL/6H/VuTSiJdSOlHLm3vowCtm/a61SWcswqt8QDa2xf4zngAWvGc4z036FYW6Y3cO5R4j2eZtRPz1Ucrdw+ZTIqO4Pq8EJNdH0KB4y0IH3o0tFv4SckOqnLVdWWDUvIHSaaNn+dzNpHipDMKPhoazF6jchwSPqbkfFrErhKUJDTVpXvrzYcQFQqJRsly61p4lZTtyVS3hrUM/6QVUbd0Gq96nuwB0bED2/7gFcke1emADHjO6Kn7K07tqvPVy96qI0gkI+0jx1uZAWEhUXxeJHNmBC3CZ7Ho1bXIpVZaB0b5nDFqLnStR3SWir18H+vlHVlHwRw/5A1vVOlhWaTWHVN8GdKKsuzEUgzw0K83TPpz8YjN48IShPyRz3C4DfnPV/GEz1P8QZZ4BENZmrV0N8mB0S+SBs40aoG13X3zJ5WUzpYFED7GJC4d1IYS8UgDjeBuhcoS3I3q/rGLjWhygBCkJQa8MGttfbrB31iTZal4DIsfhxhzz176rMZ19ZHzyQQdqsq+c2G5EtVsWMe09c5JIkUoV3ADovkv8zGbwhwqmax2kCdbtPAx1CsOGUO9/C47jFT7yd81IJD7FOnDBo4Xui9y2fmvlcBt3ghW/PuG21uBVlgFjGgNtH4cImV+K0E22epvpP/+hm1+PoZ6oebDIrygKKaJ4mFOsuzECMsqlEPZ1Aqg0aApeIfCkDme8b7//nIcAc7s= X-Microsoft-Antispam-Message-Info: H3mlyCr8d4VlU5nOIFp06cFVEKxLeS8S9B0LZ26WobOZPLXGl03O7yKgqhiO1HPaas1RsepF5rLVl6/aXYQYffM+Qyr+ha9jrRVfmcDVMgWrICX67mOKLV6nPEm/DRf391jO+r1DPbjvz+KBtZ6Rcq6ZXPNw0nwzLMRYG/hc1NkZMX1Rll9XxTMLYo+PM3h+x4ue40QslaysDZya/HXfovHPkvMGvISsrOHKheVA2IvxefsIpw6wM5A+TvNFqp20p7VNMr+Dw8wdBIwSfa6I02mkXy8wqjfMpLuqPgT5Dfgj7zOXi18M9EDgkZWTTm5qE9lQhGgn7To0wMN73X2Z3qxhJo1hxIAuvyIvK1JQGMQ= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:vTgX39PA81SjHVrE5CO5up4VkM1JM9MwJ8Y5BLHEMScdWmz0iSNuOWLGz1ufVyrwHxjXcRZYOdjTfmIBtC85MnzTJ8OKrIKg/ja2MnmgKCfyaAOZ91/3BPnX68u4TdSxcYMoHS27eAaW7NzOPXWssSBoHVyvX1TYwRQUbCeLymhVckYetr6TV47e7n1An4DnXVOUPC7oW2dED1JJ8QaSZWSbmQhANzsK1Mt1Fn4+MKlLrKZpInk+2L8dvrI4DgPdW+N2JQUqXkWpAbNaZ5DglI7U6SHprwxhF58UVpgXsyWjO9F/8w/j2UlEjsWWotqaFRcsdSOFGeSv1tvr3ljHEfYnXW4p5u34PQzjEcudr0V+Be3jxTSuVMU/Npyp5juIAG0XmNu/d0C/PVFomrdlfT6w6o1eLne80TNCowTwSgWtz6+buVbHzwooGRw8iiDG6li83D4rnxXcPvS5/MPetw==; 5:GZTAiv9h72xKNg0WKGk5ARuA6+H5A171D5NBla4/LiTfQ7uOcliIKWg4uQiY3HMnJglJzDYrJ3hsufdtwDdb3gLcCU+BsistBoz8q4Lc6cEugPg8SMUPF2233gZmYoFzW/HREcq/ZMrb+NJnNGS34MOfM5GO8acyYXNXLi2x9Fs=; 7:oyzKHDCVIKRHOJuEfk5BhvN8F1X1uFfzxSVNs5N+98SOTtX034Ynx7iSt6wYESksNsGeodGOuCiz1H+sGwPxtuMSvau2fx4WqGPKMJ6SegtQbIN0uzcngrykVLoTBRd5UkY0VBhgDdG9diS74jCEeAQljnMhQ6KLYwORucul3mFicB//yYTbuAMOfhFOeHvWCMkEzIrdS8djP4PqLJmATAWwhJJuxM3EDJncc185KuyQjDr+JZFpYtX66AXFFEtc SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:03:57.0693 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64a0d57b-2e1a-4ae8-a8be-08d6121b7234 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 30/33] common/cpt: add common code for cpt dequeue 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" From: Tejasree Kondoj Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/common/cpt/cpt_common.h | 1 + drivers/common/cpt/cpt_mcode_defines.h | 15 +++++++++++++ drivers/common/cpt/cpt_request_mgr.h | 39 ++++++++++++++++++++++++++++++++++ drivers/common/cpt/cpt_ucode.h | 26 +++++++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h index 6debf42..a9e179a 100644 --- a/drivers/common/cpt/cpt_common.h +++ b/drivers/common/cpt/cpt_common.h @@ -15,6 +15,7 @@ */ #define CRYPTO_OCTEONTX 0x1 +#define TIME_IN_RESET_COUNT 5 /* Default command timeout in seconds */ #define DEFAULT_COMMAND_TIMEOUT 4 diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index b580289..3b64698 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -176,6 +176,21 @@ typedef enum { ERR_ENODEV, } mc_error_code_t; +/** + * Enumeration cpt_comp_e + * + * CPT Completion Enumeration + * Enumerates the values of CPT_RES_S[COMPCODE]. + */ +typedef enum { + CPT_8X_COMP_E_NOTDONE = (0x00), + CPT_8X_COMP_E_GOOD = (0x01), + CPT_8X_COMP_E_FAULT = (0x02), + CPT_8X_COMP_E_SWERR = (0x03), + CPT_8X_COMP_E_HWERR = (0x04), + CPT_8X_COMP_E_LAST_ENTRY = (0xFF) +} cpt_comp_e_t; + typedef struct sglist_comp { union { uint64_t len; diff --git a/drivers/common/cpt/cpt_request_mgr.h b/drivers/common/cpt/cpt_request_mgr.h index 4bf8de3..fb11c4f 100644 --- a/drivers/common/cpt/cpt_request_mgr.h +++ b/drivers/common/cpt/cpt_request_mgr.h @@ -147,4 +147,43 @@ cpt_pmd_crypto_operation(struct cpt_instance *instance, return ret; } +static __rte_always_inline int32_t __hot +cpt_dequeue_burst(struct cpt_instance *instance, uint16_t cnt, + void *resp[], uint8_t cc[], struct pending_queue *pqueue) +{ + struct cpt_request_info *user_req; + struct rid *rid_e; + int i, count, pcount; + uint8_t ret; + + pcount = pqueue->pending_count; + count = (cnt > pcount) ? pcount : cnt; + + for (i = 0; i < count; i++) { + rid_e = &pqueue->rid_queue[pqueue->deq_head]; + user_req = (struct cpt_request_info *)(rid_e->rid); + + if (likely((i+1) < count)) + rte_prefetch_non_temporal((void *)rid_e[1].rid); + + ret = check_nb_command_id(user_req, instance); + + if (unlikely(ret == ERR_REQ_PENDING)) { + /* Stop checking for completions */ + break; + } + + /* Return completion code and op handle */ + cc[i] = (uint8_t)ret; + resp[i] = user_req->op; + CPT_LOG_DP_DEBUG("Request %p Op %p completed with code %d", + user_req, user_req->op, ret); + + MOD_INC(pqueue->deq_head, DEFAULT_CMD_QLEN); + pqueue->pending_count -= 1; + } + + return i; +} + #endif /* _CPT_REQUEST_MGR_H_ */ diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index 7d2b3ef..eff71c9 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -3366,6 +3366,32 @@ fill_fc_params(struct rte_crypto_op *cop, return prep_req; } +static __rte_always_inline void +compl_auth_verify(struct rte_crypto_op *op, + uint8_t *gen_mac, + uint64_t mac_len) +{ + uint8_t *mac; + struct rte_crypto_sym_op *sym_op = op->sym; + + if (sym_op->auth.digest.data) + mac = sym_op->auth.digest.data; + else + mac = rte_pktmbuf_mtod_offset(sym_op->m_src, + uint8_t *, + sym_op->auth.data.length + + sym_op->auth.data.offset); + if (!mac) { + op->status = RTE_CRYPTO_OP_STATUS_ERROR; + return; + } + + if (memcmp(mac, gen_mac, mac_len)) + op->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED; + else + op->status = RTE_CRYPTO_OP_STATUS_SUCCESS; +} + static __rte_always_inline int instance_session_cfg(struct rte_crypto_sym_xform *xform, void *sess) { From patchwork Tue Sep 4 03:59:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44206 X-Patchwork-Delegate: gakhil@marvell.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 DE76F1B05E; Tue, 4 Sep 2018 06:04:09 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0088.outbound.protection.outlook.com [104.47.37.88]) by dpdk.org (Postfix) with ESMTP id CB39C7EE3 for ; Tue, 4 Sep 2018 06:04:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RKuBn+JYgQug7BiqdHo8xKEDY3/oGzs8YZhDcCNnnbY=; b=iQcpneKne5AjwbbPRhqCJSmjhwJcXF8Tir/wlfxaMwqH9+yma2MFp1OMSH7z1vNA24HyMTO6nXZwMbvOwsnt4bei2YDcSkYgkduLndq9e1hPqk3yTXINqf241w7hyqM5lZOqQq+Uuns+0FG3G72vplPaUkk5gW1ZUwB9tQHv9vk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:04:01 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Tejasree Kondoj , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S Date: Tue, 4 Sep 2018 09:29:18 +0530 Message-Id: <1536033560-21541-32-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf21dc46-8710-4178-4cd6-08d6121b7502 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:lMQwjk86UaFV8luc7qa7n5yDPnd3jWkdoO8DJYuljczbQ69GaqiVtNBRcgdHVwGumN+ORky4EekvSyR5iLdYXFYLEeTiacrfVjOA6KJLBTZnWZKtOx0kahcslZPPY+l++trIaqyiELKbD/acD3t4YgJ+YSRa5z8kBGRVV5+2OFH2LdCc6e3BBgbUukcV0MagjI6gNYTknlOCqVcLK/leEL7bmIITKP/AOZ14moDCocoH5/2E/rEb2hlnxoLIW9aA; 25:6AFr+A/kSbZV4S4ZWq+2ZwSeUnACOvChM71fOpkXvwxyCbcVRZG0EsfqMOWTMLLjJ1gg8hgzcvvy9htDB7A481uXY/6RTtkipR5FOdiW8ILycxb+/wS2WoSW8hIpkVv6Tl+GAx5/j02dbpkpu/Y9MgsQdMElTK8qdTjrgUhvxik4Q8vtdRmLGZ9TkcCg8hxg/pEaogHa9W+YmDlHDVVwlUTzfPQvm8IxtV/uWC+eS/VVVGZJDvozF4N5wNDdr6be+pay4FcFoew03KmXSmnzGDdCLHzGs6MsxIFlD8McHHiMPC048/Ak3PTr5QWXfXA8rgiYNCrxDjwqt20+c5y79g==; 31:VTcGr6alI+HTfD6zDr+OM0U5kx68Pzjq6kNHHpnGUoYHOs5Oi+TPwviWwHNUkGHdFNdbVdynRZ66j/JT5hvUB4ecuo3wCgtKq8t3j/DF8lZW2fSmQpAU44bLFCWmixAYM7MnwW+YImfoNGiG+AIfyWZ8CymbQJdHS4usNggy0BQNUdgJMGZSWmB21SZmg81hW3xfNbtqeB+YVePYePXov0CVjLigKgY9HoPKpV41p08= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:p91YTFfqmNyYebC8Ob0Flt8IAzN7QDgNyrRQwyJq8MJlAx06i1KaAe8Kz2RBIWP7hntVNC3F724QfeqgcK6Uq64BjsP7b2GXLIRhqBcNs+nXH+VkAJ/To+r7GMCdKc6+3vLZKoeedUZ8zufpGgXGQKEio6pWII+66g1N33O3E2LkTmXFUdp1yG50qNBp5FIekzbDKjTudy/Tl0lxW7Ijc5JJEn3yFv3/4Yz2SenCW9rx8NZjZftom75KdvCgNx6Khkvyt7fFPqbvXiyA1gnXT1hxnYXp71RzQQz5gwlvzJkRtw2HLV1m1F/VZPffIH5LOtTJBhihOGFSZlxr5218WCytSd02AWSB6CTXC+2iMhwuE7TUAKlpHW+C+mhHpMirje2NcFu5W46vnpgo3kwhO1q4j50EDcO8vyIOP4VEqf1JTMYvuEEmM2J1UD1r8GuHHpjW/ej0cfOG+iqo0ve8NRCLVKMlaBNfbo3Q2Yb7xxd4ibtxQ4T0IawCXh9trDTkqx5DVDkD+iBaVXl00WaiYSkOn4GfsvE8Ki6clgseKlisA5HpaisQ81x1qG/kccXSsLTgcMnoqLAfNb/KG4uOAquuzrkX9frYvUdjlY4Ux2c=; 4:z6EauCdIPFmk4TgWEO4/eAWT4ldmqJHL3dG2aaLr+SwrkCSGoCQTuCmjdHFC3MuJ3fIecXRN4KoIDmfvwO7XAZ+VnR3E8APRnz0WEJaQvuRfDJkmMjemXsxE6Zcz1PdLp436XBSletJW64fprp1bu6c2i16t88yYUfQMglqU4oQ+rmowcqdUsDO1EnB/nktNSNL7yagBo5ONqKx1eVNqrAImpno+sgdmWqgVy8NfX2AbuCquG/y7wa83/7a/Zj3gwxQQgcka39zCiHsNfH52wg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:e3tKbujbAZXZKkk1ds7RS/e1nzg+xzpbFhKa6bQ9q?= iRm4Vb0wcgZxwAJKK7yxZbrbxaiWQDAGHyZQ55rLcaS1x30PlDFpOcxut4nitL94/6gdnaloWiGaNu0RsUFxEnZTRI61cpyHXnG+cePhARpFzq0dt4VtLKN1IVXBW/3OJ2YnPFrWsa86ix+CLswj2GOkXj1r8qG0QlUY2wCMImEwom3ObqNlwf5kkpjJi9qrIEJ/b1Bvv3AdoxrDMZPlaMSnX+vgHCK8vMNSW/L8kFnJeJRgdYouQmQjxx+jfz+eOySbss2YplE1uqJ+p9NTtHzlwFIKdQ+KPpNgIhXTBKP5rQnzd2ZZe4cUyAKdWMP9zoZdLymtlCGY4y5f4yp5CjLtEJj646w2EtfrCCbY8tZxulVQ2MSa59M2Ldlai90VAIaJYIX/qvfFeQCrXFjS1H4pFR1yFqLTcjU2an2MiCuZU3Q5U0fF7refAX97FqND0+7AExKs4QZsKlfm7wKp6sFs8adTTh0XNkZtD/imVbWS4lRshdzmMrDb98zP6ootgE4jq4xEZAdvUl4oYy/7ZLgkop6nigSWfKTGSGYD5UPAGUQathVKoSK6qmF8W23bz1sOkcHwahewKmvpRGt3hw/heZSj30gUxSvbI1CHi9VnB+WwfdQmGSWNoiphvAGO4sclw7OCUHvH8GgtDdFLfYPuD2A5rLxFj4VmT75aZedk1eXlpZ7Z4RPo7iUSeaTf1EWT8uXoU7ZSMAqb68Uzo0yq9yPTX1LrPrKBI9M0p67jirwz3pBqp5mT+uPorQYOFRQf7DeaZ7TkfQEtvPZiMaV7zLnTU4K8fodVyAJVHqzQ+3DUmPOiKoKWRT8vhgfe7A3esCYdIq7xBk3TQ9QYijdI4Y7LopGKOvXA2Dk3bHF67quP8qwDx9So/pxCDrA8oajZ4v4/468xxOX53I2EF+0rSDVqQg1YdsO6Vdj4kJTJf/Lo9FmRJSroXeErweow8GBUkaZ3x9B03eRi3ZTiyr4MIx7U/fq1/aeugdgHLeAodSDZ4BV/FGlh9AfagLpunU4GG3nCeKDPW1N9+vhMaaxVzBSp4CPbxE/9iy6TqFEqfYgFnF8AR+nO5czKjiGjIIftQZ7z2PgbJRrgIMy3W+cYWigzkh9x0D0B33hENHfIa7Sw3bdxKCo+DPi8p3gQ5b3XwTOWyxlm/gdz2zqWEHQ8z5UVmBN/j9Fk40sCysNklZq/URPghdMHpl/L37u2jE= X-Microsoft-Antispam-Message-Info: 00lUhUOlAFBR4RFBMFwQAaUOA667L0SMrKzLTtiNpqY7kn646gXPqbL5YGMjciG73CPiKOJnDbuYtqbPEyO9yTT/0Tor3N7bl33Brusx8AaKldLvgL9y7VqzIn8zTPBk+8OaNvMK3b1bqpMWVVedGyR2AjlqY1JXPsUfHuiBL+2qMe4gY6Dk9bFHkottUpKxRb/Rd0NUZYoGU/CnOBalRVYMipDXEmwettE4fsj8oySRzWFjdVywdKDcEja3HmUWcldVmTOcrSzDX0fVmEwMguChwadpr6RAkGjDvuv1JCbQ/3YZIFgdwiJ46sewE5fCp3/ietXMquGU2LVVzp4aG48uGKR2cDTGO+tBHpw21QA= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:TfJk5XI9Ep1ApwoHqZpjTJwl0tdJk6cmMIkeCPsaUv/aBHnIp3YiF8RRxlBTYdtr1HBlHE4cQxK2VtcHsRZOqr8DkHtpCiHmKKW/dYleak9fJRFUo09sTzwFa3qgQFPquA7Miv1LDQcWfqtJabrvcSiXhbN+efALD4hz61jx4QwDgBlbhj+7KsdzuGRU+0S5Zr8QYlevTcZZchpXXbGkYgjtiahOVAqmrhrlwy/7Z/JiOGfMrS0v+0nXrjgQEEmwwdAMmt9907CjkuNzyKMWBYkUeZ3yKip1hqyaM3mmSbTK2zwzhEHLE6PuFzZav8JHdvoTCL8VajRwbg7RbrbIWK+hY6SYV17mZmZo6Ls2He6oyD71tjIV121ooej7s7XFT2yX/zslHEu9A+K1Tc212WKZwJsC3ws8G1YbBB93FSULkre/yulyo4PJE5F5TUCfveyMkMccPMNHInMJztdZnw==; 5:xYEScfzvl/WkcBkRl0ROkGxz69+mg7lXbnIU9HovM/5Q2mv9jfYyErzLhpjF8ECi/RDR86v8sQfBmWnnZoNmko0Ka+NZlBSwM0x9rBIh+9LhSIWqiJB7hkoaWhZutSeYF1lIhVnYi1pXivBKPFyfkk8U0a+1zyEXVo9Rth00GPA=; 7:oEtFKG0nnE9ZJ1/fXiKRubaqm6I5b/I2C9ilxUDfZ3RU1fLi5qPSQy/Fo0Yaleg4M9dhDbHB2De/loI3SkN2YJ00Sq4t5a05xxyJX24ssWTyKqW8VDBcFB0dYhFY/4Py/o/B/xW+yfE/dJ7L+9k0cutila+ZJr54gGnO0SwoBro004vVks5f3oo3QxARDT+ikpXaVOzgO0nEfgQByfs3Sx1YMiiafas2fh1dZ8Pg4MvflkvMR/LqlrMm5Bopjzfv SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:04:01.7724 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf21dc46-8710-4178-4cd6-08d6121b7502 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 31/33] crypto/octeontx: add dequeue burst op 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" From: Tejasree Kondoj Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- drivers/crypto/octeontx/otx_cryptodev_hw_access.h | 63 +++++++++++++++++++++-- drivers/crypto/octeontx/otx_cryptodev_ops.c | 47 ++++++++++++++++- 2 files changed, 105 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h index f2d7ee7..6278cf9 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h +++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h @@ -8,12 +8,14 @@ #include #include +#include #include #include #include #include "cpt_common.h" #include "cpt_hw_types.h" +#include "cpt_mcode_defines.h" #include "cpt_pmd_logs.h" /* Flags to indicate the features supported */ @@ -256,10 +258,63 @@ static __rte_always_inline uint8_t check_nb_command_id(struct cpt_request_info *user_req, struct cpt_instance *instance) { - /* Required for dequeue operation. Adding a dummy routine for now */ - RTE_SET_USED(user_req); - RTE_SET_USED(instance); - return 0; + uint8_t ret = ERR_REQ_PENDING; + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + volatile cpt_res_s_t *cptres; + + cptres = (volatile cpt_res_s_t *)user_req->completion_addr; + + if (unlikely(cptres->s8x.compcode == CPT_8X_COMP_E_NOTDONE)) { + /* + * Wait for some time for this command to get completed + * before timing out + */ + if (rte_get_timer_cycles() < user_req->time_out) + return ret; + /* + * TODO: See if alternate caddr can be used to not loop + * longer than needed. + */ + if ((cptres->s8x.compcode == CPT_8X_COMP_E_NOTDONE) && + (user_req->extra_time < TIME_IN_RESET_COUNT)) { + user_req->extra_time++; + return ret; + } + + if (cptres->s8x.compcode != CPT_8X_COMP_E_NOTDONE) + goto complete; + + ret = ERR_REQ_TIMEOUT; + CPT_LOG_DP_ERR("Request %p timedout\n", user_req); + otx_cpt_poll_misc(cptvf); + goto exit; + } + +complete: + if (likely(cptres->s8x.compcode == CPT_8X_COMP_E_GOOD)) { + ret = 0; /* success */ + CPT_LOG_DP_DEBUG("MC status %.8x\n", + *((volatile uint32_t *)user_req->alternate_caddr)); + CPT_LOG_DP_DEBUG("HW status %.8x\n", + *((volatile uint32_t *)user_req->completion_addr)); + } else if ((cptres->s8x.compcode == CPT_8X_COMP_E_SWERR) || + (cptres->s8x.compcode == CPT_8X_COMP_E_FAULT)) { + ret = (uint8_t)*user_req->alternate_caddr; + if (!ret) + ret = ERR_BAD_ALT_CCODE; + CPT_LOG_DP_DEBUG("Request %p : failed with %s : err code :" + "%x\n", user_req, + (cptres->s8x.compcode == CPT_8X_COMP_E_FAULT) ? + "DMA Fault" : "Software error", ret); + } else { + CPT_LOG_DP_ERR("Request %p : unexpected completion " + "code %d\n", + user_req, cptres->s8x.compcode); + ret = (uint8_t)*user_req->alternate_caddr; + } + +exit: + return ret; } #endif /* _OTX_CRYPTODEV_HW_ACCESS_H_ */ diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index b20cbe0..d5d1285 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -370,6 +370,51 @@ otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops) return count; } +static uint16_t +otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops) +{ + struct cpt_instance *instance = (struct cpt_instance *)qptr; + struct cpt_vf *cptvf = (struct cpt_vf *)instance; + struct pending_queue *pqueue = &cptvf->pqueue; + uint16_t nb_completed, i = 0; + uint8_t compcode[nb_ops]; + + nb_completed = cpt_dequeue_burst(instance, nb_ops, + (void **)ops, compcode, pqueue); + while (likely(i < nb_completed)) { + struct rte_crypto_op *cop; + void *metabuf; + uintptr_t *rsp; + uint8_t status; + + rsp = (void *)ops[i]; + status = compcode[i]; + if (likely((i + 1) < nb_completed)) + rte_prefetch0(ops[i+1]); + metabuf = (void *)rsp[0]; + cop = (void *)rsp[1]; + + ops[i] = cop; + + if (likely(status == 0)) { + if (likely(!rsp[2])) + cop->status = + RTE_CRYPTO_OP_STATUS_SUCCESS; + else + compl_auth_verify(cop, (uint8_t *)rsp[2], + rsp[3]); + } else if (status == ERR_GC_ICV_MISCOMPARE) { + /*auth data mismatch */ + cop->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED; + } else { + cop->status = RTE_CRYPTO_OP_STATUS_ERROR; + } + free_op_meta(metabuf, cptvf->meta_info.cptvf_meta_pool); + i++; + } + return nb_completed; +} + static struct rte_cryptodev_ops cptvf_ops = { /* Device related operations */ .dev_configure = otx_cpt_dev_config, @@ -462,7 +507,7 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev) c_dev->dev_ops = &cptvf_ops; c_dev->enqueue_burst = otx_cpt_pkt_enqueue; - c_dev->dequeue_burst = NULL; + c_dev->dequeue_burst = otx_cpt_pkt_dequeue; c_dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_HW_ACCELERATED | From patchwork Tue Sep 4 03:59:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44207 X-Patchwork-Delegate: gakhil@marvell.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 4C22D2862; Tue, 4 Sep 2018 06:09:16 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0041.outbound.protection.outlook.com [104.47.37.41]) by dpdk.org (Postfix) with ESMTP id 5ED5E1BE0 for ; Tue, 4 Sep 2018 06:09:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pTmGsfTqtiCNvbspW1TPu/eeOYrMTVdVxqMvkSvCcm0=; b=lui9l6P2qkRLfbZKhsOMEVrp/ZmjNyc0tPZx7auNMXfumVxWAAl62CQaaMHCxilrczL8NIuOFaWENFc/Mq1TNVJqyr8AmZSaHiAmJEZtTU2UkNN2BVeQ9l3Ebx4NDwOjyN3F8ooHYrSAJYGjFUs5hiN9CNp+RgxCwg9+yVu0Z9A= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:04:06 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Ankur Dwivedi , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Anoob Joseph , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:19 +0530 Message-Id: <1536033560-21541-33-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c908edd4-5966-4412-7cdf-08d6121b77ba X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:ccxEJ9db4HEz4C77efzeY8ay6HSK/ZBY77W3DJTgHpeu+zfA8FcSXCKgx2rZdUM9R1Mz+W3UI6uibVratZu52Akus1IvsSu8rvHcPbpS3akKZ2JgxLLIygWa/E+/DVFLv216VtJsGTfPDGTbv8PQbrhfwaIxBNYqVbm5VJNcqf6b8YZfOKxPP9/59rrjeQYzIhavKJ8qJrjI/i3i95Mv1zaehRpav321JoNZrYRaYSHkCGOqDgAqgygRQobKQcL2; 25:BeyEFQkXZKvBqVzi7rXVktAVYeaAG/6u6wM4CLuB14GMyeA9+xIyVcxvgBdak2CkLsK6BfQIVksCoIe9NrlyyrHcx4gskbQ0/JYbnGZ0yHe0DxKWr4J0noMcTuHiOdzflPJ5ROsMLopJMd4DZJLxcJcvgtq8IY8Jm+Jn0Nmsl73KZql0bLZ/KWD+8Oto9GmbDOc79n8lPz6+Nl/WraqZ5WyDTXh41DB2nacX+qsxMGRA9+/eHeKvPE3iZmbn2T2vXjmY0Y4JYa1MS3GZttGErIX1gfgIWPVXQUVyBG8Gt/57BOzLL+xc+RQXXMkjpBrtCMTRNFAM/7wl4uesXOCxrg==; 31:UC3ZcOBkgYleNh3CizAkX6XYPDgy8It5mg4/rZXUUoHTW13ukYxkb5OD3o8bhWQryVhcjPY6UKUSFs4Kh7tTCOOwMs7fJUPpy+CY7GAuJT95OfP40BUkWk7+C9bHzu2hW6cVuCOdZouy+5lvJAgUnFOpmzlKPtjz6+u0R3gJNiCw+RwprQJvFvDGb2zIzqoQffCjFWPueNyDgVJ/3ltG4O+SqQ1rMuAd1asOpFjDvZ4= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:2rnbsYx0K1ryHMQVvfFkLlqd4egh86HbiPfd5vP0yAAC9keK7F6k7mnwlZA3zcrYf7hrSgE2uRzXHEevDuklz2GwZ23+gtEsnPbIOunNyFgWSzFIfeYQit48+ggHtl8DEYoAf8rJwjAAj1pDu7APY/IXojC8Hn0+qI6pgTBUlcLUhgNkKvRfP++pcdhzjNhfD8FPYrWpVq8F25JQcbJKbeSb9x10m691TY31WEpeaN8J1LZq7rbEfO59w1apYLT7A6HPt4IcY48xgVRnhKjr9yHALc/pmFTk3S4+uC2hRivfmuFRpSyMFKoTQz0HLi9dTe853VcIHcKpWNDNQHy+N2QuUsOb6AKDhQMnUrC2adQV/kBUnfc+IB9HGQ7MN5US6ebrU5XdNIqMV3uehVUqEODjgLOqM463I9RRn23Pv8oqyMlhFVqSmDvYxlZ6LGrSrt62yQz/roJ3qYT9+pkS7c/pIV1T85akp9xfGW1xBMbo5KqvoL+jrEN9rPjmBVHH8nc8cMkFDsM1XkyBbZWXGmtXCu+7sNBb2RjNFoj2sGtPzjw9Qg86NugBvLFnViswz5Aq8H/03yRVrPu3DO+TgKAtTgUcpoC3grFL7tJHcH8=; 4:rzfTslcdPkjZe13DIbzPWnNGPjt5XjFMw+m9y/CfidxnZ51i1XoIoRExs3olyEjTC+0NAAHxTtn2oO+jOwUqVtg4pykL9uUMzD1teE11z9khUj4IC4aUPx4oOzgajMnmMKx71MLGPPtn1nqUCHJyzIwoym5cM/PonAPhWm//MKgzoE8qUV74XHltLLn6okYbq7SFKXPM9zEtppdgjTNRyS/JE37qwET19RayiEYLAURJcEu5gjBDlXQhGCVWcEOtb8cu8IfEa7Owv8MPmSl4hA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(53946003)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:f4BHwKKHb+IUiPeVTzTHp8+KZMQtD8fp6rmUmuhIa?= k6e7fum+M4qJR70fd+VyLNTj2TN8pq5fxnD9qtd+nXr7ksnnM2YUZTBrz8o83TrlRW1du3+8MGqHnVQvYvpZe4WNUmIdC4bDV7gob3hCcYw3PMYhxvZQG+1t5dLu6/09ZWV0Vkyf9jBRKZPZBvI8m0DXmgbcmV+kJl0WKC/JCIZHGQ3evZobuY9gKVIm6O36o0IokZbhJC7WlcdbwRbw9VG2yJSGyxVAfDObuJYkZvLjy5xBvHlU3hNyUVjyyXg6w+GgxHe3iR89m35vJgS/eiRfZQwdi58e5/sKR6RQ2muY13ktrZKvVD0D2Ru5coLb2cmAeHzz8WiNWxP8/DHVONgmZYLwNn5gRWgWldwyU4rXXEyTFoj6vSni3n4G5sAsrcu8BY9aRZ/dTbRkKJRn+NCDC4NXo2QGHN2qgUttTl4Pj4pZVfMl8GKyciwPLe+R9C+0SohdtXxsDYbzXIZeKDrriUxqmcTFu/x6eHu0dWSgPKvn4bZPplQhfkeGAAUOcoFwuE3c7zrhcc4mA5gEAuVbBe+mHibdMXKca+WZAUHiEFia30mVYaZ7Orsmog0TDNEDPnklciMqY1Cv96aEGu5x2/d/eR8Fhk7mJBPgjSGArxYdQkfhI8kVxys+GWcCsfGgU4xuQulKYP16rv7gdGfM/D0KnkrNL9hMSqBbxJWdRjudHPhUNAvz/Shpbr4qrqBEGUxKglryHe1MK6o8q8h2hq65ctFf4Ju21FusM1vh4S2S8He/ALgFYo0H34DYC8wvAG4w1OITKv+gaUyv4On/oabWQGLwvzuAoueT1fdZhWRxy0lAdIFjyxKaHX9Hv990qF/wsESNlh7JUZtJAEQJXXcmKqo3kA8xwzYYkzrx8wyRO43JYYtbLBS4LKimJK+x0BDoZoja2VT7Fzm2SwxFzFVJH6Y8XbNB4TVDLylI/LuN1ciVt7/z7Rz5YGTsJ04q++gxixEINMIM8BFjUlcvFUKowo/AMP4fY4/5RHHKtugQlkNlcRKJS6q6Zc1eAHUYswcKU9AYqPqC9MeVwpQacm+LsGd9qgN9qEnhTDdrlWZgxZkFgGXCPs5cZGxjHkC/4Pr1u+MIzLFmnu7Mqrb4jkqVXGIZvqhhPDXr0S5Pw24GTMNQ193wrJEJuxDCwQN2tyk5pXYMs41ZwNr/Eo4nCBXjC3e2WZMa1VK+/lGjSG+k848wsLy1eQHGGtfbHTH4mPC0ZfybZBMX+29EvQ7lVK8KI+yiPYhALQkrEzXhA== X-Microsoft-Antispam-Message-Info: qUo3IE4tav5HeF48cF7pw1NKJbcGkgS0SUJDumLBloyPdOrazPre8zEa4ozSRJLtCtU4NTVpnYMsdpv28QrzZuW+RCTE2LuNy5GJ4lzL7TGotWOKE/TwXOmqrOwqy7A33BKlDbfyrsq6BVPD/GO+/ZgZ/7C09BhmQSjC1eO0fsFO6qjIYETkzLWJi40sZRcDZd/4PgIiXnm2MKpQdyZha+OPCsoPy7BIrlootmzkJISFy99pvxMjx3jTP1/6T0wvpB+zaVADf3B7un/pvLsdFQVBK47BLSJCpK9SlKh5/5zKvUb2TqhFdbaog7v8OpptsYBn5u524OP23i6mY1CLuzSOB9sqHlZDPT5VVlOTSKA= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:mnsQmZ1ESn/FakSA5dQUkgxenL0Qw66b/sT/G8BwcaegumLM5kWrhr2YoEnHumZ1z5QmpMVKE2VnEOmIH4vwnfSvU2nJTl6luIu4uenURKcO2Rdi7ZMAWR0hM208noqIJnV6gqZn3WZKeq6BSEv66fV4Wq98hwFmLL5vMhPWNhxvP3OL5RQU4syQm9tO3izhQaVz/iIElvX1rBvUCQ/hAXTgjHu7kFFGxGHYxJi17xYLjSblLmJ90UdSXxA0jYr8z529Bw+CN6uLspsWTAEb+sGbI23shqCtDj0H8dVJM7S1sXn+cGfCatvxfnKqODCZ9oDtnOEtZNdhF9DSUdQN4ouDsHXGbDyE7BQfTsoKODIsNAkHfmWBvemLu5jmIYQOk6XINhTxnADCN9HoyYDhsegw3ByRMa/TV70RIJjyfhPXxQNL/k11dWqTniD3D+R9JPcWOgCAfNxViPKrv2lggg==; 5:iq4I/jtajkdypu6kL0MKjT3hT1Rp09IS8z0qlL2nL8LQb3l1jh51ECNyOYSXLfUMN0fMeTKAUEw8daOpJ8448q8/CtBIL2ASVZpEHluUDXGXU96Adog0bHqTla97YW+HLZ71TgY6rNQ/XIOJUX2oNFgvU76OawmDMZFEFoytAtQ=; 7:fcgunR2SXO1pzxKo2lSsPwFeGgzpP13qNHmnpcXU6A9MYXv9Be9rf2/fpg3urMYfZxWZqP1uRxhne5TskjHUfTUDYawvHFOb64ID64UhFSJh/+9uINqPcr7bqULdvTeg5DVBYlVz0xZmtWWjSwyyNxZ5HpOR/ulNF60dzqwGsJOnYEuO4wIBts/UVRynw/Wjqvxjm86d5I4B/t06VUJ7eM/oQUWdUM76xYBpkDGoYw4LgOYWyRtpDVJDpEotDVqY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:04:06.3349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c908edd4-5966-4412-7cdf-08d6121b77ba X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 32/33] test: adds validation test 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" From: Ankur Dwivedi This patch adds validation tests for octeontx crypto device. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- test/test/meson.build | 1 + test/test/test_cryptodev.c | 308 +++++++++++++++++++++++++++ test/test/test_cryptodev.h | 1 + test/test/test_cryptodev_aes_test_vectors.h | 96 ++++++--- test/test/test_cryptodev_blockcipher.c | 9 +- test/test/test_cryptodev_blockcipher.h | 1 + test/test/test_cryptodev_des_test_vectors.h | 12 +- test/test/test_cryptodev_hash_test_vectors.h | 72 ++++--- 8 files changed, 439 insertions(+), 61 deletions(-) diff --git a/test/test/meson.build b/test/test/meson.build index b1dd6ec..2d59041 100644 --- a/test/test/meson.build +++ b/test/test/meson.build @@ -141,6 +141,7 @@ test_names = [ 'cryptodev_sw_mvsam_autotest', 'cryptodev_dpaa2_sec_autotest', 'cryptodev_dpaa_sec_autotest', + 'cryptodev_octeontx_autotest', 'cycles_autotest', 'debug_autotest', 'devargs_autotest', diff --git a/test/test/test_cryptodev.c b/test/test/test_cryptodev.c index a6044b2..1f7ea8f 100644 --- a/test/test/test_cryptodev.c +++ b/test/test/test_cryptodev.c @@ -2142,6 +2142,96 @@ test_3DES_cipheronly_mrvl_all(void) return TEST_SUCCESS; } +static int +test_AES_chain_cpt_all(void) +{ + struct crypto_testsuite_params *ts_params = &testsuite_params; + int status; + + status = test_blockcipher_all_tests(ts_params->mbuf_pool, + ts_params->op_mpool, ts_params->session_mpool, + ts_params->valid_devs[0], + rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)), + BLKCIPHER_AES_CHAIN_TYPE); + + TEST_ASSERT_EQUAL(status, 0, "Test failed"); + + return TEST_SUCCESS; +} + +static int +test_AES_cipheronly_cpt_all(void) +{ + struct crypto_testsuite_params *ts_params = &testsuite_params; + int status; + + status = test_blockcipher_all_tests(ts_params->mbuf_pool, + ts_params->op_mpool, ts_params->session_mpool, + ts_params->valid_devs[0], + rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)), + BLKCIPHER_AES_CIPHERONLY_TYPE); + + TEST_ASSERT_EQUAL(status, 0, "Test failed"); + + return TEST_SUCCESS; +} + +static int +test_3DES_chain_cpt_all(void) +{ + struct crypto_testsuite_params *ts_params = &testsuite_params; + int status; + + status = test_blockcipher_all_tests(ts_params->mbuf_pool, + ts_params->op_mpool, ts_params->session_mpool, + ts_params->valid_devs[0], + rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)), + BLKCIPHER_3DES_CHAIN_TYPE); + + TEST_ASSERT_EQUAL(status, 0, "Test failed"); + + return TEST_SUCCESS; +} + +static int +test_3DES_cipheronly_cpt_all(void) +{ + struct crypto_testsuite_params *ts_params = &testsuite_params; + int status; + + status = test_blockcipher_all_tests(ts_params->mbuf_pool, + ts_params->op_mpool, ts_params->session_mpool, + ts_params->valid_devs[0], + rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)), + BLKCIPHER_3DES_CIPHERONLY_TYPE); + + TEST_ASSERT_EQUAL(status, 0, "Test failed"); + + return TEST_SUCCESS; +} + +static int +test_authonly_cpt_all(void) +{ + struct crypto_testsuite_params *ts_params = &testsuite_params; + int status; + + status = test_blockcipher_all_tests(ts_params->mbuf_pool, + ts_params->op_mpool, ts_params->session_mpool, + ts_params->valid_devs[0], + rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)), + BLKCIPHER_AUTHONLY_TYPE); + + TEST_ASSERT_EQUAL(status, 0, "Test failed"); + + return TEST_SUCCESS; +} + /* ***** SNOW 3G Tests ***** */ static int create_wireless_algo_hash_session(uint8_t dev_id, @@ -9951,6 +10041,208 @@ static struct unit_test_suite cryptodev_ccp_testsuite = { } }; +static struct unit_test_suite cryptodev_cpt_testsuite = { + .suite_name = "Crypto Device OCTEONTX Unit Test Suite", + .setup = testsuite_setup, + .teardown = testsuite_teardown, + .unit_test_cases = { + TEST_CASE_ST(ut_setup, ut_teardown, test_AES_chain_cpt_all), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_cipheronly_cpt_all), + TEST_CASE_ST(ut_setup, ut_teardown, test_3DES_chain_cpt_all), + TEST_CASE_ST(ut_setup, ut_teardown, + test_3DES_cipheronly_cpt_all), + TEST_CASE_ST(ut_setup, ut_teardown, + test_authonly_cpt_all), + + /** AES GCM Authenticated Encryption */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_5), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_6), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_encryption_test_case_7), + + /** AES GCM Authenticated Decryption */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_5), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_6), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GCM_authenticated_decryption_test_case_7), + /** AES GMAC Authentication */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_verify_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_verify_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_AES_GMAC_authentication_verify_test_case_3), + + /** SNOW 3G encrypt only (UEA2) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_5), + + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_encryption_test_case_1_oop), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_1_oop), + + /** SNOW 3G decrypt only (UEA2) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_decryption_test_case_5), + + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_generate_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_generate_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_generate_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_verify_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_verify_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_snow3g_hash_verify_test_case_3), + + /** ZUC encrypt only (EEA3) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_encryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_encryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_encryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_encryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_encryption_test_case_5), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_hash_generate_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_hash_generate_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_hash_generate_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_hash_generate_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_zuc_hash_generate_test_case_5), + + /** KASUMI encrypt only (UEA1) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_5), + /** KASUMI decrypt only (UEA1) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_5), + + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_encryption_test_case_1_oop), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_decryption_test_case_1_oop), + + /** KASUMI hash only (UIA1) */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_5), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_generate_test_case_6), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_verify_test_case_1), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_verify_test_case_2), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_verify_test_case_3), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_verify_test_case_4), + TEST_CASE_ST(ut_setup, ut_teardown, + test_kasumi_hash_verify_test_case_5), + + /** NULL tests */ + TEST_CASE_ST(ut_setup, ut_teardown, + test_null_cipher_only_operation), + TEST_CASE_ST(ut_setup, ut_teardown, + test_null_auth_only_operation), + TEST_CASE_ST(ut_setup, ut_teardown, + test_null_cipher_auth_operation), + TEST_CASE_ST(ut_setup, ut_teardown, + test_null_auth_cipher_operation), + + /** Negative tests */ + TEST_CASE_ST(ut_setup, ut_teardown, + authentication_verify_HMAC_SHA1_fail_data_corrupt), + TEST_CASE_ST(ut_setup, ut_teardown, + authentication_verify_HMAC_SHA1_fail_tag_corrupt), + TEST_CASE_ST(ut_setup, ut_teardown, + authentication_verify_AES128_GMAC_fail_data_corrupt), + TEST_CASE_ST(ut_setup, ut_teardown, + authentication_verify_AES128_GMAC_fail_tag_corrupt), + TEST_CASE_ST(ut_setup, ut_teardown, + auth_decryption_AES128CBC_HMAC_SHA1_fail_data_corrupt), + TEST_CASE_ST(ut_setup, ut_teardown, + auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt), + TEST_CASES_END() /**< NULL terminate unit test array */ + } +}; + static int test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/) { @@ -10203,6 +10495,21 @@ test_cryptodev_ccp(void) return unit_test_suite_runner(&cryptodev_ccp_testsuite); } +static int +test_cryptodev_octeontx(void) +{ + gbl_driver_id = rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)); + if (gbl_driver_id == -1) { + RTE_LOG(ERR, USER1, "OCTEONTX PMD must be loaded. Check if " + "CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO is " + "enabled in config file to run this " + "testsuite.\n"); + return TEST_FAILED; + } + return unit_test_suite_runner(&cryptodev_cpt_testsuite); +} + REGISTER_TEST_COMMAND(cryptodev_qat_autotest, test_cryptodev_qat); REGISTER_TEST_COMMAND(cryptodev_aesni_mb_autotest, test_cryptodev_aesni_mb); REGISTER_TEST_COMMAND(cryptodev_openssl_autotest, test_cryptodev_openssl); @@ -10217,3 +10524,4 @@ REGISTER_TEST_COMMAND(cryptodev_dpaa2_sec_autotest, test_cryptodev_dpaa2_sec); REGISTER_TEST_COMMAND(cryptodev_dpaa_sec_autotest, test_cryptodev_dpaa_sec); REGISTER_TEST_COMMAND(cryptodev_ccp_autotest, test_cryptodev_ccp); REGISTER_TEST_COMMAND(cryptodev_virtio_autotest, test_cryptodev_virtio); +REGISTER_TEST_COMMAND(cryptodev_octeontx_autotest, test_cryptodev_octeontx); diff --git a/test/test/test_cryptodev.h b/test/test/test_cryptodev.h index 1bd44dc..f2d41ae 100644 --- a/test/test/test_cryptodev.h +++ b/test/test/test_cryptodev.h @@ -64,6 +64,7 @@ #define CRYPTODEV_NAME_MVSAM_PMD crypto_mvsam #define CRYPTODEV_NAME_CCP_PMD crypto_ccp #define CRYPTODEV_NAME_VIRTIO_PMD crypto_virtio +#define CRYPTODEV_NAME_OCTEONTX_SYM_PMD crypto_octeontx /** * Write (spread) data from buffer to mbuf data diff --git a/test/test/test_cryptodev_aes_test_vectors.h b/test/test/test_cryptodev_aes_test_vectors.h index 1c4dc66..a92eaf9 100644 --- a/test/test/test_cryptodev_aes_test_vectors.h +++ b/test/test/test_cryptodev_aes_test_vectors.h @@ -1254,7 +1254,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA1 Encryption Digest " @@ -1262,7 +1263,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .test_data = &aes_test_data_13, .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA1 Encryption Digest " @@ -1291,7 +1293,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest " @@ -1308,7 +1311,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .test_data = &aes_test_data_13, .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA256 Encryption Digest", @@ -1322,7 +1326,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA256 Encryption Digest " @@ -1330,7 +1335,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .test_data = &aes_test_data_12, .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA256 Decryption Digest " @@ -1345,7 +1351,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA256 Decryption Digest " @@ -1353,7 +1360,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .test_data = &aes_test_data_12, .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA512 Encryption Digest", @@ -1366,7 +1374,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA512 Encryption Digest " @@ -1376,7 +1385,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .feature_mask = BLOCKCIPHER_TEST_FEATURE_SESSIONLESS, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB | BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA512 Encryption Digest " @@ -1401,7 +1411,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA512 Decryption Digest " @@ -1443,7 +1454,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC + BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest " @@ -1455,7 +1467,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC + BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA224 Encryption Digest", @@ -1467,7 +1480,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_SCHEDULER | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA224 Decryption Digest " @@ -1480,7 +1494,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_SCHEDULER | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC HMAC-SHA384 Encryption Digest", @@ -1517,7 +1532,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .feature_mask = BLOCKCIPHER_TEST_FEATURE_SESSIONLESS, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = @@ -1528,7 +1544,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { .feature_mask = BLOCKCIPHER_TEST_FEATURE_SESSIONLESS, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 | BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, }; @@ -1545,7 +1562,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CBC Decryption", @@ -1559,7 +1577,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CBC Encryption", @@ -1572,7 +1591,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CBC Encryption Scater gather", @@ -1595,7 +1615,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CBC Decryption Scatter Gather", @@ -1617,7 +1638,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-256-CBC Decryption", @@ -1631,7 +1653,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-256-CBC OOP Encryption", @@ -1668,7 +1691,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CTR Decryption", @@ -1681,7 +1705,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CTR Encryption", @@ -1693,7 +1718,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_SCHEDULER | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CTR Decryption", @@ -1705,7 +1731,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_SCHEDULER | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-256-CTR Encryption", @@ -1718,7 +1745,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-256-CTR Decryption", @@ -1731,25 +1759,29 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-128-CTR Encryption (12-byte IV)", .test_data = &aes_test_data_1_IV_12_bytes, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-192-CTR Encryption (12-byte IV)", .test_data = &aes_test_data_2_IV_12_bytes, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "AES-256-CTR Encryption (12-byte IV)", .test_data = &aes_test_data_3_IV_12_bytes, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX } }; diff --git a/test/test/test_cryptodev_blockcipher.c b/test/test/test_cryptodev_blockcipher.c index f2701f8..2197638 100644 --- a/test/test/test_cryptodev_blockcipher.c +++ b/test/test/test_cryptodev_blockcipher.c @@ -72,6 +72,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t, RTE_STR(CRYPTODEV_NAME_MVSAM_PMD)); int virtio_pmd = rte_cryptodev_driver_id_get( RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD)); + int cpt_pmd = rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)); int nb_segs = 1; @@ -114,7 +116,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t, driver_id == armv8_pmd || driver_id == mrvl_pmd || driver_id == ccp_pmd || - driver_id == virtio_pmd) { /* Fall through */ + driver_id == virtio_pmd || + driver_id == cpt_pmd) { /* Fall through */ digest_len = tdata->digest.len; } else if (driver_id == aesni_mb_pmd || driver_id == scheduler_pmd) { @@ -640,6 +643,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool, RTE_STR(CRYPTODEV_NAME_MVSAM_PMD)); int virtio_pmd = rte_cryptodev_driver_id_get( RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD)); + int cpt_pmd = rte_cryptodev_driver_id_get( + RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD)); switch (test_type) { case BLKCIPHER_AES_CHAIN_TYPE: @@ -706,6 +711,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool, target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MVSAM; else if (driver_id == virtio_pmd) target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO; + else if (driver_id == cpt_pmd) + target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX; else TEST_ASSERT(0, "Unrecognized cryptodev type"); diff --git a/test/test/test_cryptodev_blockcipher.h b/test/test/test_cryptodev_blockcipher.h index 6f7c892..2954f6f 100644 --- a/test/test/test_cryptodev_blockcipher.h +++ b/test/test/test_cryptodev_blockcipher.h @@ -29,6 +29,7 @@ #define BLOCKCIPHER_TEST_TARGET_PMD_MVSAM 0x0080 /* Marvell flag */ #define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0040 /* CCP flag */ #define BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO 0x0200 /* VIRTIO flag */ +#define BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX 0x0100 /* Octeontx flag */ #define BLOCKCIPHER_TEST_OP_CIPHER (BLOCKCIPHER_TEST_OP_ENCRYPT | \ BLOCKCIPHER_TEST_OP_DECRYPT) diff --git a/test/test/test_cryptodev_des_test_vectors.h b/test/test/test_cryptodev_des_test_vectors.h index 1033456..0789881 100644 --- a/test/test/test_cryptodev_des_test_vectors.h +++ b/test/test/test_cryptodev_des_test_vectors.h @@ -1104,7 +1104,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "3DES-192-CBC HMAC-SHA1 Decryption Digest Verify", @@ -1115,7 +1116,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | - BLOCKCIPHER_TEST_TARGET_PMD_CCP + BLOCKCIPHER_TEST_TARGET_PMD_CCP | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "3DES-192-CBC SHA1 Encryption Digest", @@ -1276,7 +1278,8 @@ static const struct blockcipher_test_case triple_des_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MB + BLOCKCIPHER_TEST_TARGET_PMD_MB | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "3DES-192-CBC Decryption", @@ -1288,7 +1291,8 @@ static const struct blockcipher_test_case triple_des_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MB + BLOCKCIPHER_TEST_TARGET_PMD_MB | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "3DES-128-CTR Encryption", diff --git a/test/test/test_cryptodev_hash_test_vectors.h b/test/test/test_cryptodev_hash_test_vectors.h index cf86dbb..e7e8411 100644 --- a/test/test/test_cryptodev_hash_test_vectors.h +++ b/test/test/test_cryptodev_hash_test_vectors.h @@ -373,14 +373,16 @@ static const struct blockcipher_test_case hash_test_cases[] = { .test_data = &md5_test_vector, .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "MD5 Digest Verify", .test_data = &md5_test_vector, .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-MD5 Digest", @@ -392,7 +394,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-MD5 Digest Verify", @@ -404,7 +407,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA1 Digest", @@ -412,7 +416,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA1 Digest Verify", @@ -420,7 +425,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA1 Digest", @@ -433,7 +439,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA1 Digest Scatter Gather", @@ -454,7 +461,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA1 Digest Verify Scatter Gather", @@ -470,7 +478,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA224 Digest Verify", @@ -478,7 +487,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA224 Digest", @@ -490,7 +500,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_QAT + BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA224 Digest Verify", @@ -502,7 +513,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_QAT + BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA256 Digest", @@ -510,7 +522,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA256 Digest Verify", @@ -518,7 +531,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA256 Digest", @@ -531,7 +545,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA256 Digest Verify", @@ -544,7 +559,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA384 Digest", @@ -552,7 +568,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA384 Digest Verify", @@ -560,7 +577,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA384 Digest", @@ -573,7 +591,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA384 Digest Verify", @@ -586,7 +605,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA512 Digest", @@ -594,7 +614,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "SHA512 Digest Verify", @@ -602,7 +623,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA512 Digest", @@ -615,7 +637,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "HMAC-SHA512 Digest Verify", @@ -628,7 +651,8 @@ static const struct blockcipher_test_case hash_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_MVSAM + BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX }, { .test_descr = "CMAC Digest 12B", From patchwork Tue Sep 4 03:59:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 44208 X-Patchwork-Delegate: gakhil@marvell.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 0A6B44CC0; Tue, 4 Sep 2018 06:09:18 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0041.outbound.protection.outlook.com [104.47.37.41]) by dpdk.org (Postfix) with ESMTP id 3BBDF2862 for ; Tue, 4 Sep 2018 06:09:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Kt89N3Z+0p46V1Qg+vDTO5m6UwdJLEqLVDZr67gqUvs=; b=jfk03IP//W6QzMbFAQKn3rFKgr/tbSBGSpBBesp+1geBdp05lxwOQcpxyGfIBAOOEiB3m8Hy8FRA1+LQWgqIRXpH5jhl+8hvi3dYD0hdRNJ9W/kGX4jiff0NP/xH/kdNDo0dnRS0w61zdJ2EbWmQWEbar0/vSzNEeD9cZs01N6o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.15; Tue, 4 Sep 2018 04:04:10 +0000 From: Anoob Joseph To: Akhil Goyal , Pablo de Lara , Thomas Monjalon Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org, Ankur Dwivedi , Murthy NSSR , Nithin Dabilpuram , Ragothaman Jayaraman , Srisivasubramanian S , Tejasree Kondoj Date: Tue, 4 Sep 2018 09:29:20 +0530 Message-Id: <1536033560-21541-34-git-send-email-ajoseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> References: <1528476325-15585-1-git-send-email-anoob.joseph@caviumnetworks.com> <1536033560-21541-1-git-send-email-ajoseph@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BYAPR07MB4902.namprd07.prod.outlook.com (2603:10b6:a02:ef::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e5457248-08b2-4f42-2260-08d6121b7a69 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4902; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 3:N4wG6sjK9Gms6LISCEg7vzpZ3Oex9uMDYYF0lxYvG0hKaYb0rnqRJv9OIbm8QqkxH6Oc7etGxLPomU8ailAhR/GlMPhg/iGSx5lBDCzZZ1S4L+mjnPuCP5HFjfHk7CUD79fX0DedUBcTZ4xY9oN73kLxMLRJxS3EditCEgTkN/8tpx1j5W9MSNr61m4GNyOXlVXStzOW1XzbGuBXec036mwnwdUvbOx0LKiqNxpIH9AzBOFLd4GgTjXA2kr2HMJh; 25:Ra5Vnksh+h/AcUFIzWvg9SplJG3399w4u1VhRy0GMw1omUBQG/AcDJ9HUMTplr2Thmv2TpHhXpkI4v1E8Twhv0toGVeq5VZl7OfjJt72BeyrEdesxnIvSbm3MOJOlflffI48Yssa2z54wRwFPGFhikOwxXG4eUhxva2AB5bOlVKzraGMmp0V22Omf9fcGBj3qazt2NL6AVzhcTFFpjdCQhSNsPhS4cLsadsSR1b7JbJMOougWggVAwE5ukyjAZHYczDr1VksZSvblkfrfft+HxK+BZvMUMUHwYDAYiGirt/8DXPiFYgdb+wyKTw9uuJ6NvPBdr0ubI7fm6vfyglpOA==; 31:KgjD340hBSvFPVYev4csWjIP31yt23GbG7XNyH2lHj3Dh7LmWKFJVNqbzgvfSvCkx/RiBOkovjUUZUZtDu/Ceq9TnAOPNbGfZMkIT5hsYT0mbhfLQq7ey3GdQ5vd1jvIptnDTOaH19EbsHG4glffrYUK8uxk5B6BY4g2+hUU43xKnThwdro/jwuFe2bhtjmqTNaEIBi6teRsxFQO8F1+7odwY5mAsLvBqzJAEWzjBKo= X-MS-TrafficTypeDiagnostic: BYAPR07MB4902: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 20:K3xMoXnN+OVvuYG/CiaYiRcCBSAgVCbN5WkF0Ul82za3a8jSJDY/SlQA52fjRJ+QWmlmGN029VFQ2LwtDwCwiXNUhkpwxjERogGJPiIKAonDqQ5J6aywErYk96kEBs40NbyhQ/5TlZyod415AwT4+0IhiEXAC51nKFoDp+X9C/iC+62SxKNHpDsHGAJrZqbFri7mIFyj9fv/re2b0nDMRKHWHWf4YcADTR7aMaKgOLWgrXVaCPgqoQoQZ4PjsUpmYy6Q8cSZM6XHwMF1bKSZbPFw4PMKx1VgYbmxFMpmatROGWw8ZcP0Itpv9gWVnWn0/iitfX1c7gyj9C7RMCPuaSfgi89kDKP7WvLpWDfSTcMn6rlyW/nuaNg8DW3bfzk6RASSMssVXEP87373T6O6BJdouLY82/7AdTbF6ND26NHCLzPzeORSm7Gtucykdmw6aViCmgfhzm477BnfCxH1yq9Iz8mDCnUFQOItrDGDyVeqnNaVIYVWqyDwbiUmEje4FHbNlOC/FN51AZ5NkoYpoRMKIkqm+x4yPAbmmfQ4YOiLJfYCsGi+kHe7Fvp2VMfMK7SBwy0eMiZRLR8iCyVAPzu+kYb6KE4QsQ9n8VqSYYA=; 4:wFJS7EMDbcNA1wRv0Tp/1s2oro6g3jQE+knjJlfmqMOnvbnahw2AyeNkSJY6Sl6sOO/dAl3MsEky++vAL8dUZvcN90CjWoYNHx/S89EDzpidoAIqBY+slFowIkYd0mEKY7aPqYaVZaFrBQfdValnuHOYvtZXQYWVocjUhDKoPOik6OkNLvwxT9B9zPjTyfL1kCA0F0ZZmfQy6Wwzr4fNCVUncg8j2iKNT7Tb3+5WUVvoLcPTxaKZsV6uVv0mSH5N/CQoPD2tLvQyjzlCm5fx+sGfYQL1zBAeo2bHosHagg8MwgPOF1XqxLyGXg6t/+ei X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:BYAPR07MB4902; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4902; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(199004)(189003)(26005)(51416003)(52116002)(76176011)(81166006)(305945005)(81156014)(7736002)(105586002)(316002)(6506007)(106356001)(6512007)(8936002)(446003)(54906003)(25786009)(6666003)(68736007)(50226002)(110136005)(53936002)(16586007)(42882007)(386003)(5660300001)(2906002)(72206003)(50466002)(6486002)(36756003)(6116002)(107886003)(2616005)(14444005)(186003)(3846002)(478600001)(66066001)(476003)(8676002)(47776003)(486006)(956004)(48376002)(11346002)(4326008)(97736004)(16526019); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4902; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4902; 23:yAT3TR2LV8xLSWHXlCdbWWJUWbtC8vBNJqH+0k4r/?= MRtlXFCpuIw8PT1b8zG80qalmDa4S8LS9p9pdZNja0X0nhoHfbGFd/EOp+MdD4hsbNPBsG+Fi7PxaCon1p8rXuySZIj/Iogr4XUPVGo+grlnvF0PAXQegBKhzMTKdQbBkR2EdPred2qYjrMKPo3afpPBc9cdwiKwxk63HTHq0+EdL8JT0BIqRyiaH8HYHO0kKn2UhIs8oJBxQi6Ok0l7leP8acCk6c7Hz/iSZQFKdm5BtEjjFiOoJQl0A9AjIlHx0LIPGyt8rY9DAgejWSWjEcCRx5EwmiEh1Fraw1w3wnuyZ948Xgfv6K7ZCS6RXtW/yMsNmAiGD1Odl8eibNPQy5gXqjvVhCkLhfuK81va0/GuvgVD7RORTKJDOTROe65pcnPcdz8CZ8aALq8H/eR+HK/mp/SarJ/sq95jrNBIhMJjMVlRxc0ab4Ni2w17pnQzqU4YC42c0APWYN97v9YhPoDz++b/ADJaxol4eELUG2I7fkZ/Saz+5pGgnSlZ92cy36d8UhqBWfRlQFQNAllw6NT8t8zcboO0u4T7Ew+Mu7hLkUreqgKyi6bhg27St0trYg9dLZ/3qVGgwyZElTh9IfAsOoJYctmy65ZzscW8IuOs0ZvK0GeCVxg5wAoN2rRU9AlZF5TanyVx4XbXZ9M+2l8p/mHyCscJu57nFhEO/xrqPGk7OO+VqTU8BtV887TDiUkjVAKhEDqPGOnjL3bNfagbS+mlFmJqO+xoP8ikVYzCbGrVdkylA/Lp8B2zdQIR4mHVVjFxkaNvlw0fqVPiqFPyvu5yphQ9RKl/Ej3wMZ5gwxsR+471bOo5PBLngA3Xg+sTub0Px0Bv/kUJzEWUWGgGof2/hztw4nBTaHbUt9g5QeaF3h0Y4b+TJWyEEz64DgV7OWM6NZNB8Mfu/ybkK+sGUVq4h5BZkvcJalwnDMS1jOh7TqXBWQ1oVTdxqe9hBSEz5jxRjw/Yuz+aq+gkKpXtrELxweZDhuTfKRTiqvvtyuxMiUapDlnUstePlCPZlriH2b/TRBr6W/5XMddExZh5Cdx62lNIhvRWmfdLJYr6jA+CzMWIwqJ2GtGAIU1+npuJxL+JXYE0F73HWgwhITqVkn9O64b/YJJTU8ajllbRV5wP78iuzdGxNasL6mI2wW+85T589Cs+EDkub5RrWRspmOHd5q8sVsX19M+QugtOvk4lx3BK2/nswmfgenIlgM= X-Microsoft-Antispam-Message-Info: Ipt0I0EJTtkBEDFy7Wf8xKdobKh0+h4L/8OumQDXIZ8BEYpNCdfaYzDqfMQAix2UAlSKBnKZez35DLVlXKWeRhMrFlXthxwLLhVHhGvlDPOQGyVrWSL8Tx6uMXp8CCI27PAlFtzi5vCqHaxL4Fq6RKAGE0CvrBtc/cRvTaES2uJMcLsLQY1JrgcglQNFJlg6w9w60yEhJFHv9LLMhobJoM7lwmT6b7Jy/TdTD3RdCdKmrSBq35ZTxLGcOf+aNuhstuEkc5Y3GNBWBCOyQ8l1ltBlRbg82hofvheFAWfWyDX4CHCgdnIcj6Fi6mY7LP2ORJDOFv+eJzKgxWOmRKW21p8VOlscrsEN8vZpLO+IJNE= X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4902; 6:fMauOpLa9KOV2811VaIV8jT8plPTItOLrA1W5DKj43zK/TF8LKxDC/fN1taVjlkqZaysU71hfy+E6vMLCTglXE5t6cxAOpY25kpUmblQB1k/PAHA83LMVtVBfTJ/hXLp+kpZWyoSqKef0+6+7Pgn9BafXOFXz3/kQimrwDOqsbUS9OiHgkHOrq8LEeFDhMT4qafqjvWI/Yc1jXSfMuYWjN1lGarFxC0HoVAih0HQ4eqS+boHNBJifubkJGV9ue/i4y3wQyj8I6Ks3qNoVYYUz5+3Wc6yaqK7YgTKEoUR4GMhLpev+q2k2kEPmd2ymRVp0NegoC2C2brPRVsFSlHYzgmBPlRHgC7Qiyl0De4+K3xDtrHSyzM+OU22MmrShFSl6wVXXMxAFqLxHcZsf5n7xgiAkmaPHEGpx3o+A0CfddFtBlHmmRuhEitoPST06oOjusyaeIjmS5HN2hUnn4Dksw==; 5:7EFkpBJNUS5uBZ6bzao06Vkicx5JF55mhloiLDHETWVBMm22gzj9QjpoJQI8YwlShzsCBQ2ZlwnaxnTNyGzc1EVnSmbIh7wUqZjxkizfE06C9+h3ddZyCpVV3sGcLDolUItGya12uEsAmMLlO2DHJyaunT0/piv0JHDh8nqTR9w=; 7:6VpQHGbiIebvcc8TDz25vjMkvdjN7ZUX2LVIHF7P8HVfR/MMqUqg9L5X7d/RBrdbA/9XZd90ciMoLm53zZvVw6KkfOmC7corlDhsU9H61TTn97wywQ5K7eYU/vCC8dfsuz6x9wjlwHECoSvZ5WOax00KYNeu23KArigcjbQNRqN98bnOMFtLkRI7HZVNYD9Cymaou6V02oRcgnUKDOSXb7iLpOt6XMjh+Khfr724a6Bq6G58Q1EqMv2VNUgb0k+/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 04:04:10.8349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e5457248-08b2-4f42-2260-08d6121b7a69 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4902 Subject: [dpdk-dev] [PATCH v2 33/33] doc: adds doc file 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" From: Anoob Joseph This patch adds the features file and the document containing help to compile and use octeontx crypto. Signed-off-by: Ankur Dwivedi Signed-off-by: Anoob Joseph Signed-off-by: Murthy NSSR Signed-off-by: Nithin Dabilpuram Signed-off-by: Ragothaman Jayaraman Signed-off-by: Srisivasubramanian S Signed-off-by: Tejasree Kondoj --- doc/guides/cryptodevs/features/octeontx.ini | 60 ++++++++++++++ doc/guides/cryptodevs/octeontx.rst | 121 ++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100644 doc/guides/cryptodevs/features/octeontx.ini create mode 100644 doc/guides/cryptodevs/octeontx.rst diff --git a/doc/guides/cryptodevs/features/octeontx.ini b/doc/guides/cryptodevs/features/octeontx.ini new file mode 100644 index 0000000..f5f5229 --- /dev/null +++ b/doc/guides/cryptodevs/features/octeontx.ini @@ -0,0 +1,60 @@ +; +; Supported features of the 'octeontx' crypto driver. +; +; Refer to default.ini for the full list of available PMD features. +; +[Features] +Symmetric crypto = Y +Sym operation chaining = Y +HW Accelerated = Y +Mbuf scatter gather = Y + +; +; Supported crypto algorithms of 'octeontx' crypto driver. +; +[Cipher] +NULL = Y +3DES CBC = Y +3DES ECB = Y +AES CBC (128) = Y +AES CBC (192) = Y +AES CBC (256) = Y +AES CTR (128) = Y +AES CTR (192) = Y +AES CTR (256) = Y +AES XTS (128) = Y +AES XTS (256) = Y +DES CBC = Y +KASUMI F8 = Y +SNOW3G UEA2 = Y +ZUC EEA3 = Y + +; +; Supported authentication algorithms of 'octeontx' crypto driver. +; +[Auth] +NULL = Y +AES GMAC = Y +KASUMI F9 = Y +MD5 = Y +MD5 HMAC = Y +SHA1 = Y +SHA1 HMAC = Y +SHA224 = Y +SHA224 HMAC = Y +SHA256 = Y +SHA256 HMAC = Y +SHA384 = Y +SHA384 HMAC = Y +SHA512 = Y +SHA512 HMAC = Y +SNOW3G UIA2 = Y +ZUC EIA3 = Y + +; +; Supported AEAD algorithms of 'octeontx' crypto driver. +; +[AEAD] +AES GCM (128) = Y +AES GCM (192) = Y +AES GCM (256) = Y diff --git a/doc/guides/cryptodevs/octeontx.rst b/doc/guides/cryptodevs/octeontx.rst new file mode 100644 index 0000000..67bd441 --- /dev/null +++ b/doc/guides/cryptodevs/octeontx.rst @@ -0,0 +1,121 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 Cavium, Inc + +Cavium's OcteonTX Poll Mode Driver +================================== + +The octeontx crypto poll mode driver provides support for offloading +cryptographic operations on cryptographic accelerator units on OcteonTX +family of processors (CN8XXX). The octeontx crypto poll mode driver enqueues +the crypto request to this accelerator and dequeues the response once the +operation is completed. + +Supported Algorithms +--------------------- + +Cipher Algorithms +~~~~~~~~~~~~~~~~~ + +* ``RTE_CRYPTO_CIPHER_NULL`` +* ``RTE_CRYPTO_CIPHER_3DES_CBC`` +* ``RTE_CRYPTO_CIPHER_3DES_ECB`` +* ``RTE_CRYPTO_CIPHER_AES_CBC`` +* ``RTE_CRYPTO_CIPHER_AES_CTR`` +* ``RTE_CRYPTO_CIPHER_AES_XTS`` +* ``RTE_CRYPTO_CIPHER_DES_CBC`` +* ``RTE_CRYPTO_CIPHER_KASUMI_F8`` +* ``RTE_CRYPTO_CIPHER_SNOW3G_UEA2`` +* ``RTE_CRYPTO_CIPHER_ZUC_EEA3`` + +Hash Algorithms +~~~~~~~~~~~~~~~ + +* ``RTE_CRYPTO_AUTH_NULL`` +* ``RTE_CRYPTO_AUTH_AES_GMAC`` +* ``RTE_CRYPTO_AUTH_KASUMI_F9`` +* ``RTE_CRYPTO_AUTH_MD5`` +* ``RTE_CRYPTO_AUTH_MD5_HMAC`` +* ``RTE_CRYPTO_AUTH_SHA1`` +* ``RTE_CRYPTO_AUTH_SHA1_HMAC`` +* ``RTE_CRYPTO_AUTH_SHA224`` +* ``RTE_CRYPTO_AUTH_SHA224_HMAC`` +* ``RTE_CRYPTO_AUTH_SHA256`` +* ``RTE_CRYPTO_AUTH_SHA256_HMAC`` +* ``RTE_CRYPTO_AUTH_SHA384`` +* ``RTE_CRYPTO_AUTH_SHA384_HMAC`` +* ``RTE_CRYPTO_AUTH_SHA512`` +* ``RTE_CRYPTO_AUTH_SHA512_HMAC`` +* ``RTE_CRYPTO_AUTH_SNOW3G_UIA2`` +* ``RTE_CRYPTO_AUTH_ZUC_EIA3`` + +AEAD Algorithms +~~~~~~~~~~~~~~~~ + +* ``RTE_CRYPTO_AEAD_AES_GCM`` + +Compilation +------------ + +The OcteonTX board must be running the linux kernel based on sdk-6.2.0 patch 3. +In this the OcteonTX pf driver is already built in. + +For compiling the OcteonTX crypto poll mode driver, please check if the +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO setting is set to `y` in +config/common_base file. + +* ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=y`` + +The following are the steps to compile the octeontx poll mode driver: + +.. code-block:: console + + cd + make config T=arm64-thunderx-linuxapp-gcc + make + +The example applications can be compiled using the following: + +.. code-block:: console + + cd + export RTE_SDK=$PWD + export RTE_TARGET=build + cd examples/ + make + +Execution +---------- + +The sriov_numvfs should be assigned for the octeontx pf driver using the +following: + +.. code-block:: console + + echo > /sys/bus/pci/devices//sriov_numvfs + +The device number can be ascertained by running the dpdk-devbind.py scripts in +the dpdk sources. + +Then the corresponding vf should be binded to the vfio-pci driver using the +following: + +.. code-block:: console + + cd + ./usertools/dpdk-devbind.py -u + ./usertools/dpdk-devbind.py -b vfio-pci + +Appropriate huge page need to be setup in order to run the examples dpdk +application. + +.. code-block:: console + + echo 8 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages + mkdir /mnt/huge + mount -t hugetlbfs nodev /mnt/huge + +After that the example dpdk application can be executed on the hardware. + +.. code-block:: console + ./build/ipsec-secgw --log-level=8 -c 0xff -- -P -p 0x3 -u 0x2 --config + "(1,0,0),(0,0,0)" -f ep1.cfg