From patchwork Tue Jul 24 15:05:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43313 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 512FE322C; Tue, 24 Jul 2018 17:06:09 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01hn0239.outbound.protection.outlook.com [104.47.33.239]) by dpdk.org (Postfix) with ESMTP id 020622C15 for ; Tue, 24 Jul 2018 17:06:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8PLwY3uA9RBL7Cv47dhu1cQqmCDTHT9mGS0CKBMa8xA=; b=ll2mTa4GDWZcAiOUSTPTavqghwlmyDZK5W9hcZR1gbiIdetxal76NCPxrAp4Oyg1LT5jJxHRDhSIIpW7MGKEFXZUks180TDoVDb422QEC8PY3ITD+XCeZl70M5+7lXREFKUrcbeAaDlF+52Pmg21z6XAcaEKz7JNnXESJJJH2V8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 15:06:03 +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: Tue, 24 Jul 2018 20:35:32 +0530 Message-Id: <1532444736-26801-2-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::24) To SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7773c28-a4d1-4691-94ea-08d5f176fa9f X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 3:fN0u1LMXm8Gagi4Zk5Gd74PBsQ7syeouXm5MIeJMAwqZAGq5XCMgdBh9K79vGJfQPCUWiK/jwOE/CatabxRdOoYeH6Kqs6jR2Pd2S6Ofdr+tQnhkrWrRuNs1qaDE8sTKVM+xyoGJBMVttvnBcP8WBtWaXW29F4XHnw8VpwOlw19uFhcn99cYKp6BHDdTnl5/3qkp4kZCUZ0IKK/y/tqAdlJBADwOeJOVP93CBDm+rbTg9jchE5e0Tf3NU1JZt2IB; 25:sTvrHhEi3mU9JgZlF8fRQ92Y2te/VrI27kwrkbwewdtS09B1prsHcuOKdohpZHq7kk+zuCk+YJLCLUhWN8JYXkTxVlNLiir4I9MOk52RN3aLaMOTbUIiy4zOvN3nSP8U76//PW0fOGGcdqLT2NLlJSFU0O50Kc4Xf+qYKTGxqP70+tjzA/qu3ffPla1yLrw+if7+zrd/OmHKJF3auBB3XNZYVQGXqLpG4TIs9GiFuTzKxsx5CHifMEwV/ZPKlM+5rMpZnGUx47pWLz9mM3qEn/bCLgeil3JayIOgz/tHzqCYtv8WHwSNVjZh2YJ7RVflVozPQGGRDtyuAhEiGJAU+g==; 31:FrAtk6kqV2ShhzcWde0xQOixsUKjYobL8QtfNuau0IUD93VFvIobbPPSv5mtD2H7WeRLmZ8wU8yv9KF2EkH4iMLRSDFTl+xEKBIHFtQHY9xcXxog2nF5TIZ3uu8GZjMcr7/Qr46ee6FIoB+zg6U7Ps2SQsIhv/kJGi7jfW7Vg8GvusmQCVXBxBPjpfQg+Ss59Ic72eouUSSHDFenewSdy1SfwK1zZ5EuQ6pbBLGrycY= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3646: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 20:VK6A86j/IXkKAfRgAh4rSEqyHfryQBF8AisStDg9I5thkhiBKnpD5TLXrwaTFJsyVBd7dV2Sr0Xf7lf2Y6pNnM/SR18jreu3rLsjMHyKVOt0axF5CX5my86QCOVUN9j5ea0MLifJzDIhjBqpOkN3Dgs71M9uRDoUj4iXe1x5pnDyQDY9+O2F5LtsNu4f2DcjJdhBFGfMOA3kVvo5zyGOuY+zxpm+dmVguGrqzJMk4V5tWCfyynOLBnnPqEBV9r94kDH9h/G5ATRJGUlK37DWh07FgB9B1rvnVDrblwgUFbAYVFe2hCfsXC+DaZKfiCBfvZsoF/Ctogzi2A+1fj5L1jOiI6XNiPSRr4kHBujPTuCYbUzZN7KGYDNLmfBEGDXv3n2CH3g4xt7ep+10ok0CTQy7imAkiSrFJtR2O5ApmKlUTTH0euk+XBW3gx5VSe4LqfWyYt+np3ZsRbGPOjT6q2Mv+cu2rXW3uNx52XMFe4W41Pu3juLmMVKTGUWGwpPhdI6vSS74VhfdPXV+3nVEctve81EZBdkQKHXdcoJkgNXTpqiCvbxF3KXVd37ZA15vqsq57qoq7mRQ7VA1GBynoLillw50rjBYNevdBbG4UEM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(66839620246622)(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231311)(2232096)(944501410)(52105095)(93006095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN4PR0701MB3646; BCL:0; PCL:0; RULEID:; SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 4:JDcNRB63pVqAck8CKRdlnXJvqkVzBaz+2dWTWgXd+zLB+VTRjEXPBZ5LfsJwcJNg9Nv0dDuQM6VaY+TcH4k7m3RuRk8/OPgg7vNj+P4ADVYzzo1gRmtiiaAthfvcVTSGvWu5xyGg6CJr7ZVObOJHuSwERs8oe5aFNiSsbrpz3MAQUNx8GrumLAk9YCYtFk/j0W9RgX91/a98v+CJN+Cl4DAiJX1vw0Jb7q64vA1sXP8VAxbPtmn2ZcILZP/DLYpd/eRK/TKoAAlk+Ln3rKMGnFqtkUyrAfW9jNVvN8i+U1lzyg3HMvvSd4CCdHHKRqbnhezt+EYrZlYbIFoPLGS24MHjrnG+Y+pldgtGKC96IDg= X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(136003)(376002)(199004)(189003)(14444005)(26005)(2361001)(6506007)(55236004)(386003)(486006)(2616005)(2906002)(3846002)(36756003)(16526019)(956004)(6116002)(186003)(50226002)(68736007)(5660300001)(11346002)(4326008)(107886003)(478600001)(53936002)(476003)(52116002)(76176011)(51416003)(446003)(72206003)(48376002)(6666003)(575784001)(97736004)(25786009)(42882007)(305945005)(2351001)(69596002)(54906003)(105586002)(106356001)(44832011)(6486002)(53416004)(66066001)(6512007)(316002)(7736002)(47776003)(8676002)(8936002)(81166006)(50466002)(16586007)(6916009)(81156014)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:SN4PR0701MB3646; 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; SN4PR0701MB3646; 23:6DYUvT9lOxK3HYGx6q0DSVPN+juLNjnKu69hYQs?= Y7fzHqD9xcysn/2j63AqADFapE/+HgFhlFS8YOG4JT6CYZsxUxA0UKWadieuG+ujv4rMds/gjD65SuRwEqo67AoAQfc7HfbyQ03SOPsDWghOaVaO67wUvTDvY09AbDMCnyxrkV3I2XkLk+YMENBep8oOHY33KBh8EmKMx8bMyfqc01VNsJuTLu2wlIAiMcXscc56JIFfEnZazolKmrz6HBPloIUAyuhVM2X9OTCNZ2HFasezAETYbHDB8q1F4924pXv98MD2P93o0Fm9KHqtOaTp0ZYHWY8XGOfpjHvoE+dZu5ZzUpXroje0358dGKB/HaBXef0BGwK5FQhABisxFEKsxS1OjaPrP+7kgkbiXpauMcld+qkHsPoMJFqC4BrxLaDd7NAO/CI5mp9v7dUyK0cu2A5xKHkH+YN6dxgkePiBQOQ7MxZ0qj2adorZ5dym7yWxPRkpVuPuzP4SsCLuCLlU6X9AHtJfuy3x1jE477DtjVkJh0KZFCwHVEDr7ElgA80p8Yg3712DJ43argOimRRkubqdP7BmHW51+qjiyqPUwbgPV7zK4KgAX7sNpAJsTjkCrGNQy5MHo6zIWg/vlyJGnDU+8ppixwF73j32949vyH4QKelg91dtEC+RnUm5vZoa/bqmdHS+YBL8Mz0YQxaODv9sKhHbjq7LC2C2kJXzBFkcmO90J7Q5SEHKQ8KLQgeyIM31dOpCH3y6EhFzCEzukC7U+2om1P8D7RyFRpkZCpxWF7jL9SrfBEo+8+rcK1hWopaE1Bs/YSHRNo/K4NyhrgrQ4PTa8MUKawrgYF2pZMM77SnE+1XjB1YqooRLT2glY0ueKsPqXfxeuIo4oCRpN6aW6fu55Gu9jzCys5/wzcWRFZjNFU1JRoPZh3riZoL+fLTHah1ouDBcIo0PxoScRtgyGA9W9YQwdkVV9d7TasbwO2LNr+XNVY37neQCgIRm/5TCz3/vaQSIzom3MFG2Hj1vdxEz5bh10wVyEy0r5KevLAnbOFBSUPTRHF3aukrkhYH6kad5MV0EmxkstQ40km+Sqw3cehbA/PTFwdIU6vsb5DWVVlWkfm2syo+86eYKEIt9IlH2zcntACgMO+nXvLv6YHU/s1bkIMuMbtlx+9Llur9DKY/jnDcolDJra4BPnGB00yhYjiDjTRMF2rvFAoYNroUX+2IDyFZiShNKl8bJg8vlNPerUtm8b6P3OQmeYFRNeUkmnX0Wzlsf1R9xf3GYoH7iNpFbxPBgBcGPPWPSIPbdJtlTEJDiY2SWlc//W3NC+P6xdCXHblDx/cWpymv4W5pTNCYd+vAtHMCa8HLihrLM6H55Kbd0zOqTKuq5x+OuyTMCKiLGAb5Coj43Nt7RUJbHQllWM3u7QZyTnrOXxNPxkik107VCmvur03M78bnHChISuj0FpAhIV8CuN X-Microsoft-Antispam-Message-Info: 3XrJyIzVKmSRq0Ns8It8KzyKxBM8FTdonztYewa2Le0WCtm78q2U1SMO+Rmo46bB/J2DGzK0TJNNACoNaVOgi4/t+qJoWxnjdJbhEyaXdzht/3oP+UUXQ74UCoJBvuKFtK53l2n75y5BySD9x8EwK8Urknvv0IxQ6EjjAwMTGqq+YEepbx0WfabjbabraNq90+x2u6N351LlaNfabPTLpuzTy9dACx3A2kw+8iSOD/JkR9vWdtd9xhIGRsbbLur6kWaTeuewd3DrlEi9705YKiEqK4jX/bPhwiV709wNrwjBy5Vd0GiHla1NqDaQik5BKxMD9TpQyMns8ssmymuRunyxntbgwKIjabd6iZDoRuuPqxfRxqGqWlvq/mzdMVH0ZDPIrUT4DQxNKL8h0scUFsqReVnQjznI70zP65TwlmywMPCb7mevSbltMN0nWK3PpbAqrUZBQ3JjA8CoO1Md+H0bT8N/4XbqRk+Pve+rTSF8anrgTiZ1mNX4Weuu1R0/x5fnjM8LqpQ2pxnu3TTjBbYwCdDu5JAc3OwspfjKoIEg08l+M60xiW0kAvZ3hjkh2HS6Nzx9ibXbfBp1iVhLnHx0H0h65WhX6I73bgX6rNekdPtS3K5JoajL7CJ5DFtloDo1Z5uQWcCMue32Su809dx905C+KlDZb44y09LBl/6JDoINcSp9pRO3tFOhJo5V6TmyWNO+FOtkn3lPIIAhpg== X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 6:h14t6TTmR8LR3p1igvsH+aAuOLj71njrchHV2OOXTdf+Z+E23MhuYMQ9zqhGGNwywb57P7XuQ/HDCXtQz6czjkxI+Nrir0RewypY35J539E2JSG2GKQZH3cf+7jL7JBDirjfK2cKGOM1quX6x0xr2UUQZjSJ7XbLFXexMNxwp3gTQZG+ICOvTNdYGqwLPEiuk1r6IEaufz1OsGVXke0CbDtRLn1PYsrSkVs1zaj1AujoxsR/Xq0AtZh2GaCGEvr0nuKxC/4xCZ3Imhvk4fg9Q9XlYyQeJSoWg2dmkrokxal8I7GKZsmcM7WXYnmtJshEQ+OjDDpEaveJEJvymv7y0Ghk26rEPinq8mryd0wOMTu9kwHEE4CypEOYD97geaLh+CL1Nk7PX6BedTJZ6QTuEccK7D0Hxi+IMh1lFxYJbbvKdqgT8vWkQUAAFE2bF4kok6K+1fWjtPIat524tzo/ew==; 5:NiJuPTMU85HsqNIBLPE1IW5vjrjkA4pnHKfP6+XTe05XfsFPf39lG52aua9KoclB0sUF6eB59W4VDkX+IPkPFvhUfatKTLrldJYsz/FhrSQDmenaMNAt3sPwQG/htbcAHXjDKhzGgUYORfwRo959XCHf5x5qvmtY8PkO6sl0Fi4=; 7:C0dtiDOfIqgJe+QxLpME2J1AZvAUL0t8AEVu7w1L/fqWvkB9eqcd6bNwgc+Vg/EtSPzTjR+zWNB2R3vqHLOx7Oj5ft0tltT4datSwMK9KinmcyOwLHOE48tixGen8xzctf2zQTnaZC5fAsswRx9/ZpngBhrEDpA33VSb52x0OxPckLjINlMnKCmJbye9gk+NwlyvgLIMKE75gMB9IQVdY6t948YjNGxX77bzijlRHccXU7zLX4wGI4Jlw3L8Or7n SpamDiagnosticOutput: 1:22 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 15:06:03.3564 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7773c28-a4d1-4691-94ea-08d5f176fa9f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3646 Subject: [dpdk-dev] [PATCH v5 1/5] compress/zlib: add ZLIB 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: Ashish Gupta Add initial PMD setup routines in compressdev framework. ZLIB PMD appears as virtual compression device. User would need to install zlib prior to enabling this PMD. 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 | 87 ++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 32 ++++++++++ mk/rte.app.mk | 2 + 10 files changed, 176 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 7b2414d..ca27c6f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -872,6 +872,9 @@ M: Fiona Trahe F: drivers/compress/qat/ F: drivers/common/qat/ +ZLIB +M: Sunila Sahu +F: drivers/compress/zlib/ Eventdev Drivers ---------------- diff --git a/config/common_base b/config/common_base index 6d82b91..662da4d 100644 --- a/config/common_base +++ b/config/common_base @@ -583,6 +583,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 2352ad5..d2ca8fc 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', 'qat', '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..3f0a77b --- /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') +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..ad6e191 --- /dev/null +++ b/drivers/compress/zlib/rte_pmd_zlib_version.map @@ -0,0 +1,3 @@ +DPDK_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..505502d --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd.c @@ -0,0 +1,87 @@ +/* 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; + } + + 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; + int retval; + + name = rte_vdev_device_name(vdev); + + if (name == NULL) + return -EINVAL; + + input_args = rte_vdev_device_args(vdev); + + retval = rte_compressdev_pmd_parse_input_args(&init_params, input_args); + if (retval < 0) { + ZLIB_PMD_LOG(ERR, + "Failed to parse initialisation arguments[%s]\n", + input_args); + return -EINVAL; + } + + 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_INIT(zlib_init_log); + +static void +zlib_init_log(void) +{ + zlib_logtype_driver = rte_log_register("pmd.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..d26a740 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd_private.h @@ -0,0 +1,32 @@ +/* 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 { +}; + +#endif /* _RTE_ZLIB_PMD_PRIVATE_H_ */ diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 1590838..5b7c684 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -228,6 +228,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT_SYM),n) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat endif # CONFIG_RTE_LIBRTE_PMD_QAT_SYM +_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 Tue Jul 24 15:05:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43314 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 9D0CF32A5; Tue, 24 Jul 2018 17:06:12 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0052.outbound.protection.outlook.com [104.47.33.52]) by dpdk.org (Postfix) with ESMTP id 01CD8324B for ; Tue, 24 Jul 2018 17:06:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KJRmzDYqU2rZ8ZWGXblmjC/oT9+93EEXt+h+XgmGiZ8=; b=Iw8+TNQ/zoO+mdp11ye6YlvDQIaA2/60lw0CZCeKrgS1v0SN78KIGM/sG9PAACCSYTr7rEOeGCJRlveBe7mmCA+3BcqB+dE1TcRc0Hwb0XHI6WNfv4pioM2moDIPJjuAfK77bGefQmT5wbDKPfrQWnvDlGdTG6gMnI28pQ8M94s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 15:06:06 +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: Tue, 24 Jul 2018 20:35:33 +0530 Message-Id: <1532444736-26801-3-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::24) To SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4b75e5dd-6f48-4000-a9fd-08d5f176fc74 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 3:jny93wQ0ojQiP6+G4dMhYhcZYRO/9XUyyxYmk6VrpcA6u0r3fQgpJ6d3m1/tJvMhF+hV4zlPwWA3h5qOquhn2iEDDFzqh0360fLUy0wEPnMJMPCnOX88T7uyYbPu3MXKdw7gkt2r4hB0vp4kFOaIBa/gw0bFMGsW0vaYgvw8CLshZYuWRhUkOv6HSSzt5N1ZN9+kOqs1LzWlWjzAscKsBsWnPF7/sLiIRHvBDpm6D7Xh7oCPXbj9eOts9zrO9nu/; 25:xt4wJ2yOhAnjygdC7+zlkzzfPnxvOogT4uniK0UwNEJtjzMZbWTsqDNCO2Jyoq5BJ+sJGg6CuowjzrrEoYoGb2eRDUOgbo1PzsYekRH88udoJFVJLa5YOU1Db1hJfvazjf/Kbkm2TVdU1N+L0TeuKJNqPwe4HRwfqqchK5Y/q020a4/sdgCbKaU/kHXFiij4X+waEIUjHbK86MNfMWuwd5Y7jAeaaTc26R0C3LaCKzsWTxfPodVkH2ZdIE5joT5u8Qpt4e29bK8kC5A4CYVZAqdZTXMD9M4PyBNNXlK+1pS0HhV+oc0J9vv5z4rIEb9VzDf6SNlwH3QNU+cVuL/BVQ==; 31:SCv7QW3QBPUWyQ5qg6gOVt0HjwCu27LMvTU/IxrtrSY+wUcKtY2hr0I1ycVdKRV03Sy6Zo79tzO8QRRJxUunsMu6vSmW4NH4Jiyi68cJo/s/61rEr/Kvi8eOhRbMUGY0O4CLHdDFZSI0NULkxqccw0mTM58nnvB4xEirIp0L2ss0pQ8SLEKyptfDENp9afUvMi5naEKsqcexMhZ1owvrtPXFWGcSSRQf8YTqNl/TE1A= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3646: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 20:jqStVuXcqdxwho+6kfWrc55oDsgLIEWWMaMWgtjZ+lRCBoRs1lkOHBbHSJ0mbhBlPtnocPEN6hK3Qkpj1DYlRHpCq3YXzJwrTJjiFQk8mtnUUWzeYbP8pJIDPAMFUIygX32ayOI3WVIbWjcTmD5VeKZBKiibYHk0RROP4Gzq9DAP4mrNuxO1OLUpNDMn4k0dY3iXogBekIPgiPuEVLM+s4feLOBtiTIfTONzXnXYfkkswzwuKt6+bsdC5NoDYNlRar4+VgPORRAZ5pIVndfkpiQXzhM/P3EcL7DkPKfRzQNmzExrLg896rhaSCCMbj+atVQCTj/YlUU7BY/5AkNHqerJvsEF6WAy9b65Tuzx9bkD9eepU+jrC9bPg3RPutQZeigxBhTRF77SPZhzlx6Y8sTYcxZsWvs0xT5MTDeyHm6/asWAs9zgbimf5jwiT0eLCDynfpdEm/Gb79R62LTr5zrrpLRZrp7COLj7A1VBz+PlGpbqRBtsYrPZ6S28m00kWzbxqo3v18wrTQE7lB+5U3013GC8KDyV9n842w6TbTq4I3SfTkHdOxf/5Fru3xr76C5NLFt+JaJ84NKpbMeHe0mFS12hsjCF8MQVCp3Rpuo=; 4:h7311t5IFnvHfsEjYbr1zGYRlo2yccPnTtk6+tR0P0L8JM4u+UZD7sdAR2kBDm8teKh4nraz0142hQ9zslqqhMI8IpOj5aesC13hxlUkOqFc0cdQCH01kWnyc2G3RJRnTREiU2STjGAuZ931oI4svYT13EXHQjjnuyw1kGjoEoIj4URFTb06E4JqOzXAGNDUjWwVqCBTCTnnlNVU1MoTU1J5jysS3LdQMxWif0Y+7oXaTKIwOFt/KuNY5dtESrjIy0uZ1DNchlChUWQQiuUV3Q== 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)(5005006)(8121501046)(10201501046)(3231311)(944501410)(52105095)(93006095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN4PR0701MB3646; BCL:0; PCL:0; RULEID:; SRVR:SN4PR0701MB3646; X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(136003)(376002)(199004)(189003)(14444005)(26005)(2361001)(6506007)(55236004)(386003)(486006)(2616005)(2906002)(3846002)(36756003)(16526019)(956004)(6116002)(186003)(50226002)(68736007)(5660300001)(11346002)(4326008)(107886003)(478600001)(53936002)(476003)(52116002)(76176011)(51416003)(446003)(72206003)(48376002)(6666003)(575784001)(97736004)(25786009)(42882007)(305945005)(2351001)(69596002)(54906003)(105586002)(106356001)(44832011)(6486002)(53416004)(66066001)(6512007)(316002)(7736002)(47776003)(8676002)(8936002)(81166006)(50466002)(16586007)(6916009)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3646; 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; SN4PR0701MB3646; 23:s0yf/K9X5PHJZ1VnHs5DV9WuXcuUBMGTEuVpDCN?= 1fXI42fmdEnDXALIfE4iRVzrIl1OVE6vQ1HbUsgrrjN11JlWuhtftsF+L0vVRdAy2wDCCcC0F3nkfJzQ3CS9kBT8VCI/9EmITVT3Nx/KWCvIUg6EyHsrj7EuHG0ptAgeT3EDK7SX5E75ciWL6ZOjBAEDWSr5EU2HWVucDsfPEv/CoYCAJK9ZaEJrHfR30elI6zmW2K5l5gha2RoJat1RWcUikltJJN0umveCfh+td5kNX7r5DifXfScef5oY3S26E4GKxa2Yq7jXrlbmmcN6PrhpucK2mjc50I8zdKPu2hkZr9ZGmy8QLHNCb6l4AEKPy+YDko33VzfuvKe42kI1wjn2lq8R1ZexOmxbed0RRNSBKLUtEybvwO4HUi8DtJVSb4BuXSmmKnV8Qp6k0VlvX00gxJ5LnCJj0p122x2ThZHGyAKBjrbXJde08Y4op++19XXPf+/8YawOtzxMo0Y+hF/Ui9wW4QKbLQeLU76Ztd8tU7PkDc3P7GC+fRo2BjVYjCDQtsRaf1ksEJxfmvMCN77Faf6ubCGLIOv4VfQtpPJ+VHfKZv8lxmA7cq8ZcBc+DAkQxKq2HvOAbLjnTX5arxNfByu7xcDcGdBNrHFssuTy+eR+9hDRLBNurNNtC54yQUFh/hor306MVsuOgavv+jDjrOjxE3fQpYyXXndNs1GJlupGyLz4c6QgamYe5e+dLw6gasGzF0C/VVWGffnUVyX/75MKARCHfDkWks2P245bEc72tsUge4e/22kAchAJsU5IXQwezDO5aOAwvsivymG43dAVCyZFzSd7dEmQQEh05rUigZfG3nUS9lsqaMo/zpbZES1jOchNXwqGUS04/NEjJWMVuILGFGxwBvOw0xPYHG09UgsvZkNsuoqsO7QZZwjnEBF3KD+JYo5zBqZSRnkJ/UgmYl0IJIgGPw0347Sf0zRGNqI92FRODEFd0FFiIGVV4cWzDspje4LwkhZBWNuHejlET7NN00iALzy97uIzJyE1rVcvHQNIz5EE1oP9z/eKhOHTo/De15P2yDlw/yduOWtxPKAxkS1RMEKSm7YtON55ET8pm2tU0TW8/ARLqr4exnWug9wygEsKQ7Nx8v6UnWCi+TR+rw3WKWwhacMpNp/AYt4vl5a+ocf/jflN6PhEdfbt5OP7s6SagIvso7KjYmSin77ZDhIKkrnNJxoQ3R/bpNNir7ImAwvEr3TB0VHWq+n8UiY+gk4L618/13JDP0/ZtY7uOO5nIsVmO5zZSY9ZkPUTH/3yTxul+v74NyG6OYfN8pkK4U16QSnp8n036+uJ3PEUdaMUYZ25JPeGHYdyLQ/YdesLFHE2+Cak1hnMHvja8vbO4Hszz3R3I7Y34 X-Microsoft-Antispam-Message-Info: NgPnEkVPqsNdUhXdP+MOsGP3BUoUoKvygqrts9Yc1YXfhmVIHm+VWtf2nNrXdkPgfKjHLfw2aS+ROnaUcco6Hjocv8DYT6I8u3+uueZ8yIzEolWrEgnpmhccCppEmoqQZvaVOncFHdzZNN2NhlXoAILXMN+CLz1wTZmw1xTUvc8vZQyUuT5ZgaCR44AgGZ3sCCnzHEWtschEfGBVMOtS6uiq8BU8neaA9MKpiYMo/kaAqU38fFXu1jct1RPSCo7rfoNZAYai1ZEsf7LSUAK8swru+us1IJ/h2M9WAzGBANQDafkV2N52qbL5UyIUeIScgKzK7AIPS9ZFnLMPDpzim8taOGi2O4mRH5GU9/R4WXA= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 6:tkkL0bnmE9DMa4Imyiwiubp8KYVWoPqnIAYKaOFDu8Ak3WbZ4lCPhsRmmSIOL9rpGkZt0P0koQwoyM90rzYDruY/2l+mmchSBzsZiVqTuWnUtO4L946etZOrVnQ25mS44GvfqC0wX4pWfK7DZaPJIIsVmTaPEryogFWc8UWFQxxBaSKNrson6MTb76gPC2shu8SgYlDRCRY/w9OWGkPRyUhDWtG/9/nANfHogvZ+LKa8Z04iC3sX4T3+brdEEPw6S3w/d+eE5oX6KLf4BWxoCfNQkQ9w4VFXoMdtNXY16opFDzQ3DfoMj1NcC7i3GCthcCNJ+Ot2GQfTqhbduyMWmtPCBqm/3UfA7hae9a9oevcIbCkopLYP1Mi+2tIWsGmt51gP4iQUGa37ud11y0r1qCEPhOWInFoYDE8SsAInou02+PuggsNVDFwKOyNDQ787wjtrmwLokPysmggYrXOygw==; 5:5zuohYs2Kn9jeFrYgFYVanHg+NbWyoZ2LrlBWcf4BHJVyyEd3Q9xAFBIuyZYOdU3ueUHhDSq+DVPEn8ftIpd46vx8w3R60P2qLfL4ggdsF/EtpYWwpYZIb3l3BJT1YucXoDMa0VNyYe2Wk4+Ib6eMA6Vtn5ohbYDHKrEp+oTw0M=; 7:67jsgdkn844vCZTVrXxWJGLN3s/cj6RN9/PBxeakNaIUcFwTPfrePRbnh5HruQC3/NIpx0r/nE3v/3VBjxnsaNzz4uo2lGhYjqrk6Kr563xwf2hVdnYQMvmx18V/C7qg0/0zL6spNlw9K0Z54jhirfmLlLS7tqu8lYGWPWsZn8D2imI5TVOXE6IH1a+HOL5vgJl9Dq0/4Fuz+ur0+jfzRoHold/Nx6bnuFkm01Auuha8UMLva+Te9wRWG8F1ETqM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 15:06:06.2244 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b75e5dd-6f48-4000-a9fd-08d5f176fc74 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3646 Subject: [dpdk-dev] [PATCH v5 2/5] compress/zlib: add device 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 queue pair setup 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/meson.build | 2 +- drivers/compress/zlib/zlib_pmd.c | 2 + drivers/compress/zlib/zlib_pmd_ops.c | 237 +++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 35 +++++ 5 files changed, 276 insertions(+), 1 deletion(-) 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/meson.build b/drivers/compress/zlib/meson.build index 3f0a77b..7748de2 100644 --- a/drivers/compress/zlib/meson.build +++ b/drivers/compress/zlib/meson.build @@ -7,7 +7,7 @@ if not dep.found() endif deps += 'bus_vdev' -sources = files('zlib_pmd.c') +sources = files('zlib_pmd.c', 'zlib_pmd_ops.c') ext_deps += dep pkgconfig_extra_libs += '-lz' diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 505502d..7aeef44 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -21,6 +21,8 @@ zlib_create(const char *name, return -ENODEV; } + dev->dev_ops = rte_zlib_pmd_ops; + 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..cf9c006 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -0,0 +1,237 @@ +/* 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, + .comp_feature_flags = (RTE_COMP_FF_NONCOMPRESSED_BLOCKS | + RTE_COMP_FF_HUFFMAN_FIXED | + RTE_COMP_FF_HUFFMAN_DYNAMIC), + .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; + char mp_name[RTE_MEMPOOL_NAMESIZE]; + struct zlib_private *internals = dev->data->dev_private; + + snprintf(mp_name, RTE_MEMPOOL_NAMESIZE, + "stream_mp_%u", dev->data->dev_id); + mp = internals->mp; + if (mp == NULL) { + mp = rte_mempool_create(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; + } + internals->mp = mp; + } + 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; + rte_mempool_free(internals->mp); + internals->mp = NULL; + 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]; + + if (qp != NULL) { + rte_ring_free(qp->processed_pkts); + rte_free(qp); + dev->data->queue_pairs[qp_id] = NULL; + } + return 0; +} + +/** set a unique name for the queue pair based on its 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 = qp->processed_pkts; + + 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 d26a740..0e391a4 100644 --- a/drivers/compress/zlib/zlib_pmd_private.h +++ b/drivers/compress/zlib/zlib_pmd_private.h @@ -27,6 +27,41 @@ int zlib_logtype_driver; ZLIB_PMD_LOG(WARNING, fmt, ## args) struct zlib_private { + struct rte_mempool *mp; }; +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 Tue Jul 24 15:05:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43315 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 4584C378B; Tue, 24 Jul 2018 17:06:15 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0050.outbound.protection.outlook.com [104.47.33.50]) by dpdk.org (Postfix) with ESMTP id E122934EF for ; Tue, 24 Jul 2018 17:06:12 +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=A70Y0b+GqwE5rOD5p7nqaaPUS9k9NuKy9PWJLFJ4HC4=; b=QF9Xi6I5SxCz4SsowYmKhLBUYjk6zUHcVSoR17QvGpprr1OodkWC4Zkw4p1hrQPClKZPvyJAVXGPQ8lUR5vSJFFoYWUS2ZE/w/DngIbd4Sd5AOWwB7NblYogreDHXDTN1IKNgQBe60BttOuzNKom7Y79JYmAR6fkpitJBXpEESI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 15:06:09 +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: Tue, 24 Jul 2018 20:35:34 +0530 Message-Id: <1532444736-26801-4-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::24) To SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 135a8367-6c40-45e3-9059-08d5f176fe4d X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 3:9p6FFG0YVTTM3OygM5Pn2p+QxBeVOzQETI/7Aujbg3g+6cTimmz4chNcaZ67da6InGDfwVZtyyuIJfT4eVtONIyZUeegr/4hfEGrWzbHXQaqP9lV25XL4uSKCvAJBf3jYINig346mJ4WSdCbJRmiLD8xTySk98AIq3i0AVZUkkJ7FSfyFmQM4xeevyCZcPtQS4FylPBJdqYcJCmYzWXUmgnmAqrb2CLhtsozQSN3KxyJMcJlnmElRvRfo3ARfYcU; 25:smw0IUBGjQJghe/fKz4L2suN51pvz3LLpKNocKjPWmPXW4ZODYdPQ45h9SJg8dx/4F4ywg9GB26IQ49tGnxD5PqSjAiRD6/YFmdP5YwF/psQVgtqzDGPyAbIctJjg2OVbc0Fh50NFnNWeVQU/It4XWmwmxlmR751waFMPhXcoWw1ZQj3YLoXI6HNUqDyO+nQvlYGqTVLnJIz5qDYcI1Bk5WfD+q62dvXIFx77NwSBsiVRJpikeIH22qGufYgWT8qL+RCS3s7+41u9LE22m6MK00S4pXAsjKmho8Jk8Wv1v7uJwSwDchxEk/UAA2lXXj+VGztwpEb48wb3Pv/+B2wJw==; 31:LCqyPyX7zSTRyQKNgru4bL7LowXBA/chZn3jiIZZEzvlp8w9vmtVq+leKs8TkBU7I2xURcsanNwdKaC+kW6cCeuse4BK0hZcG+mJT75nSW8GntyfHvdmPJ/ZuDZtCZZ2QCpTfcmcMMsBjnrnHRoqGgoUFGFYdcXREhEiaLjICJJoS/jChcVDrFyGSWEvwhlQfGFo+iOb8RYI6Nmkp+eLL5PaLiMytos1DVzxQmwGFZc= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3646: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 20:SbiiPnY5klKOJ/tB1zTk0ivktEt4fig0BNU70z+0rz4mVrJ5XNB1YwipZVZ9NokLU7jRWSRCxuw1pcgRNMkQ+s88z7Cxq/nWSslMsqI9YEQ+MLa5q5w/GHYO4gJr09GEYhXXJtaHlIQ/yEKVoj5GvcLjBWn5+k5o/2nAokBXUrzjcXwjwaZ7URt90xCnIOVrOE3YAdANMRN0Dhv5jvoH9Ao12jS8q2IiZ75xgPlND9MpmLWBk3zGPOTs6J4PjlxfTpRXBs/p8MPinnRavECiiJhFXqEW3nuTyfSwhqU9Aw+qpWezxaM8cPWPdpvdecx+3EmADYhziXp5tdtBn0RsQrelupf69wCW3AFbajJAHZsiXoWWb/Kf9mVYoS595u7VzKS92xvh/aIZBleaX8T97QHHO2BTDHyrFgf8cXlzft+KieW4gtyhQubM7FW9PXZb2YvLiPAqiqR7iCvaMeA2ugvv+pSjLcDjDHHhU8riaIxyoRsr9urMETuOBq2ojesLSAGMAeOuG7ca0+K7V/JTjgOh68yl3jj/IXSAga0c1NNYKsMoHRniTTFITyM8eU8RR+iKE/2qI4WXsgY1bpQi41nVV7KtgGR0bCQUUcwCV7Y=; 4:MG8LRjqPuqtG88PjiNkvzb8fZgdfhdGhky6gB1Sa8Cxzs51H4N9Y6KPrxC9suHN4pNmdhougNDdHyxOLB8fwd3tkw0cslGJ4RWD7q25davlLFZgzA3H5VUFNdtvKItyzw6j/2FQaISaWMzjxopZFXMl9ncmrlYL69wmf1FXZ3SjvMoGzXAcly1yLI7rcu7zHQrWgoRr0WyE3dbjq14cmldedbTEHYV3wXZlpy4g+XoeRek7QP0iVnD5Hn5GoWrBeG+uYRf2laQjuVj+kF3RJWQ== 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)(5005006)(8121501046)(10201501046)(3231311)(944501410)(52105095)(93006095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN4PR0701MB3646; BCL:0; PCL:0; RULEID:; SRVR:SN4PR0701MB3646; X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(136003)(376002)(199004)(189003)(26005)(2361001)(6506007)(55236004)(386003)(486006)(2616005)(2906002)(3846002)(36756003)(16526019)(956004)(6116002)(186003)(50226002)(68736007)(5660300001)(11346002)(4326008)(107886003)(478600001)(53936002)(476003)(52116002)(76176011)(51416003)(446003)(72206003)(48376002)(6666003)(97736004)(25786009)(42882007)(305945005)(2351001)(69596002)(54906003)(105586002)(106356001)(44832011)(6486002)(53416004)(66066001)(6512007)(316002)(7736002)(47776003)(8676002)(8936002)(81166006)(50466002)(16586007)(6916009)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3646; 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; SN4PR0701MB3646; 23:C90lyComDRJ46gZfeN40NqBwJfitFV6dfZZS2gx?= N4v5gnE9wWiV724Bb3aeLouOGQ5Jy5Oyxwx3PCFwCa/JocaiydEHxzMCP/Ifta7t4uzTTSLqKQFQ/jrx+8Zidy8jNt+7x753yypV8PLuNl+joKyOCBhw68njfyoO87bxD17wKG6idiymuuSrzwDoLk6PG2HI8OqbcnWIUk5tc3611R4U13/orlXdPRMS1kfOK1IqexzoT7vTuaYdNjOxzAL+57NODP+ibDQ0GubahwPgNa/SB1T+MIAUA1OjNCyY2KcwLr8TaZYGlBVBYrCkdFNjxybJmHNAD44Q9hQtMgfryhORFZ0zzWtz582dde+o+EbMsl48xs8+VrnT3m6IxLU26e9YnbG7XO5Qnix7t4E60zTJezwd9GzBQ/3UjwC9n3AoMwft2Y3ab47D2cwHfZdCOMDrm+vM2ySN6P6CHU54EcVIWK0n19sEKoXvQcvSLTNF2cpOXD2htmgBwqGb19tBuJITI6/6hV46A4pVtG38ZnuVmmmBTQ8uND5SyRr4/AGu9LPN8XQQi39PvEGZRtSl6MBstAbSgpTaIBFLZ14NsUp65RYf1eQ0ClM+CxUULHCUJc+rPcmKRG37P90mu47IMXAOywcipJ8fsvKHHbI04CaFYGa9FUAQra9kFsUXHAl7krt3MevM8iZCB/+2jUXSxGoK0wneQZ5GyrwSGGVIv/axATnwFiQsaGehNgz+RDpV57bOM48lUm5OfkxdRmZ8G+vpRVJZUefi4lIp3u/HVfFnC4+ZwiJ4z+ORmMAHRLTG5y8zt5rPKnZ3JReJTd0eDesM1mND1kPWPFYB72dZjeHCK2nPi0Zpylw+j8ZTXBwrvblsXLDq/T8YxojUzs3WUZaHonFjGwFEwCHb8BlTVz+QP4Dt1fKkDp8Gj9WG/9x8KDETwFm1uL9plAkVt9fPKxa0AbBEy93biPKrCz9AECcluLAzS+FE874Uzkt1KFm9W7Z88Ylct52wbHxF7dV6QeVo1+3wMyYXTU7TJgESZLAm6cTXxEkQ8LEwEx7v/swp7M0wlRnHMRXHy8Rj+oOIx2JXeZ0/gtxH2wSFkOiUD0UO6+6E9HPw0hfy+g6QbPzVOay8zOMpkMOabfWbhxnu4QRZoRUwqQs2VKYwsn02VcDKZU2LXzAUpC0RzWu/PsyWOeFbzuYiCOm+gbXxss9fKfmA2I/g6xWOr+XYRKWuzGwxpne83zGDQx8UeIHf9Yc5198PxpVcMKHW44SUondVNn+2ETNrNV6F5lpjPiOOkC1YP0/9jRtJ+BzTk+65Jfi1Lq0a17wQvtgr4x2/cLh8QsisXAhCbEqa1fUD7akNHMA== X-Microsoft-Antispam-Message-Info: SlnIWi0lxinViG4bBQ/IlWkmlqi7CWZiWjio1JT95oEDIBMgig2j4vb+JlQ7ldR+IyMetXHcU5gUbyAXH9oF6q3yFQq6nVTzxrUM3ezXWnl0SrvPvDLCsUz0L3U1EjWU8hdU+NgONQ5p6VbSt4zKYKOfeIk5aElJGGc2cvVFU3Z4ex13lnBWR3PrVn8hTctAivdJ4SMzr/RLFyaILu/1sk07VxQ/S7chYKcI4THoK06BaacQQ3GovNQ5dT4D9MppdMoapdSYM6mybPP6m/9ftdkV8k+HN9hLLe9V7HeJIXZtnwjSI8YjDUC0Q77oecyDX0laOxzR3BwHx0JXfJth7tuPzUFq1UCuQ4UisJ4EWnc= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 6:XXxUtZ3Gh2S0K33mAuVJTwT8aDY79fb1C6V1AH1xcsn7EMvUovVQ7It6pvJwkeGabWeGsn+dKafFjh8UhJE8iHRKEeUU8tFCLOSban4aG9Vo/jLQYwhK331gwu0/8NouX5cLA63d63vXc0tuGIvwP+jidaR9yovjbNZwkm86DuJQm/oEoP95D8kPtV2fmLL6ed33q3sBc74vSyWvAFCQvpwxA8hu6c7PW51rEPz3JGypvGCipWTz3FSDI3P6Sx+17CLc99XpOzUMVERCNBQcPqZGouYTNn6ISK6uMb0vGeIwI43gFh/1RQSejhCFdFvd3HSPd/vLQuWy/T7GiJW6Dm7SDpVG0SjOZlyEbezm8ymY/HQNkuUMrrPMdWJ1SUpoJHngfxhSDYqrcx+8zm4qjxMBXfVp3RVNoDiTOAODxD2L10MF8f8e5b/udhsmrqfHOzJHKsbEVZIl2aaeUDCB/w==; 5:3XAixWzkWY+J1w1Z9n3wIrX+rC59ul26I6VYCZ9eOJNwLUgGfrxBPv+bsklzG+x1elOrYhyekfVGDlEeVZ3Bx9PV+95Zwyd2LLOREG3I2teZQznkMGHQNwkGcKrKrmv68TA/9WIxwiUHuoLWrBSNj7u+5FG8y2wgLMS7yc/8JWw=; 7:bXvrkwQ6c7G3bJAAuRKWl8GiW0CBiReayslNWi/ZAL94gONgLbI5hO37GMmLlMQHJcMTnS/ZPdEtDm8dKUPklKpts887ksUDAYm85rYdmfxrd/uqEp12ZZudsj3IA7WgJhJxOuCtLcLYNaZ7hduiZDshjn+ZaZ0z770xnZ0c3qP28gvlSVYw7k9PghWocvBstzKvtmcU97rRLSH73E500ACx29y5atirH//0VEPrbgdSTbMIMa2BsSTnhLyIAKrB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 15:06:09.2736 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 135a8367-6c40-45e3-9059-08d5f176fe4d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3646 Subject: [dpdk-dev] [PATCH v5 3/5] compress/zlib: create private xform 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 Create non-shareable private xform for stateless operation processing Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- drivers/compress/zlib/zlib_pmd.c | 94 ++++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_ops.c | 74 ++++++++++++++++++++++++- drivers/compress/zlib/zlib_pmd_private.h | 4 ++ 3 files changed, 170 insertions(+), 2 deletions(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 7aeef44..0d09c54 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -7,6 +7,100 @@ #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; + } + break; + } + /** 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_DEFAULT_STRATEGY; + 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 cf9c006..0a73aed 100644 --- a/drivers/compress/zlib/zlib_pmd_ops.c +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -213,6 +213,76 @@ 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; + } + + if (rte_mempool_get(internals->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(internals->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) +{ + return zlib_pmd_stream_create(dev, xform, private_xform); +} + +/** 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, @@ -227,8 +297,8 @@ 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 diff --git a/drivers/compress/zlib/zlib_pmd_private.h b/drivers/compress/zlib/zlib_pmd_private.h index 0e391a4..2c6e83d 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 Tue Jul 24 15:05:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43316 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 0C31F47CD; Tue, 24 Jul 2018 17:06:19 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0046.outbound.protection.outlook.com [104.47.33.46]) by dpdk.org (Postfix) with ESMTP id 338EE31FC for ; Tue, 24 Jul 2018 17:06:16 +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=fChFwaWvPVPh68CnMul7oi1MKkAGbG2UlFVhkafvkvQ=; b=cgfHRzA7+4FpQzHGR48arJ1/w2T6/l0pRSIBVDvEIHRFvmAODBSIV3BopVQOkUgktaV0AbkxICYjSUAMyw/FZYbSV8KSB+1PDCUgYgyDenWCjLNv5LjJi46xhzq4xlb1z9zeA8W5COiCD12XzpcmgaRrMwTBKoctfwF5LZJgp4I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 15:06:12 +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: Tue, 24 Jul 2018 20:35:35 +0530 Message-Id: <1532444736-26801-5-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::24) To SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 40005e21-f111-452e-4963-08d5f177001f X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 3:3+PApzqIP1iSu1azq5y8aDXTRPuslnfJR4ZocDAiOanB+3ADoyTvEVS6uBO2mUTpa23ugp3StAFy/DF0WwTbNbw8OHCHPzlxYp4gtn8d6vamIhWqkqT/KfYfr9e80cp3ou8kZzcNf4GbKjZtbH9KZPpmbTQPPT5UTZdhqwcoXM4rA8faKS4oIQYdI61kIBJMLOl9tTIMRi9j995sPVSkxp/n5QmB0xb4hBkURG9B8scK4WPuHrao70z+umRXX4x2; 25:RprxhRwsP7lRxnSxlqBp+MO7vHmkcsW1cRrXz7Wgt3U877/i9yggVxxkx1cuiSK/sxyZs6US4A0iNv6Ft78Wti5ikNc4S7f+hIWFm2mOZIefag7kmcc2HxLkuUfEox04ouFr3eeyZOPUyRIpu/ycu1TrgwKGp1PGJDBWy0KdxOFcHOQlcidNongPwNw+Xxqbd89/m2NIHKN7Rc09c2I5MqpuinOUXgfBJMSun0y+iXLyviSuv/OLPcpTtUnzTJApPw71ZF+z3111wL+nj8hE1mvNhjPXrErJLtinVLhuJZOEZYbbzJ1dH2KMpvJpa4ffnF2wK1fol4qsjWaG575PIA==; 31:EbQcZbJXpp5j4dpZO3p+Ln5z59KEzgJ57EPEyz6NDuoWD7DutoeIOkxzTrqP5eJRXRP7sGDu9MWEbx6x9r128nbWdHMyf9Pm3lsjGBj9FEGBY6y+lg6YHXTo9kfYj1zL7EhAe3nUMFDWZUZnHgELRUXIL5+G6ArwVeT1I9j9Q2SLFYkP7r3TEEqMY6jO2VGuyxLbb3k1Z/3RmtU6TIwKDmmhEimQBt2YN/MQE7E67QE= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3646: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 20:iikl79e7+Mm1UwwETjRMmp1CFvExDrYuZpS/7ezvherWGu7Xc1JXCIiQg8+MuYhNfQTply2xfLqtI6wNSalcPaluZMEsBt/gMyJCH+pxE6mdPjw2kHR4U//H5cCBrqzZGaUO/Z6iyVY2C1MpYa8/U918SMLCj0Du9/Rr3MXrnAldLKjRVKqJq0BeoZRiP6/yKmUEt4u7AQaGTwNI5WyCu287XevDi3wHYr7T7YMLNdkbH5t8BQoFFOeJ13rh5bDqqrj9+0tCwz3Tg88lyPKgyTAt/IkzB3X5yDBPR4UrLtro2N2hgOPSXOTmCz0O/bQmfXafNGl7/Z4MeXKBhtkNf2cCiaERjKt2GpGNAAH6STbTsw4wvn3iFyrucf0oNHT+xDCUQmd6ZD+P5Cs+huVBazMlDX5No8ov/F90NXex86V8qS7N/eU5os/EddrkQD8EYW23SDQ0WgOc2sTK41ObiKYuPrZyn7N/rl82VGFAlp8ncd678MKeVVjB0CHQQ/vKQ5PQ3W+RMrX/PsFooI4U2SJZ6MXdIObsWsA2ds/ieNhQ1P+bPpR5+ze4S+cFISeL4MlxGslwSnDI/BOdHNJmjnkhb7vHqI5znjNPPwriCrg=; 4:Achdz02gAGtIXBs0PXU3/EFvDSXhZbq1YuLsrdVUJqqQKUCpyiU8TPHHeqOyqLIviDvahlbbuMAusPiMomtNUIs0MoD/03t+PwOZauAlKcU2jRBrxpEHzDHn4wKv5jwnILoStsSxtwLTxbMe15Q7vLn3FRw/BcLKFkd43UpwYtJ/mAuEVkKY2saLVQghc24SsGq/tyPUphNe2gToKc3FCo+zCLBnL6Tb1pJ/U+WXZEw7XZIdvfCqHyX8OaXziAYdtEKIRWZ8pi852/H/KRInMQ== 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)(5005006)(8121501046)(10201501046)(3231311)(944501410)(52105095)(93006095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN4PR0701MB3646; BCL:0; PCL:0; RULEID:; SRVR:SN4PR0701MB3646; X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(136003)(376002)(199004)(189003)(14444005)(26005)(2361001)(6506007)(55236004)(386003)(486006)(2616005)(2906002)(3846002)(36756003)(16526019)(956004)(6116002)(186003)(50226002)(68736007)(5660300001)(11346002)(4326008)(107886003)(478600001)(53936002)(476003)(52116002)(76176011)(51416003)(446003)(72206003)(48376002)(6666003)(97736004)(25786009)(42882007)(305945005)(2351001)(69596002)(54906003)(105586002)(106356001)(44832011)(6486002)(53416004)(66066001)(6512007)(316002)(7736002)(47776003)(8676002)(8936002)(81166006)(50466002)(16586007)(6916009)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3646; 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; SN4PR0701MB3646; 23:FCW4t0PYEelTxqPD3oqVonE9zQRVPH1fUcmIFbT?= kOvJMEZEepvi+Y/Uuvp+rUGj/3zlhj5YSj/z2qeics8gwZA/I+/HCpEhX3olaGpthZSjQxhNUCPNzn5/PFvRVU/xkdB7wbrVPE9jyrtOg8aASGBkjmI1KL5DSB5qJlCbKItyjbDhIWtIOKjIQrjXOuVlxRocYwJ/CMaxoCTLNEAMVAmqdnyPWPRyN93Yp7LwP8/GEHPsg6nQqhtJNBWK7xK+2PPBxrCbKPYB3DfjJa5O5P6Ziyt0xsKtZ/RYCuOmVdFHFcxTBIBt0mveWyVro1onGKivC1faY32S4FKlHIzSgBphADt4hZFEvIT07SqPBE5ApuHwNGAERp/PwOLEnabj7IMPkIchOa2BIN7pigl3lUTwNsIhHELkjulpEQHY1y6fPX+V3jKw9a8AYmuPO490e/gDRZO0ytdReoJyt3TSh40ca02wX/e6BFD9oVK/ZtT+iPFVDbYMg3nFHaG4BDcuTOjTUwN+I8oCoMhZJJSLtY8wVMW8j2+auRsc+DJuerQH3ZSqqcbJHi4BqggW83XP+CqYtYLykc4Siqc4pfNDH/14zCOnsJRX/zhr4OS75iXYlxa/k/d/+2eeByoDB2G+jpdrTmJfe9bxL+3sH90/2XBZqlamR4tgfmMIDYKytjp+3hPaZ8ry/Zl9XI4MFuzK/KGZbeASQUUgj8+KRzLPG3DjaZxHGdSvVmTrFcvmOOQSzGvfsWly/Yi/dxbbqsqGG9VfuY6uIZb/VfdwWtnESAlyDm7tbyhpkgg0Wc5+nP0cFn14C6jrvGT1xd9w959MSr3W0R9XV0u4FhZCx8yAfLy7vs27BRTRbPjdjgY8tfTkuvnoWAl770pCPuV5dkMtvss+QcBauajKWafhD3gIZkPNX/818w6iTHpz1ni1Dnrsjukw8O9JsJv9gHfIlSe/BGWY0nsZLR1qGWsshI7wUqf2HypHzPbgT9KZFSHpCuTN+gQL5CfZGMu/9twwfORGaTg5Gew1JIZqYHhTBwG2c4p98hYPLjwGr0KAqhW/ut5TVCVNy++zEeKu1tRaC3WctVrAgR57737L3IKHSa7JztZKAlawHKKeEhjlgnB4NkCAVIpMwx0NOYZHDEVIBWHschAoBsHnCkuxusIB/aQKL/BHu5870WTKfpo8JEtAGEoth7Y6/g+tNjRVsHch01B4LKS62nCxl9p/zYvQJ25ZBh+vxZ5qIVAkj2wv43c0w8a9pcOyIziERoYRyvIFJ+8nOhzNKrwupHaLK890JXGlvNsk/ZCQkyEkppr6NYgRXL5ggmKX+dr4J93VmuYmflvd++lQoqQH6sjLux3QsBA0Jqj0za39rMKGB+6l3HMtjGb8= X-Microsoft-Antispam-Message-Info: Ykp4hTa/b1FvO4aEEbNrDQ+nom8acxdJa3pDBB81aj5pAxCgMzbKC5dKUlOHHWU3XVqhcNe7UaohZ0bAZ6IzlXgrHqlfwMbsFMoo2Ye17i/um9hAM3D0pNJi1vI8YL+zRNVa5OYPvar0o64oKbyrGHrqcjdg1FN+WBxntqpjb16Hjf7lDnN4uvVXzpq6Kb/+zbr0zDLSAENzAHyaNogsSgyiQybn7JDnhjgrBEkM2Fdw7OLx/jF+4MB55ZDMyzs8pLzfPojlvdc1oW+ygf9wd/eG/butgwWJiETfpFZEoInZEw/OOBWkNqe1lEPRFDr54+6YUnaWvzBHHAd7VTDoXyPp6PiZbQsEv9b/ijQm+yE= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 6:ijZ3aPJEwTr+B1Ps/TAh9b4n/gDUodgB+DmfQTrQS4hdQRyN602+mSvOL7siHaORLL8Uax9p28gElAng2ZGcVbUSipC18SupyLqLm2HL6IubE5gDF8NTiTdyq6BxjKgww9iOQ8S90qQ/2E80E4snk7rHNMhHnqaLVU/vg5Ch3sdtAjUHd+UWWnHCB2ixQi1u66hgdoocdEVlUKRHyodbtKufsCzQ23ho1ck7/J8SSOik4Ihbu0xM5L1A3J+LX0+gH3Q9pw3Km16jFgSNIkgY1m6JFRD9hjfgQ6YHcj3OoEIQeIhip0fdCMZHhhrM8C4FYgsHMARnxDRTc6Li1a675dSbMk96QpfFu/QXO+4bQO0ucqH4GMbSchS0Un3a1j8JoE7a3V8MkY9Wv+oIt2TlAb/MAh1tfPzGeV+8S8MjUuUqMl7Pw5yKUy+3H6ETq19RkE1vBICjFCfn1bMe0xMgeA==; 5:E/dFvEPKj4mZVRklAJFO6iicj/MlKxnR63FbQDP4/8M6YKy+aTIBXMWdMBwM0DUa5LQAIcD+1ZvIiut5u6vHb42fgm5oO2BRerWQY1lzmT7jxdpRHRH7yE7PLziSpjLnniy2J6KSC6bJt+VegvO3tID0X0FJFE7vZ9G63LbPI9M=; 7:fBs9rl6ImiM+AmUmn85FYypk+DuvoPY8NVmj0lcF8AT5Q+LlYOPECyJODWIhEnls6b9qdqs/xLvuIdnkFyigPo1JAKWiuxkXzXJmgS4krHSLp54bQZedVrwe5a9RCc3xXE6/4PmH9qKALQm1lOFWYUzsCgwbjwN4le7RVbPBLWL4p49HjJ5yP50Yyi1aug2ibrmlqv4vIlbWdPVdBHDZWdLLdyQivvWYZsfzsz9xW/sfwGT/I/2X8CqiSMi3tR3a SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 15:06:12.3228 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40005e21-f111-452e-4963-08d5f177001f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3646 Subject: [dpdk-dev] [PATCH v5 4/5] compress/zlib: support burst enqueue/dequeue X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunila Sahu Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- drivers/compress/zlib/zlib_pmd.c | 255 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 254 insertions(+), 1 deletion(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 0d09c54..bee9602 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -7,7 +7,214 @@ #include "zlib_pmd_private.h" -/** Parse comp xform and set private xform/stream parameters */ +/** Compute next mbuf in the list, assign data buffer and length, + * returns 0 if mbuf is NULL + */ +#define COMPUTE_BUF(mbuf, data, len) \ + ((mbuf = mbuf->next) ? \ + (data = rte_pktmbuf_mtod(mbuf, uint8_t *)), \ + (len = rte_pktmbuf_data_len(mbuf)) : 0) + +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("Invalid flush value\n"); + } + + if (unlikely(!strm)) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZLIB_PMD_ERR("Invalid z_stream\n"); + 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; + goto def_end; + } + /* Break if Z_STREAM_END is encountered */ + if (ret == Z_STREAM_END) + goto def_end; + + /* Keep looping until input mbuf is consumed. + * Exit if destination mbuf gets exhausted. + */ + } while ((strm->avail_out == 0) && + COMPUTE_BUF(mbuf_dst, strm->next_out, strm->avail_out)); + + if (!strm->avail_out) { + /* there is no space for compressed output */ + op->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + break; + } + + /* Update source buffer to next mbuf + * Exit if input buffers are fully consumed + */ + } while (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; + /* Fall-through */ + 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("Invalid z_stream\n"); + 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) { + /* Fall-through */ + case Z_NEED_DICT: + ret = Z_DATA_ERROR; + /* Fall-through */ + case Z_DATA_ERROR: + /* Fall-through */ + case Z_MEM_ERROR: + /* Fall-through */ + case Z_STREAM_ERROR: + op->status = RTE_COMP_OP_STATUS_ERROR; + /* Fall-through */ + case Z_STREAM_END: + /* no further computation needed if + * Z_STREAM_END is encountered + */ + goto inf_end; + default: + /* success */ + break; + + } + /* Keep looping until input mbuf is consumed. + * Exit if destination mbuf gets exhausted. + */ + } while ((strm->avail_out == 0) && + COMPUTE_BUF(mbuf_dst, strm->next_out, strm->avail_out)); + + if (!strm->avail_out) { + /* there is no more space for decompressed output */ + op->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + break; + } + /* Read next input buffer to be processed, exit if compressed + * blocks are fully read + */ + } while (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; + /* Fall-through */ + 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; + struct zlib_priv_xform *private_xform; + + 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("Invalid source or destination buffers or " + "invalid Operation requested\n"); + } else { + private_xform = (struct zlib_priv_xform *)op->private_xform; + stream = &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) @@ -22,6 +229,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: @@ -80,6 +289,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: @@ -101,6 +312,44 @@ 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; + uint16_t i; + uint16_t 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, @@ -117,6 +366,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; + return 0; } From patchwork Tue Jul 24 15:05:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43317 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 935364C57; Tue, 24 Jul 2018 17:06:23 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0061.outbound.protection.outlook.com [104.47.33.61]) by dpdk.org (Postfix) with ESMTP id E38603250 for ; Tue, 24 Jul 2018 17:06:18 +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=HE0wsahM2EaQatCoumGOpRnFv6kBg5z2SRWIqaWR1BE=; b=RnWIpcbMKd5D0rJQWp1yTs9r/ZV3PuAFtb3S67NmrCu8GTnfmAIVdccCetAAApzQtdxxk5u7UqxOg2kV0ZsE6OaSrDofI9vcwVOS7ymbpdA/3nJdj1IeqfFIcd/5EQKSsA36mYsd3HfqTQz7t2S6sdsI53P2peNKt3pdmNJdLpw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 15:06:15 +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: Tue, 24 Jul 2018 20:35:36 +0530 Message-Id: <1532444736-26801-6-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532444736-26801-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::24) To SN4PR0701MB3646.namprd07.prod.outlook.com (2603:10b6:803:4d::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9a4f5d64-9863-458f-b8c9-08d5f17701cf X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:SN4PR0701MB3646; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 3:wlBEAhpR053IkQDFJj74DjlSVpez2BYPUmiFlb8NxsSanqFyuygOAxx77LQ/2xuTirkhHZ2i1w6GDY6RmlmpQ/8rzGNcYqEmVE7tYL8NzlUvaSLcy5CwyXEORZDfAnNa9SHx8TqyB0HocsKAc8J8OxVSG7mK32T1Uvi9bVvcUnNFprEOxTaoC1f2Mc1WNnEB1Sc/j4L0W5tq7Rjhb8FJMXUN46aTElYpJFoklQe6kBimGDnHd9dtHONf1tLZ6V4v; 25:lfkguZKwBJqZLNLgjoZ4NvhI60lkU7EzrUGZYnkBOD1av747GsTS8tRa6X+3ShxYRR75LDZFCHOrBWp35XOeDFIRLhZkwZb93s8+Zr2nLiRl+ng+abp5NigoYi4Ollgpmnv3HwYkoYDDXZ2nDrNgxA/luiphyqI7NyWEsC6tCT3lULbsNXjdZlQJy4Hbm7I6k91pKtiZTPwECN2RuVD9l+Fm+Z7CNXVZkR82k81zpOEmyylstV5RzROAE07txg0D8N0i+FGTvJOP7rYL/frAjztRbwI6PSw6KkDGOL44mzcqBykn3xRn3d6byoHY7npEAYJ6vN4XLxMH2y2OHHrlZg==; 31:elbeg8ttp1FWEyXNbwQIXw87QN7iXPWICrmx0lpqEsSm7qpJC3lsUZ4aCVDB1PW34W8QFTS7OyH61hud/qU7ZZk9Yk6+6xEeCo5psOu9ExoN0wg3d3SP60QpcXCOLCx1TDmAOKFQcZE4+eYggUrn1it78wCnddLWwsJIXa8nfuV2/o6PD2qHKVxTgx2WlcINgWLAoKrkpyZinEXI/gbWfe2/BKX4q4Qr6FYY96f2l8E= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3646: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 20:OQN6Vk2S9B8+X7siC1DwbelrOKhrbD1OjqZyu8Y73rxwlxCssTF4Ai7KD2mHrxBEnKKGNrsw8slZkoatMcXqYfqIdjL2zY09QJGUUi7u8W9fmX8egfKUy18PwYzA0As3i4/DonEIOg2ubWx/MXLfvgK2hG8mIq901iMkjwkJwxibGcZTRwoa6qHeIlVdL/d0bVjWYUEDnAc77sS8zX1ZQEQ8YdLlrUvAE/m8rd8A2Hhqn6BO6aJR1ktrXE397YBjv6kAWJs+/UfmWNlGf4xSTHUhTbUq4h1qJV26iVON6FKro+g1l+yDDHTwUz9+jqRK/c7ijoQ9xaJw85uhdypLnGXmVPIFu7Gd+sxHIdCePegwjMqKSg4xhfJCsfCGhFMSgZV+BuaImMfUZhRZOUIfA/VmwSV/ADLiPUvjPNPxObT/4QEJP33ut0Io0ZP7OGNHLE+ahH6+FZCFCRgrOK7XsbiVvC4LxjeeP/rQtn1JUhYiLrtLviB8vgewF6fLQFp5VEEmrHN/7SGxaeE81N5LOrs9Slnx+z00W3zzQkrRvnrApx9qtRPJvXeXcslaUFfsIShWW01vnUmR9JsUC7fx0mHVge0c6J+xqNb1H/hLMz4=; 4:vwmNH79HK8KTVLsf1r3WQdlKqLacvZlgx/sSOIlYd5uYhpjBAvuzcUFJCEbPD2XT1E0X2sStQfRu0GlO9rHnRYnDeILXplC7BXTtvhmawZnlZXLOk+aCooVaoN6JUuzc5OCyym+KuGY+XQsDzzl/AMWCtk1FUhrsnOhS9E7IK3oLLNbNzs1kPBF/E9TPSLVpOSZTss7cJezSxb6bod/yprOplDrNzuYn41wRYHFXYN+PBLibxRQ/jNKsHsVDxXPTNoPQTE4W2vMPUbyzou0hwA== 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)(5005006)(8121501046)(10201501046)(3231311)(944501410)(52105095)(93006095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN4PR0701MB3646; BCL:0; PCL:0; RULEID:; SRVR:SN4PR0701MB3646; X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(136003)(376002)(199004)(189003)(14444005)(26005)(2361001)(6506007)(55236004)(386003)(486006)(2616005)(2906002)(3846002)(36756003)(16526019)(956004)(6116002)(186003)(50226002)(68736007)(5660300001)(11346002)(4326008)(966005)(107886003)(478600001)(53936002)(476003)(52116002)(76176011)(51416003)(446003)(72206003)(48376002)(6666003)(97736004)(25786009)(217873002)(42882007)(305945005)(2351001)(69596002)(54906003)(105586002)(106356001)(44832011)(6486002)(53416004)(66066001)(6512007)(316002)(7736002)(47776003)(8676002)(8936002)(81166006)(6306002)(53376002)(50466002)(16586007)(6916009)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3646; 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; SN4PR0701MB3646; 23:M+TjWYSLmM2rzpNTylfNMEhnvUdqqwcDq3bN5sI?= vyeiA7aV8lwK0fWL5FzhkFtiPZA8alfBHNkSUf+H399AKPg7UbqET7zwRTcnvdsrOdcGezPzyvDLBDHD5Z1gae/08i9rq19nkD1AcnUH99d3Rc570BQ/9LLB+ivf0Ud561CKfy4qWNeUWlSBm9YDlYQqh5xav0e3AUXyLCycTdiNfpamsyDsbymUmdeKr04hXxhbMwr8Na9H1lg6a0okofSrpGgoTnHCM2xHcTtggTOVbtnwEh5HjmhzUnQt6HhASHxsa09fQqovJOGXngwbcrae8RWJiIbCsPv/cj/I8m1b8Y65lotpJhrZ+EUnoZ8nMHnCa+d8A28wKTzy1JhgPCiWIa7vObeohS7GSxoJT4Ln07/PoPD5Qq5RIMKavRUMw8nUFwCZmrvDjhAK0NQtAwFet+SCzMb3Cf7cHmUE6DGlzdp3Qf3RLdasGfvxsmEQLHNSawPYTH5bQsb5QhNuuSd7mNOR+cBLT1SuT5YsbJ5Ehciew9tZW1uDVomKLp2EYjvvcyui3rc610diA/sgKF+e+v+oqsG1p0xkQMgOelvmNKtrjVl6nVExOZr49SUJzPvrw+8MQYYxEdyYGFlqD+1OY1qxamHmOqWHDJrpKtJIcnsZJUgJKsGWlQ9jdbG4TsZNyz6Z4a3YvHizQoq2qo/RZdgnKNvClQaLvC4maCRzJdawN58pa6YXfui1kfO5RaDYxRCeKRlyykeoGShTpnk65k1bt8/l1jkh8cFo6xIN4iVLIPM7wWh3NQQmWl3Q/VT/PaFc0rGwJSk7h9g1eSFQxmQFN+HMmmqf57JheYaKKbyH9uwG0zvD0LX+9dKvkzewEAWFBwHPAdLuBTONvLmn53Jj8N63/pUpd6Epo2W9WbPTqCCl9sbPdP5rIIz0EXpDx1pRygdgrCADDXyXvS9icwfFgElMoBmhetSiesZI/o/ot2/qfXyV7+W3gmMhx+3pZIX+kgax8Po6o18PX9/ycl9wbUVxf5rNdKWcE5WULkA5S7w03nXP0opCz7JViV1Y7KdORXifh2SzVNbOd3hAG0ep7q9dGnih2CWdUYXKVeouiht84JjJhtuiDaGSWxN1WoP7DuQIxaFWkLSCJTSTQlBbwfpOnhMAopIdC5JX0W163pBhIxXxVLtPC++Praf9U+fj72VdXEO2bQsEFN17yExu/hetRthe7barSpBicEJ04RE2qDJ/2qPlhbJvzYjyA9gjg6cmKTJDHBQMLsrPmE5/GxnAetpAKPgGw9Ub0a363l4MGptGOWNqDXcBtPsAdaCh+IswPaNZmaEhAEtpALXWKA9buozQCvYMjSUn8irhrRtCkaP0vdvlA+URULAOIEGQ7MftRbd/ou49UpFdes2M5222OYFy96FPrG05X43hivjXaj9d0XatQFZW48mo= X-Microsoft-Antispam-Message-Info: Hi432oGg6lo76twEKWREMBoijv+yzZBy5wXAGSRh1MHfdtpYvXtxwdyD5viL9jJWiIYFxfeE80+rT7Yp9Ky5XguYa2FTFIWKfMTQzXZaSdi0oNvMtdJjmXbQyL1bRD0cgpHguUFLHPLJf2kxtt8cgD4PgafmHozZj0Jed6f8l/lexiE6AW6LRBXbqvZq0YplUapzSk+Yk/9SLJnx56GILZE+yRt+svloBtTAe0WnsdHVrD+GQMtlWU0U2/Qj05hBTaomQMj2W/7jqeQEkHl1J6seDMIyLrnh0M8WKa7AyKs6fZV/K+Fdy5pLPu+EnkyRcUc7zK51ZAjgFVKX7IMTcgtBhjOXSDcsgfQp4VY4zGg= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3646; 6:eGcekjbs909yPpRrUwW5dXV6+uoPWhljjpD0LkZlg216e8MUd4hFknlH74nSe/bMBKWiTO827g+GRnWyZv7HX3SUamIBIZIsz165o+VXVj06by4daI6/XME1HfkYrZvfqPvifyXkpWCcPaOOuFKZwL+HQ2RTkAiCgasILp81XdYK6ONOwQm8+gKMhQbXbf9itFnewBJigZJl4WcVh0vkWEWBWjPAEDlhsP3p72tyVNXcJrhGqVRXioDuOLLu9CzkwlR27sXg0OiTQ5u7nAEtpKLUWpn31cs32qO84noC6uIRkSR9P7BEAuVxPaOFpgT//PvafoZNSwkaHfHJXbSNxn8ZMdunGw4eJ9yitqpegUEnOU1+MXYBCFLhsg7dzAOzXq94ei505Rn1WzqBhG7yxmT8tE676gPXYc3LXHXueKyQQi/Fj3s6yXgz8qp3Zz344+94S5/MizS0xHJ8MPVN2Q==; 5:JCiUEWvlGnFam8sFBmBZL/Z+OoK7dvoR7QuiUKCbyo2XfUOlUluSsNoFN8Hd2k/NJaTaxVe9hXSlRj6UNhvaCOUoKOdD34hvaZcGCuVnX7EmrxCbiaArxZ/Kbft4GfahWiB8soPn9Cxgyi0wosSE7tJ1IuTX75DjSp/tVulghVY=; 7:IfK5FyRwBI4Cy+0d4ogArMU873ZBTlmXYnsCGL1Zn7xJOiBd0ImoHJLJON47htYYDUB+HevTyaIlf/i2gGOMABkPRMYbarRewWg5E1u4GpIpIrKXkd59L3Y/I30V0P3hFGeqbO67I9D18PHFd6jmFLp2a5821qn3Cr95DwtRegSnUrCQkvA5n6R9erMhWyaj9AVc378rEXgPSaC5uvZ5xMPZGxnrTFTLiTe+n47gcUQIn4Q9ScHC4lcMsluo8zte SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 15:06:15.4600 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a4f5d64-9863-458f-b8c9-08d5f17701cf X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3646 Subject: [dpdk-dev] [PATCH v5 5/5] doc: add ZLIB PMD 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 zlib pmd feature support and user guide with build and run instructions Signed-off-by: Sunila Sahu Signed-off-by: Shally Verma Signed-off-by: Ashish Gupta --- MAINTAINERS | 2 + doc/guides/compressdevs/features/zlib.ini | 10 +++++ doc/guides/compressdevs/index.rst | 1 + doc/guides/compressdevs/zlib.rst | 69 +++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index ca27c6f..7e3c450 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -875,6 +875,8 @@ F: drivers/common/qat/ 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..58a4ee3 --- /dev/null +++ b/doc/guides/compressdevs/features/zlib.ini @@ -0,0 +1,10 @@ +; +; Refer to default.ini for the full list of available PMD features. +; +; Supported features of 'ZLIB' compression driver. +; +[Features] +Pass-through = Y +Deflate = Y +Fixed = Y +Dynamic = Y diff --git a/doc/guides/compressdevs/index.rst b/doc/guides/compressdevs/index.rst index 4228768..6ba6641 100644 --- a/doc/guides/compressdevs/index.rst +++ b/doc/guides/compressdevs/index.rst @@ -12,3 +12,4 @@ Compression Device Drivers overview isal qat_comp + zlib diff --git a/doc/guides/compressdevs/zlib.rst b/doc/guides/compressdevs/zlib.rst new file mode 100644 index 0000000..986c59d --- /dev/null +++ b/doc/guides/compressdevs/zlib.rst @@ -0,0 +1,69 @@ +.. 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 +----------- + +* Scatter-Gather and Stateful 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:: + sudo yum install zlib-devel +* For Ubuntu users:: + sudo apt-get install zlib1g-dev + +* Once downloaded, the user needs to build the library. + +* To build from sources + download zlib sources from http://zlib.net/ and do following 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).