From patchwork Wed Jul 25 17:04:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43359 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 991CF326C; Wed, 25 Jul 2018 18:43:03 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01hn0200.outbound.protection.outlook.com [104.47.33.200]) by dpdk.org (Postfix) with ESMTP id 538FD3257 for ; Wed, 25 Jul 2018 18:43:01 +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=UPu7PzbYasOi78w3HJnM/90pffLI21FbNS5O9DLQZu8=; b=ZCJTNT9eTKMCeizHx39fgzbthjPracoGc9Wkjw0hxaicqwO2cVf7Zg1f37TA9E5Ef1XpaDcQKwWUIp81Lsxw66XWE2j7DONbRZn8fZGLeTUMbiIad6dayDLXUUQmL8UxsyCNa8Y83tvdZVtI7yf/8oVGTLkMSxm2XumKQyKHfSs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:42:57 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Sunila Sahu , Shally Verma Date: Wed, 25 Jul 2018 22:34:51 +0530 Message-Id: <20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 44c93e92-0138-45d9-5070-08d5f24dae45 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:rw/Yrq0Mmr44FOQ/u/D6LSYhALHyKx+l7efcMxRmqlAuMdeTXv/hA+u7vXjroflL5jYy13gpnfwYQaOnlU8pFkSaW+OKb1bnbV3R+6P/f5auQVzhaD1C7q0vmlMT4qDitRHXTf+VosjUiwt7D1Q2hlGbkrRJ9HMS1zsB35Mn7neZcoB8G4JOZ0dIgOab1zVy4lZzpBD4xedkpfpOe+OpIiHIhgEF9409pcJAn362M2CJHKtZ4zpOOrI15Zhbk7G0; 25:f1KquheMSVKN/HmCLVddYohsiqLOKlDpSM5zCizur34MAUuvxzpN5K8fb8zpcrsX8ChCg+YQ1tr4+jLFZAeM8/jWLx4g567W+EXejP7rs35TOQ8BiDcaIpZpxK5ObE7FkrRY0dtEp2HaO+LB2gPcImdONDYEcK4OlCfvcwKMGkykl/YmZobzvV0OXviNRFr6GOXHLOD/oEkqExtO8Y5o0/eieMR5JsufWMHqDgztY6Li3j3JeSAzrgW8Gy8bDe2kEjnszYQBDKSZR5jCFTd82RTXMvS/yvAAomQvCgVlrfZHpDm3RxeJthMbng0fOgkS7+Tisp2uaKw00W3/xvo2VQ==; 31:vAoTTvSrihYnRXBk7RkO9tnkcfNtFwfmbzME7abdvOl9vAVNoniysCqdDqHIN+9azat7EzmrnPguwTH1L7XIyiIVmcdsiVskPpmsGPDHJHAqEgoXJu+9tEAxiuEfhHtiB0JLzk0jwIxjPgg7Ry1at7udszJDKDVvEtjuQ1Kei8cH0vL+H+0oiylGS4TP0twtEZppo5QuHBW0WZ2Hz20cTnnWg1pxgqA3lJpwcO3EpVY= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:ztUrGHl/u0a1T4jUxhR7DlFXegfAaZI2No8Nl0mi9GQ5wzK4b7Eh4ZBq62opD8UEEBv0Z2qpmjQUcmSK9Iam9eT4yAFaQy6jxGyYtECYzVJ1Au1IdsGqD2nIPTEp00tmK3zYOmCynm8ZDlEpx8JFHpoZMORPt8qCr4OaoZr4Aam8zFYAI1S5S6wFJMgHs+Jeo9XxIfR5gSNzHuHKWtzISjcsPKcWxqo7Ed/H1FJdSsVg9JselPP9KjE4xx4E/891MLUn9icaPiAh3pN20ygTtWdojFm5BuPTKlSOPKRuZKgt9XjIZmUhI47NFMHmQocITGzV2yMrcEZp3bcA0AKCIDwGkaqJqzlDBTpPTuc9CSA6Bg+p5Wf27lHkyxi53ihlLDNYqGCmFDqxXPbtGoxDIdaOj+TPeH2zsXh9RC6Ija7q2Fj2HM2NXdbwa5wI8Gf0wQKnVri9zn4QFJyiiFCFziUSreQffaqkZL6A08zQ4LEvUJ/9xRkPsv0B+ER2JXEWmfdT8ugyY5Xlw6nXuhW7OMBTz7vFkPa3oIec5YeibzGwUtYBlAP9s6fmKheNN99lghlfpzxNQVCJkOKQquoCu9LutfpmBzsNWGJV6LoHGvc=; 4:blv9O/DCVZa0SlWMBWBZAZ7prIvBR0krWb4gebmR3B9VH+GdJwXxh1MeNi9b7O568L8osWETm7pHuCepRFpBul/Dnd7opu6qcg9mgGNmrpMaCXf0Gj8HLPipflPk5zf+/IXW3qrwN/2zVdY3Qoi/CIn7QzaU3qU4s60fTmi7h0IN9SuZjirbRqR45wRjo+MvIlYSVNJWG3pN8GwWJPi6RqNiaykVThmncegS4GOohY1UzPsAb1yHOwJJS6US+Br1+UJm/uNRobCFHRbOq5lUaqwICcKIXYbS0ogrM/dcn95RNBXVDRB3K90aSrv5NhN2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(66839620246622); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(3231311)(2232096)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(53946003)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(14444005)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:qGjy5W47dvJkN5E4h2c3pOBiXvslEFGPK2ijeYuXT?= 8K6OMlctfkrLPdTujpZ6xyEPGkyjnlyuP6DPxjtn4xSg5RUo2hcU8J4nbVPu4yv/13HteR8139yRkqWWxKSbbTxnetx0GCMqle8pfD5Rp640iMf3719IWbMSaSsnUtEUJ9bMJfsrB+jw0YM4rfAxOPgeXUc+4+MJxsXJtMjkKkuK0mRLiorQp8meXPs6haqMaTiajtEbhhAptRkhfzfWKXxLf1a7tUbPm2Vj1zCH3M/gYbu0YWIUqo5RToM2Nhn2flU685D2fDQdzB6+j6ttZ3HDZpsFMFzJtV7SRymhvrLsU1CWyFERPVsGvVn1lfz4PeHU+Lmw8Cyh4nMrd1lcRrH2eyoyfMbIHpEax+j8Mm6q4w+AQ4sCHx4BqqV/XZ2FXtWbdJ3hSOJJ9tDt6D8M2g7htzw64SQWKu/zpu1KAexi0cB5xOtYYanTxFTEWczh4KqvA4GotRq6Vg6N+GlT5Z9Ji9uqISlb3HGYwfFR5fRQ9uLDAtc/la4ZoRqFMON0Badz6Sx+g1HMsEZF5JeU37TxPKXAZoAJZp11it8w7IOHT6M3YTalsLaG6oJfwhPciEjoiq81dadPNiqozJ+BgS3BgRtuqr8fJECjVYZT+RchnaXOeE+fldjY6kZf+eYUuPSrk5HKbAKVfY4XIZP4DO8U2E4UviQ/Mb7d2YQZ7sql8Eei2CHnpK5XY0RY2jbBL9DRQPaSTfox4nhdnzbcovacseD34R70N1dNOppULJ0DHZrGq2+9K2dXrPA34cdsdpZb0DHkasaltItcgcgvMXvUQRlwv6JNM06Hh+fvDSpIaxNQ/cv3dgm8Ec7w3Zr7nKx+l5tCIx0OO2ydaPV4xn7u4JW/GHo1CMp0mTYJQE+iVyseP+snfGYhqw43w5Orp2lqaCZZdbevLK4WfvdPinzjzXv2jpFwihqoHJXM4vC6wEEI70vTpviG1CZ6QGVb93JqWV7/3pUmfV52gdQTKmCRQieJ27PVV/mFxa8XRLe5Co/Lebvp3XoOzc1jrRMAc5NePqWDLBAVhLulZokGz/IrDe4smazd4o7C5b+iCX/RFC43f/upoleO1UbduWU93qaZc48DaN6Mgz9FkiuwCYXk59uihbUOXLgzl0TjkyYsWz3mikmKWEEO5WworMdvVTKp4ilt0cYLW1Y18yk3LuZhVkNA/6UvzJYTbzOdWzYinsJ5QAC41vtwhun/uvn1mB88PL+h5t5DJz1p/jpJAoLAWujkswf6KDWqUYUFMtdBd7vmXu1bGzCcCIKSPoXRvnud6cccHSA8HPQeN98BBt5hm14ylP129s7QytRiTaqs7T6+Z+m+kXTTBS5f/tExCEn54DMIb3NL0irbssgKgzIl/DM8JDNFJ1SXcEjXYlpyC401anWVdEg1NinUAfLDTgvjTFGhnn9cR6fC+CdBzTl X-Microsoft-Antispam-Message-Info: zrQSV/KTYSIK/Dbd5Bk4WMLHZ6K50vBG0lQJBne6ggFzRIMWvYKyamT/yplKBGDHvUFco+1NrX6f9Dz+nPXsj1wO1kg7n+pWRkszQHRcjahgd96/EgA1PicMhyVCF2YXMw2R5MCttE4dIiz8HJqeGJW18SXmkNMTA5+oAXz4qBnU9H1xq1EfEHiOeXRRpQd+9xDvAghvLlnvwBrNXyWdeiDo7FLQeOnDq2lUNzCVzl+8yaf+G8Pg0JhayCnAKVcuQUUWtHYX9vT8VN6n1/3JAT/7R9DgxCVNWx6FL3J0d4uutg3W/ofmCSpu+9ybq/GvyHQr1RreAwuFsp1nMeoVfHu9AOWdyAiwirU3+fG5w/7xrvP6z5ey6gtiDjJpLsXCtgLlGIv3agPg3sEKUy4/DWzTK7nMRQ2fg+uJlbbL6zL6Af1cvcV0Y5KruP2pVZhHF51TfTPhSv2L53E+UJVJAqiGw3QNBidKMVNr7HivdNcBR5uACRjAPXAZmF+yFjwG+69NMDTFuRgLnaX3OobXVmCFrYF/QYqcvhrhGyil70PhtKu6Eo1S9hNgIA0kld+jGquhNO4EchsLijhFFrz/XMeV6j077V+zaQTDj+qUVvQlT5/YdguHf9m8b9RV2Lu2dXizRt/rQH4lCjAOBrcLP1lnfFwlBCKyaCzXepOjaZGMN/FiacumRolPCb54g69IefQfrpbmjW1M0QOYlH0b3g== X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:7HSHNUndXJvCJjqUXcDMG0jQVbgZEG28w+epruuZxGfx9ngYJS6UjewmZVx6R1TjF//EqmMm8lcZhtDGW+f4jfJ0mNvmh2mYxHqmM57Iqmt1nIghNkkHBZAKv038fURLS77p+d9p217UHbFCR1Lnenz0kpfQdjyrpSediVMOh7GmS1Wyy0gnqbD5bJ5N+Tf6q+smgW9dQ3u+R9bDfBf1c8m1VBtD86cD8CSDq3OB7UNPyo+akB2iRn5YaoWtxk67sCCqpLT2gxrr2++ZD/DCz1UHC7adD40KRdvH7I0ifg5sbFiRtlGwY8Q8PICjrC9n1vovqfeLfUUPsh3rBVOVP13FhUseP/YSAJfXZWn9wRvnsLhPtvvJzLQz74jw5pAv60D/4A8Ma2ZgJh3M41xdXuAxZoPYwd8YTYEAzy2iqnc2reeHrMYhqnEgi52nS3KpjPUY2h3NSaMNWB2bV4udjA04uQamFfGAOdJF8n09GhSkrMaYLCufKXWEPsnMX/ue; 5:YaXYjQQJwyC/0/Vr/joP57YTJgSlg1PvuYg/V0QuPCxabYg8v8F270qZaRKUusfox8e8NxqusSzsL0lhP54QG1+GlUOCLWH53XVPpuvIIJ2F7Kc8MZ4XaxMtVAMrkU/kFf8Y82vPBTyJmCKTRMrNxZ5nGvjy7Zy4h8tCyGXtajk=; 7:cjqo57bH/P7/Xsuvqb42LQwAytacDL1zYFoY2xl1nS+6E7ccJFpvdptrk0ICBvdn0KgKA+fZUwkFfbJKwXwfCUJBMOZID+fr6SgtTt2hrYmWhxRppoUWQ3fPplsgpSL0HMICXI9NSrZtpRRUGQZX8wwSKGskNi0KSMXCB4t6v68WcdlvIMnxzc5YCo0k86vKTISK+T0LRHqtVNwDOjQN/YAoylsET7YuldI1e0+gozWZj/UoStquZcJG8xGnX8Ht SpamDiagnosticOutput: 1:22 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:42:57.0426 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 44c93e92-0138-45d9-5070-08d5f24dae45 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 1/6] compress/octeontx: add octeontx zip PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunila Sahu Octentx zipvf PMD provides hardware acceleration for deflate and lzs compression and decompression operations using Octeontx zip co-processor, which provide 8 virtualized zip devices. This patch add basic initialization routine to register zip VFs to compressdev library. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- MAINTAINERS | 3 + config/common_base | 5 + drivers/compress/Makefile | 1 + drivers/compress/meson.build | 2 +- drivers/compress/octeontx/Makefile | 30 + drivers/compress/octeontx/include/zip_regs.h | 711 +++++++++++++++++++++ drivers/compress/octeontx/meson.build | 9 + drivers/compress/octeontx/otx_zip.c | 62 ++ drivers/compress/octeontx/otx_zip.h | 113 ++++ drivers/compress/octeontx/otx_zip_pmd.c | 118 ++++ .../octeontx/rte_pmd_octeontx_compress_version.map | 3 + mk/rte.app.mk | 1 + 12 files changed, 1057 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 7e3c450..16cbfd0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -855,6 +855,9 @@ F: drivers/crypto/zuc/ F: doc/guides/cryptodevs/zuc.rst F: doc/guides/cryptodevs/features/zuc.ini +Cavium OCTEONTX zipvf +M: Ashish Gupta +F: drivers/compress/octeontx Compression Drivers ------------------- diff --git a/config/common_base b/config/common_base index 662da4d..4bcbaf9 100644 --- a/config/common_base +++ b/config/common_base @@ -578,6 +578,11 @@ CONFIG_RTE_COMPRESS_MAX_DEVS=64 CONFIG_RTE_COMPRESSDEV_TEST=n # +# Compile PMD for Octeontx ZIPVF compression device +# +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=y + +# # Compile PMD for ISA-L compression device # CONFIG_RTE_LIBRTE_PMD_ISAL=n diff --git a/drivers/compress/Makefile b/drivers/compress/Makefile index 1f159a5..af26060 100644 --- a/drivers/compress/Makefile +++ b/drivers/compress/Makefile @@ -5,5 +5,6 @@ include $(RTE_SDK)/mk/rte.vars.mk DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal DIRS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib +DIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += octeontx include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/compress/meson.build b/drivers/compress/meson.build index d2ca8fc..0b428ba 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', 'zlib'] +drivers = ['isal', 'qat', 'zlib', 'octeontx'] std_deps = ['compressdev'] # compressdev pulls in all other needed deps config_flag_fmt = 'RTE_LIBRTE_@0@_PMD' diff --git a/drivers/compress/octeontx/Makefile b/drivers/compress/octeontx/Makefile new file mode 100644 index 0000000..f34424c --- /dev/null +++ b/drivers/compress/octeontx/Makefile @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +include $(RTE_SDK)/mk/rte.vars.mk + +# library name +LIB = librte_pmd_octeontx_zip.a + +# library version +LIBABIVER := 1 + +# build flags +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -O3 +CFLAGS += -DALLOW_EXPERIMENTAL_API +CFLAGS += -I$(RTE_SDK)/drivers/compress/octeontx/include + +# external library include paths +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring +LDLIBS += -lrte_compressdev +LDLIBS += -lrte_pci -lrte_bus_pci + +# library source files +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip_pmd.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip.c + +# versioning export map +EXPORT_MAP := rte_pmd_octeontx_compress_version.map + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/octeontx/include/zip_regs.h b/drivers/compress/octeontx/include/zip_regs.h new file mode 100644 index 0000000..1e74db4 --- /dev/null +++ b/drivers/compress/octeontx/include/zip_regs.h @@ -0,0 +1,711 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _RTE_OCTEONTX_ZIP_REGS_H_ +#define _RTE_OCTEONTX_ZIP_REGS_H_ + + +/** + * Enumeration zip_cc + * + * ZIP compression coding Enumeration + * Enumerates ZIP_INST_S[CC]. + */ +enum { + ZIP_CC_DEFAULT = 0, + ZIP_CC_DYN_HUFF, + ZIP_CC_FIXED_HUFF, + ZIP_CC_LZS +} zip_cc; + +/** + * Register (NCB) zip_vq#_ena + * + * ZIP VF Queue Enable Register + * If a queue is disabled, ZIP CTL stops fetching instructions from the queue. + */ +typedef union { + uint64_t u; + struct zip_vqx_ena_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_1_63 : 63; + uint64_t ena : 1; +#else /* Word 0 - Little Endian */ + uint64_t ena : 1; + uint64_t reserved_1_63 : 63; +#endif /* Word 0 - End */ + } s; + /* struct zip_vqx_ena_s cn; */ +} zip_vqx_ena_t; + +/** + * Register (NCB) zip_vq#_sbuf_addr + * + * ZIP VF Queue Starting Buffer Address Registers + * These registers set the buffer parameters for the instruction queues. + * When quiescent (i.e. + * outstanding doorbell count is 0), it is safe to rewrite this register + * to effectively reset the + * command buffer state machine. + * These registers must be programmed after software programs the + * corresponding ZIP_QUE()_SBUF_CTL. + */ +typedef union { + uint64_t u; + struct zip_vqx_sbuf_addr_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_49_63 : 15; + uint64_t ptr : 42; + uint64_t off : 7; +#else /* Word 0 - Little Endian */ + uint64_t off : 7; + uint64_t ptr : 42; + uint64_t reserved_49_63 : 15; +#endif /* Word 0 - End */ + } s; + /* struct zip_vqx_sbuf_addr_s cn; */ +} zip_vqx_sbuf_addr_t; + +/** + * Register (NCB) zip_que#_doorbell + * + * ZIP Queue Doorbell Registers + * Doorbells for the ZIP instruction queues. + */ +typedef union { + uint64_t u; + struct zip_quex_doorbell_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t reserved_20_63 : 44; + uint64_t dbell_cnt : 20; +#else /* Word 0 - Little Endian */ + uint64_t dbell_cnt : 20; + uint64_t reserved_20_63 : 44; +#endif /* Word 0 - End */ + } s; + /* struct zip_quex_doorbell_s cn; */ +} zip_quex_doorbell_t; + +/** + * Structure zip_nptr_s + * + * ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) Structure + * This structure is used to chain all the ZIP instruction buffers + * together. ZIP instruction buffers are managed + * (allocated and released) by software. + */ +union zip_nptr_s { + uint64_t u; + struct zip_nptr_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ + } s; + /* struct zip_nptr_s_s cn83xx; */ +}; + +/** + * generic ptr address + */ +union zip_zptr_addr_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u; + /** generic ptr address */ + struct { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ + } s; +}; + +/** + * generic ptr ctl + */ +union zip_zptr_ctl_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u; + /** generic ptr ctl */ + struct { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + uint64_t reserved_112_127 : 16; + uint64_t length : 16; + uint64_t reserved_67_95 : 29; + uint64_t fw : 1; + uint64_t nc : 1; + uint64_t data_be : 1; +#else /* Word 1 - Little Endian */ + uint64_t data_be : 1; + uint64_t nc : 1; + uint64_t fw : 1; + uint64_t reserved_67_95 : 29; + uint64_t length : 16; + uint64_t reserved_112_127 : 16; +#endif /* Word 1 - End */ + } s; + +}; + +/** + * Structure zip_inst_s + * + * ZIP Instruction Structure + * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 + * within the structure). + */ +union zip_inst_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[16]; + /** ZIP Instruction Structure */ + struct zip_inst_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Done interrupt */ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_56_62 : 7; + /** Total output length */ + uint64_t totaloutputlength : 24; + /** reserved */ + uint64_t reserved_27_31 : 5; + /** EXNUM */ + uint64_t exn : 3; + /** HASH IV */ + uint64_t iv : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** Hash more-in-file */ + uint64_t hmif : 1; + /** Hash Algorithm and enable */ + uint64_t halg : 3; + /** Sync flush*/ + uint64_t sf : 1; + /** Compression speed/storage */ + uint64_t ss : 2; + /** Compression coding */ + uint64_t cc : 2; + /** End of input data */ + uint64_t ef : 1; + /** Beginning of file */ + uint64_t bf : 1; + // uint64_t reserved_3_4 : 2; + /** Comp/decomp operation */ + uint64_t op : 2; + /** Data sactter */ + uint64_t ds : 1; + /** Data gather */ + uint64_t dg : 1; + /** History gather */ + uint64_t hg : 1; +#else /* Word 0 - Little Endian */ + uint64_t hg : 1; + uint64_t dg : 1; + uint64_t ds : 1; + //uint64_t reserved_3_4 : 2; + uint64_t op : 2; + uint64_t bf : 1; + uint64_t ef : 1; + uint64_t cc : 2; + uint64_t ss : 2; + uint64_t sf : 1; + uint64_t halg : 3; + uint64_t hmif : 1; + uint64_t exbits : 7; + uint64_t iv : 1; + uint64_t exn : 3; + uint64_t reserved_27_31 : 5; + uint64_t totaloutputlength : 24; + uint64_t reserved_56_62 : 7; + uint64_t doneint : 1; + +#endif /* Word 0 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** History length */ + uint64_t historylength : 16; + /** reserved */ + uint64_t reserved_96_111 : 16; + /** adler/crc32 checksum*/ + uint64_t adlercrc32 : 32; +#else /* Word 1 - Little Endian */ + uint64_t adlercrc32 : 32; + uint64_t reserved_96_111 : 16; + uint64_t historylength : 16; +#endif /* Word 1 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Decompression Context Pointer Address */ + union zip_zptr_addr_s ctx_ptr_addr; +#else /* Word 2 - Little Endian */ + union zip_zptr_addr_s ctx_ptr_addr; +#endif /* Word 2 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression Context Pointer Control */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#else /* Word 3 - Little Endian */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#endif /* Word 3 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression history pointer address */ + union zip_zptr_addr_s his_ptr_addr; +#else /* Word 4 - Little Endian */ + union zip_zptr_addr_s his_ptr_addr; +#endif /* Word 4 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Decompression history pointer control */ + union zip_zptr_ctl_s his_ptr_ctl; +#else /* Word 5 - Little Endian */ + union zip_zptr_ctl_s his_ptr_ctl; +#endif /* Word 5 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Input and compression history pointer address */ + union zip_zptr_addr_s inp_ptr_addr; +#else /* Word 6 - Little Endian */ + union zip_zptr_addr_s inp_ptr_addr; +#endif /* Word 6 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Input and compression history pointer control */ + union zip_zptr_ctl_s inp_ptr_ctl; +#else /* Word 7 - Little Endian */ + union zip_zptr_ctl_s inp_ptr_ctl; +#endif /* Word 7 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Output pointer address */ + union zip_zptr_addr_s out_ptr_addr; +#else /* Word 8 - Little Endian */ + union zip_zptr_addr_s out_ptr_addr; +#endif /* Word 8 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Output pointer control */ + union zip_zptr_ctl_s out_ptr_ctl; +#else /* Word 9 - Little Endian */ + union zip_zptr_ctl_s out_ptr_ctl; +#endif /* Word 9 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Result pointer address */ + union zip_zptr_addr_s res_ptr_addr; +#else /* Word 10 - Little Endian */ + union zip_zptr_addr_s res_ptr_addr; +#endif /* Word 10 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** Result pointer control */ + union zip_zptr_ctl_s res_ptr_ctl; +#else /* Word 11 - Little Endian */ + union zip_zptr_ctl_s res_ptr_ctl; +#endif /* Word 11 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */ + /** reserved */ + uint64_t reserved_812_831 : 20; + /** SSO guest group */ + uint64_t ggrp : 10; + /** SSO tag type */ + uint64_t tt : 2; + /** SSO tag */ + uint64_t tag : 32; +#else /* Word 12 - Little Endian */ + uint64_t tag : 32; + uint64_t tt : 2; + uint64_t ggrp : 10; + uint64_t reserved_812_831 : 20; +#endif /* Word 12 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */ + /** Work queue entry pointer */ + uint64_t wq_ptr : 64; +#else /* Word 13 - Little Endian */ + uint64_t wq_ptr : 64; +#endif /* Word 13 - End */ + +#if defined(__BIG_ENDIAN_BITFIELD) + /** reserved */ + uint64_t reserved_896_959 : 64; +#else /* Word 14 - Little Endian */ + uint64_t reserved_896_959 : 64; +#endif /* Word 14 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) + /** Hash structure pointer */ + uint64_t hash_ptr : 64; +#else /* Word 15 - Little Endian */ + uint64_t hash_ptr : 64; +#endif /* Word 15 - End */ + } /** ZIP 88xx Instruction Structure */zip88xx; + + /** ZIP Instruction Structure */ + struct zip_inst_s_cn83xx { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Done interrupt */ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_56_62 : 7; + /** Total output length */ + uint64_t totaloutputlength : 24; + /** reserved */ + uint64_t reserved_27_31 : 5; + /** EXNUM */ + uint64_t exn : 3; + /** HASH IV */ + uint64_t iv : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** Hash more-in-file */ + uint64_t hmif : 1; + /** Hash Algorithm and enable */ + uint64_t halg : 3; + /** Sync flush*/ + uint64_t sf : 1; + /** Compression speed/storage */ + uint64_t ss : 2; + /** Compression coding */ + uint64_t cc : 2; + /** End of input data */ + uint64_t ef : 1; + /** Beginning of file */ + uint64_t bf : 1; + /** Comp/decomp operation */ + uint64_t op : 2; + /** Data sactter */ + uint64_t ds : 1; + /** Data gather */ + uint64_t dg : 1; + /** History gather */ + uint64_t hg : 1; +#else /* Word 0 - Little Endian */ + uint64_t hg : 1; + uint64_t dg : 1; + uint64_t ds : 1; + uint64_t op : 2; + uint64_t bf : 1; + uint64_t ef : 1; + uint64_t cc : 2; + uint64_t ss : 2; + uint64_t sf : 1; + uint64_t halg : 3; + uint64_t hmif : 1; + uint64_t exbits : 7; + uint64_t iv : 1; + uint64_t exn : 3; + uint64_t reserved_27_31 : 5; + uint64_t totaloutputlength : 24; + uint64_t reserved_56_62 : 7; + uint64_t doneint : 1; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** History length */ + uint64_t historylength : 16; + /** reserved */ + uint64_t reserved_96_111 : 16; + /** adler/crc32 checksum*/ + uint64_t adlercrc32 : 32; +#else /* Word 1 - Little Endian */ + uint64_t adlercrc32 : 32; + uint64_t reserved_96_111 : 16; + uint64_t historylength : 16; +#endif /* Word 1 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Decompression Context Pointer Address */ + union zip_zptr_addr_s ctx_ptr_addr; +#else /* Word 2 - Little Endian */ + union zip_zptr_addr_s ctx_ptr_addr; +#endif /* Word 2 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */ + /** Decompression Context Pointer Control */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#else /* Word 3 - Little Endian */ + union zip_zptr_ctl_s ctx_ptr_ctl; +#endif /* Word 3 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */ + /** Decompression history pointer address */ + union zip_zptr_addr_s his_ptr_addr; +#else /* Word 4 - Little Endian */ + union zip_zptr_addr_s his_ptr_addr; +#endif /* Word 4 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */ + /** Decompression history pointer control */ + union zip_zptr_ctl_s his_ptr_ctl; +#else /* Word 5 - Little Endian */ + union zip_zptr_ctl_s his_ptr_ctl; +#endif /* Word 5 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */ + /** Input and compression history pointer address */ + union zip_zptr_addr_s inp_ptr_addr; +#else /* Word 6 - Little Endian */ + union zip_zptr_addr_s inp_ptr_addr; +#endif /* Word 6 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */ + /** Input and compression history pointer control */ + union zip_zptr_ctl_s inp_ptr_ctl; +#else /* Word 7 - Little Endian */ + union zip_zptr_ctl_s inp_ptr_ctl; +#endif /* Word 7 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 8 - Big Endian */ + /** Output pointer address */ + union zip_zptr_addr_s out_ptr_addr; +#else /* Word 8 - Little Endian */ + union zip_zptr_addr_s out_ptr_addr; +#endif /* Word 8 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 9 - Big Endian */ + /** Output pointer control */ + union zip_zptr_ctl_s out_ptr_ctl; +#else /* Word 9 - Little Endian */ + union zip_zptr_ctl_s out_ptr_ctl; +#endif /* Word 9 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 10 - Big Endian */ + /** Result pointer address */ + union zip_zptr_addr_s res_ptr_addr; +#else /* Word 10 - Little Endian */ + union zip_zptr_addr_s res_ptr_addr; +#endif /* Word 10 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 11 - Big Endian */ + /** Result pointer control */ + union zip_zptr_ctl_s res_ptr_ctl; +#else /* Word 11 - Little Endian */ + union zip_zptr_ctl_s res_ptr_ctl; +#endif /* Word 11 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */ + /** reserved */ + uint64_t reserved_812_831 : 20; + /** SSO guest group */ + uint64_t ggrp : 10; + /** SSO tag type */ + uint64_t tt : 2; + /** SSO tag */ + uint64_t tag : 32; +#else /* Word 12 - Little Endian */ + uint64_t tag : 32; + uint64_t tt : 2; + uint64_t ggrp : 10; + uint64_t reserved_812_831 : 20; +#endif /* Word 12 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */ + /** Work queue entry pointer */ + uint64_t wq_ptr : 64; +#else /* Word 13 - Little Endian */ + uint64_t wq_ptr : 64; +#endif /* Word 13 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 14 - Big Endian */ + /** reserved */ + uint64_t reserved_896_959 : 64; +#else /* Word 14 - Little Endian */ + uint64_t reserved_896_959 : 64; +#endif /* Word 14 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 15 - Big Endian */ + /** Hash structure pointer */ + uint64_t hash_ptr : 64; +#else /* Word 15 - Little Endian */ + uint64_t hash_ptr : 64; +#endif /* Word 15 - End */ + } /** ZIP 83xx Instruction Structure */s; +}; + +/** + * Structure zip_zres_s + * + * ZIP Result Structure + * The ZIP coprocessor writes the result structure after it completes the + * invocation. The result structure is exactly 24 bytes, and each invocation + * of the ZIP coprocessor produces exactly one result structure. + */ +union zip_zres_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[8]; + /** ZIP Result Structure */ + struct zip_zres_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** crc32 checksum of uncompressed stream */ + uint64_t crc32 : 32; + /** adler32 checksum of uncompressed stream*/ + uint64_t adler32 : 32; +#else /* Word 0 - Little Endian */ + uint64_t adler32 : 32; + uint64_t crc32 : 32; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** Total numer of Bytes produced in output stream */ + uint64_t totalbyteswritten : 32; + /** Total number of bytes processed from the input stream */ + uint64_t totalbytesread : 32; +#else /* Word 1 - Little Endian */ + uint64_t totalbytesread : 32; + uint64_t totalbyteswritten : 32; +#endif /* Word 1 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */ + /** Total number of compressed input bits + * consumed to decompress all blocks in the file + */ + uint64_t totalbitsprocessed : 32; + /** Done interrupt*/ + uint64_t doneint : 1; + /** reserved */ + uint64_t reserved_155_158 : 4; + /** EXNUM */ + uint64_t exn : 3; + /** reserved */ + uint64_t reserved_151 : 1; + /** EXBITS */ + uint64_t exbits : 7; + /** reserved */ + uint64_t reserved_137_143 : 7; + /** End of file */ + uint64_t ef : 1; + /** Completion/error code */ + uint64_t compcode : 8; +#else /* Word 2 - Little Endian */ + uint64_t compcode : 8; + uint64_t ef : 1; + uint64_t reserved_137_143 : 7; + uint64_t exbits : 7; + uint64_t reserved_151 : 1; + uint64_t exn : 3; + uint64_t reserved_155_158 : 4; + uint64_t doneint : 1; + uint64_t totalbitsprocessed : 32; +#endif /* Word 2 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */ + /** reserved */ + uint64_t reserved_253_255 : 3; + /** Hash length in bytes */ + uint64_t hshlen : 61; +#else /* Word 3 - Little Endian */ + uint64_t hshlen : 61; + uint64_t reserved_253_255 : 3; +#endif /* Word 3 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */ + /** Double-word 0 of computed hash */ + uint64_t hash0 : 64; +#else /* Word 4 - Little Endian */ + uint64_t hash0 : 64; +#endif /* Word 4 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */ + /** Double-word 1 of computed hash */ + uint64_t hash1 : 64; +#else /* Word 5 - Little Endian */ + uint64_t hash1 : 64; +#endif /* Word 5 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */ + /** Double-word 2 of computed hash */ + uint64_t hash2 : 64; +#else /* Word 6 - Little Endian */ + uint64_t hash2 : 64; +#endif /* Word 6 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */ + /** Double-word 3 of computed hash */ + uint64_t hash3 : 64; +#else /* Word 7 - Little Endian */ + uint64_t hash3 : 64; +#endif /* Word 7 - End */ + } /** ZIP Result Structure */s; + + /* struct zip_zres_s_s cn83xx; */ +}; + +/** + * Structure zip_zptr_s + * + * ZIP Generic Pointer Structure + * This structure is the generic format of pointers in ZIP_INST_S. + */ +union zip_zptr_s { + /** This field can be used to set/clear all bits, or do bitwise + * operations over the entire structure. + */ + uint64_t u[2]; + /** ZIP Generic Pointer Structure */ + struct zip_zptr_s_s { +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */ + /** Pointer to Data or scatter-gather list */ + uint64_t addr : 64; +#else /* Word 0 - Little Endian */ + uint64_t addr : 64; +#endif /* Word 0 - End */ +#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */ + /** reserved */ + uint64_t reserved_112_127 : 16; + /** Length of Data or scatter-gather list*/ + uint64_t length : 16; + /** reserved */ + uint64_t reserved_67_95 : 29; + /** Full-block write */ + uint64_t fw : 1; + /** No cache allocation */ + uint64_t nc : 1; + /** reserved */ + uint64_t data_be : 1; +#else /* Word 1 - Little Endian */ + uint64_t data_be : 1; + uint64_t nc : 1; + uint64_t fw : 1; + uint64_t reserved_67_95 : 29; + uint64_t length : 16; + uint64_t reserved_112_127 : 16; +#endif /* Word 1 - End */ + } /** ZIP Generic Pointer Structure */s; +}; + +/** + * Enumeration zip_comp_e + * + * ZIP Completion Enumeration + * Enumerates the values of ZIP_ZRES_S[COMPCODE]. + */ +#define ZIP_COMP_E_NOTDONE (0) +#define ZIP_COMP_E_SUCCESS (1) +#define ZIP_COMP_E_DTRUNC (2) +#define ZIP_COMP_E_DSTOP (3) +#define ZIP_COMP_E_ITRUNC (4) +#define ZIP_COMP_E_RBLOCK (5) +#define ZIP_COMP_E_NLEN (6) +#define ZIP_COMP_E_BADCODE (7) +#define ZIP_COMP_E_BADCODE2 (8) +#define ZIP_COMP_E_ZERO_LEN (9) +#define ZIP_COMP_E_PARITY (0xa) +#define ZIP_COMP_E_FATAL (0xb) +#define ZIP_COMP_E_TIMEOUT (0xc) +#define ZIP_COMP_E_INSTR_ERR (0xd) +#define ZIP_COMP_E_HCTX_ERR (0xe) +#define ZIP_COMP_E_STOP (3) + +/** + * Enumeration zip_op_e + * + * ZIP Operation Enumeration + * Enumerates ZIP_INST_S[OP]. + * Internal: + */ +#define ZIP_OP_E_DECOMP (0) +#define ZIP_OP_E_NOCOMP (1) +#define ZIP_OP_E_COMP (2) + +/** + * Enumeration zip compression levels + * + * ZIP Compression Level Enumeration + * Enumerates ZIP_INST_S[SS]. + * Internal: + */ +#define ZIP_COMP_E_LEVEL_MAX (0) +#define ZIP_COMP_E_LEVEL_MED (1) +#define ZIP_COMP_E_LEVEL_LOW (2) +#define ZIP_COMP_E_LEVEL_MIN (3) + +#endif /* _RTE_ZIP_REGS_H_ */ diff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build new file mode 100644 index 0000000..7cd202d --- /dev/null +++ b/drivers/compress/octeontx/meson.build @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +name = 'octeontx_compress' +sources = files('otx_zip.c', 'otx_zip_pmd.c') +allow_experimental_apis = true +includes += include_directories('include') +deps += ['mempool_octeontx', 'bus_pci'] +ext_deps += dep diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c new file mode 100644 index 0000000..7a1dd58 --- /dev/null +++ b/drivers/compress/octeontx/otx_zip.c @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include "otx_zip.h" + +uint64_t +zip_reg_read64(uint8_t *hw_addr, uint64_t offset) +{ + uint8_t *base = hw_addr; + return *(volatile uint64_t *)(base + offset); +} + +void +zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val) +{ + uint8_t *base = hw_addr; + *(uint64_t *)(base + offset) = val; +} + +int +zipvf_create(struct rte_compressdev *compressdev) +{ + struct rte_pci_device *pdev = RTE_DEV_TO_PCI(compressdev->device); + struct zip_vf *zipvf = NULL; + char *dev_name = compressdev->data->name; + void *vbar0; + uint64_t reg; + + if (pdev->mem_resource[0].phys_addr == 0ULL) + return -EIO; + + vbar0 = pdev->mem_resource[0].addr; + if (!vbar0) { + ZIP_PMD_ERR("Failed to map BAR0 of %s", dev_name); + return -ENODEV; + } + + zipvf = (struct zip_vf *)(compressdev->data->dev_private); + + if (!zipvf) + return -ENOMEM; + + zipvf->vbar0 = vbar0; + reg = zip_reg_read64(zipvf->vbar0, ZIP_VF_PF_MBOXX(0)); + /* Storing domain in local to ZIP VF */ + zipvf->dom_sdom = reg; + zipvf->pdev = pdev; + zipvf->max_nb_queue_pairs = ZIP_MAX_VF_QUEUE; + return 0; +} + +int +zipvf_destroy(struct rte_compressdev *compressdev) +{ + struct zip_vf *vf = (struct zip_vf *)(compressdev->data->dev_private); + + /* Rewriting the domain_id in ZIP_VF_MBOX for app rerun */ + zip_reg_write64(vf->vbar0, ZIP_VF_PF_MBOXX(0), vf->dom_sdom); + + return 0; +} diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h new file mode 100644 index 0000000..8a58f31 --- /dev/null +++ b/drivers/compress/octeontx/otx_zip.h @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _RTE_OCTEONTX_ZIP_VF_H_ +#define _RTE_OCTEONTX_ZIP_VF_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +int octtx_zip_logtype_driver; + +/* ZIP VF Control/Status registers (CSRs): */ +/* VF_BAR0: */ +#define ZIP_VQ_ENA (0x10) +#define ZIP_VQ_SBUF_ADDR (0x20) +#define ZIP_VF_PF_MBOXX(x) (0x400 | (x)<<3) +#define ZIP_VQ_DOORBELL (0x1000) + +/**< Vendor ID */ +#define PCI_VENDOR_ID_CAVIUM 0x177D +/**< PCI device id of ZIP VF */ +#define PCI_DEVICE_ID_OCTEONTX_ZIPVF 0xA037 + +/* maxmum number of zip vf devices */ +#define ZIP_MAX_VFS 8 + +/* max size of one chunk */ +#define ZIP_MAX_CHUNK_SIZE 8192 + +/* each instruction is fixed 128 bytes */ +#define ZIP_CMD_SIZE 128 + +#define ZIP_CMD_SIZE_WORDS (ZIP_CMD_SIZE >> 3) /* 16 64_bit words */ + +/* size of next chunk buffer pointer */ +#define ZIP_MAX_NCBP_SIZE 8 + +/* size of instruction queue in units of instruction size */ +#define ZIP_MAX_NUM_CMDS ((ZIP_MAX_CHUNK_SIZE - ZIP_MAX_NCBP_SIZE) / \ + ZIP_CMD_SIZE) /* 63 */ + +/* size of instruct queue in bytes */ +#define ZIP_MAX_CMDQ_SIZE ((ZIP_MAX_NUM_CMDS * ZIP_CMD_SIZE) + \ + ZIP_MAX_NCBP_SIZE)/* ~8072ull */ + +#define ZIP_BUF_SIZE 256 + +#define ZIP_SGPTR_ALIGN 16 +#define ZIP_CMDQ_ALIGN 128 +#define MAX_SG_LEN ((ZIP_BUF_SIZE - ZIP_SGPTR_ALIGN) / sizeof(void *)) + +/**< ZIP PMD specified queue pairs */ +#define ZIP_MAX_VF_QUEUE 1 + +#define ZIP_ALIGN_ROUNDUP(x, _align) \ + ((_align) * (((x) + (_align) - 1) / (_align))) + +/**< ZIP PMD device name */ +#define COMPRESSDEV_NAME_ZIP_PMD compress_octeonx + +#define ZIP_PMD_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, \ + octtx_zip_logtype_driver, "%s(): "fmt "\n", \ + __func__, ##args) + +#define ZIP_PMD_INFO(fmt, args...) \ + ZIP_PMD_LOG(INFO, fmt, ## args) +#define ZIP_PMD_ERR(fmt, args...) \ + ZIP_PMD_LOG(ERR, fmt, ## args) +#define ZIP_PMD_WARN(fmt, args...) \ + ZIP_PMD_LOG(WARNING, fmt, ## args) + +/** + * ZIP VF device structure. + */ +struct zip_vf { + int vfid; + /* vf index */ + struct rte_pci_device *pdev; + /* pci device */ + void *vbar0; + /* CSR base address for underlying BAR0 VF.*/ + uint64_t dom_sdom; + /* Storing mbox domain and subdomain id for app rerun*/ + uint32_t max_nb_queue_pairs; + /* pointer to device qps */ + struct rte_mempool *zip_mp; + /* pointer to pools */ +} __rte_cache_aligned; + +int +zipvf_create(struct rte_compressdev *compressdev); + +int +zipvf_destroy(struct rte_compressdev *compressdev); + +uint64_t +zip_reg_read64(uint8_t *hw_addr, uint64_t offset); + +void +zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val); + +#endif /* _RTE_ZIP_VF_H_ */ diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c new file mode 100644 index 0000000..4d92c9d --- /dev/null +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -0,0 +1,118 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include + +#include +#include +#include +#include + +#include "otx_zip.h" + +struct rte_compressdev_ops octtx_zip_pmd_ops = { + +}; + +static int +zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) +{ + int ret = 0; + char compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + struct rte_compressdev *compressdev; + struct rte_compressdev_pmd_init_params init_params = { + "", + rte_socket_id(), + }; + + ZIP_PMD_INFO("vendor_id=0x%x device_id=0x%x", + (unsigned int)pci_dev->id.vendor_id, + (unsigned int)pci_dev->id.device_id); + + rte_pci_device_name(&pci_dev->addr, compressdev_name, + sizeof(compressdev_name)); + + compressdev = rte_compressdev_pmd_create(compressdev_name, + &pci_dev->device, sizeof(struct zip_vf), &init_params); + if (compressdev == NULL) { + ZIP_PMD_ERR("driver %s: create failed", init_params.name); + return -ENODEV; + } + + /* + * create only if proc_type is primary. + */ + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + /* create vf dev with given pmd dev id */ + ret = zipvf_create(compressdev); + if (ret < 0) { + ZIP_PMD_ERR("Device creation failed"); + rte_compressdev_pmd_destroy(compressdev); + return ret; + } + } + + compressdev->dev_ops = &octtx_zip_pmd_ops; + /* register rx/tx burst functions for data path */ + compressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED; + return ret; +} + +static int +zip_pci_remove(struct rte_pci_device *pci_dev) +{ + struct rte_compressdev *compressdev; + char compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + + if (pci_dev == NULL) { + ZIP_PMD_ERR(" Invalid PCI Device\n"); + return -EINVAL; + } + rte_pci_device_name(&pci_dev->addr, compressdev_name, + sizeof(compressdev_name)); + + compressdev = rte_compressdev_pmd_get_named_dev(compressdev_name); + if (compressdev == NULL) + return -ENODEV; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + if (zipvf_destroy(compressdev) < 0) + return -ENODEV; + } + return rte_compressdev_pmd_destroy(compressdev); +} + +static struct rte_pci_id pci_id_octtx_zipvf_table[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, + PCI_DEVICE_ID_OCTEONTX_ZIPVF), + }, + { + .device_id = 0 + }, +}; + +/** + * Structure that represents a PCI driver + */ +static struct rte_pci_driver octtx_zip_pmd = { + .id_table = pci_id_octtx_zipvf_table, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .probe = zip_pci_probe, + .remove = zip_pci_remove, +}; + +RTE_PMD_REGISTER_PCI(COMPRESSDEV_NAME_ZIP_PMD, octtx_zip_pmd); +RTE_PMD_REGISTER_PCI_TABLE(COMPRESSDEV_NAME_ZIP_PMD, pci_id_octtx_zipvf_table); + +RTE_INIT(octtx_zip_init_log); + +static void +octtx_zip_init_log(void) +{ + octtx_zip_logtype_driver = rte_log_register("pmd.compress.octeontx"); + if (octtx_zip_logtype_driver >= 0) + rte_log_set_level(octtx_zip_logtype_driver, RTE_LOG_INFO); +} diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map new file mode 100644 index 0000000..ad6e191 --- /dev/null +++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map @@ -0,0 +1,3 @@ +DPDK_18.08 { + local: *; +}; diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 5b7c684..429b8ba 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -222,6 +222,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto endif # CONFIG_RTE_LIBRTE_CRYPTODEV ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += -lrte_pmd_octeontx_zip _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal # Link QAT driver if it has not been linked yet From patchwork Wed Jul 25 17:04:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43360 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 8E9BE34EF; Wed, 25 Jul 2018 18:43:06 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0045.outbound.protection.outlook.com [104.47.33.45]) by dpdk.org (Postfix) with ESMTP id 4E4C2F72 for ; Wed, 25 Jul 2018 18:43:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KY6dYFSsjpaT3llV95gDFLpEXmNzYgvujQi2CV3Fu/o=; b=ThxN4+xIOaL3JWuIPYEQo5ykR+2fcZlx44zI3esnqwysUMD9WKLxszMzJnxRi5N7ear17hFvfU22EyGjq/B8vGRatp729WsfG0EiANg1IZkLPsKs/oNdbAKDS0KXMWegTRPvBIb9G2hVGicBaLqthqCyQthxHw3PbOejmqNRSyE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:42:59 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Wed, 25 Jul 2018 22:34:52 +0530 Message-Id: <20180725170456.3319-3-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e298c970-0c86-4ff1-1993-08d5f24db036 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:dffjdJ4Y5ii7TUz1XcdbMfV3yzVASK94wWX+YWFlIfKq73aym2o+qOfWHTlCD311B91MBoW9Cy1zWfgrJwf21jUvNiQH2q+D3bWHgRT/+yW5ru9H7AIroKAa/RpVWiZZPfqH8Ey85vHH36S2Nn+L8ifNGT5EqvjfTpd99pPLfcc6/pikWLWZ0agDhQO3SISKwoN+N9iVTgjaee/tEQIjfj/mNr+XIt9FoMLD+I3dG8Imn2x3Q/GIsnuN2uqWOhFC; 25:mMYJwQoHJwfxncj35gXPUhzGpZmsf29Rdi1GIXB7JWJgqmp5j/sOOAMxnRB3OpOhFHVvuvwUo8XPqWHbakSWDXWMAH/Yg/tVMpnAVoy97uYmcxXTl5MGk4i7iD7DbBvzj1nnyYZB2aJrfkUbMeq/mc4QGJ6roQDgY/i+hV3p34YlJ3H+rV8+qH2l3vqdn5iA1S4WDudn/8qsXJt3p7waw7b/aIB8RKZBtJqrrPhmkXC8q6LhLZWGkSgRZM8C+1NJT7KbNOHKmgRii12vCwGXkBlUz5wq8stHHYBq8TkdgaY9IygoJ66BBDaEGuFxnjjAfEm/Qr8RxmYsJzans9WGbA==; 31:STamSYOV52djxgKuv2Ll210WeoN7DaEt0IEkpQYftIkBIDZIEiaAJCtmPZ4PfyowfpeJBbttAIlcZGCPndVKXgobDpLNsZ0srSk13ipkFgoKJLZomoNIxekHFRzztFgoPBYgJCGddT1JSXV0S179Mh9n8c09ymg9cD1vV/D8/BCOEhpYcZ/3ZL44Ja2Kp4rBx/rjEnRysAN3myEPE8T7cnwFGFMYWHkt4gkEe1G3W0w= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:MPRWlmhdH4/gQKrf5K2s5oCkWz0jqAivFFQ8CAkNfUAOwk0sbdVkWAKL25nRngJWIQkdL+Lxi8PQ4l/orOGtloJpn9e34GebQsr1p5LKUXX9BDKm8jMIcyC/JQ3oJ74nt9CLabw8E3RvlcKJoMDvHZ8k1ENn2Cb3GmiSCERUDhMn+Uym3E7mP6wO95NvxFuRvP9gxUTbcVxwcfkd7QuDM1H+vTyB+I9IJSCyJa9vJ3bRYisLwroG8MhM1PKYtf8dtR9ccyluxsg4Oh60AqthBnMkRx+rfMowJwi7B/CPV+WQTjWR8ekPUcUaCWarNc0ritdN14wTGarUHhezH5jEk9wgH4WdJhyXuUjVLznUfzPa6nRMuLEkSS3yPV38I+CUoABERAXmRTKviLzf2P7aw1V5gafwMN55CgseWCgmK1ceOWyVkcJi/iTkKXY0lcjZ6OcX15G5o+uRIoapHynciq6KWX8kB9axsTO1Y/hqlPJCeaAFDYTESdv1sqZHpPImtwVPn6x8VT/CWpZnnwM6c/vSQavQijOupi+JpPj3coU73ASHVt25hacOyZHCuN6cxtcdrcVzx5O2xsa01XgqYRgD48tx1nVO0lw7CTH+jyY=; 4:e2b+riG6jj1+g68a2Q6knWTknlCLni5h9psForjOSZK9fP0BlOXhuPy5R47tMsUaw0NnpN86iRiM8PfH0q5pGuUhFz/YBiUXTWLSFSgJCGDJHOaGAVRzoLXN/xlYNC9oZPwFysiU2EYGPmxLCSQKTlcMtgbjtopAEOOs+lbC3Z77T+dPEFLhZMVAoY7fAAGaU8R5Y6vwaPWUd/7q+6RpA1P9kvhAUOnbHtLi0GXtCVPX2qVHTro4b8C3iXPqzC+vWXqBjq2tkVs2eQHfehOMQQ== 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)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(14444005)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:4O43mD77iqObezHre9TlUnj8IhWK47n8cB/F9KfpJ?= ChOvXIN+BrX9JZKvutF11poZ2fCmgMgMOWQg1v9PvvF5MV7/1hZJk/Oo4WPWByfYoSR/gAk2OCfFBlKedBIlmREASI4TtWEELiKFnA2v/U7zCEHRUebabASzOIHwmwq6ne1K79p8MQtsAqdMOffbJK1GRHKwK1robycxIQ32PL5J0XPXv5ABpdZCx41limJgsrWGgDugNzYXhnIxATElxfkRFyCHzHJ8RRk2ekBFVJ7qJrx6mDGh/fg2ekNwRHjcYWLUFo+UFimuq/0cq3s+2gnfsDXkqtlTwVGfQIU4ykh22X0S4yaS7xKdLfktgZfopeuuKuDxkmvdksPj6xLmcwtR9+j6FxKvbr3kE2brH4zK1dXtj6hjkgTUDjRu6eb4kXv4HMBfGTE/ZX6e7f/FwHg7LEZheN12OI3ynsSucdbiEL9EUZF18ZzD+FMTD8v/5YIdSaRi8gmNebJbvuLYRUNXM7xpoUbgAzKrmEGQIBFC/Ka7wvjiwsE1FBXl/s62snJKPf63Zf9cQftfapxuRSd3HJXteXzpgQIgSAewLe5cOe8x2UpmYBxywobhjoxydWVLlTg3+D4e/XCgJtbsrrcl2vtgSEeUGiLLCIjenLFNXVYXLP0pc+Q/RzoJRT9bXNsGdxv3Z0VhADpjaH8U02wURvYrKz2/3WvnKtYq+z03d7r1bhWbN2kE/fvKDjwHzG78y5WefFAi6ZaeW0TObYFqeuqNd05v1W/qnReiFjyfFOPUQzRTVFfjrAmYfs0nlBeV4FUUivjEbkhxCdRBPHzOrQMe2ytDD6BzhPwLfEEZRR/dcI5LeDH47QrekgOHouRimLMRJVlRtjFSypYOezETCikPVjDcBpR22xIYbWeVdLRa6O/x1pYoUNzI7ChSVhNE5QWruXKNYFbUToX79EFJM6YysyU/vzke3QF2bmQE2zRSN7J5w1oHYHYWRNHN2rzPHvTdVyMjeXGmZ1jIWwgT2ebvyXD4bQH3MUDcBNXAFQQ62npHKnWEhkewrOVs+/2xPcFfoGdkwk9kiodAlUqdbFvDufk23stlyyP7AlypxArtHCRmTIu3TOViTWrZHIPfgsboumH2vP1kjtO0bBvk6vNPBfvWMaO6AzLX3F2BHUw9g2UJ1WlBSo1jN/bZfsIECDTwMr0Z7ErGgKfVbQxCrlNDB/bDGy9YXb3N+MxjIHy7/OhE32UyWzAqxVcH7h6bXTPmxu33QkW51eM+qswPQrI9QhgPl9aZZjoskrZVhiEBVABkPApo/yhybKMChe5Akwpbb1jXC1ntzyr+A7TwFX2BWjU2A4JhnYHWWI51tEE8z/gEX7ISKZDdGQZr/I= X-Microsoft-Antispam-Message-Info: iJvS17CwqlHLf+ws6PK8MKQy2w1mrUuaZ2ymU+tWRk3ggwWjFDL3H1VpoGb14lkrN91Z7MF4NJBPP3upMrcANsYVCrGgLeLUvDcQe5xmR5vaYhR+lpvir6K83a0wOo5PAgr2G/yLbpd0ATIrndvnrYQGceP2gQNyeV0ywTH0+BiIkxaGbFvzqn7Jas9JBOb6vU69BNiSxTPdYv8zVloqvYFiCDzQ6U/RyUuFtVQW38SwMGEXGIG0v0HjsAuJfn17SUroa9hsuGZy6lF/m9H+4WFWUZPW2SW3Fmq7itaxxWmxmXz5rbbhf2yDmbwc4b+EqrEXdOc+gzqOmjD11p1GTfTAEXNN7k8dp/BrvCmEA/c= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:mOQnubDq+spOPUM7qF7O2QJi+ldsKL1DHL/iUFyL1y2Q6bO5EV2sQKr49zQfF3y1NCX2l2kL38UJl0xrMbNptp2C7DXBwB6DYtDtjD9/QTd2XtclEHXKJKasZP3ZQPQcJubzkStKQnAXbkUavAaBtgrpShOEYP1eXxmIYGgZ8NbhK7DLFjC4cWpjuyaGVajUiHJf1b8wJQEmxQYyXfB7KnO+svQOAjBS5P+nieu4MnmKiCoN55iU74m2fAxsnhVPXrHA1eNtj3rIHcgsNrbsf1dcBZpt7skBxqgn/OHnypDpWZ6cVnoBJs/Kq3zctb70OhSqZEi7dWbVXY9MwfvH5QkDBTh1NV95AGhRwElQXQZ2p4YnwPUIwBhU3v9h3uLmPx2CSZOKuwAHnl6xOaB+HX+Yk0T95SsLFC0yQHhFKm4hCJuEkordJ5ssN88iUr9YkUgr49WJVYe1zY3W1hiLFA==; 5:f+sq/ix9mSI46nj7uQ8faVsSHVhm+uXsX9tEImddyeRLCxCXkNUbr+2D2bYW1RqjZfS0lnmKh2ylcyOTn0MG2V7Gl/Qj/a+vVM7TpYm6AsaKSvasULXqhrRfFfvmLuuPB6NJ0NfEIfZLsGF8eM5M4YnfQ23uJAS3ZhtN8RmidvU=; 7:yk5Ah49TX8mVsTbrr+V3KGwI+ch8G646NAFXXiE2c5Vdsuxc5/MtTuY5M4XQalejDYPjOXRvY1cnqTKgqRhUzIfdUoCBeNX1nMeKgsETugYUGoB36qGBjs1z+233zhUl28BVlbIT30mQZaHHTz1M0ligTLjGMpvhm/pb//ELjy3rIB5Lcs9T4YCEqgPrG9z9fZbAl1thGTazYqMzHdOVPGmUaocDk6FYSbg6dUkDSAT/BBQzLg5rPGdCQHF0lsUp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:42:59.9920 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e298c970-0c86-4ff1-1993-08d5f24db036 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 2/6] compress/octeontx: add device setup PMD ops X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add compression PMD device and queue pair setup ops. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.c | 71 +++++++++ drivers/compress/octeontx/otx_zip.h | 57 ++++++- drivers/compress/octeontx/otx_zip_pmd.c | 253 ++++++++++++++++++++++++++++++++ 3 files changed, 379 insertions(+), 2 deletions(-) diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c index 7a1dd58..7c81db1 100644 --- a/drivers/compress/octeontx/otx_zip.c +++ b/drivers/compress/octeontx/otx_zip.c @@ -18,6 +18,77 @@ zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val) *(uint64_t *)(base + offset) = val; } +static void +zip_q_enable(struct zipvf_qp *qp) +{ + zip_vqx_ena_t que_ena; + + /*ZIP VFx command queue init*/ + que_ena.u = 0ull; + que_ena.s.ena = 1; + + zip_reg_write64(qp->vf->vbar0, ZIP_VQ_ENA, que_ena.u); + rte_wmb(); +} + +/* initialize given qp on zip device */ +int +zipvf_q_init(struct zipvf_qp *qp) +{ + zip_vqx_sbuf_addr_t que_sbuf_addr; + + uint64_t size; + void *cmdq_addr; + uint64_t iova; + struct zipvf_cmdq *cmdq = &qp->cmdq; + struct zip_vf *vf = qp->vf; + + /* allocate and setup instruction queue */ + size = ZIP_MAX_CMDQ_SIZE; + size = ZIP_ALIGN_ROUNDUP(size, ZIP_CMDQ_ALIGN); + + cmdq_addr = rte_zmalloc(qp->name, size, ZIP_CMDQ_ALIGN); + if (cmdq_addr == NULL) + return -1; + + cmdq->sw_head = (uint64_t *)cmdq_addr; + cmdq->va = (uint8_t *)cmdq_addr; + iova = rte_mem_virt2iova(cmdq_addr); + + cmdq->iova = iova; + + que_sbuf_addr.u = 0ull; + que_sbuf_addr.s.ptr = (cmdq->iova >> 7); + zip_reg_write64(vf->vbar0, ZIP_VQ_SBUF_ADDR, que_sbuf_addr.u); + + zip_q_enable(qp); + + memset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE); + rte_spinlock_init(&cmdq->qlock); + + return 0; +} + +int +zipvf_q_term(struct zipvf_qp *qp) +{ + struct zipvf_cmdq *cmdq = &qp->cmdq; + zip_vqx_ena_t que_ena; + struct zip_vf *vf = qp->vf; + + if (cmdq->va != NULL) { + memset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE); + rte_free(cmdq->va); + } + + /*Disabling the ZIP queue*/ + que_ena.u = 0ull; + zip_reg_write64(vf->vbar0, ZIP_VQ_ENA, que_ena.u); + + return 0; +} + + int zipvf_create(struct rte_compressdev *compressdev) { diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 8a58f31..1289919 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -77,8 +77,54 @@ int octtx_zip_logtype_driver; ZIP_PMD_LOG(INFO, fmt, ## args) #define ZIP_PMD_ERR(fmt, args...) \ ZIP_PMD_LOG(ERR, fmt, ## args) -#define ZIP_PMD_WARN(fmt, args...) \ - ZIP_PMD_LOG(WARNING, fmt, ## args) + +/* resources required to process stream */ +enum { + RES_BUF = 0, + CMD_BUF, + HASH_CTX_BUF, + DECOMP_CTX_BUF, + IN_DATA_BUF, + OUT_DATA_BUF, + HISTORY_DATA_BUF, + MAX_BUFS_PER_STREAM +} NUM_BUFS_PER_STREAM; + + +struct zipvf_qp; + + +/** + * ZIP instruction Queue + */ +struct zipvf_cmdq { + rte_spinlock_t qlock; + /* queue lock */ + uint64_t *sw_head; + /* pointer to start of 8-byte word length queue-head */ + uint8_t *va; + /* pointer to instruction queue virtual address */ + rte_iova_t iova; + /* iova addr of cmdq head*/ +}; + +/** + * ZIP device queue structure + */ +struct zipvf_qp { + struct zipvf_cmdq cmdq; + /* Hardware instruction queue structure */ + struct rte_ring *processed_pkts; + /* Ring for placing processed packets */ + struct rte_compressdev_stats qp_stats; + /* Queue pair statistics */ + uint16_t id; + /* Queue Pair Identifier */ + const char *name; + /* Unique Queue Pair Name */ + struct zip_vf *vf; + /* pointer to device, queue belongs to */ +} __rte_cache_aligned; /** * ZIP VF device structure. @@ -104,6 +150,13 @@ zipvf_create(struct rte_compressdev *compressdev); int zipvf_destroy(struct rte_compressdev *compressdev); +int +zipvf_q_init(struct zipvf_qp *qp); + +int +zipvf_q_term(struct zipvf_qp *qp); + + uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index 4d92c9d..b670f87 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -11,8 +11,261 @@ #include "otx_zip.h" +static const struct rte_compressdev_capabilities + octtx_zip_pmd_capabilities[] = { + { .algo = RTE_COMP_ALGO_DEFLATE, + /* Deflate */ + .comp_feature_flags = RTE_COMP_FF_HUFFMAN_FIXED | + RTE_COMP_FF_HUFFMAN_DYNAMIC, + /* Non sharable Priv XFORM and Stateless */ + .window_size = { + .min = 1, + .max = 14, + .increment = 1 + /* size supported 2^1 to 2^14 */ + }, + }, + RTE_COMP_END_OF_CAPABILITIES_LIST() +}; + +/** Configure device */ +static int +zip_pmd_config(struct rte_compressdev *dev, + struct rte_compressdev_config *config) +{ + int nb_streams; + char res_pool[RTE_MEMZONE_NAMESIZE]; + struct zip_vf *vf; + struct rte_mempool *zip_buf_mp; + + if (!config || !dev) + return -EIO; + + vf = (struct zip_vf *)(dev->data->dev_private); + + /* create pool with maximum numbers of resources + * required by streams + */ + + /* use common pool for non-shareable priv_xform and stream */ + nb_streams = config->max_nb_priv_xforms + config->max_nb_streams; + + snprintf(res_pool, RTE_MEMZONE_NAMESIZE, "octtx_zip_res_pool%u", + dev->data->dev_id); + + /** TBD Should we use the per core object cache for stream resources */ + zip_buf_mp = rte_mempool_create( + res_pool, + nb_streams * MAX_BUFS_PER_STREAM, + ZIP_BUF_SIZE, + 0, + 0, + NULL, + NULL, + NULL, + NULL, + SOCKET_ID_ANY, + 0); + + if (zip_buf_mp == NULL) { + ZIP_PMD_ERR( + "Failed to create buf mempool octtx_zip_res_pool%u", + dev->data->dev_id); + return -1; + } + + vf->zip_mp = zip_buf_mp; + + return 0; +} + +/** Start device */ +static int +zip_pmd_start(__rte_unused struct rte_compressdev *dev) +{ + return 0; +} + +/** Stop device */ +static void +zip_pmd_stop(__rte_unused struct rte_compressdev *dev) +{ + +} + +/** Close device */ +static int +zip_pmd_close(struct rte_compressdev *dev) +{ + if (dev == NULL) + return -1; + + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + rte_mempool_free(vf->zip_mp); + + return 0; +} + +/** Get device statistics */ +static void +zip_pmd_stats_get(struct rte_compressdev *dev, + struct rte_compressdev_stats *stats) +{ + int qp_id; + + for (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) { + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + + stats->enqueued_count += qp->qp_stats.enqueued_count; + stats->dequeued_count += qp->qp_stats.dequeued_count; + + stats->enqueue_err_count += qp->qp_stats.enqueue_err_count; + stats->dequeue_err_count += qp->qp_stats.dequeue_err_count; + } +} + +/** Reset device statistics */ +static void +zip_pmd_stats_reset(struct rte_compressdev *dev) +{ + int qp_id; + + for (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) { + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + } +} + +/** Get device info */ +static void +zip_pmd_info_get(struct rte_compressdev *dev, + struct rte_compressdev_info *dev_info) +{ + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + + if (dev_info != NULL) { + dev_info->driver_name = dev->device->driver->name; + dev_info->feature_flags = dev->feature_flags; + dev_info->capabilities = octtx_zip_pmd_capabilities; + dev_info->max_nb_queue_pairs = vf->max_nb_queue_pairs; + } +} + +/** Release queue pair */ +static int +zip_pmd_qp_release(struct rte_compressdev *dev, uint16_t qp_id) +{ + struct zipvf_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp != NULL) { + zipvf_q_term(qp); + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + + rte_free(qp); + dev->data->queue_pairs[qp_id] = NULL; + } + return 0; +} + +/** Create a ring to place process packets on */ +static struct rte_ring * +zip_pmd_qp_create_processed_pkts_ring(struct zipvf_qp *qp, + unsigned int ring_size, int socket_id) +{ + struct rte_ring *r; + + r = rte_ring_lookup(qp->name); + if (r) { + if (rte_ring_get_size(r) >= ring_size) { + ZIP_PMD_INFO("Reusing existing ring %s for processed" + " packets", qp->name); + return r; + } + + ZIP_PMD_ERR("Unable to reuse existing ring %s for processed" + " packets", qp->name); + return NULL; + } + + return rte_ring_create(qp->name, ring_size, socket_id, + RING_F_EXACT_SZ); +} + +/** Setup a queue pair */ +static int +zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, + uint32_t max_inflight_ops, int socket_id) +{ + struct zipvf_qp *qp = NULL; + struct zip_vf *vf; + char *name; + int ret; + + if (!dev) + return -1; + + vf = (struct zip_vf *) (dev->data->dev_private); + + /* Free memory prior to re-allocation if needed. */ + if (dev->data->queue_pairs[qp_id] != NULL) { + ZIP_PMD_INFO("Using existing queue pair %d ", qp_id); + return 0; + } + + name = rte_malloc(NULL, RTE_COMPRESSDEV_NAME_MAX_LEN, 0); + snprintf(name, RTE_COMPRESSDEV_NAME_MAX_LEN, + "zip_pmd_%u_qp_%u", + dev->data->dev_id, qp_id); + + /* Allocate the queue pair data structure. */ + qp = rte_zmalloc_socket(name, sizeof(*qp), + RTE_CACHE_LINE_SIZE, socket_id); + if (qp == NULL) + return (-ENOMEM); + + qp->name = name; + + /* Create completion queue upto max_inflight_ops */ + qp->processed_pkts = zip_pmd_qp_create_processed_pkts_ring(qp, + max_inflight_ops, socket_id); + if (qp->processed_pkts == NULL) + goto qp_setup_cleanup; + + qp->id = qp_id; + qp->vf = vf; + + ret = zipvf_q_init(qp); + if (ret < 0) + goto qp_setup_cleanup; + + dev->data->queue_pairs[qp_id] = qp; + + memset(&qp->qp_stats, 0, sizeof(qp->qp_stats)); + return 0; + +qp_setup_cleanup: + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + if (qp) + rte_free(qp); + return -1; +} + struct rte_compressdev_ops octtx_zip_pmd_ops = { + .dev_configure = zip_pmd_config, + .dev_start = zip_pmd_start, + .dev_stop = zip_pmd_stop, + .dev_close = zip_pmd_close, + + .stats_get = zip_pmd_stats_get, + .stats_reset = zip_pmd_stats_reset, + + .dev_infos_get = zip_pmd_info_get, + .queue_pair_setup = zip_pmd_qp_setup, + .queue_pair_release = zip_pmd_qp_release, }; static int From patchwork Wed Jul 25 17:04:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43361 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 C188D44CF; Wed, 25 Jul 2018 18:43:09 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0072.outbound.protection.outlook.com [104.47.33.72]) by dpdk.org (Postfix) with ESMTP id 8A7D4378B for ; Wed, 25 Jul 2018 18:43:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MMpZ+X+PN3GWvl4cYIDdsvzPRVY/Wb+ODMcMqphx/KE=; b=LCC/VsXioclEK0N4Mj6ZpPMXHCnwYppBEoy7yQHaYybH/DnmdpdsL/t+EGDk6TJvW6Qc43hZ3g6EgRkPzl6/M5wEdr24UFHMy0dTU6+5nDJswgEij4GlNL0pZPCeqvaSD9M6KHJwn0UUmxMVghpnaxeIV1xcg0RwbiVySadBv0w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:43:03 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Wed, 25 Jul 2018 22:34:53 +0530 Message-Id: <20180725170456.3319-4-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71ba8bd9-aa63-46dd-0d90-08d5f24db225 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:wLiLW34ggcDASbdFx2YWaHOCUc7gGJgVBmmiYbYjgNE6HWTQtHZrFwnb84KB8sQrQ065zY0ON4UxBA6nfjbK6edKbNqHPbnvCwC5OSSJAWJvjfJZMrZJzmQ+5wKo5uR0s/a9oHq3nVFz8iaqeGI2OdRH3+de7eFgTzLpKzDg+D5tQIKK5rMM3lxKUwQ9OYskSa0PxxQXNuoxqay7ORLYGuTSXrFrrx538S1gbqcWjGrjFT21OQy9dnS5jjm6VcvW; 25:V5nJWglbQJgRskGwfGAER5XQEDKvL3GQl4ommOzPmuv+19WpIiFZe7i9+f8DppT6/ylUSXQuHvYsqenBnPUaSRfOPJCM1cbrTplCk/mWwUDJ6ru+DKpCrE91Q72ah72dE9V23kkwH+DMXGDVZllJlCTqBjQkjKYd2YuCkrJxcgMMZ5j3ScYqAaD2MOAbafo7t6l/c1m3m8nQcg1tl5kgaYeV9fOdFhM5vf2khlS7Vnm5u2Vv79eVR4AA4X6Q7ZEAKFsxbl/4+KGbZPGKnZZzW5wL5H+NEaUhNW1JgpjjZztaH8MqJ+lvE+NHrcfFW9qCcSjH9KycHvzY7EYD0ffOiQ==; 31:yGKVutE7MLrwxatzIyy2Z1xy/L2H82yPfL/sFkIsVwjssZh6t21IWOTRZ7mnlCSNqTxaZfwdBjkaorlpOhEBpmRSBLRLk1llejoLQTf4aHR5WHDpepofWIiuGrjlOroN5kmeN5gIZcpWZze44J5cpvK7jd4SLO0rarR9c8mDi5Uvr7xwGCRaBz8qRZ2QJc3KLxkZ7iG0DBBWj7blY+P8KGWmMtMTdkSiOoZRsUUfqns= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:ghwROezBETWY6kwH5aysjVOtvPuC1knVUwBPLeNxKmXUhoFj0PurqOGNmW5woKOxjSxhQ2l+b2sB1jcCzBGykGSH8NjsGhIipgV7Qp2v1PP8OI8qMeguW/AXZBZTboytKspk1YJrQSZiUfSzQ8lbnhc5hmrv6/aD9yd3XcoNvwCp2RUtw6DodF7RgIUqnt9J7gihR4NQJOOftJMIc97DlFOvSsxbZ0R+a2ccjknAJxp9m1wJkk/gW1hUaLsh11Xcb2rjVotefzI2OxLyVIxwQkqFSbGojwn2w5kpBPMZz4KyXjQXCWYm2Kp4Gn2Vw1r9+3pV+KJg2gM+FFuW2NFkrxT2xnbsIPHcQjBFMf2A76CeeiwOJgpviKXrMsTBQsbTMogotBmev84oh3lHNF5nFpBuCcyCxawvB7NbJOVcotbFrKpBhDbRFbnUYKxRDTNON9MeZ37KoLNZRkUPLgjf+nvpQoEdSysxUO91Kc5cv4tFGLspltK3sbQNjcXNWvUYeVYdco/kcc0WwksPYOP61Ej7g5rbvkVNb2JkD5jqsnJ5Pu8cuFK/0Q6LsS2vYbwkL1aQ4+Akb7x9okJAFYZ7rb1z6EQeXCv0wa3WJr7zXBA=; 4:MQ4r+QHEZqjsJRDxQJzHR6jMP3mAhQMKUVqg7y0pFzuHrHfFl3KfTLEYMNw+XQxvw02bpFuI7BGA42aV/K/EAiTcV27gyRybcImpCu0siS+M5Ueoxy4mkHAhc/cAVvTSgkycG1FGoTG11Lf29vBw73aQAEQZNuM/r6Zb84Di0CA7zCW5KM+yZFAKdWat+GwK4Tp/Ps6qjQkhFjdElxgq09A0vyG4UrM9g6LJ5Dl/GGsbF6pMpp+uxp97F8yf1I08xk2nviVN06pJe53NweZ0w9YFmNyGkedpXDQ129WQT/OgHjKuq3d7xCaFZjp26JN2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(14444005)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:LIdSED4sOtGBKSAVeH0aO/TpzLvPcTUDz/9Lzqu9P?= HDXYEeISywKV9E2OLr57wVNYMWLff2w3jPx1mVXZyRx9UBAxXMxi80qsMszYzNLDArg7Sdvw8UJ44VE12ZLbiMiludJJ7Fk+gNW1AQjtIjKFYJsMPE4IIvmLwXCvZj3LMLL8eu+hdpYfPm0wERmRpt43QY+pVnDmyy+wKD47cb+cSMsK/5c+NXHprDmq8aqQVpMRX43iFmjzjEV+ybjJEz5ov1ed6S4HGJzmfe87JyKsDdjtQShc3oIE+V2d19OxB2IEb6k5SK31WHWCGGm7O73LBdammTLYvwZ4TW8hmm/aXjvEJEDXVB1G7NIHrj1ypMEji5J2hyhGVv5/UYk9weWu5uIpcoCbpUXCpIP+qqHvC/HcyAr3p5GGehqYm77kTdEWZ7T5Z8F3x6FA3ZcxI1zbL/xOL3pCbPDmB+H2qH5ru0U+xtRWi95cSdEdlu1lKRRpgHp4nCcjy57ajnorz76ssUEDy4iUAtZtZwT63E5kirOOieFkrA2p0xXSS7g+Xywq9aSzdZTaff626k8Gc0CSG/b/6YPJY8GxxSu98ul49xWelfBxldGL4rETIcYkB8IO5hHN/FbDgmUxPbbTBNBczUaXoZXhDC0AsaauTEgsgosrwMXvZ1Lm/9+6t6OfcihduFq3TGFAsRxRg/gfz4Zmv+DIHHgF9SdFKnFiPtVDqlnzegDhFtkuCIESA/JoHNzat4YG3Q/LXfhdMcMqJOa8NyjNmg2tpmrYmxFyAGhui9aq8n9t8TS1ORaoELtdGTTUNx0UQYXhWl8kxHnI7+U4/11RiELaqPwDzyHTCu2fBAqW+zCAfmjoE3FrRh8W4RkX/SVeNTU/qgOS5wGlCLtUf2H2oDBvnPkCpRV6h6XCIUdeiBCjexseolIMDt/cIkgb6aK937/Qmcv7j1+KgAPo7RLdUTp+JJLj+H7Bc4XKzUkF9oP44+85SX4vXzqtimY5+l22HH5EQmqzRSkvKNLOyfE40dOF9Il7GGsqq26D/TfV6YEM1Yhx8uUKgNYkydfQXeRAv3kxkW9AyuBpxCCb3lbLCjlaAg/zB+4mVemZacyFNkqGC9Hl8dRf/1ETjnbUt+3G6XSqwKkeWbRbNzwP0wLYgHaW0USxUHD34+AFiyVqBfjD4W65/Ms6J8qUo+phAALYS9O2c8HG3Ihfm1pYX5tBX1bNADhiH3eet+7Bte9Fs8z5VnQh+Ud7j+sGTnRqpRSOtUSFhfoQndmDO5S988NVenskJXJTeqTMzHop1Uf34V/3pFsXlA+tyriyYfkQlHB9D1WGIaxqs0ZB4g7xN0aQ1fMJOsuRNyLY6Zxp+iyMdL5z0kF8SPeztrAqOo= X-Microsoft-Antispam-Message-Info: 2O2sqX9NM/Z6OgAtxOnzfTYn6ZvuAFwuGtdur5xiaf0QBiHU72S6WT7whUowYSJJuu9MblJ1qfyU7xtFZ4l/10b06h2YwDb0gXjwJoUxSC3i8J0+oegxgJtAlqM8G9xHbKnPaAARKKYZtvtVaKwoa+wSRnLv6VgMd9jTQTv4in3NK37+K2eGolaAbEkkQebmGk94vUDojeETQz8w2z33lmiJic+Yc4k/bt6JbkN5mSjHlTO05+sZKQL4gh+woGBaqlj+0hQHk50xODLSuhGo011ieyb8Ckx9142nj2XNUF+1CWpAC2dl0Xtemkhhr4ROCgYjGhCcLBtnKdcKJTNMNubZoDTWKyUszg9CjAGWM9M= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:QzGWWNE6eAu6V+a3mjdUfq8dSOOS9eu9nqEYbR54dKYM1iTFNYlREQNqepp9+nvL9u5iHCYnEg1ZgNz3cEUcZb5QBFjpcxQ7MhDna7HcdVEGuc9UBB/K8GAXdTOp9R9aR1ksF8sA6B5IvVK8eOLtJu/ysutxP1e7BergKbQlUtTAUedEs08LwXvNnCpbwVwjfYphfUgDrFu8ny+fHLk2iEhVBaPXtbxS5xzC4Tf4iMximqXbLN7C93t3HDVLWZpgIlEGbVngCMX3va3+vBP4WCyM4HouHHIZoj2hAioNA8FIyi3cd+S6GvuOAU1BXexP4/Q+PUFpb2g4p4e4h+uVZOk9b3/78dhFVOuyEhAPOWgpdrlkT43yJnUghkIbhc/qk1QJvSbuJ7nJ08VBdltd8x24H4dohTv//JyZFB7QTZAhQUh1AapNVDS13AWXgv6WDaltOIDbzW38u19NFyc1yQ==; 5:joH34ZJaWbC3LR+/rOg3wIIOM6kGHRUEkeaUHvXUElhkzP8Eika8ItevPc7sZ7k6pXZMuN7tnO6G7aUr2AqpV5LS6BnYtPyuFw0jzKpcT0KrqWU0hQowXdxTqxvrCz7zkBtUuMM2wOegDxb/fwZ+koS7qZ/xeHSPaKkpB05FDjI=; 7:jHfJD65lD3o1G8NRsM4dYza+Em+nur1Db3fnX6shAAoS3Sdlg8OfIxgrXkK9p1t9IKYp7kJjGiZ3rG7+5rJjnfhSIx1J7qUyLOwH2+aiq44hth4QWGFxSGNXeO2eYDuGa8absFu0r0XMqcrh3L3W1whBuFAq7cs5Znqn/ruK3tdYa3NDEW5oYLSuxCQ+ufgtFArTdi0bCR2ov/ZbdHDb8TQPKn6DUsgZ2/Bf3Ee30ik9VguI+kI0jhGaSzf4e4gh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:43:03.2828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71ba8bd9-aa63-46dd-0d90-08d5f24db225 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 3/6] compress/octeontx: 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" Create non-shareable private xform for applications to perform stateless compression/decompression. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.h | 19 +++- drivers/compress/octeontx/otx_zip_pmd.c | 149 ++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 1289919..3fcd86a 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -90,9 +90,24 @@ enum { MAX_BUFS_PER_STREAM } NUM_BUFS_PER_STREAM; - +struct zip_stream; struct zipvf_qp; +/* Algorithm handler function prototype */ +typedef int (*comp_func_t)(struct rte_comp_op *op, + struct zipvf_qp *qp, struct zip_stream *zstrm); + +/** + * ZIP private stream structure + */ +struct zip_stream { + union zip_inst_s *inst; + /* zip instruction pointer */ + comp_func_t func; + /* function to process comp operation */ + void *bufs[MAX_BUFS_PER_STREAM]; +} _rte_cache_aligned; + /** * ZIP instruction Queue @@ -156,6 +171,8 @@ zipvf_q_init(struct zipvf_qp *qp); int zipvf_q_term(struct zipvf_qp *qp); +int +zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd); uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index b670f87..16f581b 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -28,6 +28,103 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/** Parse xform parameters and setup a stream */ +static int +zip_set_stream_parameters(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + struct zip_stream *z_stream) +{ + int ret; + union zip_inst_s *inst; + struct zip_vf *vf = (struct zip_vf *)dev->data->dev_private; + void *res; + + /* Allocate resources required by a stream */ + ret = rte_mempool_get_bulk(vf->zip_mp, + z_stream->bufs, MAX_BUFS_PER_STREAM); + if (ret < 0) + return -1; + + /* get one command buffer from pool and set up */ + inst = (union zip_inst_s *)z_stream->bufs[CMD_BUF]; + res = z_stream->bufs[RES_BUF]; + + memset(inst->u, 0, sizeof(inst->u)); + + /* set bf for only first ops of stream */ + inst->s.bf = 1; + + if (xform->type == RTE_COMP_COMPRESS) { + inst->s.op = ZIP_OP_E_COMP; + + switch (xform->compress.deflate.huffman) { + case RTE_COMP_HUFFMAN_DEFAULT: + inst->s.cc = ZIP_CC_DEFAULT; + break; + case RTE_COMP_HUFFMAN_FIXED: + inst->s.cc = ZIP_CC_FIXED_HUFF; + break; + case RTE_COMP_HUFFMAN_DYNAMIC: + inst->s.cc = ZIP_CC_DYN_HUFF; + break; + default: + ret = -1; + goto err; + } + + switch (xform->compress.level) { + case RTE_COMP_LEVEL_MIN: + inst->s.ss = ZIP_COMP_E_LEVEL_MIN; + break; + case RTE_COMP_LEVEL_MAX: + inst->s.ss = ZIP_COMP_E_LEVEL_MAX; + break; + case RTE_COMP_LEVEL_NONE: + ZIP_PMD_ERR("Compression level not supported"); + ret = -1; + goto err; + default: + /* for any value between min and max , choose + * PMD default. + */ + inst->s.ss = ZIP_COMP_E_LEVEL_MED; /** PMD default **/ + break; + } + } else if (xform->type == RTE_COMP_DECOMPRESS) { + inst->s.op = ZIP_OP_E_DECOMP; + /* from HRM, + * For DEFLATE decompression, [CC] must be 0x0. + * For decompression, [SS] must be 0x0 + */ + inst->s.cc = 0; + /* Speed bit should not be set for decompression */ + inst->s.ss = 0; + /* decompression context is supported only for STATEFUL + * operations. Currently we support STATELESS ONLY so + * skip setting of ctx pointer + */ + + } else { + ZIP_PMD_ERR("\nxform type not supported"); + ret = -1; + goto err; + } + + inst->s.res_ptr_addr.s.addr = rte_mempool_virt2iova(res); + inst->s.res_ptr_ctl.s.length = 0; + + z_stream->inst = inst; + + return 0; + +err: + rte_mempool_put_bulk(vf->zip_mp, + (void *)&(z_stream->bufs[0]), + MAX_BUFS_PER_STREAM); + + return ret; +} + /** Configure device */ static int zip_pmd_config(struct rte_compressdev *dev, @@ -253,6 +350,53 @@ zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, return -1; } +static int +zip_pmd_stream_create(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, void **stream) +{ + int ret; + struct zip_stream *strm = NULL; + + strm = rte_malloc(NULL, + sizeof(struct zip_stream), 0); + + if (strm == NULL) + return (-ENOMEM); + + ret = zip_set_stream_parameters(dev, xform, strm); + if (ret < 0) { + ZIP_PMD_ERR("failed configure xform parameters"); + rte_free(strm); + return ret; + } + *stream = strm; + return 0; +} + +static int +zip_pmd_stream_free(struct rte_compressdev *dev, void *stream) +{ + struct zip_vf *vf = (struct zip_vf *) (dev->data->dev_private); + struct zip_stream *z_stream; + + if (stream == NULL) + return 0; + + z_stream = (struct zip_stream *)stream; + + /* Free resources back to pool */ + rte_mempool_put_bulk(vf->zip_mp, + (void *)&(z_stream->bufs[0]), + MAX_BUFS_PER_STREAM); + + /* Zero out the whole structure */ + memset(stream, 0, sizeof(struct zip_stream)); + rte_free(stream); + + return 0; +} + + struct rte_compressdev_ops octtx_zip_pmd_ops = { .dev_configure = zip_pmd_config, .dev_start = zip_pmd_start, @@ -266,6 +410,11 @@ struct rte_compressdev_ops octtx_zip_pmd_ops = { .queue_pair_setup = zip_pmd_qp_setup, .queue_pair_release = zip_pmd_qp_release, + + .private_xform_create = zip_pmd_stream_create, + .private_xform_free = zip_pmd_stream_free, + .stream_create = NULL, + .stream_free = NULL }; static int From patchwork Wed Jul 25 17:04:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43362 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 07FBC4C88; Wed, 25 Jul 2018 18:43:13 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0079.outbound.protection.outlook.com [104.47.33.79]) by dpdk.org (Postfix) with ESMTP id 59BC049E1 for ; Wed, 25 Jul 2018 18:43:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OK+jHJFXV63TlxYPOIPzmCN7gOcxYTUo1eW7BmHl2RM=; b=iCfaxQRZ2pWYo96G9U7P2HNZKyh8H36RrN82mkh/RER1jUL8lAutbfbbqI1JemeBMPutptgz8Qa+3OOMCp5goGx64dp2PxcQH47A8QjqHbav0uRxodc6ZCwJxHKLODZTb7f2TzeY3YrMc0BDsqvdgFic8uNASw627thbDFXjIz4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:43:06 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Wed, 25 Jul 2018 22:34:54 +0530 Message-Id: <20180725170456.3319-5-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b99c4b67-49ff-44e9-6c4f-08d5f24db3f0 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:ECigK/CDBHmBluY95fsFsfv55en8PZGBbAZAgxDPEHStQkQViy1cg15lRvTvxdVDoKxUEDnVg2ZwcYK9D4U9CqvKXKwKZ/QIfcDd3bi2IoNpJb2kOf1voYzmyhYoGcAJaKsdLVWdB05FM1t5KvFCq42KYhVIC/IiMVSqEVzxo9Ho9sJouaitVMC7NRn5QFymDd0XDZ2q6vdA4cBDlkYKPoxjWlV+eEawkaYNa4qC3h0+7k5PFWAebXQSa1B48FWK; 25:7nWALGOH+iPnCfBPcgvcuE1WQ9eBsDrzEXQAXEzN5rTlx/O/aaYHRx97SXT+8zAS9Nm2gSVmm9m5cJYrOLKR2rExiNXWNKKVjuOST1rUyynKT6sHUzoUB+2xZuF8f0QsmRgQm/Vi+lSRY+7waDyBtil1pkKKa0y2nU9gq4S60eaNbcQLW4g6JgGGxmd5j/fDdjMJtLlOREGwc79Zn7dxlXtQxICXo+PTnO2Oc5kzqUOMneXKyR97z86ual4+enOmfF+4oHI2Ue9HE2JWb4URcRsUonq67+G5nIvePhTkTysnfVvpB/5zKx6snbj2en0su6hG4koeeum3EXaWkoSa/Q==; 31:7vJuVqpTkSHifFdZ3EUNig0A30xMMAy6oExwzafyM27xzrvSC+AtPpAs+FNppWpASOu39NJ6p1topNTEAWvbt1XnqVfUXBu9mBq/LHfceCsNyst/yLWlWp4TnLE/HTTI3+11cIiJJnf8fnkT+2lMn0Mm3XxFTc8RabhhQjxfoDVlKbns/l8tNY2Hm5d6OdlEuWOvvyXHHRd1XuzJ2KOXIWgD5fbhz5EejN6bgNxwRq4= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:p7pQh8qpptkHOyx4cn4g5gYudgwoDih9/5JHl3tOR3wK5tYYwovKRB5bsGx23ldospF57YYiwVaW2MCt6InzLKwFayoBFosFoSJRkV2R+hyDo3CXF2GXCVp29H0e88YZeI9uMLwiu73vIT4KKpO4fxMpcgEkPfYfCxYCac7IWG874sh7lbqSW6vxtUWWseGjPNt+PCZggZffYGBGj9MQFXduFrRW2Unbxa78c2M1SeblrFziMszQX95P9UBOqKgzgQOW623lH0zhGcYxaqlE5pU6KAVuvpvez+4UA3HwWiy6vuRvE/CHmwMzE878jYkV51u+xxeDEO2s+Zx4LHUyvDjJtolu6yMdqE1U5rbb5mbcOhTe26YGl4w6EgbryZhpnONy+KMFMz0FiJSl4rC52CGFa+xf8vggbxZoB3v9+7vRRJ5Lhwy54Klb3p2hD0HV0/0wWocgdflFs0Ox9yIa5Srym0m7BZvWJA+uJy5rXvW/YsBiP8MSLdh5Y9X37AZ40TQEzujlDf7jWMdX2IIxVYY9az11MQ8Uok8d1soaLYDMOK3w/4/L7HtTynwNH3pZ9P4AaTRNue924cnMVgc1Tqpih99sVbqKFRntwoXGfG4=; 4:J4um4jDwHW17G0wrxNMiCOmw+KYzgv4oQ2j6i5Ijll2gMRDdW+53/kvBIDrC+bkChn2TBBDTuHrQnDsZe66ZHvGlrgM0veGzaDDQ57+jBMcFZXmHXqx2RQZZrL/Wxvp2pcRvR/lqVhWj7uSe7/0HnFxRZ8XAD7P/YHVN5ZqqyfQM5zKk/qMrWFwADD7CZKSiBUmsYA4VxhDyiv40jP5wgsL8+Bfu1lDwkiTgGs+L9IuBacokQ04qN1dKkB4Eqg6IPCRCKG6/zrtLg4MKFv5kzQ== 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)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(14444005)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:/voOwR1GQnE7iyjMCtNHLpNjaJzjgSm/4MAdskH1N?= NyX29ymEnnLYhelXtb1oqKqlHmEpX+G/DGkKTecop12aW88OtLlSFI/6az71JTFp88U/6hkIECYkryfYX0ju/dEl6ylCOOoOasbxtTIiUvTDPn2KxufHk9Srw1SHpQTHcnENBeBjQgJ1bp9cUfJvh4NBV9KXjqRuD8SDjI6l/1YEChO9qpBFaW6LpSxc++b9fJkYxuiQivxmXjpMDYWiiU3dIrJeCBMqSy58MvLJTeH2teLhEWz0DGAsau3Q+xpARLvDZL6CXeeOVmN1DosfXzqP8GCDBMRy0EXKr3vdbKCrxYghtsbdkczsvo4LtnRWnYwGt01fyoob7282NO6Gm3Z767ml8Xv60hGri8GZ0Wl3L+7xD2bug+drxf/w2FfjetGFtQ9TooTOgElQGAMGuUAERf/lpZCFqcmrkrIAydfAnNRJdkvyr8efglTjwHiwYAeoPrahVclY05H0bBQ7ObQPP5csu/dWmuSjg2yqTnucBN7POKK2A5D4DKju1x94a+m6MWORxB+qjKw0N7EWEzFf1biuiLtVDdmXuOLEnxpGU0gVdAl8yIHed9Xik7zaYILQFD6Z5OtS27xnWOUe19Ggma1hD7bhD+GqYFFKnTqLnDlaE58zQo/o1nobGrvvD0iUtE/qLPuX6d+mimQxej6hwnlvlYqCL3768Qx5qgC66JFxXhjSWfyHItyupORGUrw9Lj8HDCSGyJoulXcMQtcUmT6QUoHOmuEOCGjPvQjjIXHprAJSm3383+qi1PU0UCn+zCHbkwv0ISP734hwses4l5jCgyXlq2UIdJcGqytybXWvgngyZyl7EH8lqHavOM7zh3E23RHQ5DjV8j03kqAzJ3TbMvj5y3KN9pTtQfnk9gXe3fBWwrcmlqsegdAvjKJeTya3O95OpGhzexA/6Rs3x+cuyvJAt7XrtrJ2+rxCddASc0CbtlRsMmGBZMU4TI9nAYEbmBWIKD6ibSe3dQgVwh8PMh0ge3NaQMcuVcrco+ls/jtP/uSXyZ1lFFKKAzrjn7+zj1N5leMuK9ORkEUub3yh/LboNKQOL4dERXJQmGOkxXP8cnDjTKmV/R07sxwwsO1r9Lb9Z3MheOcFTZbpTGSGhg2iLrFcEwwEWSGfsSC9DV+3pPeTHyXFXdITyE9o7JH95xHq2dDTgDdAnsWDo1wkRteYw6deAEtOJzRgU1BjX6G+mh6BoryYhxfpA5U3kSo02Df1eacpyBbUiPqSGH4/9HcIhqMWTjQFtLsvSk+93tnC/CLwl6uT7TXsrGwg7NZ7kDpO1Xgu/4/SspN6FpVHASzg8hbcmsmMT2cn3jLmkdptdgF23RO/SUa5Bk= X-Microsoft-Antispam-Message-Info: 4oxAcSEb9XQNVYE2SWZGKovtjbfV7kTlyWhnYhGJhCywYEdmGXflM2QLSuDSxVmGgIOp9hHJjPDH65VwwK2y3Uf9e+HMhvG8tgpPBeUm25oRQKEDKgPqzdAwJ4bTH0pzLUD0ZiO7zV+6qsMrjrmycjPlpt5qlaJmmCoubKz62e47XpMpQ97jf2Gs5P+KSKXvKiyuQeeOkOL6WKfYS9VXdBr4P8iuW55sZmjbmwa8uSk82reH+kVltRcQjw33CSdRJ5BSW7M9KFiHJDirVm55UeCFeNA+ldLQrdRgCzQ0RoQOgUja7OrzKkVdVRF/FewL/uMBdKKnYBiYGayYHv1pp3qqeQnvjNr6WmDRWf9Mnaw= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:JRfGrcByCFJkmSTQwPHuPw+e/XvJxueIbCMrrvFmfHTQIOF6Omb6LpOzNlENyp2+Axl/Pmgut/Jy/kXhn04WjLM5+XQKZzj3I5xWua82HphlnQYUDBcgX1qYZZknVlyKYkw1O4Lis0rmZyu+YxtSpyGSSUZNkJOveQjPABwPV17DqfemlY5VwFAZM06CRyyI84p+ooSV/n1Zcn91hTBzxddrqLVpOqEG8asdfDHiEmCEp7nTXCppS1tk/KQ/rW6ppBHDX+RD3hNNdxMTu50Pu/PFqmkX4d6GCgqChBT1Pz3sYcQNBr/Csxvx+XJ7iVzS1+tIL+evg5Me1bZTuOSTX35hwBaQfg/Bb9KGUlO5nTQsc+OIZ0rs96T8NC1l0DZhQhmY8efruWILYYdIIYF3tXiliD0mYvsBKhny5P4hdZ9D1c5ODZoJi1DleYGt3zey9xN2HnPg4U8QCUDRzDRD/A==; 5:GprvuZfygBLDhNk0ATM9/VXXerqaGr1aeQw/DXBBfzC1m445FGnHroYyA3hFnwf9t5ZHmHBRllwSlpS6FQGvp/VvCz6M+Z7tk9h6OTGdu/M1zFr1FY73LQv5/apebVZolV6UJgcuyAL2m9JDlnVcmESSgT4bdaqB2YfbqRgnNsA=; 7:IU89sim3Hkjm9Ny9wpnTsvl1QoRl7DQ4s47WdULQT/QnSNj68Xn6Ul2x+NvoDsoRpGjrg6tDR4hRrHkHQjf85lYbWPGzA3rYbdpM38nmWvkA1UtHEBvH2pR7usW7MHDsWMR1a+8846+eL+vYMAf3n1OgXDGe8Km6H6HBlXKrF+/hfls/amK37lydCaVyII4AkOR25XtKao24EBH0BzthoNOo3P58ic7oP22Q9g07efKCAbT9lvGDBUH2d9zOgPBp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:43:06.3093 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b99c4b67-49ff-44e9-6c4f-08d5f24db3f0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 4/6] compress/octeontx: 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" Implement enqueue/dequeue APIs to perform compression/decompression operations Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/otx_zip.c | 47 +++++++++++ drivers/compress/octeontx/otx_zip.h | 96 +++++++++++++++++++++- drivers/compress/octeontx/otx_zip_pmd.c | 136 ++++++++++++++++++++++++++++++++ 3 files changed, 278 insertions(+), 1 deletion(-) diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c index 7c81db1..a9046ff 100644 --- a/drivers/compress/octeontx/otx_zip.c +++ b/drivers/compress/octeontx/otx_zip.c @@ -88,6 +88,53 @@ zipvf_q_term(struct zipvf_qp *qp) return 0; } +void +zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *cmd) +{ + zip_quex_doorbell_t dbell; + union zip_nptr_s ncp; + uint64_t *ncb_ptr; + struct zipvf_cmdq *cmdq = &qp->cmdq; + void *reg_base = qp->vf->vbar0; + + /*Held queue lock*/ + rte_spinlock_lock(&(cmdq->qlock)); + + /* Check space availability in zip cmd queue */ + if ((((cmdq->sw_head - (uint64_t *)cmdq->va) * sizeof(uint64_t *)) + + ZIP_CMD_SIZE) == (ZIP_MAX_CMDQ_SIZE - ZIP_MAX_NCBP_SIZE)) { + /*Last buffer of the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + /* move pointer to next loc in unit of 64-bit word */ + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + + /* now, point the "Next-Chunk Buffer Ptr" to sw_head */ + ncb_ptr = cmdq->sw_head; + /* Pointing head again to cmdqueue base*/ + cmdq->sw_head = (uint64_t *)cmdq->va; + + ncp.u = 0ull; + ncp.s.addr = cmdq->iova; + *ncb_ptr = ncp.u; + } else { + /*Enough buffers available in the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + } + + rte_wmb(); + + /* Ringing ZIP VF doorbell */ + dbell.u = 0ull; + dbell.s.dbell_cnt = 1; + zip_reg_write64(reg_base, ZIP_VQ_DOORBELL, dbell.u); + + rte_spinlock_unlock(&(cmdq->qlock)); +} int zipvf_create(struct rte_compressdev *compressdev) diff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h index 3fcd86a..fc2dfe4 100644 --- a/drivers/compress/octeontx/otx_zip.h +++ b/drivers/compress/octeontx/otx_zip.h @@ -159,6 +159,95 @@ struct zip_vf { /* pointer to pools */ } __rte_cache_aligned; + +static inline void +zipvf_prepare_in_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset, inlen; + struct rte_mbuf *m_src; + union zip_inst_s *inst = zstrm->inst; + + inlen = op->src.length; + offset = op->src.offset; + m_src = op->m_src; + + /* Prepare direct input data pointer */ + inst->s.dg = 0; + inst->s.inp_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_src, offset); + inst->s.inp_ptr_ctl.s.length = inlen; +} + +static inline void +zipvf_prepare_out_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset; + struct rte_mbuf *m_dst; + union zip_inst_s *inst = zstrm->inst; + + offset = op->dst.offset; + m_dst = op->m_dst; + + /* Prepare direct input data pointer */ + inst->s.ds = 0; + inst->s.out_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_dst, offset); + inst->s.totaloutputlength = rte_pktmbuf_pkt_len(m_dst) - + op->dst.offset; + inst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength; +} + +static inline void +zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zip_stream *zstrm) +{ + union zip_inst_s *inst = zstrm->inst; + + /* set flush flag to always 1*/ + inst->s.ef = 1; + + if (inst->s.op == ZIP_OP_E_DECOMP) + inst->s.sf = 1; + else + inst->s.sf = 0; + + /* Set input checksum */ + inst->s.adlercrc32 = op->input_chksum; + + /* Prepare gather buffers */ + zipvf_prepare_in_buf(zstrm, op); + zipvf_prepare_out_buf(zstrm, op); +} + +#ifdef ZIP_DBG +static inline void +zip_dump_instruction(void *inst) +{ + union zip_inst_s *cmd83 = (union zip_inst_s *)inst; + printf("####### START ########\n"); + printf("doneint:%d totaloutputlength:%d\n", cmd83->s.doneint, + cmd83->s.totaloutputlength); + printf("exnum:%d iv:%d exbits:%d hmif:%d halg:%d\n", cmd83->s.exn, + cmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg); + printf("flush:%d speed:%d cc:%d\n", cmd83->s.sf, + cmd83->s.ss, cmd83->s.cc); + printf("eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\n", + cmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds, + cmd83->s.dg, cmd83->s.hg); + printf("historylength:%d adler32:%d\n", cmd83->s.historylength, + cmd83->s.adlercrc32); + printf("ctx_ptr.addr:0x%lx\n", cmd83->s.ctx_ptr_addr.s.addr); + printf("ctx_ptr.len:%d\n", cmd83->s.ctx_ptr_ctl.s.length); + printf("history_ptr.addr:0x%lx\n", cmd83->s.his_ptr_addr.s.addr); + printf("history_ptr.len:%d\n", cmd83->s.his_ptr_ctl.s.length); + printf("inp_ptr.addr:0x%lx\n", cmd83->s.inp_ptr_addr.s.addr); + printf("inp_ptr.len:%d\n", cmd83->s.inp_ptr_ctl.s.length); + printf("out_ptr.addr:0x%lx\n", cmd83->s.out_ptr_addr.s.addr); + printf("out_ptr.len:%d\n", cmd83->s.out_ptr_ctl.s.length); + printf("result_ptr.len:%d\n", cmd83->s.res_ptr_ctl.s.length); + printf("####### END ########\n"); +} +#endif + int zipvf_create(struct rte_compressdev *compressdev); @@ -171,9 +260,14 @@ zipvf_q_init(struct zipvf_qp *qp); int zipvf_q_term(struct zipvf_qp *qp); -int +void zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd); +int +zip_process_op(struct rte_comp_op *op, + struct zipvf_qp *qp, + struct zip_stream *zstrm); + uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c index 16f581b..e211af0 100644 --- a/drivers/compress/octeontx/otx_zip_pmd.c +++ b/drivers/compress/octeontx/otx_zip_pmd.c @@ -28,6 +28,85 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/* + * Reset session to default state for next set of stateless operation + */ +static inline void +reset_stream(struct zip_stream *z_stream) +{ + union zip_inst_s *inst = (union zip_inst_s *)(z_stream->inst); + + inst->s.bf = 1; + inst->s.ef = 0; +} + +int +zip_process_op(struct rte_comp_op *op, + struct zipvf_qp *qp, + struct zip_stream *zstrm) +{ + union zip_inst_s *inst = zstrm->inst; + volatile union zip_zres_s *zresult = NULL; + + + if ((op->m_src->nb_segs > 1) || (op->m_dst->nb_segs > 1) || + (op->src.offset > rte_pktmbuf_pkt_len(op->m_src)) || + (op->dst.offset > rte_pktmbuf_pkt_len(op->m_dst))) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + ZIP_PMD_ERR("Segmented packet is not supported\n"); + return 0; + } + + zipvf_prepare_cmd_stateless(op, zstrm); + + zresult = (union zip_zres_s *)zstrm->bufs[RES_BUF]; + zresult->s.compcode = 0; + +#ifdef ZIP_DBG + zip_dump_instruction(inst); +#endif + + /* Submit zip command */ + zipvf_push_command(qp, (void *)inst); + + /* Check and Process results in sync mode */ + do { + } while (!zresult->s.compcode); + + if (zresult->s.compcode == ZIP_COMP_E_SUCCESS) { + op->status = RTE_COMP_OP_STATUS_SUCCESS; + } else { + /* FATAL error cannot do anything */ + ZIP_PMD_ERR("operation failed with error code:%d\n", + zresult->s.compcode); + if (zresult->s.compcode == ZIP_COMP_E_DSTOP) + op->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + else + op->status = RTE_COMP_OP_STATUS_ERROR; + } + + ZIP_PMD_INFO("written %d\n", zresult->s.totalbyteswritten); + + /* Update op stats */ + switch (op->status) { + case RTE_COMP_OP_STATUS_SUCCESS: + op->consumed = zresult->s.totalbytesread; + /* Fall-through */ + case RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED: + op->produced = zresult->s.totalbyteswritten; + break; + default: + ZIP_PMD_ERR("stats not updated for status:%d\n", + op->status); + break; + } + /* zstream is reset irrespective of result */ + reset_stream(zstrm); + + zresult->s.compcode = ZIP_COMP_E_NOTDONE; + return 0; +} + /** Parse xform parameters and setup a stream */ static int zip_set_stream_parameters(struct rte_compressdev *dev, @@ -114,6 +193,7 @@ zip_set_stream_parameters(struct rte_compressdev *dev, inst->s.res_ptr_ctl.s.length = 0; z_stream->inst = inst; + z_stream->func = zip_process_op; return 0; @@ -397,6 +477,60 @@ zip_pmd_stream_free(struct rte_compressdev *dev, void *stream) } +static uint16_t +zip_pmd_enqueue_burst_sync(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zipvf_qp *qp = queue_pair; + struct rte_comp_op *op; + struct zip_stream *zstrm; + int i, ret = 0; + uint16_t enqd = 0; + + for (i = 0; i < nb_ops; i++) { + + op = ops[i]; + + if ((op->op_type == RTE_COMP_OP_STATEFUL) || (zstrm == NULL)) { + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; + } else { + /* process stateless ops */ + zstrm = (struct zip_stream *)op->private_xform; + ret = zstrm->func(op, qp, zstrm); + } + + /* Whatever is out of op, put it into completion queue with + * its status + */ + if (!ret) + ret = rte_ring_enqueue(qp->processed_pkts, (void *)op); + + if (unlikely(ret < 0)) { + /* increment count if failed to enqueue op*/ + qp->qp_stats.enqueue_err_count++; + } else { + qp->qp_stats.enqueued_count++; + enqd++; + } + } + return enqd; +} + +static uint16_t +zip_pmd_dequeue_burst_sync(void *queue_pair, + struct rte_comp_op **ops, uint16_t nb_ops) +{ + struct zipvf_qp *qp = queue_pair; + + unsigned int nb_dequeued = 0; + + nb_dequeued = rte_ring_dequeue_burst(qp->processed_pkts, + (void **)ops, nb_ops, NULL); + qp->qp_stats.dequeued_count += nb_dequeued; + + return nb_dequeued; +} + struct rte_compressdev_ops octtx_zip_pmd_ops = { .dev_configure = zip_pmd_config, .dev_start = zip_pmd_start, @@ -458,6 +592,8 @@ zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, compressdev->dev_ops = &octtx_zip_pmd_ops; /* register rx/tx burst functions for data path */ + compressdev->dequeue_burst = zip_pmd_dequeue_burst_sync; + compressdev->enqueue_burst = zip_pmd_enqueue_burst_sync; compressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED; return ret; } From patchwork Wed Jul 25 17:04:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43363 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 54C1D4C93; Wed, 25 Jul 2018 18:43:16 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0074.outbound.protection.outlook.com [104.47.33.74]) by dpdk.org (Postfix) with ESMTP id A13D2160 for ; Wed, 25 Jul 2018 18:43:13 +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=oSt1xB1/+1peZNwJ5fyPi+iSG1MLZ7aTljepMYUzsQo=; b=CPKypRLAgticvEgWxjas1tgzShT+Kqavpz2wT8JEA9puaIpMJHPXRQThh5drLy8tA47EHYogJ4+nZdMzfuMTIgIK9vatG6NFhM4B4gMbfp0eyaV2daZIKD/n066U4SzyRDMia8xKNT0aMPhcqgiiJ0Lgw1H1PQfyFVn0VQQbuaU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:43:09 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Ashish Gupta , Shally Verma , Sunila Sahu Date: Wed, 25 Jul 2018 22:34:55 +0530 Message-Id: <20180725170456.3319-6-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dc1f65fc-5839-4257-0438-08d5f24db5dc X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:9imnawHr4au76rV40srJztekdDSUihXgaOCEcyKz5WhhLm1doFRsbJqiAn69HCzInnbB5nBQRP4WcdsuJ0OmcvmZctNtyqPV3/h9BwO6DBWaLkhjqfp1ebwPrvsusDlnss2HNWt4AHJCQSxFaPFoDNnDkl8xKYCnf3VWhRoYXn5f9f7gvXwbIyMkxhGWbRvnZU4jGYQAUWbCHMrPQ8TNcB+oxnZDLCvVuygCTgdE1pEdc6VZQPpMNiy8KoI2d/Eh; 25:3TwdrFyi+oqUvH4ZMOACQT78PAr/3Ftt4EMIRQv6DkKFPDDXneKgM6/xjdCVlCjm6V0NW5Df4EnPNprjSAb3oRDCEFSuy95HMcDSh019ONgH2gCSZ6zjubxA0N9Xdvn0PFKo2H9TmNtQGJxudILmmYUCSBUPqYmI/7NhYBdOKw8c2CHDpMOMhPzupo9HCXRqV4UtBNorc7TEjX3yY0CNOKMkXYyNU8mH5myDDwS6SLtqd/4rBtMFB5WcJ+8vFiSikxf1XLqPhfjNXQE52n4/scQNoDAt3hfbJAH3NgJXCrsvJ0nEUfPhrFeYpKb7luZ5gKRDPGLAk8drNHIwAl/OJA==; 31:7i7uQFL54oQXe7QIol3x4LckyopMMEXhdMYZaEb9m2eYRJmWqShxnxty0wn2FKM9gxgdmZ+nChUlfcmbeHozieRBalQbTQDzdQDQQBiwvzGcdXXlj5IKXEteX2k1fi2wX4nQ1TeGbMgU8DEvdjjA1azrhZEm+N2BzrFqtABdOxeVAzd2DNsJWnSZL1GVtSGi6QX3rMj4/ckgAV3QeHq3H2pzJq9BYxgU5tulG/RgavA= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:QADDOvMhaq9n6GS7iHBoR2GBk+/e8QB1WiO8Dotc15bg4XEORU4eAwIsmEVYsIu/L4TqywVue0NBOKHJLiwZEIzTVRle4FEvJ/JqRLioqby0WfORAmQCeoabRX0Jt0GtWzhnodEyaK2bgiYvgtH9Rfmoq+kB2JRNUKNwjMakDWQ2Ba6X/0xJOHEGNFIwxP5IJnrzSmqXlV62V+g8QLnAt436RljwDWGeBuuu8MBY1LvJVu8alPwn6TBMKIZxqLfTQ2jnoZS8C68X5yPEPNHVEmZfrrCmzCx9fh5Oc5xA+ZWmMwOsjhGbJcSk6agagb6hiyaOJ4cAtbjPtSUJjzmnLRNlWXdpeWGk6m/FtEk8WB+BuQlDvTEFcfHXXxZjOJrH/46V8MXTetJ4nFtR5PYlU7GZOdEl088rcOAxx/+voXElukvUNYFsoTQMQCdSPXW7bfI9xb6ddqqeR1YhquaPxPh0qaIKKt6kUUprAOfxWnG5ovmkpUnjuprAFmkTjjpdRotw26pEYzLEu/04L7J7cms4hHhAk+O4N6DI/PyJnGJAtZI09uq/BN5d5T/uciBmteTg9j7ZyB4Hhi45b09MzaVYVbqNascoetKhls47z30=; 4:ac40JeIiUnvu7WOg5MJZbxmFyOZGuK3cn4GM/HMV2MJwDyxmM+q/D4y9SezyI5dX6s4NH1qWM+tvtv09enhQH72EB3F3LJL26rGlxjjhythnAFiWy1S94or+kNNbF3LYBdlvIp6Vd30Hkv4gdURYY93bYsLBtbkjz9MXPETxEMr4m4y9cL605JmARMEca+TZmMpTa7/QbFM8P3DRsKN89RRywkRGOpFBnfAWuJyc7t6c4pIjsXjieQjkR9cnWjDyUvTupZfuModD7KIbBlpU8Q== 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)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(50226002)(107886003)(6512007)(6306002)(51416003)(48376002)(52116002)(54906003)(72206003)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:KZWUOr1pWRjx4HsDRHkQOHEE2AhXO6PPvZLb7X+bt?= 2Tcve4Uqx+XPWF04MIsZvPOw0HN2szLR54sW0p9KmX7oGhHI6VnxAcK9IIG7ZI6eIAx76zruFTHMaDAT99S0bXyIIUkSqcwhj1fcKerpO7BilRzDzapo9/uqkC3PvOBcYv2lX/kBfwBs9l6S18FVvbge6fitanJu+0OlYhQjbiOxMzQfLh3edWR+EY+uEhW58S49acyRaoBqstIUHseZ9biQXbcju+P2VgZ0JWreGdbNngy0OsYYWhXBjDf+l5vDQWK9gbV1xtd1VXbNptxrP10ALHzLq+V7ujB5Vpm7IAXWzb9aCYkwoEGKH8IoxOZADVjgfET0nFmQPDcv5saA8rVLMI5WSMFtLa8xlIPBBsYOdNLVMIN8CYKJaCz4S6uy0y5bJBIsb0tGRASLlGxflI0LZfSpDymLTVbqf/uOoz6nXXfGTxV1uSLuCI2bU3lf7QSKX1QArehffynpu3FSJtya+AusH5So8lgAOpiG50mG19isAF8Q3EA1aqKIkeIManUUBavJ4ZAVd+w2QxPu3NaHuONHoiqjVoZK+Opi/eHCsz9jIeiG5XN+OHF8dFDVpqSXo/e/gOX9sUogcpyT9ICyJSd5Z3WXt/YXAh2RvZEpm3xrM9YQn7vXaaLLJDZUSfi1Q4ouvkYqfiAab7ec2kIVwylCTNy8cF7K7uGhaxGYvrjCLkAoiGfj3jReLZ5tOV9feKKkgR4TiBgvMlJQJwyhp5XAqpvFhjV3NVJBy3+R8BE14sum4wtp3htZzvPY+L28ueBV/55PvyR6ZLoW6uiA3v7MmW51juvYH0I18Q31wHpR+9+wEVjQu4VWsPS33wMop3VHFw97/auqsKOgeUrp1VEAnlEfR//ENRKU+9kirGhkgOveZ7EIewayyxdyhfoBmE2AHCITjvKovTjjVKqcBr8HfpyRr5XWndQC0o6gRgtGoLKa8Nm5uNccbmE8iXqJISIJoBAV1ri1HgUx0nQMZBFYdi+EkfFvR7QjddOWMezWB/prD2OH3pbx6P9pCuq3bohT9+MAdGoOAlz0e9QpGQa3/qO5M8/tcLyKtV6sdaZZ1F3GH6oQcP/AHormaulr5g07dd5CVSPOSg9cIDNX8a936iHmRtLu02eTSLTSB/b0WTWQ9hHMETm05Z52m0CR1Lk91z7EN6ZEtioFET7iRJAkzSLS9FRlj5XICQoAKiEkO6KsRaBHHfDqg4ZwyWo89Q1zathDNNBwE1VkevFihCEmSccRS8oVNabXF6whh5mIwSTd+ZsgyahX+CYtnc1V9WMP6msD9LVIX//HSSdtSzEMhjONcfZKNf5gSIPPSY6x408c6/Zu267mGZajAY= X-Microsoft-Antispam-Message-Info: LBIgdxP4pxDAahCU1h65RvG++xSFtjNjjxIVAfzmI6t6kd2VunMbdjPJ6kRIF4EPR70VtzS3YTVVMbc7QlQKTLpxrU1XSaRYNSUvCjRCZg7hOCHOM/2lCy015QVbEzA9CH0WcIsVx5Q06GW25me1IY/sEkuNsk3symA0+4e3lQsnoTPm1t7NLOc/eHG88/gFYn+PyVocVz3NhKz5gyqno3hSoGexxI0kry7s9Ctdw3DbuV/tZSyK/k5lMxSAin17RB0dAWAOhv3/nOL/1budpF7SGWg/RGERMWUgbyDWvrAF3bojfbbJkG+vtpSr7ivTzjVhNk22+03FmkeMziIkXhdNaoxeALLmzGlMa9yltrk= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:Px3TUZzXOReXcZvSenWK+ROFv8fdcgXLyrNGbjbfykK+bHRnBiKdJst6SjgHpz5N3z+2O5WWrQoRhkmkuIdwvd6/E2bpFsrW1U4P3EVk1SZJldZyKEO5Mm2UJjNOHoLOQPoQCKAkRNac3LsPTgRw26Iqb3yUgBhwdDbfTMm/bgOPFdw80lbGgYlfThUFtotXLpJwGkw7gr1Et9BxdIF/l0td7g5t7RY1m+PHN9xobPm8a/sI2nqd7nzDlSw5cEKfdFIZKEBTFkBh7XVMmA+n+4RgxV7PXdGO2gpLjvUFjVNhV70pJg7NLNgs/eGxUYIZ4NqELBmk5JyUouQ+RdU7wl8c8rowM/Z/p28a9PEdhaphma4zVMKqQ2FNMaxcS+wtV/I6pT1Sq0nmcvtxi/puOI/7Wy05B8dtHQAyNOZK2/X1apMDIHhqmr6daNzD1AJ5YeLCJ7PfKE972QvbtoSpiQ==; 5:B0RyEriXS/UU1UZFxymQIfQi9lOZeYXLI9X+tC0rDN8rAtZnx3VPQu8RkIkdQsyJ8P7mmU3UWCLq0IJERJ35vnF/FYtol6aYAEPt8OU6zzkJRGXQ34qQoepmvEkFzIWh2HV0k/Zn/wikG635T6HbQITNrcoupKVKDhnz9NgtKKM=; 7:cvGgOWBKPzhJl1yX9C94C2a8tFaGT1ixxmKVbhsqajbYhAvbh7bbABQVPWS3jYsK1QFb2UJiendgKAMYIhKkSvDbRKugqSpiPbYl3aj4CiKwNJOpcqyuaL6krTP1jit7rzaQP3L+375qD2IBVAYx8Rcpby+w5PL7Pfb76ta+iRFWuvHuOpM5cLfVs5L1WVbNgJMXGyAB9S6LNJMu7bAE96e9jF0gW6bh22XXZ8GwVth3RxIq0JfCpnXkku6iO2L2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:43:09.4860 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc1f65fc-5839-4257-0438-08d5f24db5dc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 5/6] doc: add Octeonx zip guide X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add Octeontx ZIP PMD feature specification and user guide with build and run instructions. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- MAINTAINERS | 2 + doc/guides/compressdevs/features/octeontx.ini | 10 +++ doc/guides/compressdevs/index.rst | 1 + doc/guides/compressdevs/octeontx.rst | 107 ++++++++++++++++++++++++++ 4 files changed, 120 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 16cbfd0..18a78be 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -858,6 +858,8 @@ F: doc/guides/cryptodevs/features/zuc.ini Cavium OCTEONTX zipvf M: Ashish Gupta F: drivers/compress/octeontx +F: doc/guides/compressdevs/octeontx.rst +F: doc/guides/compressdevs/features/octeontx.ini Compression Drivers ------------------- diff --git a/doc/guides/compressdevs/features/octeontx.ini b/doc/guides/compressdevs/features/octeontx.ini new file mode 100644 index 0000000..884a8b0 --- /dev/null +++ b/doc/guides/compressdevs/features/octeontx.ini @@ -0,0 +1,10 @@ +; +; Refer to default.ini for the full list of available PMD features. +; +; Supported features of 'OCTEONTX ZIP' compression driver. +; +[Features] +HW Accelerated = Y +Deflate = Y +Fixed = Y +Dynamic = Y diff --git a/doc/guides/compressdevs/index.rst b/doc/guides/compressdevs/index.rst index 6ba6641..1f37e26 100644 --- a/doc/guides/compressdevs/index.rst +++ b/doc/guides/compressdevs/index.rst @@ -11,5 +11,6 @@ Compression Device Drivers overview isal + octeontx qat_comp zlib diff --git a/doc/guides/compressdevs/octeontx.rst b/doc/guides/compressdevs/octeontx.rst new file mode 100644 index 0000000..0b53f9b --- /dev/null +++ b/doc/guides/compressdevs/octeontx.rst @@ -0,0 +1,107 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2018 Cavium Networks. + +Octeontx ZIP Compression Poll Mode Driver +========================================= + +The Octeontx ZIP PMD (**librte_pmd_octeontx_zip**) provides poll mode +compression & decompression driver for ZIP HW offload device, found in +**Cavium OCTEONTX** SoC family. + +More information can be found at `Cavium, Inc Official Website +`_. + +Features +-------- + +Octeontx ZIP PMD has support for: + +Compression/Decompression algorithm: + +* DEFLATE + +Huffman code type: + +* FIXED +* DYNAMIC + +Window size support: + +* 2 to 2^14 + +Limitations +----------- + +* Chained mbufs are not supported. + +Supported OCTEONTX SoCs +----------------------- + +- CN83xx + +Steps To Setup Platform +----------------------- + + Octeontx SDK includes kernel image which provides Octeontx ZIP PF + driver to manage configuration of ZIPVF device + Required version of SDK is "OCTEONTX-SDK-6.2.0-build35" or above. + + SDK can be install by using below command. + #rpm -ivh CTEONTX-SDK-6.2.0-build35.x86_64.rpm --force --nodeps + It will install OCTEONTX-SDK at following default location + /usr/local/Cavium_Networks/OCTEONTX-SDK/ + + For more information on building and booting linux kernel on OCTEONTX + please refer /usr/local/Cavium_Networks/OCTEONTX-SDK/docs/OcteonTX-SDK-UG_6.2.0.pdf. + + SDK and related information can be obtained from: `Cavium support site `_. + +Installation +------------ + +Driver Compilation +~~~~~~~~~~~~~~~~~~ + +To compile the OCTEONTX ZIP PMD for Linux arm64 gcc target, run the +following ``make`` command: + + .. code-block:: console + + cd + make config T=arm64-thunderx-linuxapp-gcc install + + +Initialization +-------------- + +The octeontx zip is exposed as pci device which consists of a set of +PCIe VF devices. On EAL initialization, ZIP PCIe VF devices will be +probed. To use the PMD in an application, user must: + +* run dev_bind script to bind eight ZIP PCIe VFs to the ``vfio-pci`` driver: + + .. code-block:: console + + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.1 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.2 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.3 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.4 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.5 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.6 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.7 + ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:01.0 + +* The unit test cases can be tested as below: + + .. code-block:: console + + reserve enough huge pages + cd to the top-level DPDK directory + export RTE_TARGET=arm64-thunderx-linuxapp-gcc + export RTE_SDK=`pwd` + cd to test/test + type the command "make" to compile + run the tests with "./test" + type the command "compressdev_autotest" to test + + From patchwork Wed Jul 25 17:04:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Gupta X-Patchwork-Id: 43364 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 A40E54C9D; Wed, 25 Jul 2018 18:43:18 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0074.outbound.protection.outlook.com [104.47.33.74]) by dpdk.org (Postfix) with ESMTP id 4B4B94C8C for ; Wed, 25 Jul 2018 18:43: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=oywhrrPZwUDNb4jcBrk8XQ3aNomPG/PRm+b8zPmzY08=; b=HnNhAAdU7CNaPkKqYXowoffIB3/suC/PPo0arDjwgcFTX+PQT1stmfY53f3pQuXJHD+lO4bIYz5I5uWEAPpJi5cl0N/Irz61sC+5Ghmh9XHe6hIvf8WvTi6p6ueSrMuU/3hKaEnlD2g9Fgy5o+ubMXpCJ0EJl+UUIag5EzbZFQA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ashish.Gupta@cavium.com; Received: from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Wed, 25 Jul 2018 16:43:12 +0000 From: Ashish Gupta To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, narayanaprasad.athreya@cavium.com, mahipal.challa@cavium.com, fiona.trahe@intel.com, Sunila Sahu , Ashish Gupta , Shally Verma Date: Wed, 25 Jul 2018 22:34:56 +0530 Message-Id: <20180725170456.3319-7-Ashish.Gupta@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> References: <20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bee951ee-deae-4044-8cb3-08d5f24db7b0 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB3062; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 3:9+pIpB1JRtUfZDkjc9PZacXdrmvZPL0lz8rFe4NWAYUALpyURIwFN1ry2POMh6QwPQTgCInoq1Hxr8SX79XPUw1YIJcKsr0hxSTxzlNteoM++NU5UwaUfGXjeNPa6LyUJ8PEUkrrTdt3ZHD5LyRYYsxKUP/3/7zsddFvmmjJk8tmf1brCMCnsipAMX6wbcZrFMtGuVmr7NvhuSvzJy5k9+4r14nuejoBPcqov2q1bnGxOgYr5r4FOOOBMypdxym2; 25:AR6biJ4YkuvXPeDkfpAAP+rE2BRE5G724fSzVd/FPzZCZ0W8PFymMvp7dHm6HJNU6iHC0oihwyOJLWYswBsulWd2T9eN9OyKn+7HS1KmVTB010nzfs5KkAe7YrEMzThSXqk0R6f/y9Sg1hoJnD2dcCt9El8PdGIa8Eq+esqGDq8kp8qRSz2V4qeokCW4/QZVFLiAaYutmA6XrCdAwE5LHQQstuW91DSkRlNUhlLTflh05X5LpE6YfyyUjtFQoKKMp+UDqJlsXVQvbnOtIaxPkcCfVaWmf33rQNaGswIOYj21Y6IWNnN6Ofd+wKb7Au51KIzlpQKOD30MC9VLIYjQFA==; 31:sh7s0XO6F3L1c6S9Bn7AVLZCXDSaXnl2YEizchMCCaGm7wcloZ7HSIg/DNur80M5WZ9ayImmV/Dcn06ghCC/89kcuG6giRREYaGjPSyEkkKOU2pIYmi3LrtBrLfpjbmlS5ks4T3fh2TkuZ0ovAUteuGHWBh4umxaOUwKlNRP8u4H420fYr/5a6medRw8IQrn31inQE7Q72x/G+4l1zJn4J+CT5SUaZYJ//jt8psHwMU= X-MS-TrafficTypeDiagnostic: CY4PR07MB3062: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 20:O3J65Ni3S7h9y5Wa6nNzBX6HZ8nsoX14O8fxsTj/ou4sQqWbNs3MfdHBEf/hKxyTShNijbxxbZyrR1wxode6w10z2/dSOTrkh3h2os5WxoZtQyb9rTpt6aNUP97GlQjb0IFk24U6mKhVEBMnarx/jyg6pCgDbUaOYlC7r6xtg+G/vvMJPqtlaow8JzH+1+nYhksqJE8blQ9dY5sd889RKZIvefcdSDnJ07Z1Jw+iSAeQpGEZrCEMa6lzqUySnJgX8KW0ZDSoTqhOpY6EBsSocOKrDtH/hUsk8pzLm2N1HCpSjEbgsZPW+c5cBP3cjLTVs7+MQfsTa0o/3EiQNcR8EOIZHqWrmnFBuvSNm/F/vuhDxBeXoyuRWpwnppZwalH6q05oOpCrGHaALtRDnFEikkSGelC9cINa0seTP6yZIJSJ1L4BpSP9gYmYCLGe4hknudEoLa2bEp8c4DAkEwwVZmEi+LQz9jsGG3iXdfzVhFYcjeIL4LaWVdWce9h286bnlGqnuqPhEzEnZkKVMtMxouFMjzzbHuuWXI85xrJj7yamWPJpnNPiZeKycXmMJ5Xq1Qiqyjz2/zpKyX9S3v9bNauqKXfrhDYL0hzyPEu2MX8=; 4:mc8rex/VjFy3YU+m3ILLqh0lKuU5NuuNSfdECHXDb8Zq0q/JvKKLzdu2GYNJaQhoT5GPhyQapwOlYhoxqcIPFAbux/qs4WVlGK6lRtujRbrf5Dr8mnv94H9fnVrH2graXWTuP70SlOnCrTLO5IBaINVTC0Bi0DHrq3If2JTFaqZTscWA7PxZB960Onu+0GOuAH0rucUgh0sK4hl+N3MhJ95duv9T5oS94GQOs2s/pT9dDIuVjjO+6MlShYJSiRGcXlMJu7GxWsw8lI/Ew1dJ/A== 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)(3002001)(93006095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(575784001)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3062; H:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3062; 23:g9/WovFvV6a8f3sls58xZi3U53vMtRbWYzrYGnqXm?= cxyx/rFi9OCEfncunZ131MCy9Kfkma3SQwdH6fRAtu4VchE1xPqbld8BmONgIlrITHEC5KC474ihLKUqVXnFGpAG8AwYYfrjOVNzRHuIy5w/Fdiar4Xd1kR2PAclaYEjzWbQBUOpWttGf0CdCKnfUTwSC6VIYqXHJVcZqflIWiWPnxG9V7ZXMFmv1FBhhXAivK8gv8YQNTdxSkumejwVw7y61pGRnO2q43hgNIQwTUpI+8Gsj/gaX9dBVHw7IL1yjRT+RsLyVUq9C5SzptZH/uCt4jdSRaesNgEv6T7Rnsg9CRZYDJt4TcB447LfDyXwDhZhiaoD8xNEKEdHrkQpHUeUvCAalglzzUNrkjFHIrWwxg4r8awR4e2qhnld08t9fHypfv9p2rycuktCtyHUzi+faS66VamMfEynbCH8V6+YroZSI20PfOF0o7P7AerxVumNTD20wQw9sKxuCytJib8hRzDV5hG2aAe8E1HbooU+cfDy269v3jM2gSvHfw/mDGN2fAAcM8dFM6MV/PDpov/2GXRJFQhMHAF87deiovcGHsa8kkh2S3lTG1hmlDJhmUZOQ2PErCdClDfEqHv9+bM1StQG9UZXh9ikrepkzbFPK6l9YewYPo3Q2Dt9wl+WTfwnnv7Lhzy7myAPVDG9UBUcR59amA0j3oWFfZ8Ag8HyE2tQr1cRDYZMBbh9YtJj171VoaswIiWRzZBpxEOkduD2AIwzJPAh0SSJezs9oJsVrdxcwPFmsuTuZ7fa7hd5GMC4wrN1nRJKz4KX1hVH3Y9+q3saYEDNvXCqbn4XnJqxethKSsuanoCLD5dVzEbSHXX9qJ1o1gNMxKmvBX1WWM/82SD7Qj6POHio6U9HJw+CHUsUer5rTXAL6AxaYioVZkL4mJ28QaXFooVHD+yCUXyNPk8YjoejWfPy4KnLAr2OLVIIbFXsDwBRr/2VjquHutNSlX/QgimZ51l1B9x3uzlvdecsLP0S86yBqodvsMnsCwvXC0oy/7R/g4IUKD6N9r4S1/i0xk33xNaUop4N7XKHiaeiNyip5F+yx/ckBfAOiNM2tu+w7VxcMNBTCvXxxn5lRkqSdUZt0GeB9BhPN+J/Ydijoq7BXvWVfqN8ggqq34FOJPP7TM77pIegS78FQF038EGeAPdZABx6BGwJX1sU/l8k0XBQrTf5OSVmIHcayYNFpKbJ1bQAwzmW1wkZfUz3owwmzNqr+7TkUMDwR/sXX4ucvA2YsvOR9OHEB/IwqNWnwhhgSRGtj5Cs98x7NPUvvAnrKsVPEeVesYVRgnv4UgUOkFqpCE6BEEQvltbJYIryl3n+5Tcq69DWuW3Kso= X-Microsoft-Antispam-Message-Info: SAInukS4xvtOXf42i6UBHxmn0yrcmWbzRE3mWrG6ID/08STWauqSQBChYaErgtGftLIB885JthcwAd3HZ6bj3tDi61mgN3ax7zwBzuziM7dtwOZcAO0cBQzdFr+X2s5GTn4YZHDQVnJvUyUeL8v9UtWy+S+Ws/jvqEJSJdKBjUqJlKKlpFZmVRPMif/nGw11cqaAEF42SV+HlZIRrYIqdG/CJBOtzG9babw16ey4Clm9MGGvoeEBPwOK6O80OktikcOkamojm+kkqtYsLfOhDaQLwGPoyLT2kiskZLhcHhoGAITyZCfeFLqZ/MOh+o6uIwuJ/npm8oJ2jBsedJZBBU3pdJqIUnAoOhPobWwjVZY= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3062; 6:mLIkYhf/reJFw8Mv6IM0kqoCavJ+5lntceLTn3yN5uZI/MBGm2xzMkbIUTlD1X1qd85xi7lzppJDA/sabJG1xsCjiErgKOD+gDu61Zy4uLMb/Ocf7ukbTfiWjUjRmIN1rQA9d5ZfgSWXaGJQdlOD+K/4eg6Lll9YTdfAI1C7bqW4uferrgtqvoTanXH12Zq00xW0A7ZeKf4osRVRGCtIVAA7OOQeViat+wYjcuQQB5EGOemnhtpdnB319OBUkUJUMcC2Rtjfihn/Coy8OMG9+kjbMXCVgpP+i3kah3JKGZuXb7fLUxvCazN5A6B1DqFf9QzHAViI45bbWcNzb9KDkk4X0Do4za1N6pICB0CBJkxHZOonq57tTbrs2cdLAWhioCcDrX4cVSdZ/oFRGu8X1X+d37T5x08Ne7q3nKZ8pCBijqyUvzNs0Oj2MOUSSveIqDtoZp3rKzP3cNz8zxAH+A==; 5:GJ1zAJLZgx8t20fzjT4Bxeve+p88RCPagw3Tw4LKreUnGF1QsD93OyAbyKvSD6flfyZQk1D/Z2Pk0nuSftahalTCS4zIx4oScneLosZvoRphFa38d3Ke4IriesurYMo6FmJJLr1oGC2z+bdqym++Z+pFXlQysvfFA1oPvgcmws4=; 7:nUecgrk1xMnjLKSX+9z57xMima83yFmMZpVO0ktHi/9RB1kdLT9O7EvakhJIsEZsPQ9EG6e+IzzWELrDckwPc9iV0Twg1MHqFuVq/ljzWbec37pHfCYDUXq6tIcemoRQBxVJl0EXtYjQ/EfzUmHPJfjN9T3f3mltEEEKSuV00ifVlVZW2URG5RuG/F1SJsVMhDPt+tfoGp279Fn5Vk09v7qTJ58vdGNbXK5JfqmYr/hRnjnKZj8xJbvvl8FRoXsO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 16:43:12.5696 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bee951ee-deae-4044-8cb3-08d5f24db7b0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3062 Subject: [dpdk-dev] [PATCH v4 6/6] usertools: update devbind for octeontx zip device X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunila Sahu Add the cavium octeontx zip pci device details. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- usertools/dpdk-devbind.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py index d0c4209..1d48a6c 100755 --- a/usertools/dpdk-devbind.py +++ b/usertools/dpdk-devbind.py @@ -24,6 +24,8 @@ 'SVendor': None, 'SDevice': None} cavium_tim = {'Class': '08', 'Vendor': '177d', 'Device': 'a051', 'SVendor': None, 'SDevice': None} +cavium_zip = {'Class': '12', 'Vendor': '177d', 'Device': 'a037', + 'SVendor': None, 'SDevice': None} avp_vnic = {'Class': '05', 'Vendor': '1af4', 'Device': '1110', 'SVendor': None, 'SDevice': None} @@ -31,6 +33,7 @@ crypto_devices = [encryption_class, intel_processor_class] eventdev_devices = [cavium_sso, cavium_tim] mempool_devices = [cavium_fpa] +compress_devices = [cavium_zip] # global dict ethernet devices present. Dictionary indexed by PCI address. # Each device within this is itself a dictionary of device properties @@ -569,6 +572,10 @@ def show_status(): if status_dev == "mempool" or status_dev == "all": show_device_status(mempool_devices, "Mempool") + if status_dev == "compress" or status_dev == "all": + show_device_status(compress_devices , "Compress") + + def parse_args(): '''Parses the command-line arguments given by the user and takes the appropriate action for each''' @@ -642,6 +649,7 @@ def do_arg_actions(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) show_status() @@ -654,6 +662,7 @@ def main(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) do_arg_actions() if __name__ == "__main__":