From patchwork Fri Jul 20 19:04:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43242 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 830902C23; Fri, 20 Jul 2018 20:42:46 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02hn0238.outbound.protection.outlook.com [104.47.36.238]) by dpdk.org (Postfix) with ESMTP id F2AAE2C12 for ; Fri, 20 Jul 2018 20:42: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=Mz3Dn//rycIC+uIL0RLYlgAT32TojPYmlPvnPkX7C1w=; b=Ae6t+mowuIkG+jcpQF23of208xQ9JRqeIqVVFVbquu/Uk0KYJAV71uIOeNgNI7y9FjOG0iZ8vczKQupgydSzcZJ6kZ2Y1byA1LmLm3SITentV3d3xfaHqOAX49w5d1xf3rfUd+EtokiaJhp+7I5V+J7sres2J59v3QPXVeL8jXQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:41 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Sunila Sahu , Shally Verma Date: Sat, 21 Jul 2018 00:34:42 +0530 Message-Id: <20180720190447.7979-2-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b042c663-497a-4999-00fe-08d5ee709447 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:la4SC6bVBy950Y+S8LnD/Ujl5hZr0xZ0APaJ/W0gDZf2OLeaVPp8nvwZFMDWChQM3lNGR1kIK3kX0HtPi2XcNawiDTajy7u0of+85rgW3ogrQMSXM6XbXD1SVEaHzEffMKgIlngme5P8UuZaFwZLZ9Kohhq2poSICB2ynHnxJcMjbLxPddYJGJkxr14Y9x4gBoqibUM04CIbWWdMPhK18m5TwOMfZtSf0t2os75TxD9KVuw7joFmW0CcmuOeTXNb; 25:MX1pA4Zn/hsn1XIV0t+sdaAdxDhfMrWfZZsrJq1fWgnkKGHOiXd770J9MuyKsYTwEhMGMe8BGhlbSzwzCYovMGwe1UuMzsAZObFUm6V4e9HoqW5jkuul1se0yypkNWXLDMvXgtdckeyOzadRSMpmq+gUTqo0w8tuUyxYlnki0uMtmCRkxjonRWgWHu2cLXe1BeFNkELbzRfsM8xftQJpV1OmZw8OjvhycEWX8PRPNxGMja28Eds2sKnWTPgRcj6ohaegN54sCRkd1RUg6dI+/N8VbHFVgy0LYGV+7RUGpmN3gCj1pmXCPH9ZcStRQXX8KQePcLbr4+i5Re+yDi5gtA==; 31:eMbcGPAuKuPdffB8evozZa444oj0cu8VDGFSaDlT7yj3k8vks1HTs0sjN31iM+U7Fc8/5n2kE28j1gwEbUkZRlHli+tpU3xFzhvrYQGJzVcSRfnQ0ixfPEXrOuCLYY7u1uFXde1+hNiHQ62r4Md2GammcujlcMazWAGX2DbgWsr0hTKfUjoBeHpx9vcq5zQrqX7Upe/0MEuoaYj7XjXMrHwJRPnO9p6noYCSFKQWg8Y= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:K7dDCu3HeIHwGXUTRUbfaBXfPKsRzvwBloT8mPeuhFAe7V/+MX9oLElddVgO+MilvQ2UTR1AjhBJAceMVy6jLe9P5b+jgnfXjBhUMV78IE0CZF3pTCE+D+N3sbqk4qXEkEJwCtoU7nf4fyEdFC51buOqKnjcFhndjwesWdIM5zcRLu+wsTI4KDozsqlYfq2Udsn9imrQXwDweAXpz7w+r+lxana5hUWeanmovXfCoLaWAgDBdr4xTI6S5m72eS8NqeHkKSR1Zj70oktrF9UUbms0JOcrAG5e70H400OZvJWVrQktMd2YLQQVDI5Du0LuPsD5T1LlRtK2itD6RTcT74tvG1L8NyRehF+4IdpwHTpWRcvLJOLre0NVnZJUPVAcXvY8S3sBQarg/KxzvX6s2Y080HrHPBzpB/55sKa3ktHLjp7qTODjbtWkA0dpuRVmTC9Wdyat4VV62xKHMzD+iDSWp5asj/F4PHz/KEfR3iwlpQEZoQBYIBsgtnzTvw+Ixa+QaxAX9ncI/mtqrFXsrTkwwAi6TNIikK/9Sf+9MNSEzYMJqatfCF2xkQiviK545xy0jCvAI3GajvYzF6Pa+LHn6dtQRHeBYtHCDBpffr0=; 4:TZJp9LUc1uqwn2nUtjAId2HBu6LwHyKpXS284g2nCM6uuXMuCUkKJuESH8eoshrDJThm3S0273Fj3vvtaT+hqvP2wwS/ycXAb7mMBzn8eZu3dHa+Q9U6SYtagNsGTC+h32tfawJjEQeWuBR8OzWSB9NLGDsD/4xqTXJBUVdVWid0dBYUSXjRopPbQT1vFPx1c56y32kW18RU8oB8zM+0ZZ4UB8aLiQ7yI8ie6CbZqBO0D7hQcid+yNVESa+WwK+qPmo0dZUB9OoLO+zSeqEV1xenGRFuYHunQe+Jw6Oajks7pKTR7s8oN/v8+bkyGtpa X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(66839620246622); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231311)(2232096)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(53946003)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(14444005)(5660300001)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:jRs8+BKKX4yo4iT1f2MHLpFPBzgUrSSksBf6DKKqI?= 3Iy8moyG9cfoJTAWsoac9DdU72L1y0KFcC2YjmMSWXMc4V4eIAOKsUrUCH0eS3VYvA0WkO7zX4uyT2XKeu2gqxo6hOH4Lpxm9gcvZq2Jt/JgX23AjAMsBbRmuT+ALeZ/DhCKqFuTcvf/nO3Div37MXrm9f42Z0pvgUA9RLyxMXjKAdVwun4Tw2/obC2m6h5On2JZ0YXpRNkmsm9iqU7KPu1rDO2JxWW5YW8btH2zn2sLMo4cFGFajWn/eDO9P5Z4MaCAhRMN+tMN4UvfTbNJQ/N5W6YkmNa3nn+//mwDxCmBvj/YE19VFTFY5Bdr05wpZ5CYoYHRyNjAtt1R02vtOZ13ob0gkGF9erlqN1xIh03B8OMKNZmizmeeH65RetQIy58mDCo+BAulPs6KuiGjml3VzS9rKZiBLCnuQcsDbj6iJXRedU4e90NOsR1XJAuXvA+hQc/3ZQRv8ViTFZBvZr8oYfFr+0SqVNszXVu/xiMGKvsJGq9vlLdLbXCXmj25OC3j+tfBeXGxpdT1Mz6iyhNJbevwEaaRWLKKQF6SAc6yqfKTNxpx9dTdIlnmwmkjaupc5OYmEfyHVfrNDitQtpzYreV+EJ3YD9G6c9wvh2GOaAwxsUp84hn/kxgaJHfjm/c5F8EO2KA6/N3kGpWu6p88NXyEvn94jW/xTxDINfTgLIzdI3RqA/odbmcx1waxSuGIQon1F36C1wSwRdXfxDpk2ULhqQ9P20NAG2Cy8wlzP9gOCrgaoasNzvbRFIluhIcQ5QdFMBZchzqvmJ8dV//PFNYt1IHCfybqKRMGsLng/dRcpSiVTarXDOyzWQKyterr/BnvY26I9Fr3p+wq9eOPLgArUX0X8on5MCONQsElXleeRh5u0XK2bbGApxgk1mFuvicOJoxv0z5Hirs+9uzihj6y4DhpYpknySBa5TpSpRj6aNDK069s7yk04rsKmYbZ+djET+T904/0XjqwF2VVO0dJ2RtNlW+ew/Fp5/QLg4UuOc8K0VyXvuNoi583mGQYDrgPDmrRpWt31sdL9tSh/f3YWQP+sIZeB3YF74CpxAF5knAMBQNkjvi2QmPU/kRKpGZvu8XjHCA8qAXCSiwsxbkTMNaNZbowwdYQT765ia1Yw3PJyDutzrSmErOLlPPNd6eAqDZf7xmH8FlC5Y2ga/H31k20S1HVP6F7jurQ3LYJZGvAiSJI7HS5sn6QVmaU1X9oND3EANXP7P4AQlzz6QCzztJGHUPrNK6RtSfqFl34x0ImH0x/5z14GSsj4Z3VOEnQYwPCW6bcOnGoPI2a0QHLLNuv5Ndo2uAEvwXQhL64FcsSxXFQiCjNkgRwdFiU9ItG7ilSTm/xo8UhgackzN7JEWLlCnFs7UFnGXssexXTvCbKS1G77IJvvOy2L0= X-Microsoft-Antispam-Message-Info: h4iHqD3hm9PG9GX1jLAOlwXCRGqb+u4fq/Aw56wQ7/TTJ/cJswBjhXpLTvXceYp5MVNSXdA9/f4HXFyVJwntUqxW9wzsyS+gWdr/w0azEC1NBIXNBVPnHb8fH9gwlr2W6MF1NJDEyovR+9QlsAsvZCtWIQT5XZ1x0MbV+02zV7Zl0ZW57ipI+9iw6arRWs/7iaSUoh+NzvokqLUGF1XOXd4m+Fl38G3Xs+TLGYiK0wMmffVKj64wKMss2KmbnPcmsNqMLqvVzo2tIFy+xSJ/CTX7ATbPDNhsZGxWJWKUYgF7YSXQyBpbANNmGqEmaCVYbF+pqX/PQ88qAN5/i8Di2VV10ji8U3UK36EcFA4O4N6Sd5u9LCaqsKCpduCj1nmZLpG/g0ZRUVDh+O2SJnr0qJs7NTf/epHmiZKTbN3Y2tSqd9Vj72tKPEsZ3DfgGDUvpVEHFeNG2LxgmAs8N4jeewKmA02KIZ4mA1rKbS3V77VzjeFNTMAYHkZ1H2rmWr6Cjrh2aLiaGz6aO/UIUIXw4rrs7HUYmYcmNoXt7MtluIYfNubRDZhTyzIpIY87Eme/tAjo0pOBcbXEfPxKeeDoub1nUsPl8wPwP15ENvGsJPRNI0YAZgim+PQH+s6c04wNUoz+Z/v4Iudnevdg/EY2tYAEIkWEgbjVav27f+/VP0Cr85P+tx/I7lBqij5YfqlfesluKFy3rMs+B4SuxV0uqA== X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:qCSvmAzqz/J763zMNBXEmteXZqhtEolkoXdJmngWEfHco9X59sf5UzSof7Ljo23+2yiRto2flXfy+W3WHz5sliUZQ5GX+o41OQKqxmdwmYX5dMdwypvXsXMCvhKmIm6x8yjgPThuedL/es9nnkLJPE98j093GaWJEQtX1ppQuDen0axI2Gh4FnyjgXlQMfGbhKIev4yutkZwOIW1C02ui6JSI0rghb76ZM0JkIQNqFmYkZ75xiyOJS2bCKWzpXIIklJf33gcmy8N2lPwTDpGeLYqrsZiij4V5vu6vs9s075iSj00xP47ClrDrRSYqUOArKp5VL3kbsMVa6/LfBIfeXHUixMIRpcfC5cep5/UydcT0xk+sQVUMqr0IpwrVtZYos85A9otTe96GdOqVb7TB4AplVS9rG48hlUNyY760MUlD6NW95IyYyh889gTmzgFhxYsJFENm6enG+YyAPb3aDD4gl6rMzT6tGAkUSaEiMxXhtM5V27OQGVn+vbjyzbx; 5:DzmiUoqe1ukpFOgJQpYAZhiSYpQEZNBsCEBK1RsK8xQ1OQeBDxgUhPwFS3SLWezp/O2+BRfxrNGOgBVsx9kzhGtTWVcjJKpEWBBu8zz/zRpA1I+RYh47OUuUKvY4X6ksgOSwF7lP3NW+/un6yCfp6HL+lbamWavaY+8RPQRUIAw=; 7:y7jdVDHqsChvrhezoFX1ZzaMFZVlhwgG7jtbNce19eN+OgXXBYPjoquHUk9xC4PBHAFN6WswQx6lhzW32Wy+FcSNHngg6j73YgAL2s8V/ujHGReED9dcPtsF0sBUQOkDbvjrSPDi5VfmqI2nmUSaRt27ahsppUw2xlhmtEDuQRZFptvo0EAlPDL0W+X0p4uJFRWEYK+AsEH4Hvf0vULfuvPZ5UslCRUpu2v+7WRISLP1hENKSpp31Rzz6mdoiKsG SpamDiagnosticOutput: 1:22 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:41.7503 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b042c663-497a-4999-00fe-08d5ee709447 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 1/6] compress/octeontx: add octeontx zip PMD 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: Sunila Sahu Octentx zipvf PMD provides hardware acceleration for deflate and lzs compression and decompression operations using Octeontx zip co-processor, which provide 8 virtualized zip devices. This patch add basic initialization routine to register zip VFs to compressdev library. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- MAINTAINERS | 3 + config/common_base | 5 + drivers/compress/Makefile | 1 + drivers/compress/meson.build | 2 +- drivers/compress/octeontx/Makefile | 30 + drivers/compress/octeontx/include/zip_regs.h | 712 +++++++++++++++++++++ drivers/compress/octeontx/meson.build | 11 + drivers/compress/octeontx/otx_zip.c | 63 ++ drivers/compress/octeontx/otx_zip.h | 113 ++++ drivers/compress/octeontx/otx_zip_pmd.c | 119 ++++ .../octeontx/rte_pmd_octeontx_compress_version.map | 3 + mk/rte.app.mk | 1 + 12 files changed, 1062 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 7b2414da9..852f4f726 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -855,6 +855,9 @@ F: drivers/crypto/zuc/ F: doc/guides/cryptodevs/zuc.rst F: doc/guides/cryptodevs/features/zuc.ini +Cavium OCTEONTX zipvf +M: Ashish Gupta +F: drivers/compress/octeontx Compression Drivers ------------------- diff --git a/config/common_base b/config/common_base index a061c2108..43b17e749 100644 --- a/config/common_base +++ b/config/common_base @@ -576,6 +576,11 @@ CONFIG_RTE_COMPRESS_MAX_DEVS=64 # CONFIG_RTE_COMPRESSDEV_TEST=n +# +# Compile PMD for Octeontx ZIPVF compression device +# +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=y + # # Compile PMD for ISA-L compression device # diff --git a/drivers/compress/Makefile b/drivers/compress/Makefile index 592497f51..25cced348 100644 --- a/drivers/compress/Makefile +++ b/drivers/compress/Makefile @@ -4,5 +4,6 @@ include $(RTE_SDK)/mk/rte.vars.mk DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal +DIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += octeontx include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/compress/meson.build b/drivers/compress/meson.build index 2352ad5bc..8aa5214b5 100644 --- a/drivers/compress/meson.build +++ b/drivers/compress/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -drivers = ['isal', 'qat'] +drivers = ['isal', 'octeontx', 'qat'] std_deps = ['compressdev'] # compressdev pulls in all other needed deps config_flag_fmt = 'RTE_LIBRTE_@0@_PMD' diff --git a/drivers/compress/octeontx/Makefile b/drivers/compress/octeontx/Makefile new file mode 100644 index 000000000..f34424c87 --- /dev/null +++ b/drivers/compress/octeontx/Makefile @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +include $(RTE_SDK)/mk/rte.vars.mk + +# library name +LIB = librte_pmd_octeontx_zip.a + +# library version +LIBABIVER := 1 + +# build flags +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -O3 +CFLAGS += -DALLOW_EXPERIMENTAL_API +CFLAGS += -I$(RTE_SDK)/drivers/compress/octeontx/include + +# external library include paths +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring +LDLIBS += -lrte_compressdev +LDLIBS += -lrte_pci -lrte_bus_pci + +# library source files +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip_pmd.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip.c + +# versioning export map +EXPORT_MAP := rte_pmd_octeontx_compress_version.map + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/octeontx/include/zip_regs.h b/drivers/compress/octeontx/include/zip_regs.h new file mode 100644 index 000000000..96749dd3f --- /dev/null +++ b/drivers/compress/octeontx/include/zip_regs.h @@ -0,0 +1,712 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _RTE_OCTEONTX_ZIP_REGS_H_ +#define _RTE_OCTEONTX_ZIP_REGS_H_ + + +/** + * Enumeration zip_cc + * + * ZIP compression coding Enumeration + * Enumerates ZIP_INST_S[CC]. + */ +enum { + ZIP_CC_DEFAULT = 0, + ZIP_CC_DYN_HUFF, + ZIP_CC_FIXED_HUFF, + ZIP_CC_LZS +} zip_cc; + +/** + * Register (NCB) zip_vq#_ena + * + * ZIP VF Queue Enable Register + * If a queue is disabled, ZIP CTL stops fetching instructions from the queue. + */ +typedef union { + uint64_t u; + struct zip_vqx_ena_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_1_63 : 63; + uint64_t ena : 1; +#else /* Word 0 - Little Endian */ + uint64_t ena : 1; + uint64_t reserved_1_63 : 63; +#endif /* Word 0 - End */ + } s; + /* struct zip_vqx_ena_s cn; */ +} zip_vqx_ena_t; + +/** + * Register (NCB) zip_vq#_sbuf_addr + * + * ZIP VF Queue Starting Buffer Address Registers + * These registers set the buffer parameters for the instruction queues. + * When quiescent (i.e. + * outstanding doorbell count is 0), it is safe to rewrite this register + * to effectively reset the + * command buffer state machine. + * These registers must be programmed after software programs the + * corresponding ZIP_QUE()_SBUF_CTL. + */ +typedef union { + uint64_t u; + struct zip_vqx_sbuf_addr_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_49_63 : 15; + uint64_t ptr : 42; + uint64_t off : 7; +#else /* Word 0 - Little Endian */ + uint64_t off : 7; + uint64_t ptr : 42; + uint64_t reserved_49_63 : 15; +#endif /* Word 0 - End */ + } s; + /* struct zip_vqx_sbuf_addr_s cn; */ +} zip_vqx_sbuf_addr_t; + +/** + * Register (NCB) zip_que#_doorbell + * + * ZIP Queue Doorbell Registers + * Doorbells for the ZIP instruction queues. + */ +typedef union { + uint64_t u; + struct zip_quex_doorbell_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_20_63 : 44; + uint64_t dbell_cnt : 20; +#else /* Word 0 - Little Endian */ + uint64_t dbell_cnt : 20; + uint64_t reserved_20_63 : 44; +#endif /* Word 0 - End */ + } s; + /* struct zip_quex_doorbell_s cn; */ +} zip_quex_doorbell_t; + +/** + * Structure zip_nptr_s + * + * ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) Structure + * This structure is used to chain all the ZIP instruction buffers + * together. ZIP instruction buffers are managed + * (allocated and released) by software. + */ +union zip_nptr_s { + uint64_t u; + struct zip_nptr_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ + } s; + /* struct zip_nptr_s_s cn83xx; */ +}; + +/** + * generic ptr address + */ +union zip_zptr_addr_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u; + /** generic ptr address */ + struct { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ + } s; +}; + +/** + * generic ptr ctl + */ +union zip_zptr_ctl_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u; + /** generic ptr ctl */ + struct { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + uint64_t reserved_112_127 : 16; + uint64_t length : 16; + uint64_t reserved_67_95 : 29; + uint64_t fw : 1; + uint64_t nc : 1; + uint64_t data_be : 1; +#else /* Word 1 - Little Endian */ + uint64_t data_be : 1; + uint64_t nc : 1; + uint64_t fw : 1; + uint64_t reserved_67_95 : 29; + uint64_t length : 16; + uint64_t reserved_112_127 : 16; +#endif /* Word 1 - End */ + } s; + +}; + +/** + * Structure zip_inst_s + * + * ZIP Instruction Structure + * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 + * within the structure). + */ +union zip_inst_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[16]; + /** ZIP Instruction Structure */ + struct zip_inst_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Done interrupt */ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_56_62 : 7; + /** Total output length */ + uint64_t totaloutputlength : 24; + /** reserved */ + uint64_t reserved_27_31 : 5; + /** EXNUM */ + uint64_t exn : 3; + /** HASH IV */ + uint64_t iv : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** Hash more-in-file */ + uint64_t hmif : 1; + /** Hash Algorithm and enable */ + uint64_t halg : 3; + /** Sync flush*/ + uint64_t sf : 1; + /** Compression speed/storage */ + uint64_t ss : 2; + /** Compression coding */ + uint64_t cc : 2; + /** End of input data */ + uint64_t ef : 1; + /** Beginning of file */ + uint64_t bf : 1; + // uint64_t reserved_3_4 : 2; + /** Comp/decomp operation */ + uint64_t op : 2; + /** Data sactter */ + uint64_t ds : 1; + /** Data gather */ + uint64_t dg : 1; + /** History gather */ + uint64_t hg : 1; +#else /* Word 0 - Little Endian */ + uint64_t hg : 1; + uint64_t dg : 1; + uint64_t ds : 1; + //uint64_t reserved_3_4 : 2; + uint64_t op : 2; + uint64_t bf : 1; + uint64_t ef : 1; + uint64_t cc : 2; + uint64_t ss : 2; + uint64_t sf : 1; + uint64_t halg : 3; + uint64_t hmif : 1; + uint64_t exbits : 7; + uint64_t iv : 1; + uint64_t exn : 3; + uint64_t reserved_27_31 : 5; + uint64_t totaloutputlength : 24; + uint64_t reserved_56_62 : 7; + uint64_t doneint : 1; + +#endif /* Word 0 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** History length */ + uint64_t historylength : 16; + /** reserved */ + uint64_t reserved_96_111 : 16; + /** adler/crc32 checksum*/ + uint64_t adlercrc32 : 32; +#else /* Word 1 - Little Endian */ + uint64_t adlercrc32 : 32; + uint64_t reserved_96_111 : 16; + uint64_t historylength : 16; +#endif /* Word 1 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Decompression Context Pointer Address */ + union zip_zptr_addr_s ctx_ptr_addr; +#else /* Word 2 - Little Endian */ + union zip_zptr_addr_s ctx_ptr_addr; +#endif /* Word 2 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression Context Pointer Control */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#else /* Word 3 - Little Endian */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#endif /* Word 3 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression history pointer address */ + union zip_zptr_addr_s his_ptr_addr; +#else /* Word 4 - Little Endian */ + union zip_zptr_addr_s his_ptr_addr; +#endif /* Word 4 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression history pointer control */ + union zip_zptr_ctl_s his_ptr_ctl; +#else /* Word 5 - Little Endian */ + union zip_zptr_ctl_s his_ptr_ctl; +#endif /* Word 5 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Input and compression history pointer address */ + union zip_zptr_addr_s inp_ptr_addr; +#else /* Word 6 - Little Endian */ + union zip_zptr_addr_s inp_ptr_addr; +#endif /* Word 6 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Input and compression history pointer control */ + union zip_zptr_ctl_s inp_ptr_ctl; +#else /* Word 7 - Little Endian */ + union zip_zptr_ctl_s inp_ptr_ctl; +#endif /* Word 7 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Output pointer address */ + union zip_zptr_addr_s out_ptr_addr; +#else /* Word 8 - Little Endian */ + union zip_zptr_addr_s out_ptr_addr; +#endif /* Word 8 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Output pointer control */ + union zip_zptr_ctl_s out_ptr_ctl; +#else /* Word 9 - Little Endian */ + union zip_zptr_ctl_s out_ptr_ctl; +#endif /* Word 9 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Result pointer address */ + union zip_zptr_addr_s res_ptr_addr; +#else /* Word 10 - Little Endian */ + union zip_zptr_addr_s res_ptr_addr; +#endif /* Word 10 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Result pointer control */ + union zip_zptr_ctl_s res_ptr_ctl; +#else /* Word 11 - Little Endian */ + union zip_zptr_ctl_s res_ptr_ctl; +#endif /* Word 11 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */ + /** reserved */ + uint64_t reserved_812_831 : 20; + /** SSO guest group */ + uint64_t ggrp : 10; + /** SSO tag type */ + uint64_t tt : 2; + /** SSO tag */ + uint64_t tag : 32; +#else /* Word 12 - Little Endian */ + uint64_t tag : 32; + uint64_t tt : 2; + uint64_t ggrp : 10; + uint64_t reserved_812_831 : 20; +#endif /* Word 12 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */ + /** Work queue entry pointer */ + uint64_t wq_ptr : 64; +#else /* Word 13 - Little Endian */ + uint64_t wq_ptr : 64; +#endif /* Word 13 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** reserved */ + uint64_t reserved_896_959 : 64; +#else /* Word 14 - Little Endian */ + uint64_t reserved_896_959 : 64; +#endif /* Word 14 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) + /** Hash structure pointer */ + uint64_t hash_ptr : 64; +#else /* Word 15 - Little Endian */ + uint64_t hash_ptr : 64; +#endif /* Word 15 - End */ + } /** ZIP 88xx Instruction Structure */zip88xx; + + /** ZIP Instruction Structure */ + struct zip_inst_s_cn83xx { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Done interrupt */ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_56_62 : 7; + /** Total output length */ + uint64_t totaloutputlength : 24; + /** reserved */ + uint64_t reserved_27_31 : 5; + /** EXNUM */ + uint64_t exn : 3; + /** HASH IV */ + uint64_t iv : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** Hash more-in-file */ + uint64_t hmif : 1; + /** Hash Algorithm and enable */ + uint64_t halg : 3; + /** Sync flush*/ + uint64_t sf : 1; + /** Compression speed/storage */ + uint64_t ss : 2; + /** Compression coding */ + uint64_t cc : 2; + /** End of input data */ + uint64_t ef : 1; + /** Beginning of file */ + uint64_t bf : 1; + /** Comp/decomp operation */ + uint64_t op : 2; + /** Data sactter */ + uint64_t ds : 1; + /** Data gather */ + uint64_t dg : 1; + /** History gather */ + uint64_t hg : 1; +#else /* Word 0 - Little Endian */ + uint64_t hg : 1; + uint64_t dg : 1; + uint64_t ds : 1; + uint64_t op : 2; + uint64_t bf : 1; + uint64_t ef : 1; + uint64_t cc : 2; + uint64_t ss : 2; + uint64_t sf : 1; + uint64_t halg : 3; + uint64_t hmif : 1; + uint64_t exbits : 7; + uint64_t iv : 1; + uint64_t exn : 3; + uint64_t reserved_27_31 : 5; + uint64_t totaloutputlength : 24; + uint64_t reserved_56_62 : 7; + uint64_t doneint : 1; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** History length */ + uint64_t historylength : 16; + /** reserved */ + uint64_t reserved_96_111 : 16; + /** adler/crc32 checksum*/ + uint64_t adlercrc32 : 32; +#else /* Word 1 - Little Endian */ + uint64_t adlercrc32 : 32; + uint64_t reserved_96_111 : 16; + uint64_t historylength : 16; +#endif /* Word 1 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Decompression Context Pointer Address */ + union zip_zptr_addr_s ctx_ptr_addr; +#else /* Word 2 - Little Endian */ + union zip_zptr_addr_s ctx_ptr_addr; +#endif /* Word 2 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */ + /** Decompression Context Pointer Control */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#else /* Word 3 - Little Endian */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#endif /* Word 3 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */ + /** Decompression history pointer address */ + union zip_zptr_addr_s his_ptr_addr; +#else /* Word 4 - Little Endian */ + union zip_zptr_addr_s his_ptr_addr; +#endif /* Word 4 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */ + /** Decompression history pointer control */ + union zip_zptr_ctl_s his_ptr_ctl; +#else /* Word 5 - Little Endian */ + union zip_zptr_ctl_s his_ptr_ctl; +#endif /* Word 5 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */ + /** Input and compression history pointer address */ + union zip_zptr_addr_s inp_ptr_addr; +#else /* Word 6 - Little Endian */ + union zip_zptr_addr_s inp_ptr_addr; +#endif /* Word 6 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */ + /** Input and compression history pointer control */ + union zip_zptr_ctl_s inp_ptr_ctl; +#else /* Word 7 - Little Endian */ + union zip_zptr_ctl_s inp_ptr_ctl; +#endif /* Word 7 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 8 - Big Endian */ + /** Output pointer address */ + union zip_zptr_addr_s out_ptr_addr; +#else /* Word 8 - Little Endian */ + union zip_zptr_addr_s out_ptr_addr; +#endif /* Word 8 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 9 - Big Endian */ + /** Output pointer control */ + union zip_zptr_ctl_s out_ptr_ctl; +#else /* Word 9 - Little Endian */ + union zip_zptr_ctl_s out_ptr_ctl; +#endif /* Word 9 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 10 - Big Endian */ + /** Result pointer address */ + union zip_zptr_addr_s res_ptr_addr; +#else /* Word 10 - Little Endian */ + union zip_zptr_addr_s res_ptr_addr; +#endif /* Word 10 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 11 - Big Endian */ + /** Result pointer control */ + union zip_zptr_ctl_s res_ptr_ctl; +#else /* Word 11 - Little Endian */ + union zip_zptr_ctl_s res_ptr_ctl; +#endif /* Word 11 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */ + /** reserved */ + uint64_t reserved_812_831 : 20; + /** SSO guest group */ + uint64_t ggrp : 10; + /** SSO tag type */ + uint64_t tt : 2; + /** SSO tag */ + uint64_t tag : 32; +#else /* Word 12 - Little Endian */ + uint64_t tag : 32; + uint64_t tt : 2; + uint64_t ggrp : 10; + uint64_t reserved_812_831 : 20; +#endif /* Word 12 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */ + /** Work queue entry pointer */ + uint64_t wq_ptr : 64; +#else /* Word 13 - Little Endian */ + uint64_t wq_ptr : 64; +#endif /* Word 13 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 14 - Big Endian */ + /** reserved */ + uint64_t reserved_896_959 : 64; +#else /* Word 14 - Little Endian */ + uint64_t reserved_896_959 : 64; +#endif /* Word 14 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 15 - Big Endian */ + /** Hash structure pointer */ + uint64_t hash_ptr : 64; +#else /* Word 15 - Little Endian */ + uint64_t hash_ptr : 64; +#endif /* Word 15 - End */ + } /** ZIP 83xx Instruction Structure */s; +}; + +/** + * Structure zip_zres_s + * + * ZIP Result Structure + * The ZIP coprocessor writes the result structure after it completes the + * invocation. The result structure is exactly 24 bytes, and each invocation + * of the ZIP coprocessor produces exactly one result structure. + */ +union zip_zres_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[8]; + /** ZIP Result Structure */ + struct zip_zres_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** crc32 checksum of uncompressed stream */ + uint64_t crc32 : 32; + /** adler32 checksum of uncompressed stream*/ + uint64_t adler32 : 32; +#else /* Word 0 - Little Endian */ + uint64_t adler32 : 32; + uint64_t crc32 : 32; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** Total numer of Bytes produced in output stream */ + uint64_t totalbyteswritten : 32; + /** Total number of bytes processed from the input stream */ + uint64_t totalbytesread : 32; +#else /* Word 1 - Little Endian */ + uint64_t totalbytesread : 32; + uint64_t totalbyteswritten : 32; +#endif /* Word 1 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Total number of compressed input bits + * consumed to decompress all blocks in the file + */ + uint64_t totalbitsprocessed : 32; + /** Done interrupt*/ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_155_158 : 4; + /** EXNUM */ + uint64_t exn : 3; + /** reserved */ + uint64_t reserved_151 : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** reserved */ + uint64_t reserved_137_143 : 7; + /** End of file */ + uint64_t ef : 1; + /** Completion/error code */ + uint64_t compcode : 8; +#else /* Word 2 - Little Endian */ + uint64_t compcode : 8; + uint64_t ef : 1; + uint64_t reserved_137_143 : 7; + uint64_t exbits : 7; + uint64_t reserved_151 : 1; + uint64_t exn : 3; + uint64_t reserved_155_158 : 4; + uint64_t doneint : 1; + uint64_t totalbitsprocessed : 32; +#endif /* Word 2 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */ + /** reserved */ + uint64_t reserved_253_255 : 3; + /** Hash length in bytes */ + uint64_t hshlen : 61; +#else /* Word 3 - Little Endian */ + uint64_t hshlen : 61; + uint64_t reserved_253_255 : 3; +#endif /* Word 3 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */ + /** Double-word 0 of computed hash */ + uint64_t hash0 : 64; +#else /* Word 4 - Little Endian */ + uint64_t hash0 : 64; +#endif /* Word 4 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */ + /** Double-word 1 of computed hash */ + uint64_t hash1 : 64; +#else /* Word 5 - Little Endian */ + uint64_t hash1 : 64; +#endif /* Word 5 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */ + /** Double-word 2 of computed hash */ + uint64_t hash2 : 64; +#else /* Word 6 - Little Endian */ + uint64_t hash2 : 64; +#endif /* Word 6 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */ + /** Double-word 3 of computed hash */ + uint64_t hash3 : 64; +#else /* Word 7 - Little Endian */ + uint64_t hash3 : 64; +#endif /* Word 7 - End */ + } /** ZIP Result Structure */s; + + /* struct zip_zres_s_s cn83xx; */ +}; + +/** + * Structure zip_zptr_s + * + * ZIP Generic Pointer Structure + * This structure is the generic format of pointers in ZIP_INST_S. + */ +union zip_zptr_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[2]; + /** ZIP Generic Pointer Structure */ + struct zip_zptr_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Pointer to Data or scatter-gather list */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** reserved */ + uint64_t reserved_112_127 : 16; + /** Length of Data or scatter-gather list*/ + uint64_t length : 16; + /** reserved */ + uint64_t reserved_67_95 : 29; + /** Full-block write */ + uint64_t fw : 1; + /** No cache allocation */ + uint64_t nc : 1; + /** reserved */ + uint64_t data_be : 1; +#else /* Word 1 - Little Endian */ + uint64_t data_be : 1; + uint64_t nc : 1; + uint64_t fw : 1; + uint64_t reserved_67_95 : 29; + uint64_t length : 16; + uint64_t reserved_112_127 : 16; +#endif /* Word 1 - End */ + } /** ZIP Generic Pointer Structure */s; +}; + +/** + * Enumeration zip_comp_e + * + * ZIP Completion Enumeration + * Enumerates the values of ZIP_ZRES_S[COMPCODE]. + */ +#define ZIP_COMP_E_NOTDONE (0) +#define ZIP_COMP_E_SUCCESS (1) +#define ZIP_COMP_E_DTRUNC (2) +#define ZIP_COMP_E_DSTOP (3) +#define ZIP_COMP_E_ITRUNC (4) +#define ZIP_COMP_E_RBLOCK (5) +#define ZIP_COMP_E_NLEN (6) +#define ZIP_COMP_E_BADCODE (7) +#define ZIP_COMP_E_BADCODE2 (8) +#define ZIP_COMP_E_ZERO_LEN (9) +#define ZIP_COMP_E_PARITY (0xa) +#define ZIP_COMP_E_FATAL (0xb) +#define ZIP_COMP_E_TIMEOUT (0xc) +#define ZIP_COMP_E_INSTR_ERR (0xd) +#define ZIP_COMP_E_HCTX_ERR (0xe) +#define ZIP_COMP_E_STOP (3) + +/** + * Enumeration zip_op_e + * + * ZIP Operation Enumeration + * Enumerates ZIP_INST_S[OP]. + * Internal: + */ +#define ZIP_OP_E_DECOMP (0) +#define ZIP_OP_E_NOCOMP (1) +#define ZIP_OP_E_COMP (2) + +/** + * Enumeration zip compression levels + * + * ZIP Compression Level Enumeration + * Enumerates ZIP_INST_S[SS]. + * Internal: + */ +#define ZIP_COMP_E_LEVEL_MAX (0) +#define ZIP_COMP_E_LEVEL_MED (1) +#define ZIP_COMP_E_LEVEL_LOW (2) +#define ZIP_COMP_E_LEVEL_MIN (3) + +#endif /* _RTE_ZIP_REGS_H_ */ + diff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build new file mode 100644 index 000000000..0adf3b8ac --- /dev/null +++ b/drivers/compress/octeontx/meson.build @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +name = 'octeontx_compress' +sources = files('otx_zip.c', 'otx_zip_pmd.c') +allow_experimental_apis = true +includes += include_directories('include') +deps += ['mempool_octeontx', 'bus_pci'] +ext_deps += dep + + diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c new file mode 100644 index 000000000..4a5591c97 --- /dev/null +++ b/drivers/compress/octeontx/otx_zip.c @@ -0,0 +1,63 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include "otx_zip.h" + +uint64_t +zip_reg_read64(uint8_t *hw_addr, uint64_t offset) +{ + uint8_t *base = hw_addr; + return *(volatile uint64_t *)(base + offset); +} + +void +zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val) +{ + uint8_t *base = hw_addr; + *(uint64_t *)(base + offset) = val; +} + +int +zipvf_create(struct rte_compressdev *compressdev) +{ + struct rte_pci_device *pdev = RTE_DEV_TO_PCI(compressdev->device); + struct zip_vf *zipvf = NULL; + char *dev_name = compressdev->data->name; + void *vbar0; + uint64_t reg; + + if (pdev->mem_resource[0].phys_addr == 0ULL) + return -EIO; + + vbar0 = pdev->mem_resource[0].addr; + if (!vbar0) { + ZIP_PMD_ERR("Failed to map BAR0 of %s", dev_name); + return -ENODEV; + } + + zipvf = (struct zip_vf *)(compressdev->data->dev_private); + + if (!zipvf) + return -ENOMEM; + + zipvf->vbar0 = vbar0; + reg = zip_reg_read64(zipvf->vbar0, ZIP_VF_PF_MBOXX(0)); + /* Storing domain in local to ZIP VF */ + zipvf->dom_sdom = reg; + zipvf->pdev = pdev; + zipvf->max_nb_queue_pairs = ZIP_MAX_VF_QUEUE; + return 0; +} + +int +zipvf_destroy(struct rte_compressdev *compressdev) +{ + struct zip_vf *vf = (struct zip_vf *)(compressdev->data->dev_private); + + /* Rewriting the domain_id in ZIP_VF_MBOX for app rerun */ + zip_reg_write64(vf->vbar0, ZIP_VF_PF_MBOXX(0), vf->dom_sdom); + + return 0; +} + diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h new file mode 100644 index 000000000..8a58f31f8 --- /dev/null +++ b/drivers/compress/octeontx/otx_zip.h @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _RTE_OCTEONTX_ZIP_VF_H_ +#define _RTE_OCTEONTX_ZIP_VF_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +int octtx_zip_logtype_driver; + +/* ZIP VF Control/Status registers (CSRs): */ +/* VF_BAR0: */ +#define ZIP_VQ_ENA (0x10) +#define ZIP_VQ_SBUF_ADDR (0x20) +#define ZIP_VF_PF_MBOXX(x) (0x400 | (x)<<3) +#define ZIP_VQ_DOORBELL (0x1000) + +/**< Vendor ID */ +#define PCI_VENDOR_ID_CAVIUM 0x177D +/**< PCI device id of ZIP VF */ +#define PCI_DEVICE_ID_OCTEONTX_ZIPVF 0xA037 + +/* maxmum number of zip vf devices */ +#define ZIP_MAX_VFS 8 + +/* max size of one chunk */ +#define ZIP_MAX_CHUNK_SIZE 8192 + +/* each instruction is fixed 128 bytes */ +#define ZIP_CMD_SIZE 128 + +#define ZIP_CMD_SIZE_WORDS (ZIP_CMD_SIZE >> 3) /* 16 64_bit words */ + +/* size of next chunk buffer pointer */ +#define ZIP_MAX_NCBP_SIZE 8 + +/* size of instruction queue in units of instruction size */ +#define ZIP_MAX_NUM_CMDS ((ZIP_MAX_CHUNK_SIZE - ZIP_MAX_NCBP_SIZE) / \ + ZIP_CMD_SIZE) /* 63 */ + +/* size of instruct queue in bytes */ +#define ZIP_MAX_CMDQ_SIZE ((ZIP_MAX_NUM_CMDS * ZIP_CMD_SIZE) + \ + ZIP_MAX_NCBP_SIZE)/* ~8072ull */ + +#define ZIP_BUF_SIZE 256 + +#define ZIP_SGPTR_ALIGN 16 +#define ZIP_CMDQ_ALIGN 128 +#define MAX_SG_LEN ((ZIP_BUF_SIZE - ZIP_SGPTR_ALIGN) / sizeof(void *)) + +/**< ZIP PMD specified queue pairs */ +#define ZIP_MAX_VF_QUEUE 1 + +#define ZIP_ALIGN_ROUNDUP(x, _align) \ + ((_align) * (((x) + (_align) - 1) / (_align))) + +/**< ZIP PMD device name */ +#define COMPRESSDEV_NAME_ZIP_PMD compress_octeonx + +#define ZIP_PMD_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, \ + octtx_zip_logtype_driver, "%s(): "fmt "\n", \ + __func__, ##args) + +#define ZIP_PMD_INFO(fmt, args...) \ + ZIP_PMD_LOG(INFO, fmt, ## args) +#define ZIP_PMD_ERR(fmt, args...) \ + ZIP_PMD_LOG(ERR, fmt, ## args) +#define ZIP_PMD_WARN(fmt, args...) \ + ZIP_PMD_LOG(WARNING, fmt, ## args) + +/** + * ZIP VF device structure. + */ +struct zip_vf { + int vfid; + /* vf index */ + struct rte_pci_device *pdev; + /* pci device */ + void *vbar0; + /* CSR base address for underlying BAR0 VF.*/ + uint64_t dom_sdom; + /* Storing mbox domain and subdomain id for app rerun*/ + uint32_t max_nb_queue_pairs; + /* pointer to device qps */ + struct rte_mempool *zip_mp; + /* pointer to pools */ +} __rte_cache_aligned; + +int +zipvf_create(struct rte_compressdev *compressdev); + +int +zipvf_destroy(struct rte_compressdev *compressdev); + +uint64_t +zip_reg_read64(uint8_t *hw_addr, uint64_t offset); + +void +zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val); + +#endif /* _RTE_ZIP_VF_H_ */ diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c new file mode 100644 index 000000000..b2cb115e0 --- /dev/null +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include + +#include +#include +#include +#include + +#include "otx_zip.h" + +struct rte_compressdev_ops octtx_zip_pmd_ops = { + +}; + +static int +zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) +{ + int ret = 0; + char compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + struct rte_compressdev *compressdev; + struct rte_compressdev_pmd_init_params init_params = { + "", + rte_socket_id(), + }; + + ZIP_PMD_INFO("vendor_id=0x%x device_id=0x%x", + (unsigned int)pci_dev->id.vendor_id, + (unsigned int)pci_dev->id.device_id); + + rte_pci_device_name(&pci_dev->addr, compressdev_name, + sizeof(compressdev_name)); + + compressdev = rte_compressdev_pmd_create(compressdev_name, + &pci_dev->device, sizeof(struct zip_vf), &init_params); + if (compressdev == NULL) { + ZIP_PMD_ERR("driver %s: create failed", init_params.name); + return -ENODEV; + } + + /* + * create only if proc_type is primary. + */ + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + /* create vf dev with given pmd dev id */ + ret = zipvf_create(compressdev); + if (ret < 0) { + ZIP_PMD_ERR("Device creation failed"); + rte_compressdev_pmd_destroy(compressdev); + return ret; + } + } + + compressdev->dev_ops = &octtx_zip_pmd_ops; + /* register rx/tx burst functions for data path */ + compressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED; + return ret; +} + +static int +zip_pci_remove(struct rte_pci_device *pci_dev) +{ + struct rte_compressdev *compressdev; + char compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + + if (pci_dev == NULL) { + ZIP_PMD_ERR(" Invalid PCI Device\n"); + return -EINVAL; + } + rte_pci_device_name(&pci_dev->addr, compressdev_name, + sizeof(compressdev_name)); + + compressdev = rte_compressdev_pmd_get_named_dev(compressdev_name); + if (compressdev == NULL) + return -ENODEV; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + if (zipvf_destroy(compressdev) < 0) + return -ENODEV; + } + return rte_compressdev_pmd_destroy(compressdev); +} + +static struct rte_pci_id pci_id_octtx_zipvf_table[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, + PCI_DEVICE_ID_OCTEONTX_ZIPVF), + }, + { + .device_id = 0 + }, +}; + +/** + * Structure that represents a PCI driver + */ +static struct rte_pci_driver octtx_zip_pmd = { + .id_table = pci_id_octtx_zipvf_table, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .probe = zip_pci_probe, + .remove = zip_pci_remove, +}; + +RTE_PMD_REGISTER_PCI(COMPRESSDEV_NAME_ZIP_PMD, octtx_zip_pmd); +RTE_PMD_REGISTER_PCI_TABLE(COMPRESSDEV_NAME_ZIP_PMD, pci_id_octtx_zipvf_table); + +RTE_INIT(octtx_zip_init_log); + +static void +octtx_zip_init_log(void) +{ + octtx_zip_logtype_driver = rte_log_register("pmd.compress.octeontx"); + if (octtx_zip_logtype_driver >= 0) + rte_log_set_level(octtx_zip_logtype_driver, RTE_LOG_INFO); +} + diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map new file mode 100644 index 000000000..ad6e191e4 --- /dev/null +++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map @@ -0,0 +1,3 @@ +DPDK_18.08 { + local: *; +}; diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 1590838ab..b02cdfba5 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -222,6 +222,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto endif # CONFIG_RTE_LIBRTE_CRYPTODEV ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += -lrte_pmd_octeontx_zip _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal # Link QAT driver if it has not been linked yet From patchwork Fri Jul 20 19:04:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43243 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8442E2C38; Fri, 20 Jul 2018 20:42:48 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0072.outbound.protection.outlook.com [104.47.36.72]) by dpdk.org (Postfix) with ESMTP id 951E62C36 for ; Fri, 20 Jul 2018 20:42:47 +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=goafOMky+5yJ2q4rYsfpd2ld6xHT0U4nGlZvi67iA0M=; b=dApAQH/htfY6thF8trn3Oovtkf15awual49WtJnZ24Y4ahN8oQcRYVIAwNMBgoSzv5LAkK7DiLC4lHpLSiAtW8ddr1iGZDepwq86bfjJ1rGIMCtKBtH8i5RJl8GnY9NtyKDT/bcDILKNb8jN9NrYmFCC1eI1LazOw1L7F7t2sgc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:44 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Sat, 21 Jul 2018 00:34:43 +0530 Message-Id: <20180720190447.7979-3-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eaa6d94d-1047-4549-4085-08d5ee7095c9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:Yrr1H6buJvA/ghJuz/36fIRiXaSuovD+FT8tUEPxxWChKOkY1C0BzMPWUzjP1vniS1u2w7HRVixY0yGXK4fKfn1+P4ywVeLKJY81ActEULBAUxrvNg5oGoRWhSyuoysXdNOOMt+zqltPFQWWJzNSO+8QfXQwREN8Oea0FcvxW56CJF4p+/xF6Bwlo3Ly1WbiVU/63/z+oWcQve8duErsFUHBHFENk66QtGQ3ItW1DuKo7hchToY3go0RhpSs3oVt; 25:vz0gXZ2Qyib+9/jFqTz4K4KuB/Yscayd1fjDuk2mKoqvjKVQsjx/gkTfnbCLZz1frzwKYKQDQ6gjkhhvjP0g4FvjdsqOQcerHa3xK53C4pSx0pclJXsSD0h2lTcwYiyerEh6uRzliRQa8EERl0vUnxupRxPnFitBmafGeFwRi3FWl5JvYepXIY1md6tQ1KlnDfLjYv/1DLhrUVf2rX6dfoLSlc54W9/cUFdmT366q7Jty6L8AkqwfwxmpFn4PxJSHME5fIJhj8oSrd466oB4O8mCiVPvkZHBeGr7R8K0GBhSX+CEfNh2vtjcvDUW4WPDo/Ve3inap2xh4G9MkJ4Omw==; 31:cBQZeqY6fgqoS7D+dqttnO21RDwAE/LUah6FiM4/2KcIsrZ7kHXm45YQnjFQpnCPBvg7ixMalt1aLhs/WEYk7Xfy95qmuJ4vOqCotOqITTf8C5cPrWO6Q59EO20S+8+JRlUz31AyLFUdGk70/MRh8jbx5rjuK1hrTJE52yxTVsHhaU8G84tpEv0dJ6JEPA/VNn4/XaP6wI5fhzH9T8T+zBJJSak7BCfCyegQFOmvM+g= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:4n4aVY/h6uwLYjlUgUvIYTJ23Hzn0BAO3NsCdAl018qL38YEbkyWjplL9/topD3bNgkiqWFsZWiKVg906iAf4Xm3Q0eoybrU7xycJfVcPvwaLnqZfKcz2iLqDJdU95ix+jshZetbMrQA5+8091eCP5NGGGZblVrkKsRD1ZODQ6za8WNqygxLXU5JoZzIEEUg1tIhapqHV8AJIOM26By525ZxG1fhPMhKWg94tVVp6l9YTnVeQs0m2vBcTve0tGW8yv6dP8JdV1fwxli6yrAqtP9oOLsNqh5Rpg3aqeSUseMO+gjyKLkitYdV6146yA4Iw/dNG6NMbuiKOvhLr80rAr8TgTgT86CGwKawv8Csm4sDTeGuw4K/dBvQf6ke0aI0DHRXCvzH43bvy9/t1u9/iSwdJIcJIaN8VR6VHyr2NfuzqBlBl2kz9zobEqm5oZBpozdpQ5gVu8fiAU59kfRIdqX3MlWhPEfeXHAZ/3enDfypZdvnuDUGMqMEO0N7j2nZD7jixgW+eJk/2OR266B+4pQIKz27Ocfxcj8+9onP0HZkdsHcXPLRnwNW5Yy+O2OMrQez6rmFCUq1Ee79VvMgFocutH4PAb12FJuX+bYt87s=; 4:q0QS8TpR0ruY93IY5utwr00t/ZuC48ZkEVDDoNg1TGeTWUsXyR+nU7A2mHc9Vh5Q+vlXmb0ZHkISHuOtI5lHc3gHRnv8cdV/nTSlySCUJmGm6g2FErsK95tapo3xvVJWRbVV/EJz3lvwmb5xMaR8vRS5PoV9sSxWd31BkECxt0rwdcNdkzfnXtyTJAyBfWccU5YNLNWi3oiKFEkwxkg1nMqgKGrLDWtKDPLmd6+vjZGeGiKvPnES2zA/fxJCgMV6nwDjP2XEFXi+lGIAmtwyWQ== 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)(3231311)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(14444005)(5660300001)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:iclbWHRdRl6PYDNnVC/Cfg78bdyfdC8UktRAweaKX?= sZM8tCpelK8ED6IC1N/ADu1CIIHCNcSEU522wCTelc9kr9aRDEXnwam1IWzSbFH15Qa1B9SpYNAXUxg+kjjP9tEsxbWl/3n0x3Gd96915sl6XgChfUfCfG3CAHLC5kY1w4pCTn13LYntb3O3JRZsEPXQFmCNYqJ6H8xPOkboQ5OEvnIZh8EiS5pQIOMj39BrKgCpiuE606qZjxSyUPS1DDwb3ONE5yK6dc6G8oWrRPIn+Im88cK1fK3Ld6rKWuYEz0KgXlx6P6f3N3Nh+901f1Xei7kZhJ8tVaE1lrJZmVuzif0d/y3+ZiHxqV4bqDLY2/TJAUShHDakV04LSeKye0GZTWacOnwHaVXiiSm6ozTM+RI2OkbAt75mSCRIJQ+TozGYc3eCUP5y1zcquBAUcRZFAvPx+IKufw3KwTVFqgdXshn+kFClCyWWI/DUGjm+7IceY/63ZwRt9GSG2pgc1A4cslNNQMxya72Oa1nAGAzsfUMkm3brnrcbxFpmAVppX1+3z9QIo56Y0cnYZFKzoAek0bVPoqXng6vJ0MtDgFVjBcwDAcHcCenRR2Ubw3OYqrvbCUCfm2IBe3Vh2pDlkkhcrdNQejo133svajTD3NOH1vxr0XyJko4ePRR1u8+yg7qhBm4vaKMimjX+KNpG4eC6cck1tLrmi7FtgyzISvN1PQ/rvqW4CN6E8IrzbG59+sjvCip6hTXQS2GojOrt3YG+Y/LK+cQt6aXAW+a6Vh9+iAcd4CSmEZ5UeVG2p2hy+B1h71RDZ6gqGiFE8o7ln3DuiwoLd5EQpU+HENxjA9iv2P/aFkUE0gg/3B6H70VWWEQ/LLMXKvFMMM+LfVkiYvsa8aBNv+m59Zkp+8SUlUULprdqgPGYO7F96+FNx3Lqly8E4B/7HQEI6ctBxSsCzd6/VkbYLhWZuDLDVnpk3KMc9faZv1CYFHQpLwMgQNZ6XL2vjVtryxzhqMlakHpdyBx/NjWr/AJQXlFI5vvrmCJa14ER2vfGWExm0Ns9PmWTjNbD9vMe9/Im07P8ZN9M2Bp/ve1eV7IkltQmbR4Q+GMkLzhMgZS8HovC6oYhLWRXcAg0k6GaP/xteu7DfWeQ/jV+UqW8KfgvpR2HKr9XaTKhGKasqde+cHSe63LFpfI89CNRTGjEP5r4jhz5GJLRThiedlpq3TZpfS6RDDtZH7dKO7XcYR+AEArMqAzz0cHZGda+eQLYdGOIDdYPFLJZh2f/3vO5jsKz15OVneHDaJk5PvbiH+0oYBLjF1cJOH3+7NQ0WkC5QCO4BhcfJQU05t2dBfI0l9J43YwHDWSIEPuGw== X-Microsoft-Antispam-Message-Info: KtrsuMK/eRTZiSsyzv121ObESaYdeNAs1VcQUmBfC3i9x4mnsT+j9QV2ok2Q5x8y+iMAVCp65jcecq1yr8SW1sWL83X6LW4t+OWJ2opFhJ+tD0yT+hccRoqcgryMLM+Sp+CxJH/6ByUnBdbJU2X1UCt3cAAjxATabJl5iH8ga+wRzBnr8mXY7NbNpct8zSlGy5xZ4bqLfKxgrL6BLdt/tXNclVoZhQULVec9n4kgGxg6VZaMRmxli1GXQq1UfnqaE+GA5amfM/J5o2uq/gw6df711kuHYe5+DGkZ5+PEDcRKB8y7GCtoeGo0nX3oq07Da8IVxweEP5BlPpn9i/4FqUNZG8otTpmhaOM21W1+pS8= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:YirPTZeUvRKYl8FfVZ39S5CNwlk8QJSJ4ApnosY455d21YSvhWLKQdCj8dk1xiQ6oo/Xiv4M0EeaDISZ+s2ITzS7qM8Ay8ZpnA5BNIs9W1JXhy5QH6I2vm0WZ86w5y1XQmaeIidOvKKVfRY3gxsLxnrvD4AOxq5KeD5F1A5mcWcQJXZ1jPuXtyZZTy+VfD+kbO05Ox1prka6BRhR5iXY/Y8M0udOeihJ4BBCm96nxbnu5SemMUfdpdZXn5E/Y31yQL4zSWEIlWc+xm44NHjZpLznqk3nwOZejz0IT9qD+D0ff5KsTTrvQJLfCmuWzQ2h3kzAtddISBquIfCPQhUcQ7wgnADNOaDk2Nf8wr2xl4s5EmhiEoth/AHFh4VTkxaYD4l/fovTKXIGB8cgcpENh65PY8drIuDWetYuUd486LGdIx5rqauXxoPswZGpw55UjVsN+4CZ43JvbDJ4EB5TGQ==; 5:iyVnkczGEDPb7wWGFXkbI1gLuqL4hVnacINLZAP1PeJ3yUg5q6rp9VsG2GWwxNfWDU9fXckBnfjQz4ug3GWaHTpnLj8zwg6xJkU/gnSfTaEgUmNCcH/NJmtqG1JCGw4InAb+F3psddWVPAu0U4Z8LwTRfDN3crXeP/SrFIJ1ETs=; 7:c9f4cwMDGrhDS4mLL2ZqYuozQfrh6+XYKvfzjORRDV7Lw88wD6iTeYUBxiaDTmR+v1LZ3BqECBn1cvOQQ6vYSyqs4NcJYZzw1GRihAdhShfxufRl7e7rQfB/cH5cvTpSucIwA2hZiGTNEZgH/BoFqlrR411ndowtO1jDJOPz5+LQNobDGkqEgHwHZnD3ieCNXD0HG9S3p9dM5u3eQa3t8ksH6EL2Eq7CG/k9kBIiiHDarkt6X9szfODoEw7QczNK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:44.0785 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eaa6d94d-1047-4549-4085-08d5ee7095c9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 2/6] compress/octeontx: add device setup PMD 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" Add compression PMD device and queue pair setup ops. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.c | 71 +++++++++ drivers/compress/octeontx/otx_zip.h | 57 ++++++- drivers/compress/octeontx/otx_zip_pmd.c | 253 ++++++++++++++++++++++++++++++++ 3 files changed, 379 insertions(+), 2 deletions(-) diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c index 4a5591c97..255b095de 100644 --- a/drivers/compress/octeontx/otx_zip.c +++ b/drivers/compress/octeontx/otx_zip.c @@ -18,6 +18,77 @@ zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val) *(uint64_t *)(base + offset) = val; } +static void +zip_q_enable(struct zipvf_qp *qp) +{ + zip_vqx_ena_t que_ena; + + /*ZIP VFx command queue init*/ + que_ena.u = 0ull; + que_ena.s.ena = 1; + + zip_reg_write64(qp->vf->vbar0, ZIP_VQ_ENA, que_ena.u); + rte_wmb(); +} + +/* initialize given qp on zip device */ +int +zipvf_q_init(struct zipvf_qp *qp) +{ + zip_vqx_sbuf_addr_t que_sbuf_addr; + + uint64_t size; + void *cmdq_addr; + uint64_t iova; + struct zipvf_cmdq *cmdq = &qp->cmdq; + struct zip_vf *vf = qp->vf; + + /* allocate and setup instruction queue */ + size = ZIP_MAX_CMDQ_SIZE; + size = ZIP_ALIGN_ROUNDUP(size, ZIP_CMDQ_ALIGN); + + cmdq_addr = rte_zmalloc(qp->name, size, ZIP_CMDQ_ALIGN); + if (cmdq_addr == NULL) + return -1; + + cmdq->sw_head = (uint64_t *)cmdq_addr; + cmdq->va = (uint8_t *)cmdq_addr; + iova = rte_mem_virt2iova(cmdq_addr); + + cmdq->iova = iova; + + que_sbuf_addr.u = 0ull; + que_sbuf_addr.s.ptr = (cmdq->iova >> 7); + zip_reg_write64(vf->vbar0, ZIP_VQ_SBUF_ADDR, que_sbuf_addr.u); + + zip_q_enable(qp); + + memset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE); + rte_spinlock_init(&cmdq->qlock); + + return 0; +} + +int +zipvf_q_term(struct zipvf_qp *qp) +{ + struct zipvf_cmdq *cmdq = &qp->cmdq; + zip_vqx_ena_t que_ena; + struct zip_vf *vf = qp->vf; + + if (cmdq->va != NULL) { + memset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE); + rte_free(cmdq->va); + } + + /*Disabling the ZIP queue*/ + que_ena.u = 0ull; + zip_reg_write64(vf->vbar0, ZIP_VQ_ENA, que_ena.u); + + return 0; +} + + int zipvf_create(struct rte_compressdev *compressdev) { diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 8a58f31f8..1289919cb 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -77,8 +77,54 @@ int octtx_zip_logtype_driver; ZIP_PMD_LOG(INFO, fmt, ## args) #define ZIP_PMD_ERR(fmt, args...) \ ZIP_PMD_LOG(ERR, fmt, ## args) -#define ZIP_PMD_WARN(fmt, args...) \ - ZIP_PMD_LOG(WARNING, fmt, ## args) + +/* resources required to process stream */ +enum { + RES_BUF = 0, + CMD_BUF, + HASH_CTX_BUF, + DECOMP_CTX_BUF, + IN_DATA_BUF, + OUT_DATA_BUF, + HISTORY_DATA_BUF, + MAX_BUFS_PER_STREAM +} NUM_BUFS_PER_STREAM; + + +struct zipvf_qp; + + +/** + * ZIP instruction Queue + */ +struct zipvf_cmdq { + rte_spinlock_t qlock; + /* queue lock */ + uint64_t *sw_head; + /* pointer to start of 8-byte word length queue-head */ + uint8_t *va; + /* pointer to instruction queue virtual address */ + rte_iova_t iova; + /* iova addr of cmdq head*/ +}; + +/** + * ZIP device queue structure + */ +struct zipvf_qp { + struct zipvf_cmdq cmdq; + /* Hardware instruction queue structure */ + struct rte_ring *processed_pkts; + /* Ring for placing processed packets */ + struct rte_compressdev_stats qp_stats; + /* Queue pair statistics */ + uint16_t id; + /* Queue Pair Identifier */ + const char *name; + /* Unique Queue Pair Name */ + struct zip_vf *vf; + /* pointer to device, queue belongs to */ +} __rte_cache_aligned; /** * ZIP VF device structure. @@ -104,6 +150,13 @@ zipvf_create(struct rte_compressdev *compressdev); int zipvf_destroy(struct rte_compressdev *compressdev); +int +zipvf_q_init(struct zipvf_qp *qp); + +int +zipvf_q_term(struct zipvf_qp *qp); + + uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index b2cb115e0..f6285508a 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -11,8 +11,261 @@ #include "otx_zip.h" +static const struct rte_compressdev_capabilities + octtx_zip_pmd_capabilities[] = { + { .algo = RTE_COMP_ALGO_DEFLATE, + /* Deflate */ + .comp_feature_flags = RTE_COMP_FF_HUFFMAN_FIXED | + RTE_COMP_FF_HUFFMAN_DYNAMIC, + /* Non sharable Priv XFORM and Stateless */ + .window_size = { + .min = 1, + .max = 14, + .increment = 1 + /* size supported 2^1 to 2^14 */ + }, + }, + RTE_COMP_END_OF_CAPABILITIES_LIST() +}; + +/** Configure device */ +static int +zip_pmd_config(struct rte_compressdev *dev, + struct rte_compressdev_config *config) +{ + int nb_streams; + char res_pool[RTE_MEMZONE_NAMESIZE]; + struct zip_vf *vf; + struct rte_mempool *zip_buf_mp; + + if (!config || !dev) + return -EIO; + + vf = (struct zip_vf *)(dev->data->dev_private); + + /* create pool with maximum numbers of resources + * required by streams + */ + + /* use common pool for non-shareable priv_xform and stream */ + nb_streams = config->max_nb_priv_xforms + config->max_nb_streams; + + snprintf(res_pool, RTE_MEMZONE_NAMESIZE, "octtx_zip_res_pool%u", + dev->data->dev_id); + + /** TBD Should we use the per core object cache for stream resources */ + zip_buf_mp = rte_mempool_create( + res_pool, + nb_streams * MAX_BUFS_PER_STREAM, + ZIP_BUF_SIZE, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + SOCKET_ID_ANY, + 0); + + if (zip_buf_mp == NULL) { + ZIP_PMD_ERR( + "Failed to create buf mempool octtx_zip_res_pool%u", + dev->data->dev_id); + return -1; + } + + vf->zip_mp = zip_buf_mp; + + return 0; +} + +/** Start device */ +static int +zip_pmd_start(__rte_unused struct rte_compressdev *dev) +{ + return 0; +} + +/** Stop device */ +static void +zip_pmd_stop(__rte_unused struct rte_compressdev *dev) +{ + +} + +/** Close device */ +static int +zip_pmd_close(struct rte_compressdev *dev) +{ + if (dev == NULL) + return -1; + + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + rte_mempool_free(vf->zip_mp); + + return 0; +} + +/** Get device statistics */ +static void +zip_pmd_stats_get(struct rte_compressdev *dev, + struct rte_compressdev_stats *stats) +{ + int qp_id; + + for (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) { + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + + stats->enqueued_count += qp->qp_stats.enqueued_count; + stats->dequeued_count += qp->qp_stats.dequeued_count; + + stats->enqueue_err_count += qp->qp_stats.enqueue_err_count; + stats->dequeue_err_count += qp->qp_stats.dequeue_err_count; + } +} + +/** Reset device statistics */ +static void +zip_pmd_stats_reset(struct rte_compressdev *dev) +{ + int qp_id; + + for (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) { + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + } +} + +/** Get device info */ +static void +zip_pmd_info_get(struct rte_compressdev *dev, + struct rte_compressdev_info *dev_info) +{ + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + + if (dev_info != NULL) { + dev_info->driver_name = dev->device->driver->name; + dev_info->feature_flags = dev->feature_flags; + dev_info->capabilities = octtx_zip_pmd_capabilities; + dev_info->max_nb_queue_pairs = vf->max_nb_queue_pairs; + } +} + +/** Release queue pair */ +static int +zip_pmd_qp_release(struct rte_compressdev *dev, uint16_t qp_id) +{ + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp != NULL) { + zipvf_q_term(qp); + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + + rte_free(qp); + dev->data->queue_pairs[qp_id] = NULL; + } + return 0; +} + +/** Create a ring to place process packets on */ +static struct rte_ring * +zip_pmd_qp_create_processed_pkts_ring(struct zipvf_qp *qp, + unsigned int ring_size, int socket_id) +{ + struct rte_ring *r; + + r = rte_ring_lookup(qp->name); + if (r) { + if (rte_ring_get_size(r) >= ring_size) { + ZIP_PMD_INFO("Reusing existing ring %s for processed" + " packets", qp->name); + return r; + } + + ZIP_PMD_ERR("Unable to reuse existing ring %s for processed" + " packets", qp->name); + return NULL; + } + + return rte_ring_create(qp->name, ring_size, socket_id, + RING_F_EXACT_SZ); +} + +/** Setup a queue pair */ +static int +zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, + uint32_t max_inflight_ops, int socket_id) +{ + struct zipvf_qp *qp = NULL; + struct zip_vf *vf; + char *name; + int ret; + + if (!dev) + return -1; + + vf = (struct zip_vf *) (dev->data->dev_private); + + /* Free memory prior to re-allocation if needed. */ + if (dev->data->queue_pairs[qp_id] != NULL) { + ZIP_PMD_INFO("Using existing queue pair %d ", qp_id); + return 0; + } + + name = rte_malloc(NULL, RTE_COMPRESSDEV_NAME_MAX_LEN, 0); + snprintf(name, RTE_COMPRESSDEV_NAME_MAX_LEN, + "zip_pmd_%u_qp_%u", + dev->data->dev_id, qp_id); + + /* Allocate the queue pair data structure. */ + qp = rte_zmalloc_socket(name, sizeof(*qp), + RTE_CACHE_LINE_SIZE, socket_id); + if (qp == NULL) + return (-ENOMEM); + + qp->name = name; + + /* Create completion queue upto max_inflight_ops */ + qp->processed_pkts = zip_pmd_qp_create_processed_pkts_ring(qp, + max_inflight_ops, socket_id); + if (qp->processed_pkts == NULL) + goto qp_setup_cleanup; + + qp->id = qp_id; + qp->vf = vf; + + ret = zipvf_q_init(qp); + if (ret < 0) + goto qp_setup_cleanup; + + dev->data->queue_pairs[qp_id] = qp; + + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + return 0; + +qp_setup_cleanup: + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + if (qp) + rte_free(qp); + return -1; +} + struct rte_compressdev_ops octtx_zip_pmd_ops = { + .dev_configure = zip_pmd_config, + .dev_start = zip_pmd_start, + .dev_stop = zip_pmd_stop, + .dev_close = zip_pmd_close, + + .stats_get = zip_pmd_stats_get, + .stats_reset = zip_pmd_stats_reset, + + .dev_infos_get = zip_pmd_info_get, + .queue_pair_setup = zip_pmd_qp_setup, + .queue_pair_release = zip_pmd_qp_release, }; static int From patchwork Fri Jul 20 19:04:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43244 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ACD12322C; Fri, 20 Jul 2018 20:42:50 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0048.outbound.protection.outlook.com [104.47.36.48]) by dpdk.org (Postfix) with ESMTP id 9125C2E8F for ; Fri, 20 Jul 2018 20:42:49 +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=MltprBlNvLQeMJNXZ73/TWhC0W8cMHpBLi4HdmxKVdc=; b=Gt4vA01iAq8kKWJH71rFWGVXXDiYoFtK3zo+iMdor7ypn6tiUlabzsVhYWM4LzX8Dv1MvF+4vm3V04UR3wp5YpdiDvFb09FLMsBhQFq3iCbhyI7SQAYm5ZjM3pjTAJFh2k/1VUoVkNy63KiikI1mD3BQh1PKfHur0TOMo2A6nT0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:46 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Sat, 21 Jul 2018 00:34:44 +0530 Message-Id: <20180720190447.7979-4-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e5e8d01a-4a36-4281-4607-08d5ee709731 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:NF7mlEULvludUZuEJLNWtjrzyVpCp0c+oTIYSkQQNCNhh3yTG33TyGaqKEGnbwOdpEkw4t1A25jJ3AEhc0GNQ5uqA6d/ysxGEHE9XDwDi9y15/cs69SIU72j13eiJDO0vKWjxa0+za48PVpDqq1diwBeWctsxsHjlHVdnWjR7ln6ZM0JkzO9lgmJBMk1jhnuMjU/ULPhprW+jHAVwGlGF+n+E9OvnNH4tK/lWE7ALP2k0Ob78RqS51XZymiVZ3Av; 25:cSjTpiIrAuZdoxOAmYPrkJjrkvQdDPnxIRriR7KPjWO/tb6s2OHHVhci/9ZdTpEcgbbj4gQ+jB8kgZxDrzT9eT8boL1XpTrWuNe7n6Yt78uryS63jzPSoqoaHDh50xpOfAkHcFgHgfN3NEmbPD4lnL9nU7tLc3Uu61TLIboJzxJaeKcCes0j1ufeUWA+jk6QhIbg18Dk8OV3kY1Vtx39OTyk/ytFPqZRRAQ2p0W14xPpJ2dh9wMlPhL9zk6N298Hhu1sC/LRP5NCqmZIg/FiO43LKELMVeNlzAcvFNce3YT+bIbbqpJ0eDyOPhPPRNrejMfYeQLn1d7L4KEYa1gnNg==; 31:/365o9lu51Q//A1RrAPnBSteQy8c4y9pNwHm4nbBZHqmEAG0AzQdC3IFbypvUHNAhszgtFu3ENwuyQ/+M9fCp9dH5wpTzrjlr0aJ5pCn9fyJQePi+jGhyrH+aA8ctAlUVhmSQvlaOY7UpWOouykl+31VP7tZFN0GHB9+9iQdQGbW2HjyBBx7BPbn8LF1Fpp4OjSwhE9n0m+R4h0kG3a6YKSU4sa7OHnwvTmRaQDnsDw= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:LSfK+GwXpBa5zxQDogtLMggx7/YfMUUwyzhn9g7vRzvZbFsRddqQTCABFEiuyCY75Zp8x1sE0p/jY68iujaC2kBUVlMTEJNPSOvSzFHqVrvhEIq+DPSBMZFbjwHtbQ0Xr9NmPK+tDa89lK+wpnWVV5QSsWz3TCo/Ha0sovt11ty0O4CHH/An7HnbfwHCFYhLgLYSHoSeafZebwhEquh9BFaDYbwVxeHmEYYOsjcmvqGZiS2wxXzbvaEHoqxhIpbZfenvLZcI0PgouXF5T+EbXdyQyguIMmqEFAaAeFaR+KzmtsJeGMLPZcpfpjpPqf57l7LkHWfvatlJIJ6uHcMG/pjtba0powCxud3iZtCTFLB21fsRg1mpiYGr+2tFANPUMUWaYkplgRMKJrOkakcpMR0gl+5UB8C+WsGiuST1DEWlWEOCSfQ0HiuLFVbDppWvaggWwq8zKNW3XVstDHq8vuQT5WWMRaMXLSqbfj447aAHAP+Zu1+rRqqtrf3Y4J8anjmbwTCkzfsrGJ2kLUqUlxBYZZNCk5ekWFnkZ7BxSSJF4mQNU/XCOtmXMwB5zrakwIDeqxtaIzQClhqjyAFxDuaEVFvPFEgvHkfN2ZzahZk=; 4:OpQY821vvVBLcTnzNiU8yh7T1S59OXMhHmvZ70acifRoHNN4JAW0tyEEstSw7Wy8KRXEhul3UN+cVL/jmxq0bJNLmdH/QxWDw+HGKTJ1Ie7V1iyMEnrktP4TJFWwwCrspDCEGINkX04TP8sQnOt3NQIfwiYanuT8mvl4Nrq7nbf4KA8DXhY2lmY15XUS48oaLL/B6oqb/chNEt//3051nN1iqqN2Xj839MauwEsZW3rFH7ljAplX9WIMXQQRdQF2YipgvPJ7lZ2kAn2/UXBIj2lZdAuEMIazhvWg+0JnEEWnNWQhpEq5xBb2wjro2bqw 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)(3231311)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(14444005)(5660300001)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:pnFT2LpcOvPvtF4mL+IzDRHJDTJZgtSjWHz4HTEHK?= frQy4RjkaQZtR4LX2AAwWRN3PiU4/OpiYdz6vQCNFrgfPKojf5rjCi1riSUrF5hf6zli6W+lqygAGsegeA+etIRCkMduyohMPx8F3d6/ljsXtzG/dDB3odvBcx5jKekmOmW10TK2Gt8eYPX7p1l0BnnMdPc/Hm6KNZ8MLn/JxxzVFBh+kuzZ3FAjvTUtbLyf4TY5xv0sKuhCd8gvADCb1ENMNvuBJCr3CHnrb2I+Z9dVm36nQafynTMACVnpj/bs3DP/OoYFSHmPz5lm9xWnu3FcEJjzsJWJ4y0MGpYl5Mdmb5ptGgTeKQRNdFjo9fX9lZLGv1fZJ2VGyuJIlFscarCCUNa5AQNvAQVU0HKwNRl89T/5OHOsSBq1PlCfoAasZpnRKQtMzbYGGNFi49Ahs65rNUoDMG5/2YunD15LaY4WKU0Xas8L09idat8NaCqrQ78Z+QIifo+AHELplGrvJ3ZIbvLd3igxcboQmWAbd9lAGT00B/O5qzsIu7mJlZunL2OOBu6k/MInIDxuh26Qb5PdtoyxC/Qrt9hhKrAn/LUjSMqYTPzvxLU3p6kwfT4pcvDnkbpw4CEY3G1WSWM+fUFeVJpWMa3TEG5GAu/iyfM6HrSvc8lDzpQfjW0U7l79rfamY4Ppzu5BTGFGCONa/v4xMEdDSID6q2FFG2mq9vqE1VmbbjqHzyLnqQPAm6TAoYkdQHXyWuFJivFkk9s8BltdReR6w8TB7VzgfftuprkrHy1zGxzyBmju0j94UPuEP76GeKGD2gH2xUaO8jNaClOI2QmN+x78L3XRIfpH4C7WZGT0+usUkK2TBTMEGZ9ty2bUpSDAKFm3hAetOtPwbZgukYZVJHnkjaertw5HC+n//hjh5j7N55R3q62Nqu4Z1NJC9opijBlvg7PH2I5rPQ+VjFipgaZ1ZInDkl9a9kkOKhu/2xpvV6Wc0kVhR+UwtFlL2X2nAAcguVnXUKG3s5NzYEL0T/Pyc0chv8j8J5+T4M5CGII0JAxjB73gpoAPYhUVaTPvT6DAn/27Y5NpCx0vBWL1L0Aqv+JTLIESGYB7MnNY7vT4wJhP34Ofyoq/KQsul02UgJvLx3XLGqyqYLUMDhgl0z0cU6/G7yAYfrepdZcmC0iQvJCexPMNytQnjFOEZUuL1mfsD3x2dHncJBtn8iCAzRDmPgan3pku+WYJ+CuHqstYekuz0strdN6fEuuLB5wf42gvZBrwC7cEwQ0e23F754N+SRmBSApkh1xUSLhygOTPENdD7xvA5joMF+lavwxl17lWYEutBCMsIAsAaac7Y5B2wv3UqsqMB8Jhg== X-Microsoft-Antispam-Message-Info: +SRuuLfBx9pqnPs4IP6pEAWH0QZsoLJ4X2BY9Jo2K1VnRY5FR7CDHf2MN3EnRMAYgJRQZqPnlbMbYM7jVflj0l2Mdc6tTMz0Qve1OekDU0U6dzZlNZ0U08AKwqG+//7mVi2zQ1R2kMB+sW/Pr8K1AG8vO2u/BxrAuf62beITqFmoM64HyZFxEk/mbL++qEo3IyOkpJLUO6p5KN1wcpvzG9oFUPEd4H+UBjJTJDRn46bqu0yMTgqcLIAL0GqLSXQV09WRS4G2hLEb7A13EyU5KdlZZuvftYbK/CJ7DQ7krV+wwrWdKhnPPeQg0Vgqu8AAiiZ6izfMMVquPl/BgqdiYjUhSt0T0UWGnyOYjZMeg5A= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:MnWeMmyVfBxn/1jQRCURCre+JtEYV6GUxUb87LP5MYWimNpakCB6SL+wiiFF1593VBm+7raco70fWneQDC9q4twQxi82/5E3WHZNNupcv0P4upaOhGTSWf1nfxds3hlf2im8k/+nVcPK+X9fy8eCvcfC/0Q8PhSwwHz96cluFGtEP3h+SQdpp8FsnkJBh7kCTBMvs4+tNc628onhomzaOkCDc8CLL071TO/5TVIEivTYDSvk9aGa1recfVmBt3TjM0+iZ07maf3tINiNOge0PAyiwqKQE+O5PUZdDPU69vmz3NTj501GaNaF5N/v7BDV6PGcZsGR17M3cdgQByWexQodH72IrMSn3H5At9jvwxc2GCJ0wZxiPDYATR+Gu1erBIQsmCEYb1aG0vOsbsZj9z7rF+hWGeUjsbWCR0cl3yGuviP1IfxHx4s93eSke1ph9D2MxXhRsFSIhzGffsLEaA==; 5:CTcr+84zvXmSruBZq3s4PYMPc4vzCS0kOtg92ZD9kJ6WiFmpd9q0McK4Hi6e40bi5YbmKY8jyIZwLPoONBglbrigRei/39iTiHuMCDPgweG1bLZNPKXEuyIhqfdY/kLLc3MVKaae3aR+8Zf9FMhLp/0EeZCYL7iQbiFx2bPBjwA=; 7:85KApPbgeZVemHNLl61jEjXQQgnDL6MZ7xa1ZrmAHEbpl2ADsNq8mV2RQu/6IPplxrwPLYmp+toSAWf5JRKkpgpTcyr7OW6us3BhUl/Gjn4wdc1YyQ+KoTZT2AgpvnuAjr7yggcKHRrbe8xolEsn5A9zY8xubaEMhBlonB4xz/JNHyOrrZb5nc/J2jnBqZ69NNt1X0W+3dnbEtmxqYTRW/7ITtSXebikX4qkQaVxIoaW5rElIJnlHjRBZqFbbKQe SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:46.4379 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e5e8d01a-4a36-4281-4607-08d5ee709731 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 3/6] compress/octeontx: add xform and stream create 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" implement non-shareable private xform for applications to initiate stateless Compression/decompression. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.h | 19 +++- drivers/compress/octeontx/otx_zip_pmd.c | 149 ++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 1289919cb..3fcd86a86 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -90,9 +90,24 @@ enum { MAX_BUFS_PER_STREAM } NUM_BUFS_PER_STREAM; - +struct zip_stream; struct zipvf_qp; +/* Algorithm handler function prototype */ +typedef int (*comp_func_t)(struct rte_comp_op *op, + struct zipvf_qp *qp, struct zip_stream *zstrm); + +/** + * ZIP private stream structure + */ +struct zip_stream { + union zip_inst_s *inst; + /* zip instruction pointer */ + comp_func_t func; + /* function to process comp operation */ + void *bufs[MAX_BUFS_PER_STREAM]; +} _rte_cache_aligned; + /** * ZIP instruction Queue @@ -156,6 +171,8 @@ zipvf_q_init(struct zipvf_qp *qp); int zipvf_q_term(struct zipvf_qp *qp); +int +zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd); uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index f6285508a..fac547920 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -28,6 +28,103 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/** Parse xform parameters and setup a stream */ +static int +zip_set_stream_parameters(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + struct zip_stream *z_stream) +{ + int ret; + union zip_inst_s *inst; + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + void *res; + + /* Allocate resources required by a stream */ + ret = rte_mempool_get_bulk(vf->zip_mp, + z_stream->bufs, MAX_BUFS_PER_STREAM); + if (ret < 0) + return -1; + + /* get one command buffer from pool and set up */ + inst = (union zip_inst_s *)z_stream->bufs[CMD_BUF]; + res = z_stream->bufs[RES_BUF]; + + memset(inst->u, 0, sizeof(inst->u)); + + /* set bf for only first ops of stream */ + inst->s.bf = 1; + + if (xform->type == RTE_COMP_COMPRESS) { + inst->s.op = ZIP_OP_E_COMP; + + switch (xform->compress.deflate.huffman) { + case RTE_COMP_HUFFMAN_DEFAULT: + inst->s.cc = ZIP_CC_DEFAULT; + break; + case RTE_COMP_HUFFMAN_FIXED: + inst->s.cc = ZIP_CC_FIXED_HUFF; + break; + case RTE_COMP_HUFFMAN_DYNAMIC: + inst->s.cc = ZIP_CC_DYN_HUFF; + break; + default: + ret = -1; + goto err; + } + + switch (xform->compress.level) { + case RTE_COMP_LEVEL_MIN: + inst->s.ss = ZIP_COMP_E_LEVEL_MIN; + break; + case RTE_COMP_LEVEL_MAX: + inst->s.ss = ZIP_COMP_E_LEVEL_MAX; + break; + case RTE_COMP_LEVEL_NONE: + ZIP_PMD_ERR("Compression level not supported"); + ret = -1; + goto err; + default: + /* for any value between min and max , choose + * PMD default. + */ + inst->s.ss = ZIP_COMP_E_LEVEL_MED; /** PMD default **/ + break; + } + } else if (xform->type == RTE_COMP_DECOMPRESS) { + inst->s.op = ZIP_OP_E_DECOMP; + /* from HRM, + * For DEFLATE decompression, [CC] must be 0x0. + * For decompression, [SS] must be 0x0 + */ + inst->s.cc = 0; + /* Speed bit should not be set for decompression */ + inst->s.ss = 0; + /* decompression context is supported only for STATEFUL + * operations. Currently we support STATELESS ONLY so + * skip setting of ctx pointer + */ + + } else { + ZIP_PMD_ERR("\nxform type not supported"); + ret = -1; + goto err; + } + + inst->s.res_ptr_addr.s.addr = rte_mempool_virt2iova(res); + inst->s.res_ptr_ctl.s.length = 0; + + z_stream->inst = inst; + + return 0; + +err: + rte_mempool_put_bulk(vf->zip_mp, + (void *)&(z_stream->bufs[0]), + MAX_BUFS_PER_STREAM); + + return ret; +} + /** Configure device */ static int zip_pmd_config(struct rte_compressdev *dev, @@ -253,6 +350,53 @@ zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, return -1; } +static int +zip_pmd_stream_create(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, void **stream) +{ + int ret; + struct zip_stream *strm = NULL; + + strm = rte_malloc(NULL, + sizeof(struct zip_stream), 0); + + if (strm == NULL) + return (-ENOMEM); + + ret = zip_set_stream_parameters(dev, xform, strm); + if (ret < 0) { + ZIP_PMD_ERR("failed configure xform parameters"); + rte_free(strm); + return ret; + } + *stream = strm; + return 0; +} + +static int +zip_pmd_stream_free(struct rte_compressdev *dev, void *stream) +{ + struct zip_vf *vf = (struct zip_vf *) (dev->data->dev_private); + struct zip_stream *z_stream; + + if (stream == NULL) + return 0; + + z_stream = (struct zip_stream *)stream; + + /* Free resources back to pool */ + rte_mempool_put_bulk(vf->zip_mp, + (void *)&(z_stream->bufs[0]), + MAX_BUFS_PER_STREAM); + + /* Zero out the whole structure */ + memset(stream, 0, sizeof(struct zip_stream)); + rte_free(stream); + + return 0; +} + + struct rte_compressdev_ops octtx_zip_pmd_ops = { .dev_configure = zip_pmd_config, .dev_start = zip_pmd_start, @@ -266,6 +410,11 @@ struct rte_compressdev_ops octtx_zip_pmd_ops = { .queue_pair_setup = zip_pmd_qp_setup, .queue_pair_release = zip_pmd_qp_release, + + .private_xform_create = zip_pmd_stream_create, + .private_xform_free = zip_pmd_stream_free, + .stream_create = NULL, + .stream_free = NULL }; static int From patchwork Fri Jul 20 19:04:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43245 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C261E2F7D; Fri, 20 Jul 2018 20:42:53 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0079.outbound.protection.outlook.com [104.47.36.79]) by dpdk.org (Postfix) with ESMTP id C41DC326D for ; Fri, 20 Jul 2018 20:42:51 +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=+LqiDkjJnsBCPSsTTC5yTOso7ZpcHzSsUJEkenUsXcQ=; b=dfHtLLE06P8Cs4EKiYWTGS63oVu8F+A49bjk7wRbrFs4Loap5ZU/sfzgtYDOKxbdvbNmCyJN34R4tzbfvdlGroU8LKcneD6c1G3NgO4hc2k0wOp0TpDiQGH7p/kg9yzKobUTYh4nD/bgZYqGqvP9eNa84KFrCf9bDEcigsB0awg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:48 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Sat, 21 Jul 2018 00:34:45 +0530 Message-Id: <20180720190447.7979-5-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f6722196-f9f0-47d2-4b88-08d5ee709899 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:Tlq1tG88SWHRqJankELc+c3H1OuuuPsL8dge/yJDAI6RQP7lLthkXJ/VwVt9JBEfjksUS9XB01wjpMYnlx1uNn0LVXtCJUa3QIxHgrS+d2TPurq72h7wMo0CnOabN+ms3XIKSr2mplaFfhfahrsTKyLFoV3WYVHkle2MdQiMTEZ/7dCSK0Zuqljw3lvrtbzsHBlJfI4qlp3Rei3+HFN5YdNNDmdKjlQvnArIGDSudP7pQOCu46LEq2cwlmy2Ifra; 25:sI8/+17jiIIzvhObMrr9PTkKMNpQGjYGekk9beahk6acimF5gvZ1ObvBBo4szJnzE5V/dNyPgpHYwqznogxu206KwNLgOb7Els/GcRHfgsAC+PYnzNQPUdW9uoorJnJ8UPnPn652YAiaw4s+4pmbikUD64jNM2lXvVIWaNLm5IwtzBP1h91pCKLNAzAH+mC9QVYqmzNWsdm21i03ln8V5Wy6q9+5VrZiEQVui/iWjLbh3RvyelQJTxs3Uuk2CZ8q3uBrh9R4Q58kzGB1kalu7llSXSAk9RAtNu7NkhZljPAAbAMwXl8FQC1lQ3WCT9bRo+xkdWxobIW/vpAQLUKSpQ==; 31:msU/aDQffWeRNPRw/8LxXHb52+o0z7bhFhGUKksgdcO0uDAGzVWekWjDiOk60/rBRaEDdWbaRoeXZAW6tf9wII3e9g7DD8dIgESBr7M/wNKdbD294Ytx3YKPKp1ZKX/m0fQUB8hu1ByUJWsbS2CK7jpaQOiK3oZSl9EGmsLr21JJkgmY8GqTGbdkMACYFZZiPStr6EL64plibOrbqH3hZ3bnI2ge36l8yMbJMvWfjow= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:3dByk2jzO4jYmMkSI8vnX/HSEVr1OFbv/XQUWGVZNnzEYnEwWb8GhGTHF+7cbSRxflro9hqQnPFgMWRu5ENSj0OWbFgmL/2EoLseeRmUjhj/QP4JSD1psjg7UFQfHSZufgfiSo8w18p7D4KBoQo0zBx0Msm3XHSqh9uLyHsL6nveUM8NRq8cy1xLQZr8dDqOi0E35muYBBhmZ/CL3IAcio+7XqIBHuFFkBHNw+xB1xQEy8RbfRONekQ0FBFkU1vwl04ismWjay+dCKMPOBJ1kbJmSu5+9sO5QEsWl2DJihUkKQ1GBASnnD6QOaHK9ZytoMToyGKE3XTP/s8axxiEOrfiE32YqsqUJwAxgVpTCFFr5BNTRhjxDTHAYZyCHtlXIW1xTfT5kqlcSsp+Untp/2fclOS3mgki0d7BO/bFGOQ9TeuUaCvJiVb4L6Mia0x5D6mbAf4fCjDPL2i60vCcKREmxanmfjJv+rHUFk5TeqFp1HTexI+SrlTiOJQG64eJRLtl6m/egCbxhcVimQknU2eCT0en3LiSUOyrD78LsQRlMJ0GIeR8K+jrqVwXEFcr2RXgV71ZvEyXjEj2G5W8Le3uKh58JADWa3pBAW3b7Hg=; 4:1dozBZ4y+oTQN2lNgOV5zYnt+xvykvRP0RUDCjfHEZ/o0bMMwgQX/TIkuKcyLsSYDzpWtuPtR6Ve00crgLeQE3vu4uhI5vDDRw2zi9T94R24gGJmRdLU6/p0vhm4h0N53iGxwuQxVqnRq6Mlxjoy644P56eecwJfs8mpKtanziNSJ9IDELExZLqXIBbizSzK1IfTP7IbPB6SUDmha4WSIptwclJpT0cTNuTkqA4Jl06ITo4Feordsh8XHkxJK65E6AaUb9KkcoDdl3zyo4hJOQ== 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)(3231311)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(14444005)(5660300001)(6666003)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:o/lNFdAuLInKui7VtcnNnPDzwsO86BnLZCBZHFEwf?= L/xDZ5cxGCANNw0DeMi3kAcsxj53n5Cxo6HjqcdfWrZpBf8PaHNQNGxrGkzequGk8MRPRqI9yetWXvKUqbxXsKWM/cv0IyTRBeRd47HB0swMpLpQ6P5vDfKC7dP4LkrY00pfdSGmXG1+O0RFbasH1f56lnpwVXYB7G5KG+fmYbVRXl1eWjyeR8YuumOpitFtoGPRST4MYKqRyd+QHtfwKW1U/ZG4afrEfgq/w2eajBTY8ZfLKEuxy72CSJ6wionGGbviz7AxylZ88iUagpwSeStesdXpF0/iQPvTgeF7p6XYDBN/jS09dhhk30YihLMyqDSZNzmxsUo5rZzXnZE6qexRzyO2JdOGAr4O8aIav2mr9gJQn+vG1Vg1Mzn9hCSI2wZT7WRc+wPpoxtdxKF2F2FmRKnmhtIG3kUod1mQvyFQkR7WwRivT/1zh1MMz9gORKLEy1znGNKgd/KdVYvbA3jXaTCevjpqBlDxlnn4anwtZOEqlM5Do6PKG8hPS2g718AXfsXK/zL4Sc3+WDTtBNMwnFc1bWMuDAlxGKCopfhhRpyS2tL1ff5nvxMT5Xj7OzJ86um2OEapSmSf0z9OedV60dx0SJAHmZ8AxVxsLUUrAmqpfS5Lg8fEZ3O7sVrxkHJmbBFxB4wphlr0hKbEISv40xGA2MnYW37QoizPEqZixrS1BA65ia37z+HSkgec/fkZsiJ586HS9UF+uKp1N7tOP8kHMh29pGm3NfXrLyRseFbqcAdTuEhBkzL116Te89QFI93ZsNXAsZtChDf08HL1nhFTutDwxlf5AStY5xtoelniKVUY8muhN/3Dxri9YmYEjaJ9z2XANVeIv34+nxlU/pgVLSk282HDIIOeH+cezRnBoNa1zO/FjHeW7emk7nWFtxFUQ+dWF0dAeOt1Kj1tKUj0vLIoKo4WxSvW3gY5xEYayMLTLEwr33K2D9I4aD/BM3dxWVBb0gNCtI6Ul/drGCaUIo6i9Y69VSiJO52NA3apTdjicJjdiZVt0XOfRCSDXXiBGpi6lw3kb69ZBb//idDd2m+ekYxhoy68jcA78FUkobHeovqvXRrfSEg9vrlQOL/JgOGYRoxZ1A0kRH7XFFl8Lwea7/PpBseqbC8RpL/6WHneq4pQzFW9iAu5IJIv22VYdnNd12dor+chMtI1q7qnzbXdSvj26OmME77EY+AgawcTr/S9CbqUtyWldeucU/r7Jkny2VWXnshJyFSyKev7ixHXxba6W4DP/ZxM0V/hCBQrLYkt7kRnA73WhBONBQgfcsg/nDfZA0KuCk7v151EkXHYJdcCNWTg58U1toXcwuRaBugy2mZR3I3FqI= X-Microsoft-Antispam-Message-Info: BC5P1vCIv8fiWEK48zYM748uLTTi5Cu9X49NTOuTeK4zVEjkWbztjg4oOaAv3/RzfYiN2b0r42iflaBo2ZyC95KjAgvW1AVugfLg40uLc6DJkperCJwi6XjGJ7YlRdHHocpyERP3sKfFHFfTA95pCW9PtfL0FXwohaO3GIoeW5Qw/YmX+PIXbwoR6Rn9PX9oEvWRendsrckFCAup/3Va3V+RNz3yw1FzW5j3NloP6PLb8mjIDhxlje0FJz2OXf2iwcDrVTCPbuXKVkL6S5PN0JQttaAqgfN03C2pfUDahUMmcYe/MelTPhbOcoIPPb8V2M8OQjbhDAmXOai6Do6vUSWS/pYtYrMVqsXb2FDosNg= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:p0j4pHMuF9qbGQ7iRz3bFDJHGLTXTx+/I30DLmFQYqqY7iWmfAHsnW09YHoxXFNe+Mrkxs55YTMZBBSE5BCMNVbc6/eHNKNe1wvrgSJ/uh+EY1wqUw6D1UuOMZhhmA34rJpCM9KViO8GyMXN89uWt4JoCpvpakTheNMBfeQYEZFjzvi9j4uCrmMIVUImEn7e/CbVyADJuSjvUBU5pzIf8bF94SiWzYJ/7u2rSlgk9qm0KzElqxjcNi183/fPP+xX40x/P3rA97SGgrKUDlhIFV9xL/ooq28KAhlJIns4042uznbXC/ArtgMhmoFqHyzxCbwgQzt14UHsE/oJngt79/QqSxVDioK4ehgGkr9wHqOFd0JmWw+N0G0n/DjVEoGjic6rafbaQ0304IT2Ik76nX1Ebjeht9oCAGfSn3gFlWJ0gREV0H6XJaqy56A55domnGmIW2keDL2XqN0J0vbh5Q==; 5:wZbD7DSswF8Zn/dzTbDsA9xmUw7JwcOlo71dVOIcLe8AsKLe5aZyWUkKclzuZBjMjSXnMYAzeTntP0VS0msvOpejjqKAmLqrV+xTQ7WLP5JRhXoqVnaKw920ub4QMuHqFi9RadBsulFyAhJKo0Btr+08D+yfyx1ARAmCNEpdWVA=; 7:onSD6+J75RirVaz/fD+DD85UBLIC2Q6/QiWHnRnACB4XqhdnMj+Vj5cp5f2gaIRgo0KwKosAToxmcdYsf5WXqAkXUeyEoaYCW27CDM2qm7OzsctANnvGXSz/xV0S411D9rMIDQVWFu2P+see7TDP04wFoArGaeRpwHxiERpxoSkJyyFhn2o/RXFx7GNzf8x7sLxR/MFSxljQKMZIj4qN5lsbdk4IIKJxoBgpH1P21jmF3F7zZQFptspBtv28GqF6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:48.8129 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f6722196-f9f0-47d2-4b88-08d5ee709899 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 4/6] compress/octeontx: add ops enq deq apis 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" Add enqueue/dequeue APIs to perform compression/decompression operations Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.c | 49 +++++++++ drivers/compress/octeontx/otx_zip.h | 169 ++++++++++++++++++++++++++++++++ drivers/compress/octeontx/otx_zip_pmd.c | 119 ++++++++++++++++++++++ 3 files changed, 337 insertions(+) diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c index 255b095de..6499ddb86 100644 --- a/drivers/compress/octeontx/otx_zip.c +++ b/drivers/compress/octeontx/otx_zip.c @@ -89,6 +89,55 @@ zipvf_q_term(struct zipvf_qp *qp) } +int +zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *cmd) +{ + zip_quex_doorbell_t dbell; + union zip_nptr_s ncp; + uint64_t *ncb_ptr; + struct zipvf_cmdq *cmdq = &qp->cmdq; + void *reg_base = qp->vf->vbar0; + + /*Held queue lock*/ + rte_spinlock_lock(&(cmdq->qlock)); + + /* Check space availability in zip cmd queue */ + if ((((cmdq->sw_head - (uint64_t *)cmdq->va) * sizeof(uint64_t *)) + + ZIP_CMD_SIZE) == (ZIP_MAX_CMDQ_SIZE - ZIP_MAX_NCBP_SIZE)) { + /*Last buffer of the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + /* move pointer to next loc in unit of 64-bit word */ + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + + /* now, point the "Next-Chunk Buffer Ptr" to sw_head */ + ncb_ptr = cmdq->sw_head; + /* Pointing head again to cmdqueue base*/ + cmdq->sw_head = (uint64_t *)cmdq->va; + + ncp.u = 0ull; + ncp.s.addr = cmdq->iova; + *ncb_ptr = ncp.u; + } else { + /*Enough buffers available in the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + } + + rte_wmb(); + + /* Ringing ZIP VF doorbell */ + dbell.u = 0ull; + dbell.s.dbell_cnt = 1; + zip_reg_write64(reg_base, ZIP_VQ_DOORBELL, dbell.u); + + rte_spinlock_unlock(&(cmdq->qlock)); + return 0; +} + int zipvf_create(struct rte_compressdev *compressdev) { diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 3fcd86a86..73a99e624 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -159,6 +159,170 @@ struct zip_vf { /* pointer to pools */ } __rte_cache_aligned; + +static inline int +zipvf_prepare_in_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset, inlen; + union zip_zptr_s *sg_list = NULL; + struct rte_mbuf *m_src; + union zip_inst_s *inst = zstrm->inst; + rte_iova_t iova; + + inlen = op->src.length; + offset = op->src.offset; + m_src = op->m_src; + + if (m_src->nb_segs == 1) { + /* Prepare direct input data pointer */ + inst->s.dg = 0; + inst->s.inp_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_src, offset); + inst->s.inp_ptr_ctl.s.length = inlen; + return 0; + } + + ZIP_PMD_INFO("Input packet is segmented\n"); + + /* Packet is segmented, create gather buffer */ + inst->s.dg = 1; + iova = rte_mempool_virt2iova(zstrm->bufs[IN_DATA_BUF]); + if (iova & 0xF) { + /* Align it to 16 Byte address */ + iova = ZIP_ALIGN_ROUNDUP(iova, ZIP_SGPTR_ALIGN); + } + + inst->s.inp_ptr_addr.s.addr = iova; + inst->s.inp_ptr_ctl.s.length = (m_src->nb_segs < MAX_SG_LEN) ? + (m_src->nb_segs) : MAX_SG_LEN; + + sg_list = (union zip_zptr_s *)(zstrm->bufs[IN_DATA_BUF]); + + int i = 0; + rte_iova_t addr; + uint16_t len; + + while (i < inst->s.inp_ptr_ctl.s.length) { + addr = rte_pktmbuf_iova_offset(m_src, offset); + len = rte_pktmbuf_data_len(m_src); + if (len > inlen) + len = inlen; + sg_list[i].s.addr = addr; + sg_list[i].s.length = len; + i++; + inlen -= len; + m_src = m_src->next;//try offset += len instead + offset = 0; + } + return 0; +} + +static inline int +zipvf_prepare_out_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset; + union zip_zptr_s *sg_list = NULL; + struct rte_mbuf *m_dst; + union zip_inst_s *inst = zstrm->inst; + rte_iova_t iova; + + offset = op->src.offset; + m_dst = op->m_dst; + + if (m_dst->nb_segs == 1) { + /* Prepare direct input data pointer */ + inst->s.ds = 0; + inst->s.out_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_dst, offset); + inst->s.totaloutputlength = rte_pktmbuf_data_len(m_dst) - + op->dst.offset; + inst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength; + return 0; + } + + ZIP_PMD_INFO("output packet is segmented\n"); + + /* Packet is segmented, create gather buffer */ + inst->s.ds = 1; + iova = rte_mempool_virt2iova(zstrm->bufs[OUT_DATA_BUF]); + if (iova & 0xF) { + /* Align it to 16 Byte address */ + iova = ZIP_ALIGN_ROUNDUP(iova, ZIP_SGPTR_ALIGN); + } + + inst->s.out_ptr_addr.s.addr = iova; + inst->s.inp_ptr_ctl.s.length = (m_dst->nb_segs < MAX_SG_LEN) ? + (m_dst->nb_segs) : MAX_SG_LEN; + + sg_list = (union zip_zptr_s *)(zstrm->bufs[OUT_DATA_BUF]); + + int i = 0; + + while (i < inst->s.inp_ptr_ctl.s.length) { + sg_list[i].s.addr = rte_pktmbuf_iova_offset(m_dst, offset); + sg_list[i].s.length = rte_pktmbuf_data_len(m_dst); + inst->s.totaloutputlength += sg_list[i].s.length; + m_dst = m_dst->next;//try offset += len instead + offset = 0; + i++; + } + + return 0; +} + +static inline int +zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zip_stream *zstrm) +{ + union zip_inst_s *inst = zstrm->inst; + + /* set flush flag to always 1*/ + inst->s.ef = 1; + + if (inst->s.op == ZIP_OP_E_DECOMP) + inst->s.sf = 1; + else + inst->s.sf = 0; + + /* Set input checksum */ + inst->s.adlercrc32 = op->input_chksum; + + /* Prepare gather buffers if input packet is segmented */ + zipvf_prepare_in_buf(zstrm, op); + zipvf_prepare_out_buf(zstrm, op); + + return 0; +} + +#ifdef ZIP_DBG +static inline void +zip_dump_instruction(void *inst) +{ + union zip_inst_s *cmd83 = (union zip_inst_s *)inst; + printf("####### START ########\n"); + printf("doneint:%d totaloutputlength:%d\n", cmd83->s.doneint, + cmd83->s.totaloutputlength); + printf("exnum:%d iv:%d exbits:%d hmif:%d halg:%d\n", cmd83->s.exn, + cmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg); + printf("flush:%d speed:%d cc:%d\n", cmd83->s.sf, + cmd83->s.ss, cmd83->s.cc); + printf("eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\n", + cmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds, + cmd83->s.dg, cmd83->s.hg); + printf("historylength:%d adler32:%d\n", cmd83->s.historylength, + cmd83->s.adlercrc32); + printf("ctx_ptr.addr:0x%lx\n", cmd83->s.ctx_ptr_addr.s.addr); + printf("ctx_ptr.len:%d\n", cmd83->s.ctx_ptr_ctl.s.length); + printf("history_ptr.addr:0x%lx\n", cmd83->s.his_ptr_addr.s.addr); + printf("history_ptr.len:%d\n", cmd83->s.his_ptr_ctl.s.length); + printf("inp_ptr.addr:0x%lx\n", cmd83->s.inp_ptr_addr.s.addr); + printf("inp_ptr.len:%d\n", cmd83->s.inp_ptr_ctl.s.length); + printf("out_ptr.addr:0x%lx\n", cmd83->s.out_ptr_addr.s.addr); + printf("out_ptr.len:%d\n", cmd83->s.out_ptr_ctl.s.length); + printf("result_ptr.len:%d\n", cmd83->s.res_ptr_ctl.s.length); + printf("####### END ########\n"); +} +#endif + int zipvf_create(struct rte_compressdev *compressdev); @@ -174,6 +338,11 @@ zipvf_q_term(struct zipvf_qp *qp); int zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd); +int +zip_process_op(struct rte_comp_op *op, + struct zipvf_qp *qp, + struct zip_stream *zstrm); + uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index fac547920..a76c95117 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -28,6 +28,67 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/* + * Reset session to default state for next set of stateless operation + */ +static inline void +reset_stream(struct zip_stream *z_stream) +{ + union zip_inst_s *inst = (union zip_inst_s *)(z_stream->inst); + + inst->s.bf = 1; + inst->s.ef = 0; +} + +int +zip_process_op(struct rte_comp_op *op, + struct zipvf_qp *qp, + struct zip_stream *zstrm) +{ + int ret; + union zip_inst_s *inst = zstrm->inst; + volatile union zip_zres_s *zresult = NULL; + + zipvf_prepare_cmd_stateless(op, zstrm); + + zresult = (union zip_zres_s *)zstrm->bufs[RES_BUF]; + zresult->s.compcode = 0; + +#ifdef ZIP_DBG + zip_dump_instruction(inst); +#endif + + /* Submit zip command */ + ret = zipvf_push_command(qp, (void *)inst); + + /* Check and Process results in sync mode */ + do { + } while (!zresult->s.compcode); + + if (zresult->s.compcode == ZIP_COMP_E_SUCCESS) { + op->status = RTE_COMP_OP_STATUS_SUCCESS; + } else { + /* FATAL error cannot do anything */ + ZIP_PMD_ERR("operation failed with error code:%d\n", + zresult->s.compcode); + if (zresult->s.compcode == ZIP_COMP_E_DSTOP) + op->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + else + op->status = RTE_COMP_OP_STATUS_ERROR; + } + + ZIP_PMD_INFO("ret %d,written %d\n", ret, zresult->s.totalbyteswritten); + + op->produced = zresult->s.totalbyteswritten; + op->consumed = zresult->s.totalbytesread; + + if (zresult->s.ef == 1) + reset_stream(zstrm); + + zresult->s.compcode = 0; + return ret; +} + /** Parse xform parameters and setup a stream */ static int zip_set_stream_parameters(struct rte_compressdev *dev, @@ -114,6 +175,7 @@ zip_set_stream_parameters(struct rte_compressdev *dev, inst->s.res_ptr_ctl.s.length = 0; z_stream->inst = inst; + z_stream->func = zip_process_op; return 0; @@ -397,6 +459,61 @@ zip_pmd_stream_free(struct rte_compressdev *dev, void *stream) } +static uint16_t +zip_pmd_enqueue_burst_sync(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zipvf_qp *qp = queue_pair; + struct rte_comp_op *op; + struct zip_stream *zstrm; + int i, ret = -1; + uint16_t enqd = 0; + + for (i = 0; i < nb_ops; i++) { + + op = ops[i]; + + if (op->op_type == RTE_COMP_OP_STATEFUL) { + ret = -1; + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + } else { + /* process stateless ops */ + zstrm = (struct zip_stream *)op->private_xform; + ret = zstrm->func(op, qp, zstrm); + } + + /* Whatever is out of op, put it into completion queue with + * its status + */ + if (!ret) + ret = rte_ring_enqueue(qp->processed_pkts, (void *)op); + + if (unlikely(ret < 0)) { + /* increment count if failed to enqueue op*/ + qp->qp_stats.enqueue_err_count++; + } else { + qp->qp_stats.enqueued_count++; + enqd++; + } + } + return enqd; +} + +static uint16_t +zip_pmd_dequeue_burst_sync(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zipvf_qp *qp = queue_pair; + + unsigned int nb_dequeued = 0; + + nb_dequeued = rte_ring_dequeue_burst(qp->processed_pkts, + (void **)ops, nb_ops, NULL); + qp->qp_stats.dequeued_count += nb_dequeued; + + return nb_dequeued; +} + struct rte_compressdev_ops octtx_zip_pmd_ops = { .dev_configure = zip_pmd_config, .dev_start = zip_pmd_start, @@ -458,6 +575,8 @@ zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, compressdev->dev_ops = &octtx_zip_pmd_ops; /* register rx/tx burst functions for data path */ + compressdev->dequeue_burst = zip_pmd_dequeue_burst_sync; + compressdev->enqueue_burst = zip_pmd_enqueue_burst_sync; compressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED; return ret; } From patchwork Fri Jul 20 19:04:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43246 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CF6DF374E; Fri, 20 Jul 2018 20:42:56 +0200 (CEST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0058.outbound.protection.outlook.com [104.47.42.58]) by dpdk.org (Postfix) with ESMTP id 2C441326D for ; Fri, 20 Jul 2018 20:42:55 +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=JBxT8BNdTohJNQGYqTWcAajS0RG1aAa74QQQBcoj7QE=; b=RgPgCGgTjCNkgFg1jJddg6yLAPVrADuW9kChi52AhEr1d+u6gvGvhyrFAaKD0HVLth8D7BUT/zFjJU6emt9vD80IZvHGGSbdSMTiR2h4LSIhhuagqfou40RuyKziAuc47m2oFTI1L35pzbqk69NtmI7RQtaFxAYkzD4GnakJjRw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:51 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Sat, 21 Jul 2018 00:34:46 +0530 Message-Id: <20180720190447.7979-6-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bad2507a-5a1f-494f-50fc-08d5ee709a01 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:2I26rfucL5Ku/TRxCOUJVwhTeT0jVTFJ9+yfEq6Q6AOoTQ6MHTZQBxBn8As+w80BO+qyXUNA9borF/Yt7hC9qXaIY9TkLB6d0UBbsx6QQ77QJn2QFSZJKDctsMIW2gAmsLO6ZhON69kbIrCzJxfUKUKmnfdUHJL3o0xLoemerOjHeZ243B4gmh8w2uVBgIS4bzqXPvP6rUlI8XjEo80silkksVJTYdb8vKkerb2SxbcmchT7NwVGFbtA8YUug65s; 25:In+W4GkEF8WIvJ8nsgLkzJxlo9rGyqW+MsAOMa67+YCTeHqAJk+hyJCi2TCPZbrEwmFpuIuJeesdrz/Ooe118WsEtKtJ/wy0q5R9yy7iK9pZ779/At8lVcRdA4nBcP3QCzo/k8x8h9TTfzq6eYCF1Mse5oLyb1/+vDvw7c5edz/vbLJrnUU8r6uNin681keY3hlVwZ5MKqIY/E44GJop7kuzpSBXvJ5PERI+UFy4wtBykx6EiPclsPA5QiNjIbZUEzGpYZOn++wvdwqyng4zMUiWcE/f0eeL952ANNEpiKZWE/HRZrOKX40SlzExz53tRImymrbITueGtnfLRBFSpg==; 31:TMcohk4HPPbVOt6RFhqalJRvbhUH7XW6cVNvMV0AKWIyM2Maw6YLmIQD6Vzb/o9wN94sGzjt0IRtsCMtilGwZOgRzsJAzrun5mkBlYJva0sw2NtGzaxz24N8rbxA9NJ7hmZJzOnPJPboRxufZ8uiqwCDoECOVfWgtoxy7y7g1c3q0lmpNzF/KGCc7TXTv35YS7r3IwVDS+yyf61DbZ2D8DYXvCdg+c7sfNhlxjkfDIM= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:/VuHFfd8SFVfFEcw7PFUH9LUKudwfbZQNWv2giaAZbD+WntoQuGQnCII70xwOMfxFjdyjvgXVPll2RP9wYF80ljtgnss8qL657rhJlsWa0F7TmaNm8bEzrroSuMKW1nlDXRIJqQNAN3U1ERbiomZJ7HcRWRi8ZExOT3JWE/GTzfwSqni7sYl2RP9nALvL0Cjgota38WoXwnf1lL3NFWRGxpD4FavmoEnODlkvLsCmOn0B5toDlI96zB7GRlcQEItPcKKD/UOk9fcL9YjWOurUoRFRhRnnJQYoHhSP/0IvIyvnKa6GZ35hhO9pkn2rjWVmapnbEVQH4ibftwTT7UzZVyjWlxZZcrtf3YXIfG4ccbmylhz34KxMgrrpqJirkoDLH5JPzd5dJ9f0v9J2ou+1LSp2Zs79EkdXDhNeFnJ5jJKH+jD4yHHE3F3ve8stDQZraItyXvGExDabZVmtdFTqj6TIX6Kcwlky5RyS6/ZNuLBePakh74dPYs1u0/cXVy7KY1GGg4NLJlTqBenCihB0hsco6sLQ+Rczk/KUkQZnHmmTYmlVF07mM2Da/LyFpuvXYkuaTMs5DRV4vCcOGHW35Ex447ZGZ4hDAvtM5QYMFw=; 4:AC1cLwrt/J2teZdf/1o6DRIaHvtkhpqD2Cw2Ub4nR+0qhMzvtIXCCLGC9EdS5rLqOsZksrKwm6PvLYwVYcLcSg7w98KeDEP+60E3Qp5oE11nEbGMH5w+Mr5xmGtxDl9AkFvXltUU0eKgtmriKoNzshAjH3ysYNJiFkdZDmYofFK6B+zx+uqZrRdZFo3hhhd1hveOsRMUOdWjcYVOkQ/sB5vNxeERTwW5i1Ydg0JgOPJ45n2hpmgj742Ijtr/Ud8E+8vcbOOI4HtNzE0a9TmiBA== 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)(3231311)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(6306002)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(575784001)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(5660300001)(6666003)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:T+guRLvS8INiJ8nG6qoQg7oJ7WlA5GaNNOO9GCFM4?= 30Or+aGFPyHpzrwG5u0Fjf1PtSptlENzwMu5yL6OG/w0Kn8C18t4BDBKSmeaDaK2ziBLSHXa5O4ujVfmBoI1F4GQHNQJ/Fx4PW5fyUW8le+uCwmzYALX6NnwHqizfkxX1UvQjIe6mF1IB0MVPoNF21f4b33q1gwRmH1R0j1R7gLQ9i1sc/2FIc7Ct6XqCkzwoqhLSjn1gIcPWln+0xjXU/jTnZ8ydjF+hLTAB/Ko6kHA7pVXFEaiECvDo8ZUW98yYuZJSCh90o5+CUevAW1mpIQfEWkgshFDveDLXrGRmNszDkmBSb6CUBpzdTQOMQFtSf1mymCs269RUawwt48dwaMIrgtEl03EDihwN7sRqZ50TpsA0uy6xAjtaVYtGfnZhLLT7bR8smc0x0Gr/FAAuIrx5WG2tgY15XFy2WGzHupXRgkwpwc09C1bJ1PUN9D6UaPTEiMoA3St+7087crO1hrCaMUlAwqrwS14PYh7rGZPbT0qy981yI/mBguhlQEdj5xOIj/22GcZImzj0xLtZtrlxPCWwWGYM5id0m7jSlaIvL44bzTSHlPNgaZZAPHLwERDL1KbRRl/mjYR6d4GbWnkfXCcSNfR8AlA5pCRdBYLFlFIWWeT0wCV/U38TzsjIXYtepEQlBDvdl9dKXor+CNvZwKj0zfmA3mkoNT/L55NOFVu9+IoI6LIdJFIyG7B4hiiGKmqCm3bDiGjOJuZ5fEEL/bNzQI0EMWnMZfaA0Bok8zjHAPfSo4gzi22DRc0KH6ULK4LOQZl6w1GICdNzj/xyqfRQiy83eSXQDMJWIDKTO9LsmrKs+ElfZqJWqLx7McFtBjkwXqAX/vDy6Bjvi9Z1Vb1Gt204L9HNBR5JMlZB2FZotZ+U9wlfFhQOeQL5ZvPALgHs/Z3KxMDryVTtj6lmXr2n1S+Sy5oCubIl7p/iYjXJWIHyz4IjxmNUuyQD4Z86QT6v+u00OXZt4uSwzKvXS8MQMR+LgY1b8WDPbPU7UEIAYsBO2ZR6LtbgPovDXhaIjLEWqGEa2re1eFePjko8xGrcZJQc2TIAuKGIZI/lad07c2AqGky7x8gk5vmsLc9s8R0KNE9AD4TR/G+LI/eis5+loxAenBfhKT/7SZ7sAc0sPeOXbMBjvgNql71VgunS3h7L/uGqkIlcA3ZCzggNOTR1zWm5n6mGM4/u27rYHzl/51T4eyg8kUMep/B8ZvxxSmSXtmDjCE59tlJnRRNFG0fokKryueLfrvomfX5AlZBzfpB0bUW15ezj/+bjS1PxyQz6cs9dirxQ9BOYArKoREPztuwa47pYakK4z93V9qfqdH2HDQRfeCKcZ68wTPhem/Ct04ZomOjXV/rY9l X-Microsoft-Antispam-Message-Info: zdOwAoftebs5yEsYnYdn2YCNR/oWjGX4XLE7N7XiMsitpNCGGedyRBqZgfaerT8K90Q4IFT7RyimgsJeCjrErTv5Mp2y5P7lFfhPacjf6hfyvaZsxAmM81IQGgECOXa/UdtLnrCMeb4qfWo6fHB3tzlmdWTHqL54RvNH7iMFU9x+8bMaBocpQGOE9NOwd8zSkzG1Ukui3duEGPVjYM9gjcqg3LJkGJCydAgpmJS/mbuStlh4crGXBROyJ9Z5dUVX68FC+/Fzj2+24R288fBdIuLfhMpL5GJEC7XmqR5ZJ83akOIeWTDc24GfIrI9pmin5G4oxmgVaaKONPE4rcERqhLgfZSvr47ZTbRMwBmU2DA= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:t71liyq9c542AvA+nejHDiFgDPowWJ41pHSqtK0q1aD37853iPz1vNMwV6QxU+yatp5sqlH/xCv6oST6/4M6eXS/dvE1d9EVfcV47TB4C9qy5f7oVXeR9918X93WqOhJkMgTq/gFoW6yIpzRFBBY3vBpeuif4HBkD4psmYMy58s21bMXZW2wR/oD/nMMZCuh4Gq8OP3HqgbWFbyGi0tYXQLmUWwB13trKR+0uh92JCRTqOyThYQzP5zoCg25KQha1v4ONxfuVh+LT5xLj2pFwtgDJLlDKjQxqdrionrRVehyOkPkIxiEGYQRbFuw0UAOeHhFW3URvClHiBNhS7AVyu1ghh5pq5IQHkWdaNdgtFfOA7AcVaePWw8vfDbgZruA3IklwR8TRww8cgq200AP2z1VOY7jPTR0PT+DX0jvG1HAzz5X5bbSzPlIepK1l5/UUaG6KCzXYkvDkh0JA9tuXg==; 5:d/MBXvOWvMpz6qAswn7DDmtS9tpRgStVWc89h3UMS8I7w+TBuPKsewug/Ahmhh57noq4nKJbatX1FeK03XFMyyUgQ7/OFNl6wKxPT3thVP5hKe7Di06jozyu+YUH0zJb770UyBOWRHrYOFrzs/C+eDfpdLrvqK0iCUPa+irG8WQ=; 7:nE+0L369W+TJ27Y3QGgqAWj0+ZeK77YPUEUO7VDTh9SOZ/iRTcPvpVNOhdNhXPc3ncHRQvMfjt4EcwiV6IBtUsofShl/MviLIXIWSmGFGf4UrqyCMjFQi4Xe+1mvQJo0vIY0M1hhVoSW+GaYwU7LzR4LKe/xj2xhFNCLYe1JEkfKuXbCGtXIFth3hPQyctk9n0tXefDoS1l+bDTn4XpKMQpYq2iX7IfhRBmORflJVjUjq0H6NxyKTuga/ajM8MR+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:51.1724 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bad2507a-5a1f-494f-50fc-08d5ee709a01 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 5/6] doc: add Octeonx zip guide 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" Add Octeontx ZIP PMD feature support and user guide with build and run instructions. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- MAINTAINERS | 2 + doc/guides/compressdevs/features/octeontx.ini | 10 +++ doc/guides/compressdevs/index.rst | 1 + doc/guides/compressdevs/octeontx.rst | 107 ++++++++++++++++++++++++++ 4 files changed, 120 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 852f4f726..c1496cd7a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -858,6 +858,8 @@ F: doc/guides/cryptodevs/features/zuc.ini Cavium OCTEONTX zipvf M: Ashish Gupta F: drivers/compress/octeontx +F: doc/guides/compressdevs/octeontx.rst +F: doc/guides/compressdevs/features/octeontx.ini Compression Drivers ------------------- diff --git a/doc/guides/compressdevs/features/octeontx.ini b/doc/guides/compressdevs/features/octeontx.ini new file mode 100644 index 000000000..884a8b073 --- /dev/null +++ b/doc/guides/compressdevs/features/octeontx.ini @@ -0,0 +1,10 @@ +; +; Refer to default.ini for the full list of available PMD features. +; +; Supported features of 'OCTEONTX ZIP' compression driver. +; +[Features] +HW Accelerated = Y +Deflate = Y +Fixed = Y +Dynamic = Y diff --git a/doc/guides/compressdevs/index.rst b/doc/guides/compressdevs/index.rst index 422876873..094baf8bb 100644 --- a/doc/guides/compressdevs/index.rst +++ b/doc/guides/compressdevs/index.rst @@ -11,4 +11,5 @@ Compression Device Drivers overview isal + octeontx qat_comp diff --git a/doc/guides/compressdevs/octeontx.rst b/doc/guides/compressdevs/octeontx.rst new file mode 100644 index 000000000..0b53f9b0d --- /dev/null +++ b/doc/guides/compressdevs/octeontx.rst @@ -0,0 +1,107 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 Cavium Networks. + +Octeontx ZIP Compression Poll Mode Driver +========================================= + +The Octeontx ZIP PMD (**librte_pmd_octeontx_zip**) provides poll mode +compression & decompression driver for ZIP HW offload device, found in +**Cavium OCTEONTX** SoC family. + +More information can be found at `Cavium, Inc Official Website +`_. + +Features +-------- + +Octeontx ZIP PMD has support for: + +Compression/Decompression algorithm: + +* DEFLATE + +Huffman code type: + +* FIXED +* DYNAMIC + +Window size support: + +* 2 to 2^14 + +Limitations +----------- + +* Chained mbufs are not supported. + +Supported OCTEONTX SoCs +----------------------- + +- CN83xx + +Steps To Setup Platform +----------------------- + + Octeontx SDK includes kernel image which provides Octeontx ZIP PF + driver to manage configuration of ZIPVF device + Required version of SDK is "OCTEONTX-SDK-6.2.0-build35" or above. + + SDK can be install by using below command. + #rpm -ivh CTEONTX-SDK-6.2.0-build35.x86_64.rpm --force --nodeps + It will install OCTEONTX-SDK at following default location + /usr/local/Cavium_Networks/OCTEONTX-SDK/ + + For more information on building and booting linux kernel on OCTEONTX + please refer /usr/local/Cavium_Networks/OCTEONTX-SDK/docs/OcteonTX-SDK-UG_6.2.0.pdf. + + SDK and related information can be obtained from: `Cavium support site `_. + +Installation +------------ + +Driver Compilation +~~~~~~~~~~~~~~~~~~ + +To compile the OCTEONTX ZIP PMD for Linux arm64 gcc target, run the +following ``make`` command: + + .. code-block:: console + + cd + make config T=arm64-thunderx-linuxapp-gcc install + + +Initialization +-------------- + +The octeontx zip is exposed as pci device which consists of a set of +PCIe VF devices. On EAL initialization, ZIP PCIe VF devices will be +probed. To use the PMD in an application, user must: + +* run dev_bind script to bind eight ZIP PCIe VFs to the ``vfio-pci`` driver: + + .. code-block:: console + + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.1 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.2 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.3 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.4 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.5 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.6 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.7 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:01.0 + +* The unit test cases can be tested as below: + + .. code-block:: console + + reserve enough huge pages + cd to the top-level DPDK directory + export RTE_TARGET=arm64-thunderx-linuxapp-gcc + export RTE_SDK=`pwd` + cd to test/test + type the command "make" to compile + run the tests with "./test" + type the command "compressdev_autotest" to test + + From patchwork Fri Jul 20 19:04:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43247 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A06C63257; Fri, 20 Jul 2018 20:43:00 +0200 (CEST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0066.outbound.protection.outlook.com [104.47.42.66]) by dpdk.org (Postfix) with ESMTP id 3E3B0378E for ; Fri, 20 Jul 2018 20:42: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=ZRyTS+mUOuQzDwThl707knQoRAkDLfwmTg5AUWBq/KI=; b=FX42X2t8w3n/YT8agrs5qTZbZaZWl4bAV7d7iMbQuIB35W8q22gOo4mWL9UTzjT5IHDZLd/1fYIi1NGLOM3IitbcnA/FHx4osuqPxra/SdQkB41rlaYI/n1CSM5+HiF+5XvgIcnl6ayV6qBXfg9gHjV1H4dsEdQ9tnnNO2SMCz4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Fri, 20 Jul 2018 18:42:53 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, Sunila Sahu , Ashish Gupta , Shally Verma Date: Sat, 21 Jul 2018 00:34:47 +0530 Message-Id: <20180720190447.7979-7-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> References: <20180720190447.7979-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::23) To BN6PR07MB3057.namprd07.prod.outlook.com (2603:10b6:404:a8::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1e435f2b-024f-48e6-7d8f-08d5ee709b70 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB3057; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 3:OBhBXORn8JVMR+6WkPVj0wvP+Umz+O1BGo+lL7jf7p8Jw0GVvof5UUxfpzlgqGYAZzJ3N3wyPwixkLs2vt9vnyGDCdfp8wnGn5tCP12cKv7Bi7vkIsIft1ObkSi+K+tWYfw2ZhVGJc8bdCtTMiLiYBZlr/kcpRNL2h98/or04QfbQjjK5nOr2+PKXRid5kfeuwxCYZPZ+MTtJRn+oiHyorMHJwpO1seikuEWsjRIPPD+E4SKPc8Js/W+OKHu8Mr0; 25:yX5REN65DvDIIgsY/PR2W/36GFmSkg7OV4jLRI3zoALWDwd+pXGcrQ7g9bbITughFZf4RO8vHNdpWjRf+U7qxwaKQtELfao9hEt0PIgEmST2cvi97cWPa7/YMiXbzMtPGAenvPBm8k/Cvj3RBep2t/pQK+WZQMrPI+CTfso6UW3dwqZrMeSqF6kTLyagP7awdf4elF5foHtQTLKN4z949WQkbOYTSQdyZMjdEdviY2EU8FDabyGabEgKbXhebnQ9Z26SGNun3V5dI3Jm6IwpEUq8gQ8RkDDFSAykaT7szOVozCr42dVXVsuynq9kvYjWKiiHniH6eojV5ofuBBLClQ==; 31:dbvvjzEk4IQuQZ9VPPbYGyiHwCWum3BtuqvNX0EHKpd5odev8utTA9EJ1L4WeHWzLrjUQy0sj5lzruExSKFeIURdLZ6+8bxUtT0yC08GhO7tHJNE3TPkMdqgiI9NDQ++Oir69Cyoj+7ciAkxI3VT1BQkOIoL1+ewDxzwulkQPcJV+LoGubkTxOUvzsJrpQ+GAHY6oUR+J8qIqWyWoLzeJ3X0RAysY/ADxjQLR42zbZU= X-MS-TrafficTypeDiagnostic: BN6PR07MB3057: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 20:tzO2zt8M6d9wPUw6w/mKVdBDuU9uM2hEM/wclz/AkxQrfYleQioOvkgHpvLW21AdLPEmHH5ci40O6yTOOP/c0Jcquw6c5wiNpNPbL6Lg5iR3BCoiPHZDQmBHso1JiY3IHztxyCBRelTChDLQfApU7mURwA7tUEDyzaGOr8mqAY5hs0hRE8348wzkqdTYs5KndUVWkIL2m4/obT0sx+jPCm8IsrMs+ZEP83DsXrcBwfOiUmCuFi1Rk+yDzgJ6VLHaB6s/JldV5897P6EmkE43Ya2M7iOeWjb+JJ3861yb8fdnm7N69Y3sG8h2Y4cxayDf9nVG4iGI9HZzIhDRDOVTYvinW0Osh1vGzKXuCUAbi9a3ipR5li6ngY70KWEEFOI23kHUckAEmVJqWX7KBM/q5B0ysCrgIAoj/afDz3kMsmJVoGtWmeGCGw+JhfCdToFmIvVO/IKjKkc3mqLJn7QslQS4R4u0ecOzWthMeIYFfb0nCukvLKm9fFuerY5sN7QTSalqWYzaraSaqM9POde87oO/I+1rYd8HbtFKwYbx6Hiik1mX3hode2aJw9u40Ru62r8QNEqHSquWGAFinv3DKLfR4Sp67CmxByrkAgcvSi4=; 4:bIUhj0qIDGfBAfg+GSgeKkV44WCIdqQUlHMShA1K6Y8scrGKmncsFE/47B1ySHAfQydTKTWPNJL45oemkecwUNQwncsXvzpjLmh8SfoZXLmHZxJKhXw8HJc3UDGSjZj2Ne/9x5yXDb5Za3IdhUHsmgsdQM6GR46Bjfg9AnPRGy2WQnl4A2/6ASOy/6iaf40ZuSTtU9sT9mwZKkSrOv9YUY+2DeIoYuvs1Vhc79TH2bfs2r402OZQBiFVo8EDLgejN4AZZRrEz2Sp8tISbetz3g== 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)(3231311)(944501410)(52105095)(3002001)(93006095)(10201501046)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB3057; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB3057; X-Forefront-PRVS: 073966E86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(186003)(486006)(107886003)(956004)(476003)(2616005)(26005)(6512007)(446003)(16526019)(8936002)(81156014)(97736004)(81166006)(55236004)(7736002)(11346002)(8676002)(72206003)(48376002)(575784001)(4326008)(2351001)(2361001)(25786009)(6486002)(16586007)(54906003)(53416004)(50466002)(316002)(105586002)(36756003)(106356001)(42882007)(478600001)(68736007)(69596002)(5660300001)(6666003)(6916009)(66066001)(50226002)(47776003)(305945005)(76176011)(1076002)(6506007)(2906002)(6116002)(386003)(53936002)(52116002)(3846002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3057; H:hyd1agupta-dt.caveonetworks.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; BN6PR07MB3057; 23:eEAD9zk5FPCKFSztOQaO4q7KpRN1Fhei46t0zUQAX?= 5aGf3UhNhyv7QDb5ef2Qbv9KVZNS9yEt5CkCdBdwvyMwFpB1Ft3Lq48dPG5H6bD19LQWmkXgDqwaKekuh2v9CkSgU64Nvp3V8g4toRd+uqIhWtv09JEjquoulYGTNDDFQ9EkN8ZNc86ePtqVjtkLyVC7V8Da79S670zBl9chTlw18RvYvkXxWVZL7n8KDcv1wrDfzXXgoSbIU2shMZ3us3V/Ye/swHlV6wHblBfCnH1p6DXcPdi/nuB9bIi5UgPXKAzwqZpFu+/kt1JbLGytZykrbLqBHWyRsUNNfie2r0KCkc+f6PpTMoRESfvGCpDewxiY38FNO9PWjh0QK/w30a4DaJjuc8FCz5+AEd51jvPF2mswvIS6SaNm8/daiTQrKC6xCtghyOPxnhrqDV4LwLlmJwIEgMfvjKbJK/+neAHPqd89vQDfzyIK/5AvI44VHEVrNihBd3VMPH8IUDpYTjxl+cZyCr/p5yG82eC7ke2NVI0Gfg5IZMwX9+R78ikgd/nnNU6Ok8nttp/qiDOSqe8hNhMPCBZgMA7LKssgrGA/U8ejGSiPx2SvsAJLFk+wsm+4wzlROG4l3ZcjIU6kUARUZfj7V6m6jxkzAIGLUChzK0dDGPnPittKXQwVrikjpV6yJjyOEQ1AlWRVGSF00WUPh9fwP7cfoL2PMLZnD3cl0AkFUJgl4W52qU2raz+V6hQnqJwv6kn0O6Ag88vs/KIZ/Ura9iZ9TSdQbZ8faqqkaB7IPT3ntptKCgicg9ccTf9TYqo8vQIVhWuK5A49b/CLZYgY7Y+2h0oPYDVYigda+l3L5OmZk+a47DZD6t6oHPc0u7KTdcCPKiPuxvkWRv+dG5aOtzUaPDoDN/EkdrG6Qwwb/LgfDxkfJJ+i1IXN/iIJzXZb7hyjLqKcRSiGfEua+yZLa1vXscfmI3jSH+H1KKeoyh1s2n4ThfJijqzqcsfCwmvVfBRwQ09Bius3mu3vRXLOpDJBvMZMxQYMGvc9Ko2w5HQ5Dp826LXBYin2NjF+FvgIkQOHHQwLHc72d6LImwh+Zaah+s5UzTdbikVBNvG9pswwjib3JcfBtxqXSXrebal2CV1/uAsTKmQ6kQ4DlzKObhfwyo6vrtyNTOac4taQiLA2axGq+kWK0AjROf53b2a00fM+Y5WePjjMTksGoeWLxado+gnOIQlD03AdPPPovhI8VfqBeL5utqt+Y69hPbIDY5RZoe4dZ82S8UXlH13yyZOyhFPqo1jKBDb5vSIgYECphd0ifqzsBJI9tVgFIKd3dwG1honCeYEe4hz+wl4G5rfJrlW/uPKf2nHvnacUruqikIIrPxnMewBwFo= X-Microsoft-Antispam-Message-Info: 6LZjSk9PbKMXD9ThPUq4Mg1lppawrlZygn9qqujUZH/TezyR+h07RIz4SRNu1/OVzo5txZSKjloK8SVHSrKxkCTj86BVHdek92u74qisWxfX5O36oecNDO6d8dT813ixvuAfNZ/Swm26zddfC31ELzBB2SaGQFI79L0kbPxtbwOv5SnPrCn7gK2X7JDjOKJjfTHj9Uf+lMMoa6IaH6HritwVMBd3DpWSkpT/kIgUKKMVKMOnfUKyo3XC4X6FACFsgyoEJYg6DKCF2Ei5hnqERatd0Ej8AiVm4sg6W/9m4bgDBCje4TQML1epysXZXae5w5I++IbNNtFljQ5Ak90BNvd6ovtFAIV4UJ/hPDgj/Hg= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3057; 6:hXf9PACwRBdU4Ih7cjFQOJLABp7tcz/4gPzW8fJVY+dZ9IJQ/zBeb87P665pTH7ZSO+iMvdTiGLUN6uW1Z6OtcYFVqR15eFNo1Xt23xWcnEhr/xzEufeYMqVvY7fGjwe6VBHNn6yZCrN9REVi8MR/p7R3T85E56fhDzHyVcjSAJUrEB/q9wfef80Z3K2ZH1niTZBYSZVOXw5V2acE8EGVKu2EG606+WxW8zTxuigDDOccwXbrCCsgRgYgLlxuY0nUUaGds2L2e3z6OBw5kxAaqNrpHTs7iPqj4LYZUnqslAzR8iAIYZg2jF9dR0J8tsrBn+s0G0szH9hr+kOQe6cx4qA8d9FsiQCu1PfdEfvjN1FLFEau9hLfEpcD76wZLrVxVKD5mfKb8htyK8wPbWeuQwzriBOpjZ3omMOvcBM2JYeMZwdGzZyNhlK6HVtO15lbX6SFf2EAoTnHZquN9LrTw==; 5:/rTNUiVtbBY9WNvod53vG65PPrqKBuARvr1CZJqec2IqF9oVak3QXZY6ORSvyQz+pRZmLFv6KvPLnNoCDCvuSEEBPqBZMQ6Fvym/g1/xutyfUGomCw/DOt7An5rXbq+5RB4HOYd2cqjhoC5uiozHrESnAgMRoE8biHPM4s94OHQ=; 7:S5BGt4ZqaCYq8KqsP5Gw/Wevs+4T6K7IKmohNa1yooGb9PeuYiuKK5Mf1UBl201Ej7BAD7KGODsJS0s8u7A1HOv+rhkKDaTCTU4KWBSOoogUVw/ew85Ux/Axbt+wlgQrvXU9T46rhxtWUp1G5f4v+MUhQf6vYLC6ZvIGThwYKgqyShMWyzeeiNcfqA/dEqnpK9K14Su/ci9LTVjqpNAyjfB7X87CEKR0lTvWVDpICLTwxdXW6oHf/zGcliJFkaX9 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2018 18:42:53.5631 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e435f2b-024f-48e6-7d8f-08d5ee709b70 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3057 Subject: [dpdk-dev] [PATCH v3 6/6] usertools: update devbind for octeontx zip device 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: Sunila Sahu add the cavium octeontx zip pci device details. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- usertools/dpdk-devbind.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py index d0c420906..1d48a6cba 100755 --- a/usertools/dpdk-devbind.py +++ b/usertools/dpdk-devbind.py @@ -24,6 +24,8 @@ 'SVendor': None, 'SDevice': None} cavium_tim = {'Class': '08', 'Vendor': '177d', 'Device': 'a051', 'SVendor': None, 'SDevice': None} +cavium_zip = {'Class': '12', 'Vendor': '177d', 'Device': 'a037', + 'SVendor': None, 'SDevice': None} avp_vnic = {'Class': '05', 'Vendor': '1af4', 'Device': '1110', 'SVendor': None, 'SDevice': None} @@ -31,6 +33,7 @@ crypto_devices = [encryption_class, intel_processor_class] eventdev_devices = [cavium_sso, cavium_tim] mempool_devices = [cavium_fpa] +compress_devices = [cavium_zip] # global dict ethernet devices present. Dictionary indexed by PCI address. # Each device within this is itself a dictionary of device properties @@ -569,6 +572,10 @@ def show_status(): if status_dev == "mempool" or status_dev == "all": show_device_status(mempool_devices, "Mempool") + if status_dev == "compress" or status_dev == "all": + show_device_status(compress_devices , "Compress") + + def parse_args(): '''Parses the command-line arguments given by the user and takes the appropriate action for each''' @@ -642,6 +649,7 @@ def do_arg_actions(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) show_status() @@ -654,6 +662,7 @@ def main(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) do_arg_actions() if __name__ == "__main__":