From patchwork Mon Jul 2 16:57:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42115 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 248821B57F; Mon, 2 Jul 2018 18:57:58 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01hn0211.outbound.protection.outlook.com [104.47.34.211]) by dpdk.org (Postfix) with ESMTP id 40F171B563 for ; Mon, 2 Jul 2018 18:57:56 +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=xmnaADEsWz7WeYZIVZJYQQptZxdZ7IytErZs8sq8MjA=; b=U6bfbnNyTwRZNsTgCXqt++B4QUdawQfBMs8pROweGt7Y75XSu7gd6zit8YXjVx/LoHsSHGkrHg8oolE0eGiQRVUf2AI79rhS1uKbaj86jrrHsJRi1og4rr9t2/X6xI/Kz53p0moE51nqd/78uDXv0r5UWjtycL+38WTirHpW+QY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Mon, 2 Jul 2018 16:57:52 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:27:07 +0530 Message-Id: <1530550631-22841-2-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::21) To CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5dd8dcca-7acd-44a7-9c1b-08d5e03cf4b3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 3:CuAdJIriVyDlf8rzMXItrQEmd31hQTbYEqSnaiV1k5pstUqQfrZWiv/kbJM2mcre8Ob4i1RJlOEmFvzZYF5pqg51AzIaGotcqySyVbbx667K9Pj9dPDjsmntiR3lXNjK9wVt5/jJZUBv6ASj6f94YoLLVNrozr5FKfLNKKfoY08pMVTBrjHBW/7IE8r07hRQQu87kFkMRPQumYXoIk+tHNSR1B6xre1mkhZgokz5hRXfNDUtYWlPpuQ8Vb9K7mVL; 25:1AeissqJnYoe738Y/+0GFeLAC/3cdMta/UC7W112f8S1Zho7eodwrI2U8oxEkT5rSYm5hQVIiZj3coLrsO0egXtU0ZPE77u23HaqsAmrCITJ3HsMIOZroN6ZFkTUtS9W42bWY/LiHZnq1GgmV3uK7Xolcg1RKQaDiKRKtmb6jykNlzOHU3dKpWusfvgnOIkgt5hqfSHRSsaa5njZcBxrbfC+AxfQM3jx1CQEW5wFNOgaVsiRRAPU+aki0k+pCRnA9f7p2WhZOKsW+a4dF555xynu2RAUGbyE5EwEC0mpE/0m3C8Zw5Srkg/3WZNysoqWRiQGX1ky48PEFFlj20qVyQ==; 31:m5fW8YxZ6+vvMVCJdYP8ecGC7lh/ykMLy1/eJ/tzjTqQrNedonjDi1/z+E/JKIq4hEygm9Y1dZA6rh8G7zCmSU6o0KDxr6hHxMsVohgqSO/IoMFaISVAz4YG3IRlG0kT5A4wPtKQIx+NAVNRpO6tZgZVtba120fXxjp11ca2ti7K7ZE/qiwIRU6Z33YIs0ihfBXkC6fFJEXrps+8th8nQjgaH4KG3Dpspa8Vi61GbX8= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3635: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 20:p9bijjhHr3TNpOUQA7fd1ww/cnc65xKbM5Opd3DfyvsfaHoixyuHnJrkkCJw0CDsUuhWEQ/ldB9jEtP1I4YUqIjeCOmi36UaMsgZHKXb5zQbNdBDrQcE6fs4isRhT2LnFOw55sP89xCLo+FyHglQ0pf3EPjwal0zFTTIslZvyQnid37WHv0XQ0AWhvUxXmKO2AW7Cyt1OYVROZ3QdSqbS51uWTuSjJBRI9rYZNLhqKQPEBRMSzuli7nWUBETqQnydAf81GXebT6Tqof5PAlEaDp8fckJBbSuwAHmiaPWnPmKSCpd2pWtmkLkJMhba6jlcRpCFeAI/k4SrdNvWW/LVCX/Gkg1tUta+ZNrl/8j5/u0YUC2CgO/jsMX5hkeV99HLbMZweopS5K+fN0SswSz2vMY7D6l7NScxCcEMzuNlcBUvBLp9PH+566jqsEmZ++93P7JVOojF6A6Ej2dfViLyeSRqiNodNdClM5ju3u1yh7dnTvshAbcJiqEGTfCMnPLkVN+TcUpHqvJgmuqEPQE/vgoUkPNqwAFhBtR3j1bRdZj+6aC+A4MHQDy2gxbasBSJ6rpAwpDkvZ29fRbydbaKXP8Fo8yNfmajOaUG0m+CAg=; 4:nQXa+EUvhJUSHi5YXgLpfgyfne9LnONZZW5XzozN0KK3Ojai0quQzE/gec9zQqH2kFYV8YKhhMDEM29kY65WDtccpjWM9GGTrUlVve45d6OVzb/LfjAygZODTYvnJPOjGXkPnvPi4I3zlj2b5qJ0puuqtlSG3aK55L/D2kVHva+lEJw6PUYB1kpmdv52NmLBUH+QP0nGNHvwbjlzrJDoFEqL1tqUIEWHcfEPhD5a4J4YxonqVbUsWfbljixxAFrybaj0cqAZsPJmZTlpzLuQiI0babuqRjmxEcdZVO2UG96+URABq086RBtpQs/y5AED 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)(93006095)(3231254)(2232096)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(346002)(396003)(39860400002)(376002)(366004)(136003)(199004)(189003)(478600001)(72206003)(106356001)(6486002)(42882007)(4326008)(53936002)(107886003)(25786009)(476003)(26005)(8936002)(16526019)(6666003)(8676002)(55236004)(2616005)(11346002)(6512007)(51416003)(76176011)(186003)(6506007)(446003)(956004)(52116002)(6916009)(81166006)(7736002)(81156014)(44832011)(575784001)(486006)(305945005)(386003)(66066001)(16586007)(47776003)(316002)(50226002)(54906003)(5660300001)(3846002)(6116002)(14444005)(50466002)(48376002)(68736007)(2906002)(2351001)(2361001)(97736004)(105586002)(53416004)(36756003)(69596002)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:CY4PR0701MB3635; H:hyd1sverma-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; CY4PR0701MB3635; 23:5Ffde9814JYn9Lv40Kp39S3e2MFXuyB1tlBte4P?= Xnu6dx+8eFFtcYwTaOVcpmGl9WkGWQY3eBlGnLe/lDgVJdNwNypG79Dkly5sMRTDaLAqP3o6wPUdpaqU25ll2UkBAJqhLA+QR8+XtUj5QKGNEZ8sZab85sXmAbdrCuRlKhdx+hzDYjTJdARH6RYIyWfQQx8D3PNPFuYPE0PAamNBa4RUx1ZUu2ORJAc+u+8Yt6WWK1js676NmMevxUpVdVk39VFojImiaA8o+4dRw0RRmEVrADqCwsj2qFleJVsRj8JDSXEfG4Vu6OSsMGnR0soxI5ScNwc3nVDqS+Q3hROjK+/wGLPzIkcaFqENKgMa+rVGe10SxF+I/Pog/E9gZNXIGYzCADk+p48GrkavsohYGfd13XsQwhPrqk3RagoV49EKkIUMWAJ66QPnoKqts6UCJ1QOuZQDosghv5JTFYUfi3+qp8CWbjQm2r3Nrow38RwLTzTeZ73GkKzK2MPwTO8QlVCgtqh9Zih0z3RenuGxSg1Fdx/2LZ2bteYF4GPRuM6JDxZWMHV389xHUOGUk/cOPLQAfqRGL7lXYUQq4nR4u4e6EwzMOKGGkpoFzSm40Zmp7iXUqDw2qJvvKwWq678qADBGLzlbmXFpJfkK+DsdjQpwR1tDuZbHsdtuMA/IS9I4Gt9zmhHZWAa+XizUJXychYGeZf+aH36Olm4B8rIVdy98tdqr/ksokF59LNXWxGiQY/AOimISS99YoWzSVQ+qyaxl/rlKJCnp0ui6dvJwmHRXibXUprWkdJhpwgPVoFpkycwEjm/fKMzzaqBr0SF70uTUO4BoAVw/4xuQpIjgdPZdW6xZqkLB0w3DmunaRJrSedUp8bVVTp8F4JzN7U7TxSZlsif3nTw7Jb/V0agqtvM5z56IaRxi5jNDkvx/PHfpY0grCxqesVY/1N8D7meBOqxjXFX5gg4IYTVKzDld6Mu4f1WUF4VIg12lCbcsAeAgasmsP4QCocY2XWQtyb8ltfFGoIin4yp4IwKYDn6/M/Xu25x+IDkgvOtzSoLrET734WTjiDrFun1a5ynTVvOpdCr9GwWWfANf3cCKlIz8bezz3/OTyAJuumBcNw2yFg8u8zshPgA1jYLdaz6cgdpaGEbTK8HURKA4S+KbiOv8Tf9d2r6xiuWx4a3cuTkdBScrsSGj+UUFb6HMaDgegPd7OfQYAgFNpoJgtt/mhXleH5WY8ojQ+OUdfPxI9Gzc0IENV44LLSlkfstTWJlGLxRO+LaMrSqr4u1nHfObEjluqV6wCC0vNQ+cP1BHxUbtGsbjsJjH+L/PWf8XTnLEdk5eDBnOLgQ0IhnNXlCRZNSd4Py4HI6YSftCnjskBoW1tHBjbl8HA3KLYua64rHh0gFb1gmxlem/bBhjRZ63CiVy2iK1hLbFVcRWVOL/H6j7FvDWi8HfGLdP6LY7lzQahhLs4 X-Microsoft-Antispam-Message-Info: mHIRH0C+B8inM5Hz2HZKDmL/xSeofy9pFXcFYwQusBmSKfcMA589WYiz7P896oTK2LHQItZTWnFj/oaYZTwom6WGUZ3k0skyQ7q8K6K0g2BTtJb1dKC60wkHYyMbBUdb43nVcUbrSdDk0NUESoqPzsDaIzO1uxM7pL8IWb3UJXLqt3CMRVp3ldGh9M8Fw7oqSVfMIEBrfS+RJB/kpJsKTuzOa/sCN7WScZ5wpz0Ms3CcLfsZPdyPo6LlgG9OpuP7v3ejFtcQXgYGNS1QiCT9ScZ3w4O35s8ueE8fOw4gSsFeihdEjQplw1PyIp9sceTXzhWRWPMAA8O9nlDWmimQIn+rVMA7k1TOXRauV0PN+Xm9G1BKX/50/dARhdn972+iNqGdxjYrtveFppzDlYDLCkNPFylr2IXNFciy/8+RWbvvcS/PkWgwt+MkkFEFPWiNqZFvzSbnFEaBxCQO1XwbknjaVOQSyfkhA2+SASq/kbLgQ/MjlTVprqkAnLf0kEPsbaCg1O6eOtMnoGcH+ovh2s6maHYajy/pb7LfaFp7eKdnK2LEBCz8ahFOfyZg9pbcSPNjXcpW8/C9ICOe8hj60g75KkLyTP7pnX/fn9pHg8pr9E4Hz3EOWPTCbrDwIt06RJWMKpr4a0Uook31uf6LdtUqVYH0Pa8r2+2ysK+nyv86bOKNm4P9PLHgA0vwbKicAFbQgBCFR2uh2brphp9wTQ== X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 6:BHO474GLeFlSBmNgHLmoCQ7+2FTAw6UH4sar2eBm+GwpX7sb3XuWs78LsNKjYx9G/wW48i3JvrtdNUbeDsYfqK+k6p4IhUgrMZQEBOh6uxdnp6yxyyikaW5IQn7aysZESg8b90AMynk35XfvZWWB2EYFVcE34RsbiTGY5Ma/YNPUTck9m+aEqdSWizeUnxR0hKm77w0fnNfz+o1FU3smX8wyUmO9eHKZpqc2oty72jiPeNNNpexODTF4X/C9vo/J8h9Ez7GitcxavyVNiuYTV4gIrlyMptr/lhuJXszv2xqlk3Dt54MCsDF8cXCKnoQI6u7htaPnIwehStEYUQUbTj8n9PjuwTCzb0p+9PvwKWvt4OJEH295uUm+edg+h6ZXxY7fLyd8j5RBAa1H5F2WFE1P9wC3cznoqeMwXHsMOKLlV5t1bpV4fSRgnqpgz3Gz1T7s3c6eogylxLlpeovDmvIhCdy4+iCDf/VJwRcmTRjFDnYFT8MndaJjmxxH1sNN; 5:1gRuZot4sjmw4HhX3JKPVOquLfrUe/ZnKpaGMWYnAh3C+kjkGLqCVLoqOV964acjdSMSZ0qaV2dsIRZ4C8hGRXospYJfTwPpY/SHyYKSD0+if0ot0A8VDTIdS2K2DtnhaG5QDXFRcHf7J29nq2QkZuqEXwzNIynQ700KnfV0Doc=; 24:6s77OD/BAAQhiCvDYbzN/FudRgZ/Cs8JENnEgjtFaxg1ORCgEJt580usuwcv3/aK2QGBUoWIkeWDjlA3I7Qmgg== SpamDiagnosticOutput: 1:22 X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 7:d6IOqj6drH4Ylls1PzVbIPFt8aMj7Vz15mqfM9Xlb/k/eeUfSLwgsPi3iSwFe3j1ZZMLUci/qvmyx9nfDwdla5lOrsS8FKNzooE/e66uOz+Mr17LAiWEsNgM+ug9fe8n4EVHqqo6xoG6vQUSVnNv6pKP/WQWIepIQwah6G+8zXSYMKUWwpAvhahz7dQT1itOdLD2O2NuG6qRWZtSt/kKDl1AQRGOo7WYt6KnVDhgBLCdvO3LyYBZyx2jRohkAnFK X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:57:52.6697 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5dd8dcca-7acd-44a7-9c1b-08d5e03cf4b3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 Subject: [dpdk-dev] [PATCH v2 1/5] compress/zlib: add ZLIB PMD support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ashish Gupta Add sw zlib pmd support in compressdev driver. Add device probe and remove support. Add ZLIB build file support. Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- MAINTAINERS | 3 + config/common_base | 5 ++ drivers/compress/Makefile | 1 + drivers/compress/meson.build | 2 +- drivers/compress/zlib/Makefile | 28 +++++++++ drivers/compress/zlib/meson.build | 14 +++++ drivers/compress/zlib/rte_pmd_zlib_version.map | 3 + drivers/compress/zlib/zlib_pmd.c | 81 ++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 33 +++++++++++ mk/rte.app.mk | 2 + 10 files changed, 171 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index dabb12d..448bbe1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -851,6 +851,9 @@ F: drivers/compress/isal/ F: doc/guides/compressdevs/isal.rst F: doc/guides/compressdevs/features/isal.ini +ZLIB +M: Sunila Sahu +F: drivers/compress/zlib/ Eventdev Drivers ---------------- diff --git a/config/common_base b/config/common_base index 721e59b..dabc269 100644 --- a/config/common_base +++ b/config/common_base @@ -585,6 +585,11 @@ CONFIG_RTE_COMPRESSDEV_TEST=n CONFIG_RTE_LIBRTE_PMD_ISAL=n # +# Compile PMD for ZLIB compression device +# +CONFIG_RTE_LIBRTE_PMD_ZLIB=n + +# # Compile generic event device library # CONFIG_RTE_LIBRTE_EVENTDEV=y diff --git a/drivers/compress/Makefile b/drivers/compress/Makefile index 592497f..1f159a5 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_ZLIB) += zlib include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/compress/meson.build b/drivers/compress/meson.build index fb136e1..e4d5e5c 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'] +drivers = ['isal','zlib'] std_deps = ['compressdev'] # compressdev pulls in all other needed deps config_flag_fmt = 'RTE_LIBRTE_@0@_PMD' diff --git a/drivers/compress/zlib/Makefile b/drivers/compress/zlib/Makefile new file mode 100644 index 0000000..bd322c9 --- /dev/null +++ b/drivers/compress/zlib/Makefile @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium Networks + +include $(RTE_SDK)/mk/rte.vars.mk + +# library name +LIB = librte_pmd_zlib.a + +# build flags +CFLAGS += -O3 +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -DALLOW_EXPERIMENTAL_API + +# library version +LIBABIVER := 1 + +# versioning export map +EXPORT_MAP := rte_pmd_zlib_version.map + +# external library dependencies +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring -lz +LDLIBS += -lrte_compressdev +LDLIBS += -lrte_bus_vdev + +# library source files +SRCS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib_pmd.c + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/zlib/meson.build b/drivers/compress/zlib/meson.build new file mode 100644 index 0000000..7748de2 --- /dev/null +++ b/drivers/compress/zlib/meson.build @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium Networks + +dep = dependency('zlib', required: false) +if not dep.found() + build = false +endif + +deps += 'bus_vdev' +sources = files('zlib_pmd.c', 'zlib_pmd_ops.c') +ext_deps += dep +pkgconfig_extra_libs += '-lz' + +allow_experimental_apis = true diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map new file mode 100644 index 0000000..1a99a33 --- /dev/null +++ b/drivers/compress/zlib/rte_pmd_zlib_version.map @@ -0,0 +1,3 @@ +18.08 { + local: *; +}; diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c new file mode 100644 index 0000000..f667ccc --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd.c @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium Networks + */ + +#include +#include +#include "zlib_pmd_private.h" + +static int +zlib_create(const char *name, + struct rte_vdev_device *vdev, + struct rte_compressdev_pmd_init_params *init_params) +{ + struct rte_compressdev *dev; + + dev = rte_compressdev_pmd_create(name, &vdev->device, + sizeof(struct zlib_private), init_params); + if (dev == NULL) { + ZLIB_PMD_ERR("driver %s: create failed", init_params->name); + return -ENODEV; + } + + dev->feature_flags = RTE_COMP_FF_NONCOMPRESSED_BLOCKS; + + return 0; +} + +static int +zlib_probe(struct rte_vdev_device *vdev) +{ + struct rte_compressdev_pmd_init_params init_params = { + "", + rte_socket_id() + }; + const char *name; + const char *input_args; + + name = rte_vdev_device_name(vdev); + + if (name == NULL) + return -EINVAL; + input_args = rte_vdev_device_args(vdev); + rte_compressdev_pmd_parse_input_args(&init_params, input_args); + + return zlib_create(name, vdev, &init_params); +} + +static int +zlib_remove(struct rte_vdev_device *vdev) +{ + struct rte_compressdev *compressdev; + const char *name; + + name = rte_vdev_device_name(vdev); + if (name == NULL) + return -EINVAL; + + compressdev = rte_compressdev_pmd_get_named_dev(name); + if (compressdev == NULL) + return -ENODEV; + + return rte_compressdev_pmd_destroy(compressdev); +} + +static struct rte_vdev_driver zlib_pmd_drv = { + .probe = zlib_probe, + .remove = zlib_remove +}; + +RTE_PMD_REGISTER_VDEV(COMPRESSDEV_NAME_ZLIB_PMD, zlib_pmd_drv); +RTE_PMD_REGISTER_ALIAS(COMPRESSDEV_NAME_ZLIB_PMD, compressdev_zlib_pmd); + +RTE_INIT(zlib_init_log); + +static void +zlib_init_log(void) +{ + zlib_logtype_driver = rte_log_register("compress_zlib"); + if (zlib_logtype_driver >= 0) + rte_log_set_level(zlib_logtype_driver, RTE_LOG_INFO); +} diff --git a/drivers/compress/zlib/zlib_pmd_private.h b/drivers/compress/zlib/zlib_pmd_private.h new file mode 100644 index 0000000..d4c80b1 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd_private.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium Networks + */ + +#ifndef _RTE_ZLIB_PMD_PRIVATE_H_ +#define _RTE_ZLIB_PMD_PRIVATE_H_ + +#include +#include +#include + +#define COMPRESSDEV_NAME_ZLIB_PMD compress_zlib +/**< ZLIB PMD device name */ + +#define DEF_MEM_LEVEL 8 + +int zlib_logtype_driver; +#define ZLIB_PMD_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, zlib_logtype_driver, "%s(): "fmt "\n", \ + __func__, ##args) + +#define ZLIB_PMD_INFO(fmt, args...) \ + ZLIB_PMD_LOG(INFO, fmt, ## args) +#define ZLIB_PMD_ERR(fmt, args...) \ + ZLIB_PMD_LOG(ERR, fmt, ## args) +#define ZLIB_PMD_WARN(fmt, args...) \ + ZLIB_PMD_LOG(WARNING, fmt, ## args) + +struct zlib_private { + char mp_name[RTE_MEMPOOL_NAMESIZE]; +}; + +#endif /* _RTE_ZLIB_PMD_PRIVATE_H_ */ diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 87a0c80..f884b8a 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -213,6 +213,8 @@ endif # CONFIG_RTE_LIBRTE_CRYPTODEV ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lrte_pmd_zlib +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lz endif # CONFIG_RTE_LIBRTE_COMPRESSDEV ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y) From patchwork Mon Jul 2 16:57:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42116 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 707C91B56B; Mon, 2 Jul 2018 18:58:00 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0061.outbound.protection.outlook.com [104.47.34.61]) by dpdk.org (Postfix) with ESMTP id DE0441B571 for ; Mon, 2 Jul 2018 18:57:58 +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=cwN25bk71rt6VBwLIwbyNZsLDh0LgvK98prqFuTIhAc=; b=D9EgJBjyZJxgBKgesDTRrK5YTfWq3bWuNLvVFzO4hfGUUXGuOfFQlRPup012zLlMbz2Gq/4it2ERRs+li+t6mKfyLj1KJCrz5qkJBZlyG7/y51V0UFMTMKh9rKL8NifPyql8HPBbU4D43TZKmorW2b2y5P0s0MgjK7oMN+SdWKQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Mon, 2 Jul 2018 16:57:55 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:27:08 +0530 Message-Id: <1530550631-22841-3-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::21) To CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c954a62-cfd8-4d65-3ada-08d5e03cf636 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 3:awmU6Fopcb/8mTgp2wrhXjuW6bI/1aswAISPKo6Hag0ikqCTIyhjomnc8vdXGaNWAoDzOUu90KCYc1DrTDAAvpRzjIjcphz0kG/oeKRf6mWmWSJYrVJCBiAemWb+e+2oECyB3oGbaHITGavR0ogo5+5Yb6xdxKw79Cb7Te1G2M2oI+9aD9nNR1b/9KPAYQn6apa/JxI9Ik2ZGNcvbpTMh3Y2oGjx8eCcc/M1DUZ6yL2RD9laDPKkKsL4UpAhbwmT; 25:0iH0RCMcd8LUzzonJKpSdn2MB8WgXxll5w/sZIw1tGLaqK6Y/7rDN9K+WcOU0ZjynBfP5rrvlaJkR4dZdpuEOfm+If+jrsQ9t75NTg76FHVqXci6nEfSfWlOw4LmTeTstTGUwLRl3r7wdnIeZfRv9d6s4yClrYp9WUl0uGcCa3BDydww9+bM4KcrVVTnKNHgHI7qVririzJH/nrmKTxLS3FE2XN1r3ti69NMLgS/9wP+nRzeGv8VMBsVegiiak7jpp0RvfoU/RCoRJejJ2KAgEQIOAUg95c5uVMS2qEFWJNnIZblACz0ov1Y+GmeQeU/VxGC6vuH/zqlFjCoukSdYw==; 31:2XSy/uPpE8SXcEaK8VO9iZ7dWK6X//J59YMlunZAEyKzeQ4PTMm10zresjDwhnRiZRB//9ytCA6YeNsyFOKWLQwuEBz2y8+pjxazmg6desl1PBjf8gdano6sQpUnMGn46CZ9osEop2yBd2AVw59U0tXfQPvrG3F9eqAQSUx275S239XF2C3uRxtcbq3KH8C1duIZZ1VfiWuOSlmu1bXuT4wirK4JWFOamBfUsMzOr4M= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3635: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 20:zpF88SDF9I3H+fQNVnjwC2bqBXZQrj+A28EcLybqG/MP3GO9Dl9shwtTpcMtMq+PzqpjqCBSgAJwTZZuARdZ3qRao2Z8cPcD1+SZZ6QV7FT30uy1FtytP4VmIm6d/w7zuUfUE5QHU0/1bdureFX7Qv+euDYavVI3CJ1g5p6eSAnB6H8Szq8nS0sMyPU3xO4QAlfaZQ3rOAU8FAOe6br9/7TgEU5q9qnfsC61cXCevTIpN5tMZaFxuNro7CeU0JpfApdurK+ha3oB4kwiYdCr3oZ7F1S33G7kfFlokVAA7iT673RbJ6KSraYkvuC7CtIGM+PtO7p2s/EFUfD/RK0Zn9RwcQlWpBsWZxZaMG8OL7GsqF55TtvxvaXnuZFCFlDYaeU1q/8rIq3xmu+U80FHKqzrgkI3zJQcvCgq2co49qljZYCvAMSpizrSXViP4Waaet+ExK0y8Sf9j4wc1ehfWK+lBGlfSlinBcEAtceQobSqDeQEcrrpaiZIAXt/uJtWWUM3GVE0T4OnQhpn53dSm+8PvJHhc82OBHdgSNjBdrUmBvHmsHhe0Rf831+BzcFpbLL+gzhD0ZPBCKoJX9X2Z62gVHA6ZtYajH7G9H7pFWw=; 4:ijbyUnirlEMlDSY5rCp59LrzcYkR3TxSlxIxVW5pGpDV7Cvp6s0+c/ksRneSFB/fTaEzX4aD/AnICjy0a/IvEyD0kspRzNjsVw23DKD0n9y/FYZB0PvaQV3BGA3Q+6ujVgadNhs8TcgMi+cuXOMcQjQZUtnLbtNltiItGB360X9wb6PZyV0X46oUlkmP/e1fMOPe2Cy7NZ1yA5wi7QMWk1jJpzbUt4TJPsvkwIT8BlWOoGkHVvNEZAzXQoF5IRKGoKfX+wVd4EXbBUMqKI6Zsg== 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)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(376002)(366004)(136003)(199004)(189003)(478600001)(72206003)(106356001)(6486002)(42882007)(4326008)(53936002)(107886003)(25786009)(476003)(26005)(8936002)(16526019)(6666003)(8676002)(55236004)(2616005)(11346002)(6512007)(51416003)(76176011)(186003)(6506007)(446003)(956004)(52116002)(6916009)(81166006)(7736002)(81156014)(44832011)(486006)(305945005)(386003)(66066001)(16586007)(47776003)(316002)(50226002)(54906003)(5660300001)(3846002)(6116002)(14444005)(50466002)(48376002)(68736007)(2906002)(2351001)(2361001)(97736004)(105586002)(53416004)(36756003)(69596002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3635; H:hyd1sverma-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; CY4PR0701MB3635; 23:mei1+NXNuF1YXS27kkxR4Fx2nU8V1UAi0Z3drbK?= 2Lap8sJYcDBccofqAE1wFtZOGMhxvt2qK87d7XrCfe7fuN97Shpdn/aTkudnRLpQZK8+QOoTYC/kw4YYYMJafqnNNu0AqFd4O07+WmBwbNFohYMsDD0W4SJfWHf3Ao6Rcv84JmTOQS5Bc37EiIh5H6nNKWdrl2Nc9wbQJkyMb521BPlfuSul3Q9lybt5HeNgr3IRZYwa7I8tCq8JfqZ0Xjec6Tsd1ASSF0xaovbVkV0a8HIVTSndQAHPcK/h+LJ/YnNknyXnO9O3TUODUdQ79QPIiZDwQO4n8Xii5EIKIGTo3+TYduyd3+9jXanJbWxJa1+67EmPWbjGt6Uve30KTVmLYD4FAu+2TR+5sX8TJ4qmFD7y8c5eHw3kF/G7PPnAY9CoeL42ZTkHH/+kQKR4fA0ERnEv72Grk/Q4l0M4M4iW99GboiQVSoXNleSIaxn136RXHN4s+Fc+Py53CzPMg91xyowQj4+7ws4736uUp0fxVY2MSgkU2q8AGbTPhZkHvwlbm6lVAJc8CBJSl/ijPbEimrpzlt7B8aBCb+G3MOUd0ZvM5nNQBB/HOUkgEDMUhXF57FWp9iJkctjgGNgnwltOySqIesPmMVl3poC4wYV71YUay0YfLPPw5I/9m6cnjbf59Mh20CMAz8TOZjprocyGdpxSwe1Kv6bj3WsONaNd9Bs+RGYDWfEeKRAZfUMKygU2aoZrdBx3fkn4inIfI38eA7gNduSCvqaL4mP3YCJoj5mRxhg7sE8tJapasWakY4xuhFo0GfBdXms57My3m1RP9whP5GvHxPbGzm+Eb/V1VbhUi+fTUzkJ6HzPeXLpdIJ9Z82oKXe/Ui34GrNrBw1BNuAsbA8enRQElSohO9UmUY2QygPg4F6OXiKn7QI+9CuLgA/zvg8WCi//1RY5CsFeZtnpUMNa1FrTGIfIjNhuLQbQxxF41IpApfHxQ+ZJHQAGcv+fzMDEz8qf/mvDt6lsFPf26W29dtLkmQ66hROPFlsxRMyyAaXdEumfQdfoWqWEhcCInV85hU78e/Stda7h8xMPLhDcc8u0PgFthokLrK/Mmo22OcbnsiCe0z9xEG2ejx6BMWDDBX+GqmRz65ltzSub5I0XrMPjI3G22p9P4E+F6laozUtYQBpFSLbp9QQ2GAXQMVVrcKUcdK9Wh1oiS1bQCROjo+kaSLAAlFbAoveaedaBZZuBOx97UaeTuOgqS2RKflxMeZMfy6+12yOzorSfA37IwPtI2KA2sCNHhkCWITRh3SR/XaWLKVCoIQeXo4QzX2mfqhvByU54mlDCgzeIe9gWpogBRy7HCz3NS/D3V/u3nRUYxuEj2lDG6+kc= X-Microsoft-Antispam-Message-Info: 192M7Cj/IW9NTapTvHl7xMOZs1PWUfkr45Ab3xG/9Zo2NJsyWovzL0AObdOIsVVobUWlaYZb7v4+9nC8nMLpp83PK+5d+fIXyNUmKRTq9aKMHmAIB2bQm/ljIq1Zn3HOBlvZrZZl5Yy7kF6joc/xWe7fjM4aFy6emW2UH9C5EA2gFGM0RH9vuyJcLJm0H96JcuN2wlzM50HXJGYn7pN8P0R/qLMzV0qBaS6TIxl1HmCa6t4pkbl88RcxX8vrhNwyM+3sJCe4PalU+RzXJB+nSpAVeawogpY4F14PY41AxfDherucyu4XZhMfoa8kABpC9Pyq/ffLMs2cbakC/Mp7kxj27yePY6FIF6A7XCzxlV4= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 6:rIpzzbUzaD5N/NWsIxu3WvjV2yXbwVf5dqjv1fG2TJmQA6JCyj82AkhI/zaNfpv49TQuceYS/0MD/cdWSRgJSzftrIYubdvSj9Zvvdz1AXcJEsW3tzysoCClYYWHtUmF4sLh5lMOWdp+MLe78Au+h4aESPLNhiy+5cuaEyjBmE+Np8mldXa5luunTMCrh3CO3fUPcxns2FyiUg8AeGSm/8+PCWYQuOGgunEdQErS+STPikWZkD6mLEVG5q9Hp6zK8dV6qmMgjYgA3xMDbeahi2Z1kpr/hX2sMqNVrhSMXV8HJRzv3eVkkXRXj2fyzyP329Z+9RXpxQB/jg9WTAgaw5HbWqm61rBc465VsnQ8k3Nahbhg+tugpUH+DXoUyxQw9gAr54qpMONF2e9uFvOGkF/J9+GuRXuOBfxnr32EEde/37M2arbd5s01oDSHiOEm2KNEiGDdHNeisMa4OPEykQ==; 5:IAy85GGvGu/lFz6n2W6E+z3d79177JIz+Y4soi3hzrkn3G3rO56AzmmKcAZ5h399bxLixL+UyuTuLWrWV8LDOsdK6sr21Xp+Njkxvtfdc/+o31ajlhdv/uyeVa8qygkeuPYr5Q3qEZxZgASqEZL9vgeUFPOYaO3fT0ZwKm6qIO4=; 24:/Ieo7LncQwxPfcUU0MNsA1iMoyguvDD0hSezQodaRz5F60y8a+H2HUmIikZz/lk+ONbjTBdhU8RaBY5+PGe7B7WUHEER9jiAJkpI+N6VbRo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 7:EldKBlofhWm6Or8EPBJ5p60rMB1RDAOnzQzuobtEg3x7kjt0Zca62DE7agOzf0uwTrwQcdBf+RIOA9sBZQNxwjNHnmzCYZlYt/GAywSogA4SG/gTsbqYvi/UkOb+JRHLWLS4Hh8PFspG8p8BSppJsn4cGo2leFtp9WKy4fvHxZWj9TJUetCI8bPgcqOd1BKPntxNvg6pQntQRm4maOLzZiKqhoT4vFVBRfM/z+/g7qimZhy6gXW47GQGeDDZagDs X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:57:55.6128 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c954a62-cfd8-4d65-3ada-08d5e03cf636 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 Subject: [dpdk-dev] [PATCH v2 2/5] compress/zlib: 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" From: Ashish Gupta Implement device configure and PMD ops Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- drivers/compress/zlib/Makefile | 1 + drivers/compress/zlib/zlib_pmd.c | 2 + drivers/compress/zlib/zlib_pmd_ops.c | 236 +++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 34 +++++ 4 files changed, 273 insertions(+) diff --git a/drivers/compress/zlib/Makefile b/drivers/compress/zlib/Makefile index bd322c9..5cf8de6 100644 --- a/drivers/compress/zlib/Makefile +++ b/drivers/compress/zlib/Makefile @@ -24,5 +24,6 @@ LDLIBS += -lrte_bus_vdev # library source files SRCS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib_pmd.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib_pmd_ops.c include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index f667ccc..c4f67bb 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -20,6 +20,8 @@ zlib_create(const char *name, return -ENODEV; } + dev->dev_ops = rte_zlib_pmd_ops; + dev->feature_flags = RTE_COMP_FF_NONCOMPRESSED_BLOCKS; return 0; diff --git a/drivers/compress/zlib/zlib_pmd_ops.c b/drivers/compress/zlib/zlib_pmd_ops.c new file mode 100644 index 0000000..03b6da5 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -0,0 +1,236 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium Networks + */ + +#include + +#include +#include + +#include "zlib_pmd_private.h" + +static const struct rte_compressdev_capabilities zlib_pmd_capabilities[] = { + { /* Deflate */ + .algo = RTE_COMP_ALGO_DEFLATE, + .window_size = { + .min = 8, + .max = 15, + .increment = 1 + }, + }, + + RTE_COMP_END_OF_CAPABILITIES_LIST() + +}; + +/** Configure device */ +static int +zlib_pmd_config(struct rte_compressdev *dev, + struct rte_compressdev_config *config) +{ + struct rte_mempool *mp; + + struct zlib_private *internals = dev->data->dev_private; + snprintf(internals->mp_name, RTE_MEMPOOL_NAMESIZE, + "stream_mp_%u", dev->data->dev_id); + mp = rte_mempool_lookup(internals->mp_name); + if (mp == NULL) { + mp = rte_mempool_create(internals->mp_name, + config->max_nb_priv_xforms + + config->max_nb_streams, + sizeof(struct zlib_priv_xform), + 0, 0, NULL, NULL, NULL, + NULL, config->socket_id, + 0); + if (mp == NULL) { + ZLIB_PMD_ERR("Cannot create private xform pool on " + "socket %d\n", config->socket_id); + return -ENOMEM; + } + } + return 0; +} + +/** Start device */ +static int +zlib_pmd_start(__rte_unused struct rte_compressdev *dev) +{ + return 0; +} + +/** Stop device */ +static void +zlib_pmd_stop(__rte_unused struct rte_compressdev *dev) +{ +} + +/** Close device */ +static int +zlib_pmd_close(struct rte_compressdev *dev) +{ + struct zlib_private *internals = dev->data->dev_private; + struct rte_mempool *mp = rte_mempool_lookup(internals->mp_name); + rte_mempool_free(mp); + return 0; +} + +/** Get device statistics */ +static void +zlib_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 zlib_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 +zlib_pmd_stats_reset(struct rte_compressdev *dev) +{ + int qp_id; + + for (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) { + struct zlib_qp *qp = dev->data->queue_pairs[qp_id]; + + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + } +} + +/** Get device info */ +static void +zlib_pmd_info_get(struct rte_compressdev *dev, + struct rte_compressdev_info *dev_info) +{ + if (dev_info != NULL) { + dev_info->driver_name = dev->device->name; + dev_info->feature_flags = dev->feature_flags; + dev_info->capabilities = zlib_pmd_capabilities; + } +} + +/** Release queue pair */ +static int +zlib_pmd_qp_release(struct rte_compressdev *dev, uint16_t qp_id) +{ + struct zlib_qp *qp = dev->data->queue_pairs[qp_id]; + struct rte_ring *r = NULL; + + if (qp != NULL) { + r = rte_ring_lookup(qp->name); + if (r) + rte_ring_free(r); + rte_free(qp); + dev->data->queue_pairs[qp_id] = NULL; + } + return 0; +} + +/** set a unique name for the queue pair based on it's name, dev_id and qp_id */ +static int +zlib_pmd_qp_set_unique_name(struct rte_compressdev *dev, + struct zlib_qp *qp) +{ + unsigned int n = snprintf(qp->name, sizeof(qp->name), + "zlib_pmd_%u_qp_%u", + dev->data->dev_id, qp->id); + + if (n >= sizeof(qp->name)) + return -1; + + return 0; +} + +/** Create a ring to place process packets on */ +static struct rte_ring * +zlib_pmd_qp_create_processed_pkts_ring(struct zlib_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) { + ZLIB_PMD_INFO("Reusing existing ring %s for processed" + " packets", qp->name); + return r; + } + + ZLIB_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 +zlib_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, + uint32_t max_inflight_ops, int socket_id) +{ + struct zlib_qp *qp = NULL; + + /* Free memory prior to re-allocation if needed. */ + if (dev->data->queue_pairs[qp_id] != NULL) + zlib_pmd_qp_release(dev, qp_id); + + /* Allocate the queue pair data structure. */ + qp = rte_zmalloc_socket("ZLIB PMD Queue Pair", sizeof(*qp), + RTE_CACHE_LINE_SIZE, socket_id); + if (qp == NULL) + return (-ENOMEM); + + qp->id = qp_id; + dev->data->queue_pairs[qp_id] = qp; + + if (zlib_pmd_qp_set_unique_name(dev, qp)) + goto qp_setup_cleanup; + + qp->processed_pkts = zlib_pmd_qp_create_processed_pkts_ring(qp, + max_inflight_ops, socket_id); + if (qp->processed_pkts == NULL) + goto qp_setup_cleanup; + + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + return 0; + +qp_setup_cleanup: + if (qp) { + rte_free(qp); + qp = NULL; + } + return -1; +} + +struct rte_compressdev_ops zlib_pmd_ops = { + .dev_configure = zlib_pmd_config, + .dev_start = zlib_pmd_start, + .dev_stop = zlib_pmd_stop, + .dev_close = zlib_pmd_close, + + .stats_get = zlib_pmd_stats_get, + .stats_reset = zlib_pmd_stats_reset, + + .dev_infos_get = zlib_pmd_info_get, + + .queue_pair_setup = zlib_pmd_qp_setup, + .queue_pair_release = zlib_pmd_qp_release, + + .private_xform_create = NULL, + .private_xform_free = NULL, + + .stream_create = NULL, + .stream_free = NULL +}; + +struct rte_compressdev_ops *rte_zlib_pmd_ops = &zlib_pmd_ops; diff --git a/drivers/compress/zlib/zlib_pmd_private.h b/drivers/compress/zlib/zlib_pmd_private.h index d4c80b1..dc83464 100644 --- a/drivers/compress/zlib/zlib_pmd_private.h +++ b/drivers/compress/zlib/zlib_pmd_private.h @@ -30,4 +30,38 @@ struct zlib_private { char mp_name[RTE_MEMPOOL_NAMESIZE]; }; +struct zlib_qp { + struct rte_ring *processed_pkts; + /**< Ring for placing process packets */ + struct rte_compressdev_stats qp_stats; + /**< Queue pair statistics */ + uint16_t id; + /**< Queue Pair Identifier */ + char name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + /**< Unique Queue Pair Name */ +} __rte_cache_aligned; + +/* Algorithm handler function prototype */ +typedef void (*comp_func_t)(struct rte_comp_op *op, z_stream *strm); + +typedef int (*comp_free_t)(z_stream *strm); + +/** ZLIB Stream structure */ +struct zlib_stream { + z_stream strm; + /**< zlib stream structure */ + comp_func_t comp; + /**< Operation (compression/decompression) */ + comp_free_t free; + /**< Free Operation (compression/decompression) */ +} __rte_cache_aligned; + +/** ZLIB private xform structure */ +struct zlib_priv_xform { + struct zlib_stream stream; +} __rte_cache_aligned; + +/** Device specific operations function pointer structure */ +extern struct rte_compressdev_ops *rte_zlib_pmd_ops; + #endif /* _RTE_ZLIB_PMD_PRIVATE_H_ */ From patchwork Mon Jul 2 16:57:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42117 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 29B571B597; Mon, 2 Jul 2018 18:58:03 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0059.outbound.protection.outlook.com [104.47.33.59]) by dpdk.org (Postfix) with ESMTP id 0954B1B590 for ; Mon, 2 Jul 2018 18:58:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CsSXd7xZeDAzsPEov6i/fPYkjeykCdyv/Mg7RcbcBCY=; b=NDVzjgHgHkwZUKjWS226iUxFUVh6b53nUJDS/dgAGhrWB4nhbknuEZY4MTtMJnnmLSea6UZljgOmBjvtT+aLUDwkghFqSZckzqZElVRrnvQrx4ndbhqdG2Fat2b2aEeqWB4doIWgmMa7Fx26X6cR1AgoI+2xHynSWQMO52yTgUI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Mon, 2 Jul 2018 16:57:58 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Sunila Sahu , Sunila Sahu , Ashish Gupta Date: Mon, 2 Jul 2018 22:27:09 +0530 Message-Id: <1530550631-22841-4-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::21) To CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9d4750a6-5b8c-4ef7-2b8e-08d5e03cf7ea X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 3:tGxB1cqjoJa+c1wQTPDgugHjXAFWBhnOUQQhEVFML0i9/SvAJj21Pt78S4XalTv32e3as55d8AkV4c7hQUt1SXip62F9JAyHMPmIjE8JQXqLauBdPkjP3BzVDtVqP5KuEcKAoMzmcr+B2otHyRrYudzFGGuGnDbPbPAsS8zAifq3aNLmkzA8jnWSWHM8YxhhA1wJhq3uCT2MgHuUmhLC1x4pXxKSGQu3esNJcqrDOzJRs04N5R8I9J3K6545Ily2; 25:9STeP9SJpaT4hpIP3WpEidvBf8efcmAfreT2gXXBCYPim2JS9w5uzoiQpnCeR4+h9uAY5PNKdyazoDTRxjWmbBqqYpiq1neD1oScyE120hFowosbXtARcmzioE5aeNWJTBKihCx+0l+60qKwQwq91ClXM7ThR7a2tGIQao8ujwdHZcE1UWXLQlfdda9BUlrgxUuMi6P2LUUONOLzN0SII2G883DHpvgOZiL365ARQqRtIFPrXIHQnThpgHGy90dRo4BNvTiax32YXb4VDxXFuTleHMniei8ye2u/4xUGMlmU8Odf+TbOgkBV2QX9I4Oi7Dyc+OW7k277GD8Cx7ySdA==; 31:qGlobXjsvBCDO/ychysowZnbQhuG7q7dkbciCwn96fho7DGrXQNc0LpDhVdkxnKgzilEq+Qdzorpt2cgBAXlfN6lkZ2KxWpNjaUlxlEO38hqkE89ZT4zjdaT78FNbtjpWIZxy7m6a35fc2oQD6w6nMUVxi0j2qSVFute7uMv73yvv0unoA9fxd9ll4+1u5VE7sBx7K365kKxSAixqCQ0CouIXRN1OQEMX4x6OwgSOd4= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3635: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 20:WmCdPBgsB88CVya3lvaafEXIdcx/sP/h+I5a8m5aKWTGIq9waFZmEH7JmlRBSwhmXHszjJdxxNBvw+DtRh8c0m/mB/FXXvDQc8Wm/i0vs1SAwudX+RS0XleG1/eyn+QJHyXzj4CTYqdisFhgvXht1GIwmOafJHpjvxeoc7GH+u/Bg7BYUQQnxun+AJIHi3mHz29YJaoi/6d4ICmwjeA34M4GGiPQiCu+nz6dqq9t+Largjx2Jhh1uTMN9/d0AdjLS9/BE72biRn9EpkPtFFq5jCbviJYQ8DSnjB6F0SS++0xmI0eVftUJl+4ZYVGc0c9DqC4GVONKC4zClGAdcljGGftXI88ZlFS9ETCdMAwkFpQdkaeDM0A3CIWACzryaZHs5kMWklY6zdCL/SWuOVLhsLcEsIUDZGuwnq31ANHPQqSxHfEcX3mFpksdAFxzfW/p/j+r+lr+/0YBOwUPAgb1255xAKmbYX257gg87Bcabm81jZy3gkcGfX6gvXQQE9ae0RLivHZ09CcMJAKz45J4ipRkUKYBGpgGqX2D30peGpEffNXICX30YdX1bLN7+Frf9zR5jozC36GZFUG3Sc9QaFc3tucaCqPoEd2b66cL70=; 4:slhdDK/DK2Nrc5mAKQF9tBYjz7r0dV8a/dGpiDtaRsC4Tl4r4mqErLro70/sE30fvDahOLjUwErXS27rf2SesBfUnylCB8fv2ct7Fl5h6FivCGU5YRavFO2UMPFIx09J3Deri9ADdMaDTWQ0DX8pdBHHl+JdmsANC4czsjtQKUU+ZAAJZ9YtOgCliDczlSvQQE80HZxTGcvbyvgfUTImeCSwfKjdvhhQYZSTQsHvnRaYT0CkkEl640+woOYYHIccaMe+r8h/GJ7khtGN0H6ICw== 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)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(376002)(366004)(136003)(199004)(189003)(478600001)(72206003)(106356001)(6486002)(42882007)(4326008)(53936002)(107886003)(25786009)(476003)(26005)(8936002)(16526019)(6666003)(8676002)(55236004)(2616005)(11346002)(6512007)(51416003)(76176011)(186003)(6506007)(446003)(956004)(52116002)(6916009)(81166006)(7736002)(81156014)(44832011)(486006)(305945005)(386003)(66066001)(16586007)(47776003)(316002)(50226002)(54906003)(5660300001)(3846002)(6116002)(50466002)(48376002)(68736007)(2906002)(2351001)(2361001)(97736004)(105586002)(53416004)(36756003)(69596002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3635; H:hyd1sverma-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; CY4PR0701MB3635; 23:rUjfI8SewCxwKbojrM3DV7IBGC63hIW81wTZCt9?= acNUO55r7Q1Enco/DZSS+bs0ELcdUNyWh8NlLXgBESDDEHG80roGcizZRv1LxkvCEICszo+9B1O3yBhWe50qdm89Goii/o3pM2v9n4wx6IdFEcJydx6ayt2zsd+ENJb74zidZqFFz3Q1Xn0VyLjvoGZDGY2fv9XP/o/0RQguyfL6MFSWQ0ZJ1anFB8Jflj0yEg8ZNPPomPtIIgl9FAqISQ4jaTtlOL8jKF7OKn9Zay9CUbg+7q1Ngv55bgMjqyEkL5UKxK5qNF1necBG+bsVrj2okk3lv183qGjMAZDzTGvuekelIQeIiWQ9+J1L/ihCJe7afEFLfgaFHao3mC/sKfgYZMs46AN9PfF4aNWf42vz3GEYssxCHiXvV6b6i1oZdobhxqSVK6ZN7xNgm+G4D3dz8VDGBkDLRPc2gR2kDMF6UdbxJ50YAmrS6SmE2hKLDhr/uTdFuFdvUbEUxl3Auw8UqedHfyMGAUm1BqZRU429SJsdOPXfYBZmusZdL/ezW3vyQJpHPBEurwMyMwYDDWxsZ2bOoFaFjB1cZi8j+EBcyW9r+SH3AoqYRNknu/xpSbgNZ6fVMz0TpODlL/EYK46u8aLQF1m4rv0xlnu3q7DR1XQ5c7KTVx8ZwIqyK6A8MoCc0oj04C6Qdt6oFL6d9gi2hsN2knlo7M1IK6LnI5CMIVajky/6KYAUohc3RrFFAd/kORoj0ZfB+vn85J1Qagh3EGW6MIE8ZAHp9aXstOxrUhdV+471eNoAopRHYYa15czYFbGK1sHBK7rb2wz8OJnejU3SYjQlw7P1QCnMDupy1pPAOf6jkuVhGkCMT9M0ePiX5UR5lHVhYTdG7Tvr+ovHoYo8JZAciGdpdB7uaSnmiD7q1HAwNfak4x72nTQPxs3zKpIJlm4YSM36kYoiJOI3dRB8YzF4LBmCfnecZNd2AzeoeUqmiQ+02dHRQyvuU/NqxytTj/bF89E83irFDDTTuoo4PpN0I4RBd9vjjuG25yxdSGj3vuAtpEDRoDf5X32rgMaKaC9Xa8HFrrExVaJlXFUx3NdZfnlbBUHniz5NdC6XluohAwusS1x4y5u7VLQUbXss4olixRidFTwejpSaW6uy0nS3gdi/5hHK8/27pA+Ix9wa8/KDFTKolNbkOoDiJ1vKIX/irAGA49Uk9Sad4iQDRDOT3pr4uUZHZayL9k/m+Qk57bzEapVyjo0u4x9TBM+kdjU4lNs79KSJ2LaAjw5yvQvLccotlVfN+NY2w1B2Gyi8eRpLpXvU7x3tTqKGDyLIB1iBwEIeq7UGvR2VCTMKyGEX1BAhOiVb1bx7r+g== X-Microsoft-Antispam-Message-Info: YmbnbsGnJuvQNJvgrw+0WAgmui9ZSZMELXEkd+EtzX+bSWLZUkCWwNk9lh+D9K10vEeW6Fif5CMJljU0nC1/GykZsfVmKIRe/olLnl6ukMqDGA5ZHOIgdv0L2RlMrQc/GfYAHz+/Y3cIeTs4E2dcXQJgtuNLjkfOy4P1CuCz8v9/i3pylo/Q14HsVbEMdlKjrVukGBC4AnFrtFbPGHVbhaLnblhQ7qE0w6ElhgLbDQgA1Bd+gc4QlKlmrW8v2nFwVYWfhdmizg2qNL4FA1qpIgSPUy4BeYfznEjmyzdbTnihClOoKw15S37M+liRNx/be9+ieb1sDs8sDL6NYQwRiCv6EWYycnMSZ6oHkDy+hgw= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 6:kXCZUr7VVvw3crWkbk153wWepJvMlVwVlcvjqEKPj/1Xz3L31Z7uqSn6CPim7b1W0PA3QY/ZXO3v4mC+m4u52LpKZQhHnmIPuhuSdUt+2qJQrWqG1YyvpPCabDchI6qkJl8YeMqZ17STH7BNgXOA5K7SL4FyKG7FtPdC/4Dqgge4YYjxoz4+nfsR22cntpshhCApjI5zDr0q61VjlXICBtZcHEfy5q1B3MZWyHd/RmcYCOcdweLAhyQqgFYznSz1j116GZ1mWh7BfLr7l89tt67IIp+EfCqQ7qOcUkx2YbhBaiQivyoq17cWgadIfORxQPNCyCPPcJS46Xp4MB5XMQvCEOfHMy195JNqQrLYIpSkIGwaJMm7jA1a27MqRFaV52BAOIv+633kjoI3QuE+AJikLoXsX1vTXQbRqUwPnUsUTH5gsdFVRa2aKfkIVuZ26zjT+aoWLMQOcQBWhQ23sw==; 5:x9X/GfQ3AAnaosu1if2wv6ef/vn5EutQE+tqXVpaFe3tJEqNpG/i5K/6i8IjyyRQgj6gLQvX9gAhPjDULS5nbXgVYEZKHa2xHPVtG0xd5Rru7D7sT3POVwCqKiYKNt7rNQOCKP9bClkU4K4YVJi+zodim3Q6aU7XzW1/k7vSgw8=; 24:N7fomY5Wz03JOIhRgRqNOOApbZU9vr4kgaMsEibWjEdvFDpv+UDaM7YzD3DeertEgdUq7Dt+33TjMl5IXsW+klRSJVPE+UQI1QoBsIt4s84= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 7:1sZJyGFbetfb1OCpPclkiuXZdDFYGBV51ZbzEFhB4VDEhiBZJO+Wvp5lCxcw5KQanT3USTQYLSobhdyOcetgXb5/bzrQCHXJU3zz6DRmIPpqE625cMbsmTTQOiY7QoKBk553IV3zTsmkhZsp3LBAJhv5tsFnTZe85NNXZTF7cK3sI5H0Kac5FBtXpue1pBWyqvsvQyKrAmPPpeg8E83/uZUwgi+B9o4pImyn08/shAfeZA7UpmKQGKm4k6I3kEhh X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:57:58.2216 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9d4750a6-5b8c-4ef7-2b8e-08d5e03cf7ea X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 Subject: [dpdk-dev] [PATCH v2 3/5] compress/zlib: 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" From: Sunila Sahu Implement private xform and stream create ops Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- drivers/compress/zlib/zlib_pmd.c | 93 ++++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_ops.c | 83 ++++++++++++++++++++++++++-- drivers/compress/zlib/zlib_pmd_private.h | 4 ++ 3 files changed, 176 insertions(+), 4 deletions(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index c4f67bb..7c2614e 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -6,6 +6,99 @@ #include #include "zlib_pmd_private.h" +/** Parse comp xform and set private xform/stream parameters */ +int +zlib_set_stream_parameters(const struct rte_comp_xform *xform, + struct zlib_stream *stream) +{ + int strategy, level, wbits; + z_stream *strm = &stream->strm; + + /* allocate deflate state */ + strm->zalloc = Z_NULL; + strm->zfree = Z_NULL; + strm->opaque = Z_NULL; + + switch (xform->type) { + case RTE_COMP_COMPRESS: + /** Compression window bits */ + switch (xform->compress.algo) { + case RTE_COMP_ALGO_DEFLATE: + wbits = -(xform->compress.window_size); + break; + default: + ZLIB_PMD_ERR("Compression algorithm not supported\n"); + return -1; + } + /** Compression Level */ + switch (xform->compress.level) { + case RTE_COMP_LEVEL_PMD_DEFAULT: + level = Z_DEFAULT_COMPRESSION; + break; + case RTE_COMP_LEVEL_NONE: + level = Z_NO_COMPRESSION; + break; + case RTE_COMP_LEVEL_MIN: + level = Z_BEST_SPEED; + break; + case RTE_COMP_LEVEL_MAX: + level = Z_BEST_COMPRESSION; + break; + default: + level = xform->compress.level; + if (level < RTE_COMP_LEVEL_MIN || + level > RTE_COMP_LEVEL_MAX) { + ZLIB_PMD_ERR("Compression level %d " + "not supported\n", + level); + return -1; + } + } + /** Compression strategy */ + switch (xform->compress.deflate.huffman) { + case RTE_COMP_HUFFMAN_DEFAULT: + strategy = Z_DEFAULT_STRATEGY; + break; + case RTE_COMP_HUFFMAN_FIXED: + strategy = Z_FIXED; + break; + case RTE_COMP_HUFFMAN_DYNAMIC: + strategy = Z_HUFFMAN_ONLY; + break; + default: + ZLIB_PMD_ERR("Compression strategy not supported\n"); + return -1; + } + if (deflateInit2(strm, level, + Z_DEFLATED, wbits, + DEF_MEM_LEVEL, strategy) != Z_OK) { + ZLIB_PMD_ERR("Deflate init failed\n"); + return -1; + } + break; + + case RTE_COMP_DECOMPRESS: + /** window bits */ + switch (xform->decompress.algo) { + case RTE_COMP_ALGO_DEFLATE: + wbits = -(xform->decompress.window_size); + break; + default: + ZLIB_PMD_ERR("Compression algorithm not supported\n"); + return -1; + } + + if (inflateInit2(strm, wbits) != Z_OK) { + ZLIB_PMD_ERR("Inflate init failed\n"); + return -1; + } + break; + default: + return -1; + } + return 0; +} + static int zlib_create(const char *name, struct rte_vdev_device *vdev, diff --git a/drivers/compress/zlib/zlib_pmd_ops.c b/drivers/compress/zlib/zlib_pmd_ops.c index 03b6da5..812406b 100644 --- a/drivers/compress/zlib/zlib_pmd_ops.c +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -212,6 +212,81 @@ zlib_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, return -1; } +/** Configure stream */ +static int +zlib_pmd_stream_create(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + void **zstream) +{ + int ret = 0; + struct zlib_stream *stream; + struct zlib_private *internals = dev->data->dev_private; + + if (xform == NULL) { + ZLIB_PMD_ERR("invalid xform struct"); + return -EINVAL; + } + + struct rte_mempool *mp = rte_mempool_lookup(internals->mp_name); + if (rte_mempool_get(mp, zstream)) { + ZLIB_PMD_ERR( + "Couldn't get object from session mempool"); + return -ENOMEM; + } + stream = *((struct zlib_stream **)zstream); + + ret = zlib_set_stream_parameters(xform, stream); + + if (ret < 0) { + ZLIB_PMD_ERR("failed configure session parameters"); + + memset(stream, 0, sizeof(struct zlib_stream)); + /* Return session to mempool */ + rte_mempool_put(mp, stream); + return ret; + } + + return 0; +} + +/** Configure private xform */ +static int +zlib_pmd_private_xform_create(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + void **private_xform) +{ + int ret = 0; + + ret = zlib_pmd_stream_create(dev, xform, private_xform); + return ret; +} + +/** Clear the memory of stream so it doesn't leave key material behind */ +static int +zlib_pmd_stream_free(__rte_unused struct rte_compressdev *dev, + void *zstream) +{ + struct zlib_stream *stream = (struct zlib_stream *)zstream; + if (!stream) + return -EINVAL; + + stream->free(&stream->strm); + /* Zero out the whole structure */ + memset(stream, 0, sizeof(struct zlib_stream)); + struct rte_mempool *mp = rte_mempool_from_obj(stream); + rte_mempool_put(mp, stream); + + return 0; +} + +/** Clear the memory of stream so it doesn't leave key material behind */ +static int +zlib_pmd_private_xform_free(struct rte_compressdev *dev, + void *private_xform) +{ + return zlib_pmd_stream_free(dev, private_xform); +} + struct rte_compressdev_ops zlib_pmd_ops = { .dev_configure = zlib_pmd_config, .dev_start = zlib_pmd_start, @@ -226,11 +301,11 @@ struct rte_compressdev_ops zlib_pmd_ops = { .queue_pair_setup = zlib_pmd_qp_setup, .queue_pair_release = zlib_pmd_qp_release, - .private_xform_create = NULL, - .private_xform_free = NULL, + .private_xform_create = zlib_pmd_private_xform_create, + .private_xform_free = zlib_pmd_private_xform_free, - .stream_create = NULL, - .stream_free = NULL + .stream_create = zlib_pmd_stream_create, + .stream_free = zlib_pmd_stream_free }; struct rte_compressdev_ops *rte_zlib_pmd_ops = &zlib_pmd_ops; diff --git a/drivers/compress/zlib/zlib_pmd_private.h b/drivers/compress/zlib/zlib_pmd_private.h index dc83464..cdfa866 100644 --- a/drivers/compress/zlib/zlib_pmd_private.h +++ b/drivers/compress/zlib/zlib_pmd_private.h @@ -61,6 +61,10 @@ struct zlib_priv_xform { struct zlib_stream stream; } __rte_cache_aligned; +int +zlib_set_stream_parameters(const struct rte_comp_xform *xform, + struct zlib_stream *stream); + /** Device specific operations function pointer structure */ extern struct rte_compressdev_ops *rte_zlib_pmd_ops; From patchwork Mon Jul 2 16:57:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42118 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 6774D1B56F; Mon, 2 Jul 2018 18:58:06 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0074.outbound.protection.outlook.com [104.47.34.74]) by dpdk.org (Postfix) with ESMTP id 18C681B59B for ; Mon, 2 Jul 2018 18:58:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1/sWABGiYtF7oOQntejsw7sAJYxutnTddlhPDAhLg7A=; b=HXbd8udGrRmtNXlseRidZPGnWwh555cwkgZem8wuXMpVmj7ynu0PtVFtHvbj5B7yrDH5GgUWrEpBZ33tAXsO1fnEoMTYJRtvpcBnzNWBXco8ygs7Lv1sImO3cVP4l/anQGQGU5k1sD8j3XFFshsGwx19wAUUm60o5owLFKwKtlg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Mon, 2 Jul 2018 16:58:01 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Sunila Sahu , Sunila Sahu , Ashish Gupta Date: Mon, 2 Jul 2018 22:27:10 +0530 Message-Id: <1530550631-22841-5-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::21) To CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1e0dbbad-0d59-4620-72cf-08d5e03cf9ae X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 3:1D31K5+woISv4VO+u2xoC6MKEZSEVJg056FkYoInRvp3cVk7X//MWy+hL05JY9ZMu5idbUpMEy9pXWCKKnq829i7w1SKgxaEHI5AuDDhEp2fJAOgoRSNLhV70ebQJn4BR1KDMbrFqfpe/+XbARffb76wZs2VTK5EEOoh1hXN24/xF2e3ioYGsmRypIKo8bg/fbzw3vBLGOkroErxBlEMhdLMgBX3qhCuMevMp1yk0zI46AsVW54oL3HceU5LYhmX; 25:saR/Srrameksz9dJfV0he+ASFKG3DG/K4lqTcT6slgECQMNlqvBX0O3E7A07N5nzzHFLxvSwsrvknb30iLEYBf+JXirzV7Jfu7fXUcFXuR264olx8R3dqocUlCsTsNNDgrLiC88mYJVgEl/D/7IZwf+5PEY2FTDXQMO6Y99t8Ba6MiABXaywAeJ3Wvt9Nfcy5Gh1TUQtGb4HOqQA+vIMkfA4DnfTrvFVZ9m91vcUcunvSRO/UQJcjvlpVQ54riiNziRJLGOladc6uUajSmcCfwG/apZFPM+nxlt/UrXv8xFYVit6bTxAxKtoDH3yL97LHrk0qQqzUkeDW3B4tCozZg==; 31:KRy2qTQrZehFred3gtQxQDelWjpVx14UzXsjZUa+iN1r8DYded8loeLkpfG3eMea68Np92xC6XlKnDgrEv0C8DkHvds+KH5C6abFtypyTmXy+DBOFB+M3TyL8LJ0DTm5wRO/dAWxLdi/dqygpgTSVprUUDxvpqX3YR6NXBYPnOa1ErjbjXR8OnRaXerh3fuMwMVfsXTUHvzUY+AnwRbRRRIVk+q+JzGT3SHddbnpsYM= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3635: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 20:4siyPdthwwcyb1Mfp2u1tpH++lkX60BYOfxe14fpuQsNF+Q9dWxSZQPU6im9yBUGdGOph9uzCDZKYBwRhhVeoGnx/Fg+cydozuetS5zr69yfdxwlcN5qWCFO/DAmL4mzv9nlO8Bk0Zxk0UtxE9KXUkp3zAg9CJNoL18vha6vF2vfBdV8ClkGIKRu+QvWYuvb/qJN03GUt9CTZme1Zvkv3KKwOIJ64CmrttTyS1i92Zwv5MEpRQ502bUpLcQYd4EydmCT8cLCxoDpv8SDugPfZ0eGpOGMXLijSJpKvKKLGbVAuplMuOQB4UBYq+ZYpQQ0iGVQY7PAtO+CcGz/jfDNjAsiYPvzyXS7QkQn+JzVPIqBqUzuZCYqToVNZcUK2czgIHjNVCGEScXYnRm6s3RaPDn00fwtKouL3oPPE2Ln4IUJHJR89dvnQcvAODgweIc6eZK7JHQHUrG6/zRpi1q4MnlT9O+YaC7OL50U6P2hpBZfTw6Gn2XqKQUfazcdkYCxgqXOzMrENZswxfbq0cYchPN5J9o6wbh9TWMWzPU6+rIc6WZqZsWycll/slJCBvq/PX8nlyisioPdr0b5OPr/Uxv7jLyXl28eyVHz2KKgC08=; 4:MatSQJ3H6Rmt2E3Oa1qAN5OmLicLa/+pWSggXGCSuC/0wWHRiXypw1YlJtP1zgACoSbBR8YVqh2/NIQmoENdcHDxdPk0rDVy7cHhhehNn7Gvrt2JWfMUzP+51WE6r+J+EXgtTsH8SNPHQELD0f0QzDY6saDsckQSGhkwCBQj8jS7SQ9SiexQ7jxwcEPOnza1FZpF8G1jeXEGuMZLbVmInS19/DwWbkGU5LXXJ/LaWk651yRQ8Ca37MpquWZDj8lTwHL2VG5Elm2ePGYI0b3hmg== 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)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(376002)(366004)(136003)(199004)(189003)(478600001)(72206003)(106356001)(6486002)(42882007)(4326008)(53936002)(107886003)(25786009)(476003)(26005)(8936002)(16526019)(6666003)(8676002)(55236004)(2616005)(11346002)(6512007)(51416003)(76176011)(186003)(6506007)(446003)(956004)(52116002)(6916009)(81166006)(7736002)(81156014)(44832011)(486006)(305945005)(386003)(66066001)(16586007)(47776003)(316002)(50226002)(54906003)(5660300001)(3846002)(6116002)(14444005)(50466002)(48376002)(68736007)(2906002)(2351001)(2361001)(97736004)(105586002)(53416004)(36756003)(69596002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3635; H:hyd1sverma-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; CY4PR0701MB3635; 23:WAHi6hLn0LPlfZSmfkMpTn5ESoZgNFhEyPXjLOo?= nRSboEGNj+EK8ewRYqexsoWRKrjiQW2oCZUG4mTzlKfmT/VnVM0WA2RD0xS2/4mlyLyu5XSBpxcs01yWhrzSyeKbrLk/fE4h8w2modE5ta5CFC1xMM8x6jaUFFvzKgzTgSUUgaHE7wNmPUbZ5fRcffBBM1crkK1M1SXuvfkxeZREabMsZufmz78ypNx9qlikYr4IUwwpbOo8f5kv+qcjKz2DrS8ZqbIrEr0gH5lPa7f5RzqGLo8up87XOGG6KWf+WZSdZgaeNY37bdrEjN5N8pqvcNxUZu+2EgqImQRxzCchYBL9QNAQBIQqmzwBbmUoq5HdvYjZ18yvxjkzRbnYtN8pGF/LLMjYTLeXTCYASWXKyLTBLaDhcRGvylVrS/2AEgmyrO63nrEnSusksXxf0Ym9o5SSnKhfK+94PxVcvHePk+U2V6Cdkfq+XB/naFayCuTFwCvoz4a0K7qSm0obFzUIFI3IM02hhKPSCW5+BkoX/2lrGuLhQNtYaUvrIyYq8R5GSSjolxBreket27VMDV/P930OKeN7Z+eDun00uiDd4+rWyIlOk01lChfNxGzA05Z6f3RqwobL4ysGd5ShfPrWRTME7FkhLYAanT4dTNlLZBb86IbosstTYG9mTXZ9cZogyuJZ87Zi/YEa4R7hjZ7aX6d5yGw9kUf+fFazwXQwFtUiQDQMYBaJ7FxVtkv8v9+MpbdtcOZIl7j21EZvV5wp02pxsbQIrjIKe3JorEfS//yLuZ9kQ8JAHmrypYBX2oW2+XFK0NkEfKQfb5rnt9Uu0pY+9biBIBHS9AKo0SkrqeHRKSe80QisEaqlXx46rtwI3v435vPOu/4k1QO9QiQrf9BI8YQqviXDrstiMn6ofGplu8EZWDzAG+9TIYliRGUL+YDT3blGrpddnim3XJ/yElF9OU7SF84vQWO6b26ob67N86VuDcfotgc0p/nVUGpD7PiNJfD0Dz141lvLxZEUgPQNmC0BmaUH1e1PMFa/ix7Sw4ZMpKshhhdvuuhbpasUuLWxhhMv/mZmCpP2EtEsdO+dQknBY8S2e3Ff/0BuNV0HjyyWBP4Y94A8Gd6xVDGyb3qMKiqmpc1kxaSgtf5vxztGlIPAG2aNFVgVelkDFhyrWVj6Icb8zt5eLyC9PjjNZw3qYR5hnUEi29S+/beEV1enaywf5etlpCb2zYauuNtBIJpILVJ6ERoOITVgN/zVQZ+xS7jo2gDtDUXKQbo/La+z0hGJ5t2lqUxPmipUzczdyVH0u/kvyz6vu7Sw31PBj3nH5lUjwbk4ocKuKSfQ+Pir6J4bUub3M/6Eg1/QSeN/eGcm8a7tNvURlYUMD7js= X-Microsoft-Antispam-Message-Info: sN5BElWqaDGfAertHUTZNMSNAFqqj0gjBYnx0L2EQxv7sADXG5moVkQSfPffq/eA2S6SXY9qgcqI9GBknzPsOBbdyJL6mJQ4BO30nyHi4AsLYA5z0sEkiU48h65PjudUNro43m/hGGZkdKwsFfH4Mi9bitbgVcDzuXf94Mjxr/nQdQRvrzyHpv6YCEnmO1N8QIsfV7RADf5XUY4j2fapC5tf/ei5SAmN7dY0d4WqcdGyqmdd/EchvtusPuEdmeMiAAiwUQs49Is8XkGnRColiPvPHIStezlwAXosT/QF4UGxAjZt/HTag1WK9eE7zFfUaLfzbCyf5beIwZFfoSB1GezmAN526N2wXxuyjzxOjYY= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 6:Jim5CaR8qw9TzMNd4lL3+J55dlq1nWAEq/Z+pPyuEIO2FLM1XSEFhy0ovIzQIuawEVwaI1g1abp3VfVznGZNh7jpgo5JHxRsOmXEDIc8LQAPeYxgCYfav2jfONUuu6MHIgRYkFcZeJMbp0yqV+FelXNn7M9+SGd78wDDWSssG8xFL88Ecm2iV+eowaHU872SAXNK/V0RgGsOoMXGo9B/bqgS4OyYR6JO9CpeiwohJsd61vCb9jn/g48FQ786X8PUM7rnp4h9/IFq4D/zUsRuAHxcf46DiLE3dkIZFw1WjnGNxCLyeE5lZ++B4ewOXHUxusz213ZMTPJBrP9iGdOzJlyvNnio3aMw1UJTvDiHfox+9tWQNcAWi2hPfSt5Dy8kDSEg48JPGhdHtzI+kIBwKC5V0Ig1E4X9p5s0XPrvm3YJFyPaxF+ERWYFAuTklGrAxZNe9hYxeAV+/Xf7PvSeiQ==; 5:ja990/bciaO6Koc+IqYjSf+V0nM9htmFcIHOifDA2TkrwRMhPls6RhTvwUrz/v9BSBzqiO8XlnwZPfeeazHbEpVJy77ZUIAqEVgi7jNTbmm1Tz7aBV7N8eeI0pDF4b/g28WqbU0aj17ewlCEOgSa34krSSoKjWC/7lcvRkJ5TnI=; 24:yG4xtjhy1prTbczVMo4Ke02uibY/QHLmFIBLZFmTd/RTZzhmpyiyLG04F7ArdwhBaHyqpDEW3mwl6rjlc99QqWRGjuzeVkyWpcj6cJlqnas= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 7:BEIvYCM15UyzS+9GeA6yC832JZg6LtoSFmVFXxD6fol0veXrfm9u1TB6IrHlNF8LfT2paTpDRUt1mD8ZKMhQRZF2IgNN8mW+4XOrHMRZr+4RlA7GB3l/3clKqTeTz3MQaRDX62K/+RM37vo4gawdYQOWS9UspELjy6WqESL29EQW2Rld4rRkzAjvhsFv3l9gEZln1SeX23eHGxyJM87iAsQYrw9r++5PEVn/DAPX1nqz5XwcKhkuFj/lFaDvxTQ2 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:58:01.1846 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e0dbbad-0d59-4620-72cf-08d5e03cf9ae X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 Subject: [dpdk-dev] [PATCH v2 4/5] compress/zlib: add 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" From: Sunila Sahu implement enqueue and dequeue apis Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- drivers/compress/zlib/zlib_pmd.c | 238 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 237 insertions(+), 1 deletion(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 7c2614e..aef23de 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -6,7 +6,198 @@ #include #include "zlib_pmd_private.h" -/** Parse comp xform and set private xform/stream parameters */ +/** Compute next mbuf in the list, assign data buffer and len */ +#define COMPUTE_BUF(mbuf, data, len) \ + ((mbuf = mbuf->next) ? \ + (data = rte_pktmbuf_mtod(mbuf, uint8_t *)), \ + (len = rte_pktmbuf_data_len(mbuf)) : 0) + +/** Set op->status to appropriate flag if we run out of mbuf */ +#define COMPUTE_DST_BUF(mbuf, dst, dlen) \ + ((COMPUTE_BUF(mbuf, dst, dlen)) ? 1 : \ + (!(op->status = \ + RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED))) + +static void +process_zlib_deflate(struct rte_comp_op *op, z_stream *strm) +{ + int ret, flush, fin_flush; + struct rte_mbuf *mbuf_src = op->m_src; + struct rte_mbuf *mbuf_dst = op->m_dst; + + switch (op->flush_flag) { + case RTE_COMP_FLUSH_FULL: + case RTE_COMP_FLUSH_FINAL: + fin_flush = Z_FINISH; + break; + default: + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZLIB_PMD_ERR("\nInvalid flush value"); + + } + + if (unlikely(!strm)) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZLIB_PMD_ERR("\nInvalid z_stream"); + return; + } + /* Update z_stream with the inputs provided by application */ + strm->next_in = rte_pktmbuf_mtod_offset(mbuf_src, uint8_t *, + op->src.offset); + + strm->avail_in = rte_pktmbuf_data_len(mbuf_src) - op->src.offset; + + strm->next_out = rte_pktmbuf_mtod_offset(mbuf_dst, uint8_t *, + op->dst.offset); + + strm->avail_out = rte_pktmbuf_data_len(mbuf_dst) - op->dst.offset; + + /* Set flush value to NO_FLUSH unless it is last mbuf */ + flush = Z_NO_FLUSH; + /* Initialize status to SUCCESS */ + op->status = RTE_COMP_OP_STATUS_SUCCESS; + + do { + /* Set flush value to Z_FINISH for last block */ + if ((op->src.length - strm->total_in) <= strm->avail_in) { + strm->avail_in = (op->src.length - strm->total_in); + flush = fin_flush; + } + do { + ret = deflate(strm, flush); + if (unlikely(ret == Z_STREAM_ERROR)) { + /* error return, do not process further */ + op->status = RTE_COMP_OP_STATUS_ERROR; + break; + } + /* Break if Z_STREAM_END is encountered */ + if (ret == Z_STREAM_END) + goto def_end; + + /* Break if current input buffer is consumed or + * there is no more space for compressed output + */ + } while ((strm->avail_out == 0) && + COMPUTE_DST_BUF(mbuf_dst, strm->next_out, + strm->avail_out)); + + /* Update source buffer to next mbuf + * Exit if op->status is not SUCCESS or input buffers are fully consumed + */ + } while ((op->status == RTE_COMP_OP_STATUS_SUCCESS) && + (COMPUTE_BUF(mbuf_src, strm->next_in, strm->avail_in))); + +def_end: + /* Update op stats */ + switch (op->status) { + case RTE_COMP_OP_STATUS_SUCCESS: + op->consumed += strm->total_in; + case RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED: + op->produced += strm->total_out; + break; + default: + ZLIB_PMD_ERR("stats not updated for status:%d\n", + op->status); + } + + deflateReset(strm); +} + +static void +process_zlib_inflate(struct rte_comp_op *op, z_stream *strm) +{ + int ret, flush; + struct rte_mbuf *mbuf_src = op->m_src; + struct rte_mbuf *mbuf_dst = op->m_dst; + + if (unlikely(!strm)) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZLIB_PMD_ERR("\nInvalid z_stream"); + return; + } + strm->next_in = rte_pktmbuf_mtod_offset(mbuf_src, uint8_t *, + op->src.offset); + + strm->avail_in = rte_pktmbuf_data_len(mbuf_src) - op->src.offset; + + strm->next_out = rte_pktmbuf_mtod_offset(mbuf_dst, uint8_t *, + op->dst.offset); + + strm->avail_out = rte_pktmbuf_data_len(mbuf_dst) - op->dst.offset; + + /** Ignoring flush value provided from application for decompression */ + flush = Z_NO_FLUSH; + /* initialize status to SUCCESS */ + op->status = RTE_COMP_OP_STATUS_SUCCESS; + + do { + do { + ret = inflate(strm, flush); + + switch (ret) { + case Z_NEED_DICT: + ret = Z_DATA_ERROR; /* and fall through */ + case Z_DATA_ERROR: + case Z_MEM_ERROR: + case Z_STREAM_ERROR: + op->status = RTE_COMP_OP_STATUS_ERROR; + break; + default: + /* Break if Z_STREAM_END is encountered */ + if (ret == Z_STREAM_END) + goto inf_end; + } + /* Break if Z_STREAM_END is encountered or dst mbuf gets over */ + } while ((strm->avail_out == 0) && + COMPUTE_DST_BUF(mbuf_dst, strm->next_out, + strm->avail_out)); + + /* Exit if op->status is not SUCCESS. + * Read next input buffer to be processed, exit if compressed + * blocks are fully read + */ + } while ((op->status == RTE_COMP_OP_STATUS_SUCCESS) && + (COMPUTE_BUF(mbuf_src, strm->next_in, strm->avail_in))); + +inf_end: + /* Update op stats */ + switch (op->status) { + case RTE_COMP_OP_STATUS_SUCCESS: + op->consumed += strm->total_in; + case RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED: + op->produced += strm->total_out; + break; + default: + ZLIB_PMD_ERR("stats not produced for status:%d\n", + op->status); + } + + inflateReset(strm); +} + +/** Process comp operation for mbuf */ +static inline int +process_zlib_op(struct zlib_qp *qp, struct rte_comp_op *op) +{ + struct zlib_stream *stream; + + if ((op->op_type == RTE_COMP_OP_STATEFUL) || + op->src.offset > rte_pktmbuf_data_len(op->m_src) || + op->dst.offset > rte_pktmbuf_data_len(op->m_dst)) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZLIB_PMD_ERR("\nInvalid source or destination buffers or " + "invalid Operation requested"); + } else { + stream = &((struct zlib_priv_xform *)op->private_xform)->stream; + stream->comp(op, &stream->strm); + } + /* whatever is out of op, put it into completion queue with + * its status + */ + return rte_ring_enqueue(qp->processed_pkts, (void *)op); +} + +/** Parse comp xform and set private xform/Stream parameters */ int zlib_set_stream_parameters(const struct rte_comp_xform *xform, struct zlib_stream *stream) @@ -21,6 +212,8 @@ zlib_set_stream_parameters(const struct rte_comp_xform *xform, switch (xform->type) { case RTE_COMP_COMPRESS: + stream->comp = process_zlib_deflate; + stream->free = deflateEnd; /** Compression window bits */ switch (xform->compress.algo) { case RTE_COMP_ALGO_DEFLATE: @@ -78,6 +271,8 @@ zlib_set_stream_parameters(const struct rte_comp_xform *xform, break; case RTE_COMP_DECOMPRESS: + stream->comp = process_zlib_inflate; + stream->free = inflateEnd; /** window bits */ switch (xform->decompress.algo) { case RTE_COMP_ALGO_DEFLATE: @@ -99,6 +294,43 @@ zlib_set_stream_parameters(const struct rte_comp_xform *xform, return 0; } +static uint16_t +zlib_pmd_enqueue_burst(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zlib_qp *qp = queue_pair; + int ret, i; + int enqd = 0; + for (i = 0; i < nb_ops; i++) { + ret = process_zlib_op(qp, ops[i]); + if (unlikely(ret < 0)) { + /* increment count if failed to push to completion + * queue + */ + qp->qp_stats.enqueue_err_count++; + } else { + qp->qp_stats.enqueued_count++; + enqd++; + } + } + return enqd; +} + +static uint16_t +zlib_pmd_dequeue_burst(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zlib_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; +} + static int zlib_create(const char *name, struct rte_vdev_device *vdev, @@ -115,6 +347,10 @@ zlib_create(const char *name, dev->dev_ops = rte_zlib_pmd_ops; + /* register rx/tx burst functions for data path */ + dev->dequeue_burst = zlib_pmd_dequeue_burst; + dev->enqueue_burst = zlib_pmd_enqueue_burst; + dev->feature_flags = RTE_COMP_FF_NONCOMPRESSED_BLOCKS; return 0; From patchwork Mon Jul 2 16:57:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42119 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 D3B361B5A9; Mon, 2 Jul 2018 18:58:08 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0056.outbound.protection.outlook.com [104.47.34.56]) by dpdk.org (Postfix) with ESMTP id 5F2BC1B59B for ; Mon, 2 Jul 2018 18:58:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tfGNxMmkaUR6ETQ07OtlupqlYX1h6CyrgsYhATfiuP0=; b=Zr3hY8hv92ZV5VKVoXdnk7x/H12uWbW4SR7VW2qhO8tfiaBCgPcFSiIZ5Z01gnCSPLH77nTnR2PzPDr4BwkE6q6HhPgXSi7Opy/sSJHoevQ6t8UwYNRlZTQOw3cYz7LEMevXpEnJA9VL/9ry+L+calJ68W4nqMqmD/Ixw5Q/xjg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Mon, 2 Jul 2018 16:58:04 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Sunila Sahu , Ashish Gupta Date: Mon, 2 Jul 2018 22:27:11 +0530 Message-Id: <1530550631-22841-6-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550631-22841-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::21) To CY4PR0701MB3635.namprd07.prod.outlook.com (2603:10b6:910:93::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 933f7ddd-85b7-49ef-93c8-08d5e03cfb53 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 3:MTOhT1G/BIA0yG/cXBnpkdbOx5jSTLtJmyjmuSxiouMpmSYBKvvnR3+M7syk5jYgUwfZr0LTnDGWfu3pXzGD5eKJ835ptx87eBYr/M7Cv4SfpSn7jr4BJYkb88CfiRAhbwL6ZJ/BskC0jXCAjBaqegWDh0Th+XItoaPzI4C7kSLMcwT+ShTF16M+hMM0/zHIr31r0tRmyNP0gAHJ1U0mmw7ztforhWsZATaLYROoTQZOP3f6NDWnGO+SkIWLP9mr; 25:MVivtBWJ08EwJlj+3lqngd61bZjUqUF4xZ4yJknm6zWGw/o4Cw0oqKL+GLLMh1RhqIFTa2tAoBYV7aWpv46U42qb8GiKPVyPWc3BSG7X3uRVvnlwzmlidCCIXSJgRfpdmpY/natwMVNewyE5ppEoDTMNLqn6sEYmpVcLUemwvaMtiMg28PpMRfZsDA2spIg0GWpcsZc19F+RRt+eIfXDi3jfwc+YhnRNLjkIWkUThgNTYZaYEQOfJ3e6Nc1gbdcO1HvxBWqVoWpbxAdtW8qdYV85tOkEaHOoshpCl2nRP/N4xhyLMa8V3ZtWVWBi/h6gNMHNJ2tx8YiiwIjwJyUQtg==; 31:S/TpDftQBcRLOMJmmqgpG3Vf/sLaUzYb6ElMATRHd5/uB/ZjB9d2UNvNR79huE7C+dfPg8m4udLz9RsSGGxB1PZv2vtA/ol3u+wIk+yhNQ53DnLsnCMU5GQ7yp0S+b8zSX/iSQt6UzPG3ShGSRWB44TxK+2KlvBz/UvvMH9lPprPuzvnBQFVcoyDb2t8UAE6ajkH9PqGQpIZ90UdZqPjtzB99J2o8EeWGhVuv1g6GF0= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3635: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 20:0wfTK111j3KGHKq6sGpSUL6EQi+u78rIppkSnDcUNO5kKAwTFo84Nrip/v7yGkQQ/PZgelRJ3BN//BbQEpKKqs+4Evp9YolLOyP1u2JZWTlSmypsHxMcRMh6uJY/yDJhiaTgS3JmLPgkACzam+8deHZX65SbH5yEV+MMtCd9RTj2EOjs9+zqhba4OxzFeg+dRZEWls6ZhNiGewSVY06sEpaeQD9WjsJa76piwnho4Jefv0YtGsFInK2z9mgbIOUW5S5Hb3herlx07P2nbfbwYGcv3iporpYitvzzfq+uCLU9ZLUEAsKN/7IL3HGk8GupuMkcj0lHg1okhQ2T+IIHG0v9/JZ/FHzTM0a4RQJIXR9FsWmiOKo0k+57gRud4YoBzwwtWrMlSvjeLBvgvtICs2COWccCM2o0a2fxkahqD7KsYUY0SUkfnqsaAUUjcW7wwBHIulK2uezRwQSiloWLFjcKtqMNQQN41D+FarN9oCpmVzPECac3y/iPk+o+ib2UWCOclKbv3cEWoDY64jxM3gur6e1kFnSOVHDjaClyX7bb73nPjBCuUau5ibD+nWtjhlH8/OjTWa9m8j4YlLBF1W2wpDWSLQ3gdbDhOHvd3Ew=; 4:wGSbx5WhSndZtxISQZxCc5ynPe/tn8EjEv+6UtZa9z9fizdJfpVltUkR9qTZVbk4AU6uPOkte7tjOXyPBNr8QbI8DAz2kQwhEjSLRsV/YEfIAt71hnnkDuxUGAelvc7Psi5Dsty29Uz7xn28DElQDsqLKD5ypRUb//6cD0VOx5Rn8qT1KGZdSkJUM2Xw/LQ14adtyNfX1Vq3x3RcQ+4nORUaKCfA28VmqDbBPg+ACRXYVqfNIhjI/OQgnQzhw+WmG2C8YCelBND0+a5pIl5JXA== 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)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(376002)(366004)(136003)(199004)(189003)(478600001)(72206003)(106356001)(6486002)(42882007)(4326008)(53936002)(107886003)(25786009)(476003)(26005)(8936002)(16526019)(6666003)(8676002)(55236004)(2616005)(11346002)(6512007)(51416003)(76176011)(186003)(6506007)(446003)(956004)(52116002)(6916009)(81166006)(7736002)(81156014)(44832011)(575784001)(486006)(305945005)(386003)(66066001)(16586007)(47776003)(316002)(50226002)(54906003)(5660300001)(3846002)(6116002)(14444005)(50466002)(48376002)(68736007)(2906002)(2351001)(2361001)(97736004)(105586002)(53416004)(36756003)(69596002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3635; H:hyd1sverma-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; CY4PR0701MB3635; 23:8RHAMRbQyKAAeub6Vmj/1awdHwt0Loy/L7E2qGk?= Ne+ejxSbEVjl6sCmgcRiWDNFTjejgoOCBpSSxymQHod3wI5yJlN5SK4R+Z69/zkIXzYjunUVkfGpx03fWJj73QgLrwgEb0FEozX1aSZrtDL+siGKV2wCmCI7qClJ2dXaUJLrC8+0F758168D2bxeRUGleh1vooL2fVILpbHTTuKrJacC46QWdaN56TLk7CslhgLIYz7PVvlWOKhzVwNgBX4aGdalwEGr/qCqYCrFcdlVR8Xoty5xjJduD7GCTw0Bh27byEk1ji5AQ2seVwm2NjGGcZ+dkopwn3cSojCLkwG7aEeluSxjMuzEmK3Uk2bQq/2nnQ5HA2E/BdhvpNfBvCClmMbRzYS+Y68fGAODtnrQdMBVOUmxXK/J/YbqY3t2h5iwe2MVBEk5zFT/hgWFrGGKwQ2xwZa/70M76lJtLIlFVwWUFaemEcvj9BS7ymUz/YD7pOrr2sZLQmVIuCdCmbteCSenTHdxGq9lgfxG2YWg5pdQ44QhK2KL3pE7zTedmXEC/PQq6rTRNambGHTQ9HJ1mObOTpd2GZ7N7d2gU2vIQoVLFiFI1U7b5kQvd6r3iGyBujK/5VfD7NSvLVuJj6cAnaTQgAnl8+EygLuMCAXirswS4EtCZQ3HlCkb7+9zAjiaunUHog9bHpfZan6hyyN6qLce4laumwiB0DzC61Z0AoqK6rhud8hRtJGWG0KjrTDRdFs8leWa5KrHEmKKTBnAwgJJ8Z4AGTeRd2L/rpaF+m7BRNRzSgyx0kFBvPkP56PeEVLJ/1+WEUAI/QzMqd6gzO1VAIPHMpdP+OcOymFIcNdTyT6BnYy8ww4KG+McPTLOeJ9gEpC69iPWThcJu9CP0WzXjj5Lak1sY5oQTBPS1UURIR1qGKlNfC7cbaSUyfQrxlLtjOlAeQ6zWGg6aIZSycZCQdEnR+Moa8suGqjGYTnx18kYljDu2wlyqt9E/A29rLXuOPQJXoGsqAWS79Eo9K+iTDDELGuc9xzgfTs/uwdm0sA86CDCBGgRCPVSSUGxM+dkrWJKJycska4LTkUQoMYGdJp88wvn1u654t7SF2Gl5SbxBU6VuRAVZeleGryckt6TCGSSie5WWSWmJmvuLl+JLsgLIYzRZyrz0zG8jUTm7NbHf6obtE3tuzFYFJ4xbJXeuaUUMvWY6+HFiNbZbf0GpR20U4emDHqDTqlEb77QdY7OBsXdHK2DGipbUq/He7r97rWEQEK01rNN7SvuOTkIzHBc+EdA0rmgabCsejIO4mWWses+M/GUzKe5tzymAZZW1sLi3lVd6kJD5PrPI38RNghHkBSEQV4BGIInYWwOJPf5QZ7Xt4B2k8Xto0Dhbr0c+i3AtZtz6sFnNcqIYpVWM+UOC/xcfixj8vbuhSg== X-Microsoft-Antispam-Message-Info: KpTgQ4k6PLqVQDlPW3eWXx7WCHzkrcpZvb/oH9sLzb5PmV881OBW/6IWymuigJ6mXRoASUo0NE28DXsxOYY+IGbIdvE32UAYJRubqJasXn1RlCQsVPVGW9mlbReo87HqAve+6Kbbc5e7iKEPjb7xmurTymT+tWsobex19+JC3cbiEWFv+Nuv4ljQpAJ5YW8fYpY+DItNO7ejSATblZD/7yOjvrkjXOSDedA4VXTahw51Pqz8MuugbDhvsoXbT8kGsOkDIgveK2SPX3QqcBfTWrDjgYt1k3bvV6ullMDQlIQ2f27CLqViIV1hW12cIVj1qs5ybjaHNnMW11BeeBeFO8jhEXJd14/LaEVF+qMlapc= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 6:Mm+/GoxBLTeSAUyw0o0H++xX0qvZj/7xMFDkbVupU1e8mNx70xGtIH8d2AtgWyiNoxo8U4lNvbMo9XL3EjqYWcT51RTz7lSGNdrzGh0xbWmfQJVJfrbJAo318ngkrqseRDi8ZrBSa0vS2a3Ygil50EvncGZijKqP/Py8LYIKpS0lIzwczvu64TQHck28QiBJHibKFlufOjQpWTMt2OxnjiN52mKG9+RnIOGSsT51uh0zCKmzRoLV0pw2XLZ59uZIXcUkgF5ZIEtrj0BEF5XHCgMUqbUpeZb3pAU1zGf7LaUFMEXYK7MKn1AAJkv5n3tpOMtYeXoC6ywadlzR6bgyrf1zn/cr7DOWA8KDVrCElT+gg9SLSvjevrTJmc4quCXN4569iOmFcK0J18gKMFHiXkDZ1tb2bS8lhP1+8SMzl/gGjsdmuuxEoCTSsiS/cKWD0xDStqb+gi9kAE1VOJF/1Q==; 5:r39UaI78qg3WLO4sGPnLJ9gkt40mOv9FfvlUMGGYhi22DM+mRG4yvf3oWvK1aGaCmV/FykYJvKfsuNUJraehX+CrpZK6rmQfcJmnj2cq1xwi6n83QY+HAmw8Un//eF/bJ4Ujy1GJgxng4xWJ+uh0yJHYF0wZIWQi9pQoFKUgSpQ=; 24:YgB2RGXummI2sA4XNFGDR/CdSsA7Y0uv316nxOHA2Ym2IV/CeZsftnxbz222Nc2GbjNQhmnMhJsn02V6Qk2jfo0t+y/yyytZlMHotY560dg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3635; 7:QlTXYtPhmd6KxCmmtkum8vjCTr5NZCZPRikb8X+NBWJZhHHUyGcS6hqeqcOM9YThP7f38CuZp7C5XgdFncxi3EzUIOD79GzMoi4jtGvgSoT6zBiXaIqSC39spwLrs2K72EYrkKWCccgixULzEUJp1FMgzN6YRkjz+jfkofmF7j04GZ7sDOfINwId5hOOIUxoUWDF+QBCm1bmDY7vIUeONATIBP/havZwcvR1Q1mWlG+KTcIsURjeXW4ONfIlcb7g X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:58:04.1957 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 933f7ddd-85b7-49ef-93c8-08d5e03cfb53 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 Subject: [dpdk-dev] [PATCH v2 5/5] doc: add ZLIB PMD documentation 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 zlib pmd feature specification and overview documentation Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- MAINTAINERS | 2 + doc/guides/compressdevs/features/zlib.ini | 22 ++++++++++ doc/guides/compressdevs/zlib.rst | 68 +++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 448bbe1..1c217b0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -854,6 +854,8 @@ F: doc/guides/compressdevs/features/isal.ini ZLIB M: Sunila Sahu F: drivers/compress/zlib/ +F: doc/guides/compressdevs/zlib.rst +F: doc/guides/compressdevs/features/zlib.ini Eventdev Drivers ---------------- diff --git a/doc/guides/compressdevs/features/zlib.ini b/doc/guides/compressdevs/features/zlib.ini new file mode 100644 index 0000000..bdc0fc4 --- /dev/null +++ b/doc/guides/compressdevs/features/zlib.ini @@ -0,0 +1,22 @@ +; +; Refer to default.ini for the full list of available PMD features. +; +; Supported features of 'ZLIB' compression driver. +; +[Features] +HW Accelerated = +CPU SSE = +CPU AVX = +CPU AVX2 = +CPU AVX512 = +CPU NEON = +Stateful = +By-Pass = +Chained mbufs = +Deflate = Y +LZS = +Adler32 = +Crc32 = +Adler32&Crc32 = +Fixed = Y +Dynamic = Y diff --git a/doc/guides/compressdevs/zlib.rst b/doc/guides/compressdevs/zlib.rst new file mode 100644 index 0000000..7dd5c74 --- /dev/null +++ b/doc/guides/compressdevs/zlib.rst @@ -0,0 +1,68 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 Cavium Networks. + +ZLIB Compression Poll Mode Driver +================================== + +The ZLIB PMD (**librte_pmd_zlib**) provides poll mode compression & +decompression driver based on SW zlib library, + +Features +-------- + +ZLIB PMD has support for: + +Compression/Decompression algorithm: + +* DEFLATE + +Huffman code type: + +* FIXED +* DYNAMIC + +Window size support: + +* Min - 256 bytes +* Max - 32K + +Limitations +----------- + +* Chained mbufs are not supported. + +Installation +------------ + +* To build DPDK with ZLIB library, the user is required to download the ``libz`` library. +* Use following command for installation. + +* For Fedora users :: + yum install zlib-devel +* For ubuntu users :: + apt-get install zlib1g-dev + +* Once downloaded, the user needs to build the library. + +* make can be used to install the library on their system, before building DPDK:: + + make + sudo make install + +Initialization +-------------- + +In order to enable this virtual compression PMD, user must: + +* Set ``CONFIG_RTE_LIBRTE_PMD_ZLIB=y`` in config/common_base. + +To use the PMD in an application, user must: + +* Call ``rte_vdev_init("compress_zlib")`` within the application. + +* Use ``--vdev="compress_zlib"`` in the EAL options, which will call ``rte_vdev_init()`` internally. + +The following parameter (optional) can be provided in the previous two calls: + +* ``socket_id:`` Specify the socket where the memory for the device is going to be allocated + (by default, socket_id will be the socket where the core that is creating the PMD is running on).