From patchwork Sat Jul 21 18:17:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43252 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 B02CE2C36; Sat, 21 Jul 2018 20:18:27 +0200 (CEST) Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-by2nam05hn0226.outbound.protection.outlook.com [104.47.50.226]) by dpdk.org (Postfix) with ESMTP id 0035F235 for ; Sat, 21 Jul 2018 20:18:24 +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=lptheu4xQsj+zjJRKDw/HqbzEw7JrJWMkCo5E0xBlNA=; b=oGi4KLCbOhrWg6MNgNV7G8UBUkYYN5eK+QxXr+kid7ABMH1I7nVhuysMTv7jRR7gnNnCi9BkeYk97injCYDgf5TyhkmuDwFgx3V49LXBxDKkIGgapYpY0uKKvcKcLdDjgBWnyV697m2PCEwsMYZFXCe7w5xbSAaeleE3prCPogo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Sat, 21 Jul 2018 18:18:21 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, ashish.gupta@caviumnetworks.com, sunila.sahu@caviumnetworks.com Date: Sat, 21 Jul 2018 23:47:45 +0530 Message-Id: <1532197069-24224-2-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::19) To CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6e793fc9-4bb5-4bd2-da36-08d5ef3658a3 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 3:cYmjjaTOXUs5Sh7XDt/3OXaoIEfYUFt8YhHtg9xmyiN6T8eZB2BilFEu2FwzNOIuSZuO1CwMhqZvemDz8byWSEfb8akPD1VPu+krMk6B/OGNz8z/QLmRVsc/unLRAGHkxnJXqaJub4O8xrFOYLaJJUWT4ZglGXOnBR29jOofsFgjvjXbe/C8l/993azvI57uLe4fELjd+eMoqaozjaFuuYvn0eDkWSCJ6BjTrJ8uHT63nTp9etv3az0+tz6l6LDu; 25:vDiMLelNmnYGfDwhBIHQBJaqAzDGKiJ/ok9rNsfem7BXR+03amqWsPoW1IznZcIKSohkCMSFRgGc3ysa7UyeeRjia6+atI0KDWBgVhdFcAM8kvyW4EN/znXmiyBFmbXFsBOeipWc4+Vnjy+QSJohq20ZjQfKebfRYrkAkwaRPCxIs+iGCqZHiz4PWY+1tLa1JrIMqZ7zxSqbptnYmnenELzsF6rv7juhBKzm0jlIeGnz8g5V1HTKe5Py5iWnaFRhOMf5IGOexUFBalYvW9kIu/oyWKopqgv/ewNXbWuc9EoHUstrIpzPjU1pxYClzta6wAZw3nQZ/lMhrmcO7YswNw==; 31:JGoIXgZXSjm+dTJANqpBdV/9T+/EFY4pgtYxW/4M1jRxK/K7XQssTorcmrhSSrWBXLdwl2E4uTi+dO9qtewMy6hL8pg/9R3fIHFo+LIgjrJkS6J7k569Opsgcoa835/BVa01eyQpOQWTvAv0AU/WYvOGDqE8FEzntHm7I1yEL9hPhDLbeAogkYJspR+Vg0DhJoteWMnup2bWLmY6VPRp1TFX2H3hG+HT5wEvWWBwLYo= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3634: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 20:N8ihCUxvDNHbDr5iv7gAHI7eEkx3Mo0Nu6ifwi7sFiAVUr/36wtFX1cBrxKapdkIv0ZI0fAFNILZD85LkcKpEXkbn+zPAqr1mSkDELXvtv8mooVk/PMiua6xs+ISv6oWJyMimTe9DkEjmaFF23O+FG6t+CPefefG8YuzewxrsTEcHSzL6tHQjFwDiT3BgDzCqJc8cebmIxY+3DuWAgRUipCuOizfqKqFyWv57DG8cxI1YrdPBjVEM9snkX1DpeIk2e3IsWJeUATkv3pdj7r5TEbzKctcPFx+VC+107BMk3C4M1MaVGZLTtgaP2COXAHIKy8wG7lgT2ysnGrUYhu63tVGtNHjHNyjvLrLOaNLQn1bgFPVrHPTZ0sZ/YzggQrMje7aIo+TGAS8iD4/8j67iWiaSKfNvDmrlcvOOMImnUDC3sIcCNtxAKxRCrWaI+yJStvKkvkhxnVttLW4xvFtzL+0/3+MB8a8sZggUs58PWXWz6x2Hv7HUrpPS13LRem2RaSPpDmgosmVP/SRWIDF9RHGyNuWVSBdKnbF7uNctEHRrzPmSAajanM1168TpvmOnG2ALqaJEv+CcYCj4PnMAvAopGB+lJEmWd4bs3pLgcc= 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)(8121501046)(5005006)(10201501046)(3002001)(93006095)(3231311)(2232096)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 4:GwsvG9lWsTDXIDbH1GowOpRwd6iSGanP+bKT7LKmfdreQl8oAG/rOWtVcbVLYuuXHCyoHdfIJnXSiziLms6CfC9f1UAYvaYVpWPyNt3CGy1PWo9eD2Ydw8WvdD0VeJKc5/7cJRnKTDyuSiqyFKpTgEXABydTaPk8bPQB5EpNhyePfdiUPY9GMoSNq0w5/3oZ4UqcTn9Ael6MCP6LLLU4OoCKKsH7gObdtVrLPUiXO1pygsbQUuNKi3Y2LmSyJQuDYWMBEyP+iBLGReLgnlCjXC21VkMxCsW6Dpa4j4zeEzlnaQgplTii4UP5yoNv7MlblifVHnMGWPUsOxobKpQpO8pNIGjgUQcbnIHKUmxGglM= X-Forefront-PRVS: 074040B844 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(366004)(136003)(346002)(396003)(39850400004)(376002)(199004)(189003)(69596002)(25786009)(6512007)(316002)(6116002)(3846002)(55236004)(7736002)(305945005)(26005)(4326008)(107886003)(53936002)(16526019)(186003)(16586007)(97736004)(575784001)(478600001)(6486002)(72206003)(2351001)(48376002)(8676002)(47776003)(2361001)(66066001)(50466002)(36756003)(106356001)(81156014)(81166006)(53416004)(105586002)(11346002)(486006)(68736007)(5660300001)(446003)(476003)(2616005)(956004)(14444005)(44832011)(42882007)(76176011)(6506007)(6666003)(6916009)(8936002)(386003)(51416003)(50226002)(2906002)(52116002)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:CY4PR0701MB3634; 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; CY4PR0701MB3634; 23:zsxwWBgBAVzF2uZs4D6zyG1wCogFS49GxQSKDkh?= iaIjWBTFBNiEu0iG/AaEqhY+RtQfxS/ZIsh1CwU63JXD4xZEzP1eyJUZKchk3ydGuB+UerAkaz/5sxnH874BSn2pDTK4H80Md2L3cHuDe/FnjQAMPxdxdMxCOsxl8NdeUTNOamslex3XJ9oO342L1iB8YqkOvGdeyU1VDacZYAf4WA5WfvG0to6RFlmXcGdRqUJeXFdc2pPfC7SU8uUAWccmk6DkDgkk+oUDTS2klhFBQMUTpmX5MsHiblqTQBEHS5WXV2Cbc67DrlzvKKjFhP/Yah0jZU7drXMM/iMs7YfPyzqfplbJShABG5oDjOH52x+dpHT8QYCStxBBRzmeV4f4N6GaNG7MuzMq07G/no1syMmtBNK0dyJ7WLdehdIraes0WyN9XazXbisW2DPVa7c/z0jGuFG/qd2AiP9bEtkqrGW//e1GozrUqtFOzvoVzHWzano/+jm0OVreyzXxAHDUHRNZfnYGrinaqNqytlWY+FsiV5djg1xuzwsyn9GYsD0AQn8UqFyVhCsiTzjUWAaZbU3F3/YoF4NxjUN84zanUBHA7SZIxMnQNJWJ96Yc/88dgPzKniNh9EiIERqDodZ/sCtL0rHiuKJrVGkxo1XqF7vubs7nokvS/XKRDWcxZIQiko9HHKwffnPHDQsIiAQwYTxqxtRRViaqsG1q5jWKWxMIYXzWQHiLOZs8ByZVaNixOlOX5Vwm8BSENEs1XS54sq8Cxn0gJSb7T4pUsqDcu/7xAzxbpLGq0NvJfHMYBkII7GL7SierDlMco/sRVlOa2AKsug0MfKSJMiV0bLTVU1mT2iAsQCFnP7HNWcLn3zP5lZmAq/o41D46oRFpzA46PSUr7XVNpzfSZ0cvjzoRQDbg3c1M1jQkeJcYAJFP3Ui3W6vg/xiyq9O2GZuUcoRP52ruUXOcE2pxrAvMRk3Cz5qdHnniXkcLUPtEGBSVSTr5gnf5KgfhdoJDvg0wFE+d5xyB2ZIajuFqaJXKyWTu8tkZY9/wJgpe8Uk2k3IOkOTJEzGEmF7+5dnjXDvTEKN655bP49P5o3RX+Mw2BWmeMCgN3a8VsJau3h42tbVpQjza8jr/df28E+SXQRfgy0aFR1nhY/Rhhbc555dc1iWPoFjUFnTgAbhJUW1XK5wAlVo6meRSI2/wdBGRCu1olQZX1upblemn++wcAiE05uE4U1gn5kBey2pl8w+tka5kawZn9rVj/w0chnowE1rSJZRc3Ua/40f/bjOO2Yywi0b50PT61P3nccAS9LdEEphpSGRXAcP04wYmKVjV5M5QqHvM/fuFl7Txj2JkYK1mfbIMl0tJvWAYTLj+uLm6MtZbQ58Zd5Ch5AH7xPNjbHd+ZTsQ344ZJz20Z6prPs85/sN8Fcls2aYS1dKtel72dqWD17+0= X-Microsoft-Antispam-Message-Info: gIOU2sqPKc6MO2yKeSV7KQKPVo025SucjtVWAFX2Op7m4RI1xl/nbpo2jvoQq1dq3Nfk5c4w8DZP+WhHNn6pbdTvhXXkFcAv7F7f1yAmkvBP2CMYHbrsm2WFR/vkLKGkXoMOdAWlA/4m2PSjVcZv8C9fEGlXaSFPxqaz4lDZsTLUXrKr2AS3F0pvXGZtU94fPHrbsVyhGB37MERxLzv0wQ2ehnVDae1taVdEhR3ZzQ9X28pCmVlh8JElAvHBnD/6P+PC73WavThXHOP6FJUHb5eAJRxKAO2SoRnOGRM6ud3Je3VK3meooR8hHLVaeb5yLMv4ewroBZAfC9zlipxD+6qA9xMjdvczVBEJ3j4emdy4NMonGyybsG/Rfdaj9ilOQhZoeq4T2RTdDfHFDJ4wmm3j56LGhqbdqU+iHoUF6/rjEjJMs764eH85BT3C12xeXPU1lNrH4lxu8ZxLgZRt2tHxxWd+2e013ZyREoSXYZa6Fa9f1g/HWPdMAM8XYSJW9iqPs0irObmwLKnjJg+k+Ve3R+omackkS/mDxKWBfEPBRBnQ7fk87k1VACoQuBCZsdL1f1nE8Sh4qqrMbW+grpEnaQX4+7gyij3Den1BDfAAREdL26RVxhsv17Ie5fX1eLMKspcH4Hx0XnEvxEdcCkSU8qRsFw7pXfrO8En7zGRkJgcxT9hCuOKNF96IQVscew5wxX3x9mWEiIOBEeHG+Q== X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 6:ti7YplP0bhqEWhvxn3dvVbIx7TMz/xzxc9fpIEBfJKUnGSj/wRFXO4Z+cPaJLQxANg4feb6I3JObr5OIbzCcEB8qU6Xu8b2NGZkcCRRW3lhQAHlYSx29tODqbyuQdvbN5Ixy72SQBHiJgUH5saEHWFQYOsNdMjhp0K0oU0Ndtz5VGon8A/D45Aw2O9s//dnN6B9F1PEgi9wO3APEHaFGPBki7NBRmBCNz6mxpMA9QhsFyWwtyemjrzYXPWUVeex6GMR24cOJP8j7CV0en5eEuMqHqWsUaDmkd9N5wVPdFLefdvEjdVJomBQtZNMlBsAUG8nw0kqPf01T9NaB+kbhfLXyO8v1HWe5IEguAsS7Lp3jh4M9/r1vquNGdnmTVqyxPgAKCkVmgGEjZdfd3RUdJgb35UTWEnz/26rUQYHTbhUg/A6rDUSVHbWHijKBpLLVa44vZm9bPVjOJDTkp0viWg==; 5:8mvxGm59Ac1WY8tyk/2TLN2nQCK0pffPpynyKUE8oephH8NzhMrVWRqxKALVnnmmBcptJOiCMH1kTL5uwGlXBQGW63yeZhkWnpCy5eNFJPARcax6HfxdI5uOe57w8QZ8bs4fl9Up+u26Ngq2G/nSUOoTYA7LfpPtkwNPslnTWls=; 7:MIGDA5TxculNHva6Wu1XLZ8raXy5qHzA3/z91pLLP/jfGDQl3Tyvz8qvSL5G7Y5C6nwjnjn527mcSTQ8DNVJpmPfJRzfRP48oyKQ9IIEBnhdopSUSVWTSBz3Xz42TgXv5IgzgFew4Y+U0RBK1lsiG4cs0Jn333S5S5yY8FBkQm+w9cZTMawflNt8jpv8eVknjx+fn2OFj7fZpN3ZzCoKfW9hc/51Na5ND2JQufP2dlF87KiVzjMgE/fUYiyuD4kX SpamDiagnosticOutput: 1:22 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2018 18:18:21.7274 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6e793fc9-4bb5-4bd2-da36-08d5ef3658a3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 Subject: [dpdk-dev] [PATCH v3 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 | 78 ++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 32 +++++++++++ mk/rte.app.mk | 2 + 10 files changed, 167 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 a061c21..d9b238c 100644 --- a/config/common_base +++ b/config/common_base @@ -582,6 +582,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..39d3628 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd.c @@ -0,0 +1,78 @@ +/* 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; + + 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_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 Sat Jul 21 18:17:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43253 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 BD02E2E81; Sat, 21 Jul 2018 20:18:30 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0075.outbound.protection.outlook.com [104.47.41.75]) by dpdk.org (Postfix) with ESMTP id 9D3782C28 for ; Sat, 21 Jul 2018 20:18:27 +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=ZApVFzksUhUlbS3rT9WCLYs17mKXNJrjA2t6/MC4R+c=; b=cwu/rnI2AZa0nMmVTycnBfVt0fMG95Vzqvnr6MRbUBC8IzQNR3bgccSP0b2mEPy0LTypjIR4YHMQfllz8Gj7SPZH6t/lPUwBAUvuk/M7kWF6/M2D85rdOQNVGl3+5Renpg8wBOzxdR9CouZd9YfuteypzR7t9CqOLN0L03ybhNQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Sat, 21 Jul 2018 18:18:24 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, ashish.gupta@caviumnetworks.com, sunila.sahu@caviumnetworks.com Date: Sat, 21 Jul 2018 23:47:46 +0530 Message-Id: <1532197069-24224-3-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::19) To CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5219223d-fa3c-4d67-9258-08d5ef365a25 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 3:JyZzukh9p4Hk8u5qkYuFw38ywtC2OOb3rwp/XBrf1NegzjUmoUjMxV7N+LkyOb9ugT1BuYB6Fgc71w96VZ7pgW98uEKmwJOyhg5Kh5gv9nzzCczeFgQ6e2y/MARtL1gh5YSg8CWSFimM2uWiJeKyMGv6shC9mR/jyFosI9Ds1YnfSyY747yZxqEW1qBqwffG64+vG7XB6qzemMz2LTOz8waZFCR9GbAT3pk4BMMoSvEbGWuUFdtzIKrvLHMkF8WD; 25:ps/495+B+RH/Q+Kp4Y2hCQZZBNafU4dHxiWIwtsKJgG6F/DX8T9ADmBwpt6i+r+0UXHICS6DzVUr9FmpbKHhTekRHxlkqAdRoy7e8S2R9NEOHPsKMpNn+OotfkMchDclL5df8Khsa74vFxOC0Sc5LKUWKdprV/H9LJ8CDtulEQRORYaFAbDi377WdmxfTYBXWtDXykNSdBbZu7FAqWqUfOsuJzLP2a61KrbQuzTPROJW9UVhm1ynDcZmgz6jQBk7+TFIt8YrIXHpEulwvpxf1CoG9uHH8tWFxn7rU7Y72qqQcXhQcQpIe9N/C/HuKTyy+dWqeRVaj2NIBd6LnCn6aQ==; 31:hTkVn13WYQ2sIDRZKDLNuPXRzRl77Y8Ha+MspWSuDDoy2V9s2Y6jEPtDdT0liGuf9DxjegKESe8K2wW45ixmxdTiXPnYGR7MgV/ZDARFEKX6vuVQtGo78PHeC5gMzWZgdJKGa9IRwhj4umf8Tf024/wq27Pyb3F/kICcFJODaKSJQ+6kzl8EGbXiuLWd0td2wuW6wQY1zO3+Uh/hbZjEw62u+XyLh0UeFHpZBfosJvs= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3634: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 20:R3BHQ3KeZ8I+/tNIsHTes6hCuBjhmXISWzefIF+CilWKoJj/BYJe5pwhjgB8OQJFF8jM9ggrdL+WwMfDvRqQcedRFWV9NBVsPZkw3wAVodneuWXnQDDD6Dmz+05TcLsuGO+Es4iyEWf5ZUYtanrgQIHYPU48XrKkwuEFPQegGKnznlcSsNzHoampf8tA+q1qipWn68IfLj/iLaJLllEVw/iuYHkIpn5z7fIJzREehnbqcjsKV4MDUhjzA2mbpSVWJDv19cy1e0jpz3ZLbPmsNndxO8GmW1gmyn444cu0ftQyJcxG2WtISo4tISBoyIAJJ0WQ+eo/kZSBWOPOvA2H1+rf1050DwJRLsDOLxY5kBfUh4GAjh2raREJLQmC+i4yNS5QE92vgmpvR9EeXHFupsExBloDQ7DOBiF1iw9Hvfp4imKXj6+58NVHMrPwdidn5eOZX+cPNkLwRfdvWXdTeeqmhvBKtaFE+3r++nTmcoRapUY2kTIABTCNsjnUEkkw8yqErlxfkzLVN39jQiL2vG5v0gukS51twVS7ZPc5CCLMqC/xjHyC9p4zRFoaBNC5bgB4KWInV/ZY8iKOHIXMolIlSks+Fs9Ssrgo9QwBobE=; 4:hQyV4YWcr4yGIWGsk2HvPPK1gAPFDPXxovjFuZ4k2UMJ8W2aI8TktbonmLOVcdrIhG/IJnNm/NukhKJmWqYk+qGXtJjj+9JKEC/VpFkwlLw6UAuuALxFl/epDajdqJmgFQ2Xyr0AOoSrv8kcKoqKK7K+UwLehZhoKeuWE8MX2JMUtGJIU+5J+KAFhqs6hn28R52lej8Vhlkam/6hGUn0U5KRgIFtsnVmnVk+/BdiFi4BPzia4t41jw2u6eFsn5G3gObMht+cURcctmoryxJpAA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; X-Forefront-PRVS: 074040B844 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(136003)(346002)(396003)(39850400004)(376002)(199004)(189003)(69596002)(25786009)(6512007)(316002)(6116002)(3846002)(55236004)(7736002)(305945005)(26005)(4326008)(107886003)(53936002)(16526019)(186003)(16586007)(97736004)(575784001)(478600001)(6486002)(72206003)(2351001)(48376002)(8676002)(47776003)(2361001)(66066001)(50466002)(36756003)(106356001)(81156014)(81166006)(53416004)(105586002)(11346002)(486006)(68736007)(5660300001)(446003)(476003)(2616005)(956004)(14444005)(44832011)(42882007)(76176011)(6506007)(6666003)(6916009)(8936002)(386003)(51416003)(50226002)(2906002)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3634; 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; CY4PR0701MB3634; 23:3QUNBh6oKNBbqQQsBZeoAAmpY2ObmwFeeOP/V/n?= EBKmZWnN/5V6rUyIaSKpfESrctb4dbPyal5ASD8Y/6IhUg+0n/+BigR9yYHT9QbRz1eJzI4c7CcGJrVJyZ5g2WqlBka2wn4hmQqdDeEcpY0XRALa22pLeZz6prdlBTeb14bMU7Ti8xdw0PddVc9Cm0EjmRntPlQKWYJBOQct3OuEZTrVu47twnoyad/MYJMX7xcg+LprtU4ZRKlrzobOfu8QM5KYwlfIUkr+ZEak+OXj2Jel/kF90eGHW22CacMqyqpOQ8lH5OC6JMVPsxoLN6ZOEFmrfIxjbIYpDR1Fe/xE+8qBrtlnatHuUAGwAuoK9fR9C4HAaEPONu0s52EEGAPJ8jmfCaKvChF3pR/ImEADh9/7ZJ67k8nlzYlFmcPoeASeVzKx7tlK/LBK5RlL5nKsPVneUUpf77Kksu7fb2II0YbXGo7k7d3EuPPnsK30NBZV0TZz4m6UVAIVfkEzV+TYfoviyj/PLUjoSw7eeDxe4dyWaPnyUTcasBwSq91VjFDBDJO2GmvvUItNmDrB4tfEN78rD1p/bO/QIVFL1EtBhZCXssF1lf5iaFh8kXgmsSL2rAdY2wyM8cHvOWlBqR5r/h2XCbqI1Z/BQjMPFytvHwHnS+S+GCUfLpEErkKBrSxEKHirhoS8YsebaIDtbGz/ZXqhKgqwszkrx6jGAS2+qIfJiNkBio8rR+ixYSLF+lYdZktT1duTa92NrY56rn6ublDGvcW1ay8bIgCZuYtWS84qR2kuTRNWDe+4BfUmi0853qB+SyUCCgMUO76wCOCPFd+OlijhW3H2s7l9VuMpFZ+YfPU/vGCRqXRyzGxd1DM66G32qzoBJ42HbQm3mGMAdVs/DH+e407jnUIUp0UoIqIum49KtT1T21QjDMNYh4xBrYG9Iu+muJDswCZ95Lpco1Z3dKuRoMLuc8nIx2bzcOksbI7j32GxJOntUkXw2JD+pGUR+Ll+DJ/v/KpEj3vSFahsQV0eoXMHsFKTsj/KiyeYM+Qt1b+dAdnRaQraYc0LhDnxIOw3Tfl5ovyDi4kOd0muNZ7UU4by1Vl6KlC/iPvT0Py4b+EwLGpsomSoSPsX3Z8K86oJ8EPhG7rxk/9fIFf+ALkJJ7uKFd5ZBxGTtZH7fLByDc1Ua8H3Scp3GMVd+a4IxHVFwepcglwGQ2iH09VDy/CtJXNhol7xi/WBQyiI5uqs/1otvJz7khNj+KMIHb5biklR+Y69FvOnE8wxr5Gm5nk/4bbRBc3ZNcJLhg2Mc41NwYffyk9EZCam8Mgll/rFSmpOiqcnmKt5Ohb3RZN3gpiqRZl+8hOn/9V1FH+gTf1oDdIvJOpa0xzcfFCM= X-Microsoft-Antispam-Message-Info: OTWG/W7yM4ryuo3EiwsW68abQMzl7aeHXaidmfRRWei/+TEUzs9EhRFzI1044cTcbZp1Mihc5NwVzjXldlOuY9D7NwQo7ySm7B3Tw3/HfPThpPWg/NXfht2RdOjv3NCMPvqQPGv63WBNKKWUbPPGfdFDKo10UzndXu2/Z4hlu3I8ZLEmw1XwhYV+SIfrFpIera4IQvsSJ+pU0zLZ+LssNWnjXCxsX7DpcBBaoiP6f12fEJxbqs/j1CJbCxjK54TDmRup7i2+yXSBdnUoV/7POTr9SN+14bfyTi/4gu7IQOre+7l9WmgXWy5iym4wTlzuah/RkJWDYTAJ7dhS0sNamBi9UoAJreDIBYBwKw8vmcI= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 6:+I/IcgSvfuZVei/DDmFT2+4hddKuW3iSjcuelwmBbLWDj25gxDhjegoq7kAYM/wH+BsMynb/oLZE89slxOVr08jaVKUb/yophB9leLMHVNpTk/Zipus7HQJEJi9WDTDBczT7JUWKVKYWi64XAvADxkj7G+7z6JlKf7thFVbCbCD9TiiVYM3YRifOgAbIEnT4n9q7jIzRGKFD2t3wvjlgd3wMRtfPK/KxBxYY3Ku7fMrPfKARDBxmxv9OJikfswS8XV4NMJM3pZzNgDVG9QykKZhSiuAqj44892fWeqLSzetAjMRul07FHpt1Hj319fAoeBHkkVT6QzkrtvPy+ILtj+YPkEm1P/7oNMekpYoQ5PQ64SsnB02DSwvJjW9mvYYPXBJP1s8DVh+x9NseoMFy5I8P3N9N8pLZIUao8sDRSK2r8Spg1vhuZ+Y4LTZtzs+oB3sLCcYA6/KZ5m3I2h5Rww==; 5:hNPEAJds+1zSdv6rRIKZC8PylP0YVuwMmpgRIN1K8dYFTF12FBBwWcjLH5MiReBdGZ3H0HRkzRrvaK6sQZqifGYh+i0GfQUZWpXdDLqpEeus6hzv/nbUhu6Z8cUebrFHyOsyALRJgAbiesJCRYBSyvoF2w9GbqtSf2uVR5bvdmg=; 7:vF/HLE416CnAk+y/MjcnIVYPLLXLqqQf06zvwU7BeQ7QcZ6hmde68nKa25hxazmFGKMF/6b29VmLZQajftspoqJ3jn5IcB4vdFb89dkfpodWNTd/0Plxevb0ML45utY9UmQUTDfW7h9qnC4o4zeH8iTQO+z2t/6qZBVuSgk6Asrkpf9mezbf0Zdlj8U3oW4wertRXcMkUGDe/i2PMP4xcXXwH8+FkQ5n/lU8p5szDO8mvTACcdH/yTvYlhqrcFf+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2018 18:18:24.2592 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5219223d-fa3c-4d67-9258-08d5ef365a25 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 Subject: [dpdk-dev] [PATCH v3 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 | 238 +++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_private.h | 35 +++++ 5 files changed, 277 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 39d3628..9363808 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..645c5b1 --- /dev/null +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -0,0 +1,238 @@ +/* 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 | + RTE_COMP_FF_OOP_SGL_IN_SGL_OUT), + .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 Sat Jul 21 18:17:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43254 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 BA6242C28; Sat, 21 Jul 2018 20:22:18 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0087.outbound.protection.outlook.com [104.47.38.87]) by dpdk.org (Postfix) with ESMTP id C0DE81E34 for ; Sat, 21 Jul 2018 20:22:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RKsLevrboDLd5sYVSOdPUsALT2tKgxAYJHlGh3nLq50=; b=EFroRVfJ0V5LvngnGEDXkSXj1PqRHXD21Y070ghZO8qAeBM/nbHNYS/yt2OxZ/ObQjvO28QmdH7dtMdJSnUGmSPR3sTulBj61yYf8KmlZLiBp0D6MrPDsCExg1gGlklUnSvjyQZef7HlVcUa47ZHeJxSqlO9QMIAI6OE9ob8Rbg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Sat, 21 Jul 2018 18:18:26 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, ashish.gupta@caviumnetworks.com, sunila.sahu@caviumnetworks.com, Sunila Sahu Date: Sat, 21 Jul 2018 23:47:47 +0530 Message-Id: <1532197069-24224-4-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::19) To CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fcaf5561-a721-45f1-3ab8-08d5ef365bce X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 3:Qq/MyUDfJVq0pfJSX5xoLmLfBb/qCDpvgddEEhtUYeSWnEJYeoiDwNHGfJkIQS2hDg5FCyfNOXm3OmBLjeCUHiB6nZb7Q1ulEfmagmKzYnu6/Bb3n0kNb+kcW5nr64InATmY+e3vAbJ3FBFL6XsQK/uv1DNT+H1iqWP2QyePT7nt1KCNaqSvthcCk4TbTIOmQp61iEHS7M2fhePxja5DCnsFuplC3RztcjQ2m5SipcWUzVYHl4+VJ2tOlb++FWkK; 25:p99jYpP3h+GoGKM17RVTW7c1ZT3FBnndHI5rYqrz2JIw1/0BKczWCwgieRKvLQLALMlZJOMF005bKu2Kmf5W26muKHuD24pb76EZ7cKm9AuwDP0EXS10RbV0+V06jtlONJvQfH0qNbovvzCpMCCLEWclzP/VXjzKITUFFbX6RpaKpYpdUSRDQQ4XgtCTXdRDk2Dwy+RI3OxHVVesR6UQlXyM9P7yz1RNI+EvsxGiV/UJWlM515vA5CC6wrDATPTOmNdVBQsLc0BVOHygvGNLmamCwZGfjv4mHAgKVJps0MAmVSQ4XZrzdlhkKfobuqacMoYrcV//V7G0hGXbV8oVRA==; 31:OzvEqNthFl2wmZ08ORfIXVENbCrPzUSgNfDEMP/26M9rpF3ZVU9p1oUAhNII9hN1ailmVrL5WdrZjO71z8EmiUM1EB2qaJX+23iqmBuzdwiZ9Hv6fAHEjsozhYK82QAJB0NwDY8QtxxiEhEf9UmHjL7dKGfmBMAojem9HwuF1EIynL5fUA9uGzQYV7T1UYNZCTP9fCMmauxF12taCJHr4VMcnxUeOIuOVO0TGoOvEi4= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3634: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 20:rMsyn4jlZQGCxbhXDJ/tvgzZqj0hpalfQz4A15N1gHVwzqDGTfxBFqIVtKzlaChhKB0JR73nbPcE4UVrhHSkV2f+skV2i1T78mUva0kTiEQOaizAK/sLNwN1XpzdUtY3Ixyu8oFtBVhtgKYoeShxBiuu4AhvA+cZ5loSleq66Uops7I5nAaVzYLR2HmDUpmIa+59uW8BsGDTG49Dlwd6gp+Mf7vReLTjjaeFQNiiocJfyl0A+LX63SGyBF3Wyo9ENMbrg2u1tf+dcLcBtr+4cTH9Fqs8rRQGwng6+SrK43/5fIuwKy9sbiVHo8dSDnlcUqUQ3pehIflRXKqg+7KzvYbTe6dHC42BfGFnzXimsg8fjH98J2ummNiLXNQgvrKQ7STXPISDuMvW6QG49IDNYeofWJ53Glql7e1vyMWtx1cJqTfRgoqbJFtSGIZ5xShkDvoHGGYOKYrtBqCNoJr892sTjXPIgE0whIGo77JC8FOmzBVXnFD8953D+toxGDw1dHvmUEMqy2cbOUPbFOON6TkdAn3ykAf6Zp54RaGeVx0ZubX3+JqDGloumnOjeYttOK+hvIaPxN35K8RvVWPvHgPDyD60y1pulP3I5hZ32OQ=; 4:n5ZNYOmsLAgVtZGndI39UvIBcYde8omGLUYuhr7Fp4lV5Ut/88DKWt3pEDBKVKXXUuVlK/b1UGSOVNTPfEG7YPUkHgbKCgUQ15X+uDcmD+PGg6pwv6XoxXiECRz7ZzOBNP9lJZCuxcU3EdxKeWS3hbl1jm/mfJeho1ZzFMg8nzrJPU9AJo8rZwH1MPxWJFLo7b2bhQWS5o82n9MJ8XuiJol8uDen+frE4Zazxnd+Ff73YogB+vhiM28zPrVXOnxDxNRf/9b6fqJ4EufIeIF6TA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; X-Forefront-PRVS: 074040B844 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(136003)(346002)(396003)(39850400004)(376002)(199004)(189003)(69596002)(25786009)(6512007)(316002)(6116002)(3846002)(55236004)(7736002)(305945005)(26005)(4326008)(107886003)(53936002)(16526019)(186003)(16586007)(97736004)(478600001)(6486002)(72206003)(2351001)(48376002)(8676002)(47776003)(2361001)(66066001)(50466002)(36756003)(106356001)(81156014)(81166006)(53416004)(105586002)(11346002)(486006)(68736007)(5660300001)(446003)(476003)(2616005)(956004)(44832011)(42882007)(76176011)(6506007)(6666003)(6916009)(8936002)(386003)(51416003)(50226002)(2906002)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3634; 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; CY4PR0701MB3634; 23:nylzXecQFuacR6UYrsRkWMbPPujIlvXoJvbTQTt?= eiR+daEVmcpkmxa7c0IKUJZ1WHc54h7kdlY/YTcQXtK0sf1sDp9Qv6p8nn2jPZAHKr5tedkM8eSzEeY9Utdl0YUdpp93NxOlyEYaVzNKmq394v5tkuNzRQDe6RbmFWkcEolLdlgkORi/ZXbxcFXZnb1P7OxEkNvSPgHnSHjg1TDyZIjQmO2v3SGDYlo7l4N+9EagrusjshfEt9bujN89UvggRAC9uC0WCXmPXMY5+cplaprZAjuyk3LV96+FnfmPauYQr6rGj7tEMKe+Qa2hQtPXENklkygTajIwmAIGct0nvw6wDpjOut5hwYtEuh32rp48q4kxyEoJHoeaf/9L/Is0Vq49eZETMkR68FPqfKMxH5R/jm7zhFhYmZk8/QLBLTZRAFs7TLVPkwIRyRmAbSgMpVuuNNFiRMElpEy3ZRqg2Vo3h4xDuFza9EzO8OSUEMUpU0/dboWeAtrBY49C9m2jjcKWv2AbB6ewd40VKXqN4hXXGoZdIPIAfEIgpQ6kV9OuhOZx3LjaWKprZwGX+nP/3ZM9bHhuy6TR880NB1WtUwDIwyiMi7UjimocNszUNyj6bxs6yWBc029C4kutmhjNC1AB6C3CpynjBZR5IREYiINWX1qmn748L6wHAxZ3gUP2qs1wqrh/B1kMQreU4dB7clp/jPfhTN6xreHbeSMYM+6WgbhHbziBvL/i8gPUQfB3L5K8v1HeXxPaholsLgmQ7kWnuDJEqT0jF8L9eOx3piKBHTlZNd5/bjsMiaziWEinViFZ/AbqD3tkm3+CmFwTz9bL1OVlCo/EFjUbHlbGmnDK56P6x9Q36fQMXgZjshxhXAABo1j1pgsuWOQ8oVVvMhXiLaVM/Mqc2taAAMuCsfWXMfLt6I0MvZdOcbFb9HZVPR7EnzdX9nhXOxec1iAyHcCRJbsUATTZC1GZuAcaD4X+Pyjv0Nv2ta3TLKy1R5IQNYT9mE6SpnpX9Kwpxu6MjC3gsb3qnan5YTWUf2blWG7eDMrjKN1BdQqDTgkSi2K5lELa/a7H49POmwKwM2dCq4d/1CwFyKSFd21M23FojqNz5+IF6fZKwSJel5+jxicPm+2bE98mKkTyOOxZCise8fgrmedcrxwDihLU/cfKqIZ1tdqZhjJhNCEZrScQWqTfy3PJrsjh1X1YBEPSyCkGAQ+9pBTGVH7OLGFpmtvERXbMyuaktffEqwQ3euCX3qGgUuOSuBOQxz522xZa6QDHWVA0tUp8fBvB/PVPU6fFGTzSe7l+3Vep/c+Vdnj6O5lMr2YmKMIsMcuDtIbJnfLzK X-Microsoft-Antispam-Message-Info: 6BLHqphGIQsG0ZYXahsfGvvIntAD6IrdPbBv+hIAcTeThCMCCuhdxBN/wJAOawvFHJgp44qXvjq5TXrq7kSr1jbLa6edpU/eZqY+H6ujXwyu5MnOKykKp5YvgY7CR+6QGDg8iIZejFWXN5F54xLJf7mPdDTCgzjfwEkbrvGbvCmaLjjdtXravYlLrxggne8JqeNpfYlhXaVYhvmUhUkCVgzlR0NL2n6s+DKCpfzM6hkAf9Q8OQHelO1tCTp3oL0622gs4Ismdd292u31+s83yqIPJCDQOYf6p4dPq2RFNDtVB8IGCiFNfU1x3utkYkFtB2jI6M+/8bvM9+zsoHrneM0iu4CnqPYlU3pPNM/yKbk= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 6:tr6h6TJxKS+zvRBllfqNEZoVJ0AdTilR8OykOXkliHI8CAsmFJzCC5f7On4GfkchZx5H3xr9RYN1aZT4kROeWjAmGOlutLT2EzzclBOXoPtgO04TAe8d5fULkgwszRBJILdy4bCy93tVvSeP9TV4qkxztJS/BpsyPCjxZyUNRbeBY27teWwr/slzO+ZaIF1BQMthvIOTEwdhUD8lYtZoygPyG0VNtoG5tNZq7xfMMzlvA/NgKRsu2su5Z3dDGsafjpZmnJzhShp1aVDFg2timOXULP0inTH6P1rLE9VZC6svQ9Ua9jWPQ0JMffZRlES4GSUQ2hUxJrBGMo20rOsNZb+B+3aXi/QZdKaU2ex3j6Q9wLS/nuYenw5rHAy8YVEWf5X4cXHYZ+3hSwfEhZkXnX8jtLfG5QfAv/31FjXHsFa4vIlUDFEhWH2mf2JP+0MiEzcPkuF5n4url6+evIYzfw==; 5:l2o2dbxGq15EOt3qBKqmEoJqgklsmfzAuXsLUTcn+ORs/NBFzWSINEYPy0q1Vv5wHRgDx8xEhuA9IPB3fwrAckY9FXRGb5HyZjh+3cgpP0NVLE57bOaHKwTXYjtGSqFLjEYWyubhTm7Ke/KL3M1/BaaKotwL/cTFvrg6xRWMs1c=; 7:XK37eW6YuLyOGCrbMWcde5QQS8LKWEsMEYzhXKbBNBJ07Ou2v35qo91ImLl2o5CfStPZvKb4J8B0xedIMwBb9bb4IlPCc/sMlz4FNEWAC8z1Qt4B10p3LM5KtAqkocOwrIkyJENjU6vOy2GZz7kvXj0j2SIOYTZXzeyma3nQuu6i7GklMoKeDnoaVaUPknV0KJ5/8BxzdMFu81r/lbvnsf2kS6+gjAVrGhhCckQq+jaip2KmfskcXyKmeTfI86UN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2018 18:18:26.7591 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fcaf5561-a721-45f1-3ab8-08d5ef365bce X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 Subject: [dpdk-dev] [PATCH v3 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 | 93 ++++++++++++++++++++++++++++++++ drivers/compress/zlib/zlib_pmd_ops.c | 74 ++++++++++++++++++++++++- drivers/compress/zlib/zlib_pmd_private.h | 4 ++ 3 files changed, 169 insertions(+), 2 deletions(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 9363808..9a464ee 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -7,6 +7,99 @@ #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_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 645c5b1..2fb6a85 100644 --- a/drivers/compress/zlib/zlib_pmd_ops.c +++ b/drivers/compress/zlib/zlib_pmd_ops.c @@ -214,6 +214,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, @@ -228,8 +298,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 Sat Jul 21 18:17:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43255 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 D496D2F4F; Sat, 21 Jul 2018 20:22:21 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0087.outbound.protection.outlook.com [104.47.38.87]) by dpdk.org (Postfix) with ESMTP id 41DA32BF5 for ; Sat, 21 Jul 2018 20:22: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=OI5DapzutNlcRdsg36D1kYvTIhG3tCfKG9yuhbWgaxg=; b=chtDWPhNdTvIzEbStMfDmEROZN1/50uHUrzMniC9E2WaCjqh5CoLD3AmQ1zcnWS8WiRbj1kyfCsk01r14ZMViFLrSz3WFZvcTtkGmJcZa4IujlHjccQb8G7p/KU5tPptppUxbIq4/PbKjAkeUUjhJytT6qS5cVhHpJrpOcS+qhI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Sat, 21 Jul 2018 18:18:29 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, ashish.gupta@caviumnetworks.com, sunila.sahu@caviumnetworks.com, Sunila Sahu Date: Sat, 21 Jul 2018 23:47:48 +0530 Message-Id: <1532197069-24224-5-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::19) To CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4dc49347-2ff8-49db-8ae5-08d5ef365d71 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 3:jQNrpoNaPZgBew8ZjERL4bxmmPr4JnGeh3hEybSWJrd6U9uZw7dxBgbYuRN9mHVXO7t3+p5SiXfJh4VHL518xM76dZjPBxNYymCK0i3g3Xp1UYysd/XZewrunVoDIakttbUZAxtlJ0/E9U11Wrr85XUvHui3/rqZdEGfsHlcySHEkNr5GoHCYzYcmqFscd+P158qF2j1AULx8QBSqCd8lyOKiMtBn85f9IubQZPH9ImB3FgBzZC4H1k5xO8g8Ngi; 25:i/FO/+tbUb1EnZsHajQhaZCCCDVyHm90e+GYwOm9jtk82Wm8/fC5G1ldRpud4lwiVxlhprPX4gYJMxX2feWL3J1QXByI+TfszSbdfpY0SvUFvBb1CmvX/QRs5QeG254xrkOkv+e174SZ9DDo5UmJwpc8y0dztlH+CwwuCzXRuDQdsegtEj3JXPFYPpsFEWDjmAaIDz09wb7f311bkBCiedkG9ce5ediMCVhkR4zwtMoHFAt5YuAtOK0B52vquHryHs1JddHVCInk8VKmHFJ7+xhNKdz+E25awlN7ev53XbUfxGSx4h96Uf/Sz5uhXXhdKsCBIMwTPQ5T1Owo6K5+VA==; 31:dTu0Lak284p1efPuOmgGq/AmYsOMC+MkLAySIjeztPwWh7BJHGwRzCQbfgoQLAHQiem8U9pN+zRPtG/1Jh43T6eyBBfHhOe3HoyujEqok+QjYNVrNUkFtIcIIGm85qm45A+9WApBhLA2FzYKMfzo54k95Rye6NjlMIhMBZLBBqXg0G4Z8fJxppNbAPLShg5Fl3AEidVVZgjhQ6JcmEVh6JjkJ2pHOCCJ9FmRJpsKG7Q= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3634: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 20:tDaeXafCQqsdDzHG/cbWPBEB9m+4j0bVU6jWyzZScxe3//W8mbkg61u2x/jWBoiwvxDW8lV1SbmL0DX5GftoQRB4nEaK74NlM3gdyotF3SX+CFGMLe+rBa42HESjHrfoNkJszrlHJF/BOKwI8jgn+O+4gmavGUwmnaBWjEA4JVvQ8yHKIFvzWlrtPdfD8z5R31jISn8CWAjK8YJ7OOKHNX5YjWpfWpSRFRVAtO3aQCO3vgUiqXvfIkNHyeIkz4VntFKUSlpsSw5uLN234Zzj9LFkvZF2XITNlWnawBqvjZ/Pk4WPDra/N/UV0rtflO5RCcdSQXS9kifpH3uM+rF9ojqxJuPJeqRq67TdCeGfQWTrZRmH/ZF4cJ4Ju8lF+8hU5wIqZNngGso/BgBK1+ckem2gYGXe1dJPY0U1DXhMTDUZ8jTUybd18gjBRnvstEnLSUWgMB8wqjjYBBfaB+8R87fPnplhnaEIsWqqdeWt0cKpVIM2yqqyHPlDHQ6jgmM72zqcf49gQDb/jPtpODZ/XlJmK/RiUUHxVlaI40o7gMvbyjlwMDipUIlylcnEXifVtMESucooe5x1Wti0plpjj8TGwbokGp4TeX08d3Hg46A=; 4:DaQnk4I4m2LuiqLHiyDVs4Y2qK/Sf18StoCLSdfijcgHjspJpEfSJiHI0xOkJG302iFKcTJ+KP2PS3h9flEjCmBp9kiCTDXBsxKV/kzsE46YsKJ5hfeeYJrZikpuwlaZf6EuIH8ima5ADhPFy9nkv3LbrsWElVjUjxJqbvY3xiYmkcas0vTF6wkP0VSIYbcPG/YNv8XDwOiJNCGBQJmnCRdfkcodYSsC4lD5MsGpLpw/wvR7qwjacq2bAULhiM39RdRsO64f5avl0WVkOwdDuA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; X-Forefront-PRVS: 074040B844 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(136003)(346002)(396003)(39850400004)(376002)(199004)(189003)(69596002)(25786009)(6512007)(316002)(6116002)(3846002)(55236004)(7736002)(305945005)(26005)(4326008)(107886003)(53936002)(16526019)(186003)(16586007)(97736004)(478600001)(6486002)(72206003)(2351001)(48376002)(8676002)(47776003)(2361001)(66066001)(50466002)(36756003)(106356001)(81156014)(81166006)(53416004)(105586002)(11346002)(486006)(68736007)(5660300001)(446003)(476003)(2616005)(956004)(14444005)(44832011)(42882007)(76176011)(6506007)(6666003)(6916009)(8936002)(386003)(51416003)(50226002)(2906002)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3634; 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; CY4PR0701MB3634; 23:hDaPhPI2wpx5cUORBBkBkx7EOr23H9KiWqdeShU?= Z2IfHta0KBFb9YF2y5u3C+J7I+DhM3Gj5wND+f4g0BS0DMCDJm8YqWefWJprJKvWS0t5wJOkOGgZ63CwrQRtVjeEZzD76k30r89gxC5PoWTanbrP1rm/h/0byZCB+kIKpIIdiwEgcSTAwf9VWFvhnWv03yUXeFc80q6df1XHYXHY7SFi1L6nchqNZArIwJr+QKLpBjv5fTzCH2jjZbMV8Lz+CVbWg8NJhxM7+h4xX6B3LTXzYjjxcJmZ/gnaFi3fdjBHaxboVORkz41vTTJuLRi2lyK39LfJ4CqVvjXNDklJmufALa+Ulh7YXJqK/RrzkCdKKBu3sCDzpQZ7Oxpx8g0FTOXB2hKaGvpvVR4hkw3oanrJ1w6hcHIGqDlSi5tpShbF3sqtoyT3HXJdTicq85j+wwdaTHp0wf0kKvyLBDT6X4n1tc3IIFU0/zMzvxjzfymMY58oktBP2WA9OsV8qls/REr5TooVa3GEY4vewjSGV5Ubf5Wa2HPV2lDplGW4ubaG3eClAkujdlAXKjLA/0rn0hSZ+8EchabyIeiTogMKfkdMf7BItVgb6iWoTreaEkgdrtbrPAKQMDwijH0iFdADF0yiCk32U9IDZmiwscNiLVAGjKcc5ZcF2V8h5tyC0CZUqAuP3the/QZCxBBJRH1Ect0uIParYFDLtTcu1X2/t8FNoZlcWKgffnXv6Uzjoqez+jwoRdHjfG8p869Y3SXrw3BP4vk67sgH0goJklATrR04iGpskNScTAXWTuNMgvCvV7eHrj9H5CEv37ouoHhc408GyKR2r6Wy9/e5nSS/sVCn2c2LxDJUEPOQLDy6/bo8/Dzl7cWSGrAPKjlEtf+u2VVVIE/QtpPcCk5XUQznYIv8fKU0PctpyfxnIaAtnzj9C8iYHK+/f+RLt6Y0q85M6k/WoW0RGSQdc4b/a1F8r9YPs1LlwU75gQstL+SWC70wVItJSdaq8XCgkkoYYPUsc45GdoBqZp1yv04nbmKU9L6iJY+TXpdF8O31cQWhaVrb0SmrDgM6zdfFLwyf8Kw3K2gx8jcNohWTZWzKXdTFO7m3orWdph3oqHUOzguK+10tsu/ire0AlTPxFROQB7MTK+NoliQX+MdFdUO/n7f2GmJNXC5Ir4EwWx1pej0LAdA7mQWAd0D185mBgsSDLDrBuwPnbZtCIABx2cY1PaIM7hi/Ka6G2OsscRbvYCEGrzE1VQ+oe5fCHOZnCLKnV7Aryi2wgyykhxDBA2TgA6sv1UQokUN2N9QhEp5fe+wjlMycQqmiyN6rC8bNxrRwnsqFLWmHlK83ZKBdlFXVgY9VJ8g== X-Microsoft-Antispam-Message-Info: Y8F84lcEsbO/WJtNiLU6Q/JvKxY+PpqNrmXXsH5g0VV0dWsUM0POyb/IPB8pGoGCvvvWDJWLpNuksZA7g3hxsRSZXyFAtcJQk47qylyvk4t+OECQ0vEE+hQtjpyNveTWUkWkCddZWqMZGpnRvFLffMARqGqaqFkxiaJhILQ0aGCKCra2ogq3EuSbaLd863e7Yj2X2083pJeKvmoToQxrl0Iqa0DVEpKEmv/PiLsYHvAQeO/nWPS5jpJOfdNyp3dTwxjE0E25F33m+mIz2OtXh9+mEOMhz2z9hsskY/8lt8IOU8tLRMV+qiFV31d0uR2eieez87uYQ/hXViBm/Dqo0bg9VsF6ntoZDbh1ix8F3VE= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 6:xRtcMLfM3nSjOUE30UdXrZ9PQrzZ8exRhRB6Gz8LFdmolKvdKk9PmzM7o0/blh/TKF7coVyFCNcr0SCom/9RLSTC6+D6zIxfe0WqDNvG6rghRtckXm8jzOMjP3tjIkamR2MwkTHAS8th1Yo+YQvMZ1zpnvNstyv22uWP58aVLgq+nxpjOBrNMFxMqqeb5nCh6Qhbueh2ABAldG2BlRAj1GwJhGKAYjYJE39nY7V7UeQW/eTLQ3sfHUdxNCc4JZ3wWAZ43d3gCphmKX9+xzgioJR05CwfZIUybeUmof1mMn00M+2dULy63naokaZEtQYQkUzf03znusg6PXwG+55QDT/OO96w0mtrCadzPZ7gmNPx86KYTQ3bMghDuy4DqMIBXqVd6PPktrDOHMIHIzT4HfQeJnrVJFZ98HN9mbGZGXLd6DHpyPwFHY3ENq1XMaRNady+GJ5j7TiBo0WVf1qLmg==; 5:hpzwe2CEZp1bjeTwflnIgPrXEM0a8ij5KyLvTJixuOu+8ioOyGwYWBUnaqqmu6wcwdmKkN3gEYccWKT9uXDt2kY9ATi1RjinuOLeV/L0y6gv4Wi4bhvBOcR47/bcd1Wudc/fC2LWWfAxqgSiBLPGAUj8itJd0MJZjajVV9xfD0o=; 7:0BAtYr+8BOwhGeutddpsg8PgU5i0C2D8E797sQnquQUsI2TJq2KKYt229cMcdMbguTtSV/OTgZ4MummbHRfD0H82kwj5TEluUoy28YgBBJSf5la0Zogjw+mRQfAi1r7sKli58mAS4fnRa9+0gsInjxQBKB+6+hC8Jyu6tYR6Me1awMRnKXCTQNMpTDKPv3QLc/IA3HPaAiRL6UKQNf9VqHa70OA4ftl6IySpzlSxqY+tAaYyyMzdJwkMzOPzd6Ll SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2018 18:18:29.5401 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4dc49347-2ff8-49db-8ae5-08d5ef365d71 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 Subject: [dpdk-dev] [PATCH v3 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 | 254 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 253 insertions(+), 1 deletion(-) diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c index 9a464ee..44baa67 100644 --- a/drivers/compress/zlib/zlib_pmd.c +++ b/drivers/compress/zlib/zlib_pmd.c @@ -7,7 +7,213 @@ #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; + 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 +228,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: @@ -79,6 +287,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: @@ -100,6 +310,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, @@ -116,6 +364,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 Sat Jul 21 18:17:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 43256 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 320F03238; Sat, 21 Jul 2018 20:22:24 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0087.outbound.protection.outlook.com [104.47.38.87]) by dpdk.org (Postfix) with ESMTP id B79862C24 for ; Sat, 21 Jul 2018 20:22: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=8bHIEcUViukDwMGWHiNOYwwgqTnJBZoLBu4BL8tM/OM=; b=SGkn2VnlgeukDMcSvJSSCSGPTZMQNma3vWhxRvCuwfHx6Oz2cwB83M5s41bmNZkW2h9Kqb5bgH6lCIQDknP9XDAq4f6EaccfbXsiW3B8VKURIcp6zvx2chAGYd72cfbksg+B6MZuIirLi4VtX56NMb318KHhuDFyG6OgCY4V6Y0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Sat, 21 Jul 2018 18:18:32 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, ashish.gupta@caviumnetworks.com, sunila.sahu@caviumnetworks.com Date: Sat, 21 Jul 2018 23:47:49 +0530 Message-Id: <1532197069-24224-6-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> References: <1532197069-24224-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::19) To CY4PR0701MB3634.namprd07.prod.outlook.com (2603:10b6:910:92::36) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dcb28d8f-babd-4f0e-8732-08d5ef365eee X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 3:vnlIw/g5MCuznnGycKGF0psksBa/x7sAgarZ4fJVoXHv+ogdmTVB7oaLTxncQ22PSlhAYJloocga5djQ+mi7WrtAMLX7XLOc6Yh6wBEkgeI4Md2OknhnGFjyyztt1LjO7WOKLmmK3QMqzqIJBv0AvSdQ41EDd7mOzb4ozyRh/gMsYlrenfSR/ETm7/aa+yrhj32v47Zp/nBl/SdKupgQCK0AavPvZCpBuDmaUsljXPP8F4WbwFPq1qn3L6LHJBS5; 25:nSZNnL/Tdf3Y0j1ULeuPJVjdOLiKdB8YhrUreBffnUSBGJVaS5LcLxChDgmR5s1qOSfpg/ir7P8Ts3X5G7D34tcXSFDLzc4sfpm10O7RvMkt5cV5JD1CtYOkmh9PNWThliIKZIdTtJVlQNw/XchcGzsu4aK1ZJJOQ5aBYwNNbw3l69VoWdxAtB7dw4Kc4h3RVJJ+TLf5mJViNLrdirR1I1jtvi3RWDYOwbupggig0RcKuvp4UYGI3u8XI3NoQ9rHfwaFCGK88roIbzilOLb0F4jQSSa3ACEZ6KLCz+BC/3Wpb8J5RILzVsJNfdM10ijaOg/fNLwlYa0OUsYitDmDEw==; 31:1j/wc2iWzKw+jkfZRKz8jrZh69j2H02VDDESupika+ZyABJn9khSFwV9hM3kcxjybrhXgz7mFuTPLvaJoqiZpkVnyAPr144I08Yo27QqjLgsgOhMIDIVcL0XBVzKxaml4F4ClGhoD25F06OL+AtJYZ9FXIDmZcEvyps6OfEol+bhntJ6TLtGNLKijMmbtYxwQ566UApP8EuOM5waTAHG8PAugOyLYgxuaZXOh/Fe08A= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3634: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 20:bnnKjwjdCccFmgKno9qfYZDFaj3B1rfk5+VhAnId8itLFct6KwO37YRhmytjhGSXi3Y3/HNt45SIsI5u95dj2u0Uv+yv1WES3HETcKRGQRZwG8msyJfaEsEtZGsn7xg0z3N0sp+A8HT0BcSzbuRO42t0qfWDHqo78LelUXPXDgtnpaaEPyGXufHLtaItJi+7DZ4YtGOQghDRDcw9y+MF31jMNwGs7lZeMhPS9OqxZgq+Qd50LtSAoGRhDo0uoxE5HZhDH8qPWICIHpZTD1k+MG8QgHSJ+K3yH4OgtextY6ktSDynVMwWP48ctp1L1WLBtohqi+G7leaasU27sGDRFJUTibSSjbV49+79UMsZYtHtwDQiENx+YS/bSkcORsfaLXQ/kIZFyxxPI1bh09+b0EtHeDA/aDH3jdlz4ZuUNBjHbpfzw1zwZF3TWpR/mNxX1a7kRxsI9A1QH/VCWrDohwRsGrT9gVn+rTeYUJSHzfImQaFc06rT3LbjTJDfGr6sSWOa3jrCJpD1cLi6UDdIN7/dkyz9n1SDwamrKB/8zip8rShXDh+2w1HUJEkgjcHzbhSrCJoy1rQmDElytJ6gj0/rrMhnycFxLSB2bw9FbAk=; 4:3xdNWwX0BYTDo5MoL0iWovC+HH5oal+6N45wd0HDXB1LJvV+mhg5/79N8evX+ZSAaOEX4k2rEyo1Z6fcO4juUdmM9tilnjAmpv8BtFKKbEJUY1ht5gniRyktcAzTI3CLW+2bFuHnaljveqagg3uVYw0nSIXAL7UHhwO4z8xCsuMTz22DTiFtaaqv/9GFJwNZ+w+JmkUMYKVN3a7NlIUgtCqwLIdmuy3zkI4Aa21NdJi0LhHWPIKPl66frjYq5sAknjDn/rLjxXuaWgW6WPasjg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; X-Forefront-PRVS: 074040B844 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(136003)(346002)(396003)(39850400004)(376002)(199004)(189003)(69596002)(25786009)(6512007)(6306002)(316002)(6116002)(3846002)(55236004)(7736002)(305945005)(26005)(4326008)(53376002)(107886003)(53936002)(16526019)(186003)(16586007)(97736004)(478600001)(966005)(6486002)(72206003)(2351001)(48376002)(8676002)(47776003)(2361001)(66066001)(50466002)(36756003)(106356001)(81156014)(81166006)(53416004)(105586002)(11346002)(486006)(68736007)(5660300001)(446003)(476003)(2616005)(956004)(217873002)(14444005)(44832011)(42882007)(76176011)(6506007)(6666003)(6916009)(8936002)(386003)(51416003)(50226002)(2906002)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3634; 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; CY4PR0701MB3634; 23:bb8O/6AT4RDyWEsX0cdQZzjaoaJOZRwe5JTQlnJ?= wiaArhOns9EjMVi9CYE+L3schpYfg1my538xovxkNXaOR3yCC0HpeWeA4EuTiLDgK3AxnQJKC9WFwBlSkUH9DVKJsAvOK+v+oNo9lWi3KvHkirsE9XvZSF7zqj/Jgsm11a0EXvZgsDuGhZvsrTFIr28beFQ7KZoZC2zHq8wpPJlhrnpGeXnDg3m7LL00iK4wDBeqt3Dj9FGEOzK/BQYLL3UpRQCt54S7GZgv87apSf4qBWggYO30edKI+4NpIs95XKwOoVhPyvUjFGAu0M5ULU23PkOsdbQhfrX0xlQa2W2rF3ASt7k9/4NPYYf+dOCiPITIBGWw0kBUvijrWt4q0u6SGoCW2NRFFZ186V8HEx+O4Vo/2JjkbAjdktlJT46UJ1SKrAwgZWR0q5ncpBtNlZjnYXUWyqRXuZbYhD5JJy/+pHJB44/AOK9l4eX0QtzT0mNInlBTM1l1MH5eAvOce8Tf6yrLaGe+RzhND9BVDiC4GzMKiDpHX1yml5EmsQni4QLfJjF8XsxYtTO1ZSzEe3JrH5gny2ylNhjb3NVcWE/Nj4E9bUmeAwkIGrmsRuL5+UkcNHme0nFZURdrQ3hCV3Fud5hRx/uFmijIgfdPbDq7lB+62sfSCRnPc3whIj46eRXBZOiXgsfBkGk8RTGwRmP0hUsmzdRE9maL1WSgaB2XOk2bO5aZlWhInDhdjenrLr6aI9R51Az98ITGUSqvlFFIui2b1M9fmAhX0L0B2S/ZwXFf+TU6COB1Xxd1CMyWWfIolbAhPkICvPW+OiUIe/MVrMR8CnB47Z175h2YcdAjWrB+GYUL39qw2ghC4bW2AoqR6gHiP07KhY7/jTVa++CfagbNgH+ssXehLLjR6q6iqdwcKWRSTpJ+ccy9IcUDyIIb1db8dsAEJGc40RL43o3goj7r+5neQW7OQWufhX81STEdVOExca5Z0gJGCuENM5yzan7A+2bHFIbHMZC+wPyYGGbPrsvzvp6ZDtVaGxiFotMbzRMB5dDvWkvdBDbi62F6rPBQv2cLbaEuSCPwgud1+mSBE632Z6S3ozyDMEm+0J6KPr2AUQVldbuwRWAS+5zISlP32z3I24ig/7bDz05xFJnsK+/UFAAsh0nXq1GCuf/Qvkj9yoPbHi5Vk7j+zZXl7YmXUe4iN76j6PgU3RdqKkZk27q6Kbtqkm27n710Cjm3qdbRW9GZ9gPBCST1us7woX3KCxWih7uOvsiWPwc4JZVIIkx985rcsg7HWsN7iAH6U9lne2nMxND7CuWPFUZro7stIGNzZkTYkSyfU0gj743qbjNHe/ob69urwWGAtyTTQtZU/vlRX8WL9LjG1LUwqjS7h4sWB2sNmq+kp3+KA0G+yc8M+nSA2epIxGwQMiw== X-Microsoft-Antispam-Message-Info: 0KTV6ipxI7r7JyAyLmLqe+S6sbQqRvYcDdrxkC0OTWKSBMVG36xGSmq8e61LgSbRhGQ79KbthqVTN8QSIyq01b6vB4Czv+dMpUu2GBOuDIP2Bt3/JUS3ytqAxJ/B0YIVQdrtgH1yRkGK7M3NKCNBnZy49aRNLeTSJp3jTcKX/YBzggiSbTgebs5+4AWsHwNV/N1rGML5LoRMTk9mqh5BH0Q/zou5ZJ77i1riqZDwdkVS9KYCMotj4Fm0Gpg69mUUCvgi4/WU0ycOj6p4mw+8VtEaAkVXGhT8PSKGr/nli150mrdKVH/FEWHBA24eRbuQNgQx4zJfFq5wwnW0fWpTGRI38vnuW0U84tFkdj8ukVY= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3634; 6:xI9wVdYdCbuEp7P4rFyLgx+QYzoT0H3pkbFC3sQVz9pbvWKQ1pbPH7tcwFe/wa10y7vr0h2DUH3uxhJoLI8UzohK8k9ojbmDwFra4hkmBb7LRjcmU1iVT5NCESXkorUawtwzNLo0fHblNuTgDmJNOwOAnHwO9DdKK8ohCV1W4kCDq/7PM5f5mmcUcCgsRF8HaLpWkEbsDKLV5VLJpXc8CKu/xdiXAM5jME/OmN+gAiUjH4+YJDvQT+OilIFnOdOlDC3iZhNQEMMxD3QV+kDjXHjFXl/PnjB2316m6vKMdvj1+zkfBk2eiE28driun/hHSI0q7fXibs7+jD9SLw5LwCgz7E9jcWTM3T0+tCCHw6VDe5ZR9ASb0+iy0bZXNzgeysF5MQHiC988Y76fiBZlfveWFPsGu95c86deg40fwRCrqRX7vRMn43VGAtntL+a50Ttwl0ZNdsXIr8yLA3XlcA==; 5:d2xNCxSWsisK0M+GjcDTSJwSmUiA6e8HeQwtpyNVWk4mvu3zZ6u5Wv2aKy3N7JI91we4iFNEk/UMpg80Kji8DwFeXHKM4xnGHE+nKN2JkwZ6NfI00icBTWixR5q2/6dnTDntwASqygAvS1I5HZhnWjCCs0uGEQq/UB5hBs7YBpY=; 7:5fpOOw24SBLtHYfTfR3CUmet17asy2XsfdngcbaCp+W9r6JswMXC6XQKK1a8Yebq8EuGxSx2nK5ALzPEn/eTY6TMt7FZc56r0dwRw5QtQ6k3NZ1nIkiin31CDW5hwCYi7TAMCz124usW67QuKkwsVd3exPQ75j9I6E8as8rH/z6DsiRxFReZLhg9kWzMK1q//H3RFdCvV9w2arG79P0trbNIpy+NK94TeKdajM8thRKOgSBpQXX4GvoC8t6yih6w SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2018 18:18:32.2851 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dcb28d8f-babd-4f0e-8732-08d5ef365eee X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 Subject: [dpdk-dev] [PATCH v3 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 | 11 +++++ doc/guides/compressdevs/index.rst | 1 + doc/guides/compressdevs/zlib.rst | 69 +++++++++++++++++++++++++++++++ 4 files changed, 83 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..c794643 --- /dev/null +++ b/doc/guides/compressdevs/features/zlib.ini @@ -0,0 +1,11 @@ +; +; 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 +OOP SGL In SGL Out = 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..c020792 --- /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 +----------- + +* 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).