From patchwork Mon Jul 2 16:54:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42108 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 073971B532; Mon, 2 Jul 2018 18:55:52 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03hn0226.outbound.protection.outlook.com [104.47.40.226]) by dpdk.org (Postfix) with ESMTP id 335451B523 for ; Mon, 2 Jul 2018 18:55:50 +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=n0539EFMWv1JxrDLYChJBrmmds0vL4dON7FJxal8KIY=; b=Xk4TSS1dpzNAACF9Sqkt4bhAfqLXLuBMfFOiwsESqazFN/VaQxrpg1vW20W79RwlHkkLpC9jk/Fg77uHGlvz3ih3kioJkW0bbBhyHPLf1cOuBUlLlpYoTwsF5RxBrjcEAoj7e/q8SnRvxTlGVXgCUCY4tVz6gKMixy4OYclrfEo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:55:46 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Sunila Sahu , Ashish Gupta Date: Mon, 2 Jul 2018 22:24:32 +0530 Message-Id: <1530550477-22444-2-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b9afe8a6-be85-460c-1885-08d5e03ca964 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:DKLY1eDkso3NZPULeusKKsf5v/FB/xU2ET4/bV6vMtU7La0crjcfnTv0YhyJdlx7+L/1nJA/TGKI+U2vfndT71mu6Bq+CxJMReHBJZu8KT4xB3fdruFz0dO4nKoTko0McTM0DFT3zvZsmKY7FwNujgEZifUkeoliKv7uw29ZB8NL8kUis2YtTU/sxJgefb3X5Lxph1IS4pjV/7E3yTNR5y527KK6ilvT7kwsuZFu8R8ShJg61OAihTA89wTXDmCQ; 25:w68sefXBABt6MCXIWuUhnsI4ctBCfQU65UOWwbY18sXm690Dl29DJEgh0aMgR+3ZvpYUh8FK5k6mS50F5KYGZG2n6t31fQCyaa/nmWsDfK9lldTNqNpgaMxFyj91XxUG76UgWA5xuFJh5kAtc+yJSVTUfzXdVMLXjfw7sG7OQqDaDVVICIHNoIbfsPTSgPoUN3Ao1w+VaHm1Y9DbDYV+09UZP3XR9KDBcBalaYcRfIjwU7KSoQC0K8sy07mQqMz6S/yzHE61wYhTF6XP3EJvfR6rxkc/18T2trzjW4g2Pa4zipYYqCvzATEN8lqGTw6N1KAyRtWZiWkGMd2C1bU+yQ==; 31:iBM7UhcGDlu068vAwzMeXxZ/LzSkfYvZlrPwkekPOeJBD676KoDpPBldjUxXJ/Gu25wj2qVDQJztXwuqpJJsQCHV5DNwkpPexUOt7hGSeJOL+YwHK/LWWnGvQdK8qDkN+Qw35Eto4QQ5o8Q0gq4+GkFWytZzrY29ibr5s9hZFi8jsQLS8tOoLZV/edTd0KzGrSzNhxH1qBC0jVigIilkIzZrnkGzgYkvwfp52Gg4gNQ= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:BZXhY5eAjZdv8M41YdpiDG0OnnlPNJxnqfCRz5BcW8XY39MekHLxvf4nzWK9sp6hciHVxFhzl81xL5WHiJgQaUi5gWP1+vSIHMB5eMgz9HhumHIQbqcrIOHvgMzd7njKC+C4YtbFzAZTxrP7GDySw3x9ldJWItBvyLUKMeTtAgxatv/Qg8ThcsDmeD++odatpw0MW4ZO6gPcucWmdCtv1yxe40gyLUjnacs9VoVki6KfKMXMupYIy5PZ9tEfrAouaR7rMWl3tFlirQs/wL7XkEfwZRpph8aDl+/Chk0EbvGuSyeLvG2O3MX8dm7AV4j9Xy8X2AybCvyAVd3gXtO6CPWav+dm4Zw7mnXlHK8uV2y1QbENN1BEOe4wmmmErvXAFQ0f1ePcBt55Zk1+hu+AJZbXJyjzyU/WggoZ/Px5Nqrml/+10AgZzOPNVo3L1oGqE6i5sWMCKSSpSm4QVAUXePckDKgXjoHRvloHFRv/bm2vOFebwjctyI6lbUrRohDng4IDBBJkPG6LJVjn8kVkeVMlHlRCq954jw2CS+evY54KGi666U/LfawIj3wyrEMqJOslaz5I4w+7bCi8rF/jZDlcAoHoAS0PGP77G+MWnjk=; 4:XSXrPZrYSCHlh4Eo4U/xmNHgelEjviY507ZmXL8Y7IxZTs6Q62T5izERgVX9kbni628z8lOMsIF+SZatwz+ADqDMCdB6NeqQY8aJjtNwLIEtQmMPPcVcegTMerxy6UccxyajgIiAwuyfXgxfPs9PzlE675q455q6IGyB9a9LNJS450jH2nCjHxjOx3Ww6L28aENwSFBFKHEw6gDIXTg6DKbw0YZVJtsYzqZYIQSkV2xONjotGbf+n6U5wiLMW9dC+MVO67MZKOhdQDF/ztlWqaddjathDVuX6KYM1BLczK36xW4m/DCe4/tmhW1zg8mu X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(66839620246622); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(2232096)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(14444005)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(2351001)(42882007)(54906003)(69596002)(53946003)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(575784001)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:ybivFIwNdy0jx5KEteoZ3EDJulJbG+TNxXN7bUK?= E9W/RgqopvvBgTUpsmYWYkyPsRHEog9miQTXoMev22TPxdCwyZtPBwQVtNNYvotoZ5Hvp8edVeMZlUFxtUTrHbyURTTs6GYNgv27nGafot2VfjdV+Xdr/71JB8TB0FthhZDs9VgjSVtG+EfUfCrVLM9FS/WXR/C286pYDGo2cGo0NsEXKy8Go6ZkywUTrT+5qVFr1Mg5q9jmEB1er6aaFnaAVVPOhxk1LSGh8kg3iMqkgcQO1PyGZ9q6gs+p1LSTuISmkIlO0vGnbQ9U2DdZyK3Wv8ymoNb18+s2FDXyxHdWIkS0RY4SVYHJ/KaMl0gmJ+CYZha4DjmTUgX/DVhKujfCs+ifSkcs3w5zXQEDRMc9swux+oGQRHU+g8PV/kJPVfXNmwySZJREIVFiut2kA3tQCkSsw+WHgeokkXcEMymX6qEFAeJDrMSUQmchWAbtDRW3N3rjbtf7rkkfG5Xgkku/oxeNGishRhruML1yuq9CtHAO9ffUqorIa4gmfjLEqdd7RoURHB1nSwBjxKRpjpAsnu8dpvsyytL8ItGzf+Dd72o1IUWT2O0n9vhYVWxVHSbNTc8Cf563cX1JInfT0KxWb1CyZMX6wrmoy3hLXRHu508qcrD3NUlntSNLxZ/m+TFVQUSguz7CNmz95QVYM6biXTzJ5Iyff4EBVdnDG5f/3r7rX82/GtwHBV2zthA6DzCc4m/HVwX+Ee9LekQLUEZ4AICD6/LKIc8myvEIIa5JTUzYoP8nXw998RFa1Pu9Me+0vpornEyKv3UBomNR5DEvOTllHwMFOnc0A7JkVwgkB+i6hgxK9lVOjQCkP6jx2Cn4gTF9kllzks0DSAAiFr3ZZ5M79PjnxqciB1R+Qk5AUarS1e5Y5wJ6mXRWczVlWl+OnATlpQhcmkjfgzSz8bT9mAIm2TdziIA6glK9kc7N7rYcrcwuT1PBLfy/EpOugCh9sgfKzy7MZTCHIo74RQYnSOmseuiceJk73C4eg2x0s2ZXAzRvug9szujJk8+Htz+5GiYRd6zq63XgsO1du5repj9y+1VlH+9L5IvGC3DXcY+qDP5eUPLrZfhiJzsR+urhieBoaeh23lBT4VrtKZ15mbqsoUERZAeDpS9EeBu5Pq4/mZbZcEjMwauThub3fcjoywjWbp6Cpd8rhqQuNPzMorkSLXHgqLdmtXWnjz6EJjLDNcRIGpXPRYQa+EYxHhtw2Cbd6ybWIgUbMWQ21Tz35biv3UqrWFbyvEKWUACn5uBXuIdtVXxQgEpgdGAz9w0rOPrbMvo7UTob3BrXZ7uc+sLfj/WOmaLnNdWg56HmamQennEfYSz/zWuA/q9dR6jVYhU2Ob8vNMlf/qQ38GYaFSWRSjYqzZkA84pbCcwDluDvJ9MBWMMWVGtozBZgTjN7AmXUJC3/sd1L827bCLZhRvxzjvgWgs4flW4DTJSQZwA== X-Microsoft-Antispam-Message-Info: WpJgiJPmj2Hg7NhZVcPH23VgSgb2wq6BM0B2bLjaveV0Q2D6AjknpmkeZatAih4erO5uMaXMTw2JFeNetqGo5uDohahIARO7UrS2ZXzqsloXoSOHqV8y5mvGI3CiZLQ55+0zawx6M3eXPU6OufNjG+AjM8h0AweZiaqhUvWh3B1cFWERv9+bRhd9bdMohmYF+pEei9S1v31F++xtF0KzNL2XOWguK04qAc0L4qfJRZ6KlyZF1WFpcnRejNRSr3nv4/LGISPkh9p65yjM826u/xOqW8j9HCl+c99Pg5PVP6wZ7PzTYZ3TMerB2OPbQlHTruPazXYAOcWx0qve7ptHvNLiPuuZAPmlvzKXqOEaTA8LOtl/x2zjdaxwhbsem7dlZj+jyKUDyvoiAJrBIBP4k40niWDYSzlI3ubBz7GZN3IiS6XgRaHV55Wnopq5U6n2HrxNW6F3iMSTgbm3aC2/nxl2gkVpdU2AYTabtuT73bcm2irsqSE1D3oG3o8XceZPL4fdZ5DT/iGSiK7IrOOjnEZZBk4aWuVAkjUNHTUtXYSc2SoWQSgP9UmC8A5J5ZXk2OYsvD16JGKNMeNlma/OkeN8QsZnyKp+uyJeHJhqnLrzicl/u+CGcIJkR4ix88BcoDDBbWVzcGs2MCUZbyl1z3/SGK2iEQ8tXW2B1wIQDtDclAb3kUYThX0eoFtH4qoBunes/yxvlvLa5Eln30g2HQ== X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:hc1cP6QDaBxH10zdpyFEWqyIr2sz7dnbPuQknB+dI6IimBElZD2uS4flKkXKh0TGSi4qaxdk26DnL4qZ8AjfAURpuiWyv5lO9uP/dX6rv1s8Z2wUT5nvEUDFpjPw+KgP1Psw76POYHuV607j851wDR9ZKIEd090Yy/0m9dyDb/Mpd5tLbpujeB+LQ85pcHJwjIVcuwtYP+CxlTVWW9anKnXblTRuCh0IC9yTvqm4NM6UKbSyYZBv2l/jocgQUHsIw+U7Wc/m7nrI03rfRoTwffJuqYGoVveTw72RJw/zx74BN6f3jbEKbuUVA2TZM2dpFmTRkMmqK3ShgK7cDCyADiFpVKwQCA1lpo5WLwk/IqkWATyxCXoDUxqRHq5Hl/G0PS3D6ouT7iosIGLPXlC1Nu5OqDHKPEIgVDqmnjmkBz/bWaPUpOjh5E6vprCW7AmMbYV80YVImhyPyyS96SkiL9S6hbhe4x3K04KjEIzYjOuZEgUxLSCk36/ifEiVLCMD; 5:mF/AMd90w4DA/aGtjVsXyd+/r2d8z4o+ETVbbYM7BDptY7p/+rD+9LOHOmnkE/nzdqpF1zxTvobL5Co4wD4lP/q4YDs3fMNilNdCQ5Ghj8DcxA/nwqgV8LjPaYj7b0fclJczJKUUL5jzDBYF7E6xiLDqC13JRVmfAiEnqZoIKqY=; 24:YiOmbgztkxXQ1opV0CShcls6MSPP1r0zOx64gLPoqMNhxRT5wMG18Rhr6WkVfuWXGkr/eNrGnWMRNcYeOjf/nQ== SpamDiagnosticOutput: 1:22 X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:KzylJghFPI9IYmLep9fkaN0Ng4niJvfTtDs0nCPACSGEce0Hro9iAo5P0+zUuPZ23l+3cSOmzhR4FgdBhYjqmerYamQ8n1lRFf/XBR4gt6kIwLvQ5ir9GWYF87dXl1A66n0pBBKnPE4ouX90VqEYUhxMHvVkTw7xybFrJPdwiREOIOchuhmapFJUxiC1JGf08IA8jSYMfQuW2tfI+5xaX2WDG8pSak+hkVaGxImPVZtC35TkvAqQWAmSnuMc8diX X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:55:46.8924 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b9afe8a6-be85-460c-1885-08d5e03ca964 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 1/6] compress/octeontx: add octeontx zip PMD support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunila Sahu Add octeontx zip pmd support in compressdev driver. Octeontx ZIP appears as PCI device. Add device probe and remove support. link zip pmd library in rtp.app.mk Update meson.build and Makefile to build octeontx zip pmd Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- MAINTAINERS | 5 + 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 | 721 +++++++++++++++++++++ drivers/compress/octeontx/meson.build | 11 + .../compress/octeontx/rte_pmd_octeontx_version.map | 3 + drivers/compress/octeontx/zip_pmd.c | 120 ++++ drivers/compress/octeontx/zipvf.c | 63 ++ drivers/compress/octeontx/zipvf.h | 111 ++++ mk/rte.app.mk | 1 + 12 files changed, 1072 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index bc1607844..78708d8af 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -850,6 +850,11 @@ F: drivers/compress/isal/ F: doc/guides/compressdevs/isal.rst F: doc/guides/compressdevs/features/isal.ini +Cavium OCTEONTX zipvf +M: Ashish Gupta +F: drivers/compress/octeontx +F: doc/guides/compressdevs/octeontx.rst +F: doc/guides/compressdevs/features/octeontx.ini Eventdev Drivers ---------------- diff --git a/config/common_base b/config/common_base index 6541ad5b2..396a09682 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 # diff --git a/drivers/compress/Makefile b/drivers/compress/Makefile index 592497f51..25cced348 100644 --- a/drivers/compress/Makefile +++ b/drivers/compress/Makefile @@ -4,5 +4,6 @@ include $(RTE_SDK)/mk/rte.vars.mk DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal +DIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += octeontx include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/compress/meson.build b/drivers/compress/meson.build index fb136e1b2..a7d6f3a40 100644 --- a/drivers/compress/meson.build +++ b/drivers/compress/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -drivers = ['isal'] +drivers = ['isal', '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 000000000..a58f3df3a --- /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) += zip_pmd.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += zipvf.c + +# versioning export map +EXPORT_MAP := rte_pmd_octeontx_version.map + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/octeontx/include/zip_regs.h b/drivers/compress/octeontx/include/zip_regs.h new file mode 100644 index 000000000..0eec393c3 --- /dev/null +++ b/drivers/compress/octeontx/include/zip_regs.h @@ -0,0 +1,721 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#ifndef _RTE_OCTEONTX_ZIP_REGS_H_ +#define _RTE_OCTEONTX_ZIP_REGS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/** + * 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) + +#ifdef __cplusplus +} +#endif +#endif /* _RTE_ZIP_REGS_H_ */ + diff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build new file mode 100644 index 000000000..9145cb047 --- /dev/null +++ b/drivers/compress/octeontx/meson.build @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Cavium, Inc + +name = 'octeontx_compress' +sources = files('zipvf.c', '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/rte_pmd_octeontx_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_version.map new file mode 100644 index 000000000..ad6e191e4 --- /dev/null +++ b/drivers/compress/octeontx/rte_pmd_octeontx_version.map @@ -0,0 +1,3 @@ +DPDK_18.08 { + local: *; +}; diff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c new file mode 100644 index 000000000..2011db37e --- /dev/null +++ b/drivers/compress/octeontx/zip_pmd.c @@ -0,0 +1,120 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include "zipvf.h" +#include +#include +#include +#include +#include + + +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("comp_octeontx_zip"); + if (octtx_zip_logtype_driver >= 0) + rte_log_set_level(octtx_zip_logtype_driver, RTE_LOG_INFO); +} + diff --git a/drivers/compress/octeontx/zipvf.c b/drivers/compress/octeontx/zipvf.c new file mode 100644 index 000000000..a85d7f323 --- /dev/null +++ b/drivers/compress/octeontx/zipvf.c @@ -0,0 +1,63 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Cavium, Inc + */ + +#include "zipvf.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/zipvf.h b/drivers/compress/octeontx/zipvf.h new file mode 100644 index 000000000..36c44c8c5 --- /dev/null +++ b/drivers/compress/octeontx/zipvf.h @@ -0,0 +1,111 @@ +/* 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_octtx_zipvf + +#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/mk/rte.app.mk b/mk/rte.app.mk index 87a0c80ff..4ef8cd90e 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -211,6 +211,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 endif # CONFIG_RTE_LIBRTE_COMPRESSDEV From patchwork Mon Jul 2 16:54:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42109 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 45C4D1B539; Mon, 2 Jul 2018 18:55:54 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0083.outbound.protection.outlook.com [104.47.40.83]) by dpdk.org (Postfix) with ESMTP id 80A141B539 for ; Mon, 2 Jul 2018 18:55:52 +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=3LbP50wSOMBYswQsF9HyVk/dlGyUiDv/C3M0gRmQTJo=; b=RfEnl9qPXZQe+kNdzGLuaS9/QYZRwgkZDWfeQ0FAI0LQr3NZvo+0IgYLDzTZKqIrvuONcwbYU8DQ3mYk7xVumLp1rOcDVIdPPxlTT9matzHON98O1DILaftnejivbFZIPjiZW66UYbfBcNM1eDlGG76mjjkMKUt4PX0mqLcItRU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:55:49 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Sunila Sahu , Ashish Gupta Date: Mon, 2 Jul 2018 22:24:33 +0530 Message-Id: <1530550477-22444-3-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e857e445-3605-4f9b-ce28-08d5e03caadc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:gBhlhmqUGD/fCi2j3pB72NPw7z57PlUBX5CVFMZY3ld0G2b2dvvFD+wAARPqIn2pgkIFkrZqHUeZAtqc4UKU2+zqEJqkEIf+SrdKcpmkkvYlpXP11cGbrh6dzhBOp/TFXlV2yof1yFylMTuN+IxpQ82P38sTV1/qPwPqvsgRVbYXcAd/ieGRxhplWSHnUtPmCxZ2SDg1Wf5cZPIOAVrP/xTnrX9eMD1M3iCwOhvvbKq+rusydksBv68qkNjiWlgV; 25:2QGvcpctAJTeipqfKE7e6Ed1nJp6O7LxCFsdMAe6ObAwdrltzZTDCY59R4HArbsH1wCxGvwoqkWqWLbgL4Ek0PT4GzGiymvLCn3L3swCRsg4vN1iZ6F8ceGnXe0p9N7S0v/88648AIKEAxrQdcR6IDfyjZ3Q84P3ohyIVkzASdEXygFoRxT2eED20VM41AYhJEkXEPtYwprXxymIzAaWNkgCKK9SmFNe8zZtLx9sjcRNJml8eR6F7+42N986LxPa3WHkvuu6sTkBjvNOELT5ZsSpu9EUEuvF8ye76mTOLwWF2zWrGDpuuQTihc79AKIUUzDJGjn6xXMQjr23aQTEeQ==; 31:8oo2Vxe7V8xcHYAD3GR1sKkfj3sb2XiVMTbKF2Bd+6Cp90OrknPMN4qdpWhNURx0WMTbxShRJu+hvJY2JFvAjcMFDF0AE3ShQgtyzpZYICS0Iqql91qx3cpoUr6LIYvmmG9KDYXUYjSxBsGOPqRvUEF4+uI0bMOXQ6Pg2i2kYmaLtmyG0VFLg7fJeG4uwxtnJEz6m578Rx6Jtn7bDskwOLlgJ4935CH1tkipKTw2yXA= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:878iYLXsZKi5vNgtIzFoX/u9DfmvLX3GlnFsksPDJAjpS286YCLSfLlSpF73VO+Jrhl/Cq6M2AzcUgbnKPzhb1n1/xXubBE/8mS5maFfCw01zbv0VYALW9vYWOkWKKIeENQJjXrCXrK/Th+pZbpWxSU7b0gBRebMS/Ujt/kT0LoHVkbScRUGKy+Z421DPU26HQGOomYcxKyn8PWxdEazyqw26aA1r8fZgjGXzyNpX/UQ0+kyS+6W+U7hCqvhFy032Q4LdPgbuKbh0A4aaV3+WDMYKTrMiZR5zun2Z4mnK3RCQ37rKWDuxxRjwq+bbPvpyL6nwm8LSBZZ+OuYWLkZYiBXVNq4WSK6G1xngLkxymoxBWU+yZLyxdpaGPfy7zTA7UvTecRxkb6K0nHadJM2dj7RIF1c1aJPPrbKquBLuJlrRBeK40GoeCLWJuuz2/zdPwK4TSwD5vKFE4UYgGHMhBXcqB2QPJrt/duHbs/SdcIWrX6rOsvYD9f8xZZazdFDXVcf62PxpDYdMF6+pom8DpI9On9cjDjLLBWOedsM+sflOwAsDTRBqtYaXzHBtU1XG73pypgQUetMPK3FiKQEXAk7mWuE4MVs3zTaUWKpibY=; 4:eUwDpj/NLy8pDMJ99rMdlH6xO0spVcjkQyuw2ts4gvbN4ByonnkoPUbTGKAXpJobWvgOLcnQDZ6Xkaelrj+NITdNbkhtEXMqNUzmo+nExeKSdxEb3AqaLbMyY/dD8MRK5bUaLG4eCTfXOFJv63fy9hl4B0x25UHDsA9KEcKEfEyez1QHrez3vNqWcFgFO+nx9zIAZHu5PHLhyKRUq8+I5eosA6b9Qe7Tk/Ra9aCpUfNyjm2TZPhPMyEg6/1QU4S3HSiTuEC101nvp7W+Uu/UNA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(14444005)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(2351001)(42882007)(54906003)(69596002)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:KRfXYDMhKz8/e6xsg39bbUOXylkWx8xlSNu83zs?= ANxrEzMCK0oxqE4D1wStL9GI/zXWHO6AtsXFNfg8X2wrVQnNlnlV/lsbkCBzRgZqSANG9QCY5rNpcnoFnaVNTLgyC3PgkQSrDR2EEuiHYvqPGM1Tto3yKbsaMyK95i5Jm8gwaMHPZYbqgKRmt4279aua6+B6a4Nkmx8J9ZUl4A+IUakcmgOmyYX87PhfncJ2+ojGoAjmml3wEIHeKUuB/MQ5JBiq0o4Dt+CompNsp+6ns7o4uepgWyH5WmEVcMJdkKBcFacKq2X77rocDetQx352mp2Pg1GNoPUsT2GY8sWiYXJAt6oa0IiTjnSrdiwUz+jSDqqtRJiKeaYx/6M5Bw0n4436cELlFHIVs1vErrasEqKify5e8MtLZ35v82fquoJ5gyn6UvmSk/cHX1Ngl2OFwlc89L/rOsieHZqJcWF26a7AIcjzQyw3myjLU4qUylLpDAWFLeijz9j3G7pa/pfgaP+m073RjRWVYhhiRLYTMimB1E6hiO/PgPlH3qOAPlAR50x5qjlf1ysk2xQ1vDvOre1V83d05SJb8msrgvuyg/csFGAqUHfI4LaHJ6Rg1RQx536kOK9+7YClvLTbM5tenn9tEBTQt1grBFHiLx7slMW8Jp1K/xK/rSfoxOvWotyu2pLqLh+RKYObC0qht738HVdmHFCnz2gQrs7S8r2mxSe3KWsoVUAIV0qY9MEPxrctdjgOHkvBypUTV0Lai6HCWV2CR2/31he+XHgHjt0Gv4vlCbAJ9Fni9jk2Btabi0hBfvYAYDxRzRoFyWvC+f5AH13fQ3daKVOCXuyk6w/v4YUb2kk/nKrA/I+ZVJn210Z+7J8afw38B3oLFigXuky1vmbEkqoyWx0TK/WTaY7qUsu36WWmyId7JQq1uh5CHCFqIVKdnE8aSWHcEkHVUlhYnJLjXAZ5K80LBxUHG1jDosqRBgjNl99DsiwRWungil5UDV+hVyZ3wdPp5A5aWlKYzHSCHCZJY2l6ue3VOqnPKKUQwK+uQLZEHlQnYAvxnQGMkbb43VYvoG7cKLHuGs77WRLuDiuConvUU+9osYrcjN9mmbGqory3S6/GVib40aO9Dl7gi8jSghsWk4CHjc5FRAl8M/Y1WpdagKPAWBYS+MYnnmyrsfUp6pvLOptjAGgVYvxCc0LckwJOQwZg6eNRdAL/xgaduNNjVoD2oDbDjTRl06nDw68YPMeOG5hoX3bBWSn5z9C200z9MkAOx1dOgpH7QxYI/7bA2CYNi3yAn4oEJuHyy1U9sECptNmFHnIaHcG0wuclyZN3am7QvKwj2yuBbgrBCTCUWXStRVnKuc2vv6IC0loPhXK+kZjIn+PY= X-Microsoft-Antispam-Message-Info: aNICbvm0N6L5bs5GQAcJTRoGnd0G6gyirglGfKPR5pwB/VvgsusGlK+44b6bFQBcut/5Oqjjtf5LE8pDkUV7t/66b+YKe8MJpF3UFmhJjOVfkQSSldsBAONwsvPewPEOwxFmy3P9CYJP8rgWr/FeejDH9MJ2QIh7ewdAKFJxoMcxCgFyNfJsRkElCWqNjOt14qtqWLrj2opBMAzlij8rbysMxPzwEYQeZGGJkmlTjsSD5yVl5o2Z9QA35IPI7I6vg+JKdB9Jv+ylHJI7B5V4ajztl+JrGZEUdQuz3lk9lB+NI8ygV0Pt/3ZBww3LcC3uf+5WEfuJ49y08lwBj26yyw5Xaxm4JIM5g2iZZh4TBhU= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:/EwBrq0NinXVKJt1pqzLBl5Qzho+y3j1OOLm/NiFZ3SicSWlP7KVm6tXmy2YSng65wUPXDcUSrhGPi4a+YApnBakNcIqMQX9dp37g25dalcvWwMmschLA18f9g1WH5biZtpCOvQGGur/T7TiTHUxH0r3DzIlPZYNWFcdq7fjU5zAYJkEwqWgxHj7kAPEzUSwBmkmY/mUnzn/Ln/Wi/hmNPdoHNghcrppN2T/P4efDtZo7uGPifZbZmZqurxb6aSoQyRQkJQ+4pvagV0jVoapO6eah+3fGHtiJHCk1ZHc9r18XOqpuNRnyiuVgigu0BNVlESadIkj/k0z4lffHgivQH7kx2P8OmnqMOmpGrFTqAHIQEzVB4zjOXJ62vbYR1sWiCn9laxlNTCH/Z1yfPt+o+iZ+uwdT4OIWfe1MlR3PFl4AlgvehadEyehuOxnG93UMLI+okwj7sNM9gafpmIHew==; 5:Sn69SW3AjDjJQply2JZkkJif5C3S52LpVRyvmHLIIwDH4CSUCmUQ+bA9AJjNpM9mwGoditfaYYRgTKPraNLqzj2hNb2af5uNFWYXFGYv1DKIniYdDebCLV4YizCv0cKaTg4OaH8ufy2OlC6sAe6dT1Hk8JDWoLCKU+APNa/bECk=; 24:/pAV2BNkLrUFDVXTVQVjUskGJz2Uj478rj/HcA4G8hDmgNOGuG63jLap5Wm2rL5nKbzMmLMci898QL5TnsjvrRrPG0uKQ9V1wWGRv/DTY+A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:sEmyHirjq6weJwW8Vz70uYgl/z447w+dfkJZnsjg0V63H4Vh5w/4ZYscKp+ewRKeoN9ZSCYs/PMOyRkKWaO6WBsrzhK28A4qGOwdpz6V4dWmTGE8N6s9rTSR+gcvu/00DWPvWPDhUbMrqy2Q99P8gGovlHPsnSbEjN0Mi88AYaahsYJuQ1OfUl5eyMGANMNKQtV60WBZuClYPfH7g/EfSUlEN9uprNWI61ObpNLRcVpe5kBE08FQVZy77gdI+RI9 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:55:49.3924 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e857e445-3605-4f9b-ce28-08d5e03caadc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 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" From: Sunila Sahu implement device configure and PMD ops. setup stream resource memory pool setup and enable hardware queue Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/zip_pmd.c | 251 ++++++++++++++++++++++++++++++++++++ drivers/compress/octeontx/zipvf.c | 73 +++++++++++ drivers/compress/octeontx/zipvf.h | 56 +++++++- 3 files changed, 378 insertions(+), 2 deletions(-) diff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c index 2011db37e..44c271e1a 100644 --- a/drivers/compress/octeontx/zip_pmd.c +++ b/drivers/compress/octeontx/zip_pmd.c @@ -9,8 +9,259 @@ #include #include +static const struct rte_compressdev_capabilities + octtx_zip_pmd_capabilities[] = { + { .algo = RTE_COMP_ALGO_DEFLATE, + /* Deflate */ + .comp_feature_flags = 0, + /* 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]; + struct rte_ring *r = NULL; + + if (qp != NULL) { + zipvf_q_term(qp); + r = rte_ring_lookup(qp->name); + if (r) + rte_ring_free(r); + 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 = (struct zip_vf *) (dev->data->dev_private); + int ret; + + if (!dev) + return -1; + + /* 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; + } + + /* Allocate the queue pair data structure. */ + qp = rte_zmalloc_socket("ZIP PMD Queue Pair", sizeof(*qp), + RTE_CACHE_LINE_SIZE, socket_id); + if (qp == NULL) + return (-ENOMEM); + + snprintf(qp->name, sizeof(qp->name), + "zip_pmd_%u_qp_%u", + dev->data->dev_id, qp_id); + + /* 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); + qp->processed_pkts = NULL; + } + if (qp) { + rte_free(qp); + qp = NULL; + } + 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, }; diff --git a/drivers/compress/octeontx/zipvf.c b/drivers/compress/octeontx/zipvf.c index a85d7f323..2a74e8bbb 100644 --- a/drivers/compress/octeontx/zipvf.c +++ b/drivers/compress/octeontx/zipvf.c @@ -18,6 +18,79 @@ 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); + + /* Check for 128 byte alignment, if not align it*/ + iova = (uint64_t)ZIP_ALIGN_ROUNDUP(iova, 128); + 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/zipvf.h b/drivers/compress/octeontx/zipvf.h index 36c44c8c5..4c7eb8862 100644 --- a/drivers/compress/octeontx/zipvf.h +++ b/drivers/compress/octeontx/zipvf.h @@ -75,8 +75,53 @@ 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; + /* 64-bit word pointer to queue head */ + uint8_t *va; + /* pointer to iq virual address */ + rte_iova_t iova; + /* iova addr of cmdq head*/ +}; + +/** + * ZIP device queue structure + */ +struct zipvf_qp { + struct zipvf_cmdq cmdq; + /* Hardware queue handle */ + struct rte_ring *processed_pkts; + /* Ring for placing process packets */ + struct rte_compressdev_stats qp_stats; + /* Queue pair statistics */ + uint16_t id; + /* Queue Pair Identifier */ + char name[RTE_COMPRESSDEV_NAME_MAX_LEN]; + /* Unique Queue Pair Name */ + struct zip_vf *vf; +} __rte_cache_aligned; /** * ZIP VF device structure. @@ -102,6 +147,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); From patchwork Mon Jul 2 16:54:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42110 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 0346E1B54A; Mon, 2 Jul 2018 18:56:02 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0079.outbound.protection.outlook.com [104.47.40.79]) by dpdk.org (Postfix) with ESMTP id 1B12D1B533 for ; Mon, 2 Jul 2018 18:56:00 +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=n9hfZrfHOt95SdVHAnwubuwj9sxPLR3I9vwyE506cyw=; b=UD8z/9vIxjh1f7DlzpLsah2n6MwdyaWteW0Av94j4f27m+6c1jYrOA1tU9ErOyXh1tw5r/9NPkHyhG7ydqdWc1F9paHDPnzMizS2mE16SUY6kxiVSRf8TMP35B1AQD7Afo0l0HkDHxr4nCpQsrG28F5k5yePHNI6kxi/MkqmDeQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:55:51 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:24:34 +0530 Message-Id: <1530550477-22444-4-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8c72e913-aa00-4752-c685-08d5e03caf5e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:ENDpKM+pp+ZzfcvxV1RjlfnqLw5RARMZ+n3Jmg1tlF0EirsCtAg+hiqvMpM3aux0J3GZAJ/AHwyupBGmsX899llGxwiGKFUkEY9Ks+Gc2TYkP4smwh0irfNf2WqyyNdfOFVW6a0ojHeiD1Mfkb8lMVkIwhuiCS96P0Qh4OjJVQBOIGlTSLyoh+gT6areeiAV+czAmFEuuWilFRhhvLff2vfgJe93y+Q891WRmHVKjsITgv1ehtBOteC9m6Deqz/5; 25:5T/TH1Q2Uhdx8Nwyy//6pgivyeLy/H5f5FbeJF3r8fUsF5kz2LWoQ6dzsij6P2vyv12kDL49CqSjOGW+tiI7ohC+Ik8faZwD1r0fUlvgJ+IIIsv5eW+nlfBZfx7Et1YB2l00xEFE3D1RKpmDVoX2uNiMH49znRRzyGTLWNkg3srg+CQAVIm+E36B0TZiFB7O0ilvaY2fiiBcNUYoyvOJP1FgFVa3wB2tS5A6Zqrc3txCjZkB+it4z+gxGivdejUPOxnwml+ZTuGLS6cbve7nADZeILiFxUA08lr7ZDgGU1u1PZ+9OhPVrAEQJ8vJjVkMXt5+gDM7wUTAlb5lN4W1Gg==; 31:wHrPgqyX0oBoBHrywfNCHByIRd1LD4Z+FuIoC6aikVIN97yzflXklwNnas9c//9rXyyvUoW5q/gMWdAhvOASOuG9S46Bu9YNaZPh+1P+c28bbVohR38HN331EJvJCy8IW7IGW9h0ukI7oiQodUalntlby4/3jUTVoQCV7MvNKoGkyrxXJ3iiq8hU2qXeg/nzqh95U2Cd3JhnlI+d43xPYlualuNRoRc7jaSFPAym4HI= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:bbFSIkM1w8VJCClZEkJwFhxuT5d/UnLsM5pRXuNSShF+0C6c0NigBoeCIeWc0rUUKoNdhA3Nl8aLN9tBLOp2tzN5WPuskWVcoFuztrGBgpQxVWejHDbYkW4Cz4q7WNxxnwmNYip6kAUOSflGcQqaumVUILsvZK+sAYa3zyXEDQ5JcbdnNAagMVvjri/akNj0Z0ozDfWshYNH1bEdE1k7bBggbm5Zdy8KA+jgny3T6Q7prJgJwetzwVxJgapeJKOuXXvrtR4/ewjiDBNUFKvtm/FIkQl8psEXFTmfmXbkLJYTRQ6O2F9U/D5/nF4n6lhuXNAcRvvizN98Z7CXPELl84E+uUShTBmApvCc8c8dGY7jD76Ni70BA80F2HTR6pHriPIBZQ79G0hx8uyYa5tqtRSFsS2njw9ycVOsHd85PI5MACyE3gcEQdTNKzWixHtw2qeyvS0STXz8c/UuCHxukAbz+FqlHSyAgPLkotH7L8vjQj1hUGdKdF070G6WwKeKmkcZetLaK20dTXn68IfZSuiDNTVdFdvHVu8QpntVROeFKp7TwE0/El3BKNE29wiyinqedY2bo+n0pAn83UtdOLRGuRpVcaVqsGjIH0gGWRw=; 4:QnmjAOItah4pU1Il5uGZycTNmnINFfSCDkK5LczGt7FvT/qPd1q5AZo9bd8kx5CP2f0LOb3Q32sLCDSLjbgTB85fhQorARfX9tZ978k8QsfJg71YqY1om3GZoLto69kiG0BkDkzheVBp36IAtvlid0WkS+rc4FUF0T6TDsz4HYrbqENxiUf/XSlvJjdqxtwBpfqKJo0S80zQ0QhTa98qVVpaiXtddCPKMMZ0j28PCoRVd/7oPI0dTVac2VtVLhEweaN7bpgCVWi0gudVTp6kFQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(14444005)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(2351001)(42882007)(54906003)(69596002)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:RE3m16rHk2hwwyz/DSghar/4GIT3zFPbap7IH5N?= TfbQRvAounpvLzXyoUWQMLZfIrAREyRcmJ5uKFoAxf/V8NLkfMX6ic7jJkg/WRqNkoc1PVpfWJ+1XSGcDs7jNkMePeBLQEYYrUfZsbyxUg8eWgyZiHu3FyolXKFdUz4qmK9KSEHR2KxlyUCzMajHVIPTKKMBpYRSIB770/aSZjsGGKlpn8b3oS92GbocIJ7cOY5eCWWModryRbav9jKAMqcJOo/i+zanV891yon486Kb/xcYucPGr4q60E9WH95XGyOroTJ64O9SvD1bFeyXC10kEyfWbiF0XQcfS3uQL3WLK50vpNudYPLla/5NPttzP1U96r675OKJvmMeiNJ/D/tIFsrmjc0mguDnJayVg2ighBYnBRmHTvEZuUfCGd/fWYN6vQJND9hMtwd0bOt37KkgvvquyLrhR8t3KaFGcWZBhpnlSxJ3XT3a94BNWe5qjNaRNBNHfJNRQoT27gFzs12hkNoNBwQUClj23zju0l0sC6jzCdjVZR94sVR8wQ+tJI1AaX/2IYzzOlsQbpW99B93bX0BeoXXX7dRXC88xDbWWsd3WWChSTDIUafuXZ5afYxi3PV7yjZmRXuHsV1oOhsn06VAnTSfUN3oBGa1g5KBVg9UtKCGy/QC9iG/H1c8QgcqFAzjePIyGtxjTmwvo053KW+jxpM5Pmx6/fkaBB7gFzNVM0USpWEIcrvi/aGQo8ROvI792oPcOnwCu5hm+fn3Rt7d597RavGbrwqbemERafVpG6+rx9e7WGrQDLjZ+J0yoIQNd4Oxkgwn9oT9ZlkppekFBqUqZSMNfhSNx9oTqgbUZsueRJneUm6EQNDwIQNwQsB9vLtHD51bK2Zh6Qa3oUusdqC6AVCq0qs37nJVbcQMqVzn5AvXSakx354CD/Lyq2HcrvVWHv64hw6o5imnshBXaXjbi0zH2uLlUTCpBMv8vwCoc+o2x9I00EeE0gmkFRejoUkr8fV1ZGRGezm3sWPF1RnropwxdSHhSScH3K3ZmWKlTyFVqavUS5VKZ+/rlDW3BOWQF/8KdNsw6kpabcBGJYV0lpz+/OSXMUVwgI7Z6DhVp5My3dTeQYOc4vxQgud9eZ3xeIsT3SSIhxBG2sC9taWZSGeX3Kbu9TO5bcc9ZcWlszzDEThMFdfrG5uoHv9Pm3VhItLew4qnTU9sqh4BC9Ill0D8blysi7/VowUAftc0Kx3Ofjj/l1EROJT+HHL2zo7b/VgTF1jk26C5qxnhbUcLnoVn54vAYk2SabBy7hhBunJ1gR5uYtytsRu9PUzNOyBJMVyImQ2FyDr3VfWxjVeZVDhOd2kKy+pI3/+gA5RTml4qZXrrRQ84EO80= X-Microsoft-Antispam-Message-Info: KC9wuqgeYUwil6GRJcAnl2RcxAP8FzMt4wnQbV2MJErml4O1caXrU/e8SHawXmM6gwewlNRRSbNIY9nMaPVzdxmiCfHjlGUmxjBRcgYhJWzbh3aqCc6HT3Bi/zoOEGu2X7a9bzV5thMRlUzk5pF7Y1KC+O0IJK8kUb14o9IAz66j9zhV45AP3vR1k/lNbpYRkG/KOKZaHcbKhLvK9Y4VyKI+7cbQSjabQoMUqBge5eg9zNOecQMMq9K+BjuqGmzD54hNFaWlnhnzf+oMPjvmb2grypOhvE+pMOUNxL7wWQG/CF0QGZk7Uit0w3NQpx/OUryIK2tXSKGlgZIEaYEIgmIYWJqhD5u0ioocufmFolU= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:IQ3T2zr5rYGrXHTm+vlc2SReC9+WlXR88pvNrtrcu5uRiqbpy31pXXd+Z2dX+0CSeEKHyfJBkWxh1QH4PbBWL6s5trcv5Xvf4zYDrfbJs8Ejh0QbdNzcC+PF8jsARignUIqpDGDcIQ97ea2VDCfWFuD91kK54btrgVFNJm7l9fkvN4Dx/HU0aocqDa+DRaqDWG745nZld/59IHxlL2IjxyVkrFjzg0G7ok2efH+yyihjdEjT8se4YQm03NpYnUVcSXBB5slXKjm1VnfC7keqxqIC0KgTtFgJ86LyTUrelV1QvRKiuOBZuLxcxtQnqSTxPFwhr0OKddRHQSB8UZwQoj06e9NY2C+tQKgCGaC/uILkb1P32z/x+qy6+ZdexxSUzQg/qZ7HkCvblVo6FRR+z+RRz3RN54eTGDOUaBUK14wkz5tSGe3oH8ium925sbE6oAibK/Gmo95WFI49nz+4kA==; 5:pGbmBBPACG8j9oP++oldwvVBePf+AVOXjfBlJRtA97+TA3trnfrlB/McbKhQEOR4OPdeMTyKY+rJuVbFDdQ9I8XITB4Si4tEF+lHAJiP4eqx4HLb05Aqkanv9nMHEsS28bIvt58jPu9rmmAC4ZD0xX3fLyjPaP6wTY/plGtt6dQ=; 24:kIrTuycDcxkOWMWBeONBZ6IW5XvjmNtfxH0J8tpNJ2uHJNHNSo0maEtDtTMU0twrJ8Wj+1w/gwkggeB1oSLhuN/v69+GSNip3m66P9sWTGU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:0Agi1nxJtTqOQ1Mp+ohzHmXYEMwUtMEgGkdd8HVVoZPKQiv2UjtSBJlnEneuZbIDCoQacL552WP84jsjmlTezv/ZDNgfUzVxkCFNDrJMPea5pS++R5SmI/Gak8s7Pe+yFV0iSG7LVbYmUBlX+1AaMJ2JKo13qTv0VVCl7gKlsZyvTpTW8gipTLF3bvym+kHJLrFknIq4S+rnBHX5TNjKB/t8cM2pASlxvSRe1GGQ2c73rTkPOrUK0RMS1DWNYkLy X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:55:51.7362 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c72e913-aa00-4752-c685-08d5e03caf5e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 3/6] compress/octeontx: add xform and stream create support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ashish Gupta implement private xform and stream create ops Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/zip_pmd.c | 140 ++++++++++++++++++++++++++++++++++++ drivers/compress/octeontx/zipvf.h | 24 ++++++- 2 files changed, 163 insertions(+), 1 deletion(-) diff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c index 44c271e1a..c8feb96bc 100644 --- a/drivers/compress/octeontx/zip_pmd.c +++ b/drivers/compress/octeontx/zip_pmd.c @@ -25,6 +25,103 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/** Parse xform parameters and setup a stream */ +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; + + ret = rte_mempool_get_bulk(vf->zip_mp, + z_stream->bufs, MAX_BUFS_PER_STREAM); + if (ret < 0) + return -1; + + inst = (union zip_inst_s *)z_stream->bufs[CMD_BUF]; + res = z_stream->bufs[RES_BUF]; + + /* get one command buffer from pool and set up */ + + 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, @@ -248,6 +345,45 @@ 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; + + strm = rte_malloc(NULL, + sizeof(struct zip_stream), 0); + 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 -1; + + z_stream = (struct zip_stream *)stream; + 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, @@ -263,6 +399,10 @@ 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 = zip_pmd_stream_create, + .stream_free = zip_pmd_stream_free }; static int diff --git a/drivers/compress/octeontx/zipvf.h b/drivers/compress/octeontx/zipvf.h index 4c7eb8862..038877e4e 100644 --- a/drivers/compress/octeontx/zipvf.h +++ b/drivers/compress/octeontx/zipvf.h @@ -88,9 +88,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 @@ -153,6 +168,13 @@ 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); + +int +zip_set_stream_parameters(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + struct zip_stream *z_stream); uint64_t zip_reg_read64(uint8_t *hw_addr, uint64_t offset); From patchwork Mon Jul 2 16:54:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42111 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 864CB1B55A; Mon, 2 Jul 2018 18:56:09 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0087.outbound.protection.outlook.com [104.47.40.87]) by dpdk.org (Postfix) with ESMTP id 3F6FF1B55A for ; Mon, 2 Jul 2018 18:56:08 +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=m6gsSnzz9B1cnabXVSf7BxPeVES7eA3aWSaj+r3UCJU=; b=fhmbR5x80VbKkGzeNMTviAN8Jg5Ca0R7i5q6vly/E2GbucvZVG4Pq2NglwyXqBja+O8SIW0KxVVwAnG4bQ9vB1JdMRcdjJFX5J1U6TRwqzqW9RYcBLw4+coSUnWVFofrRlV80hfZ/c3m1euu/UPWXIltqVLQYxadnNeawrjZqGI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:55:59 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:24:35 +0530 Message-Id: <1530550477-22444-5-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8745f7aa-11f2-49df-97fb-08d5e03cb3d9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:weE3rhS7l8EVpHCAsoIDOhoTJYd3+rq483vwgTBFRX+0J/xN56d9MQvtlrP9WiCCKPviJo5NvP7gCag3l+YYRy4b8GjGEkY20QjNV7oau2aHizrv7p/5hv7bRFo32eUerZuDRp9FKo3dMWv7EZMvEOchJNDWynNIUs/2tQ1bXkU2zWYAVAbw/VF7F6ebJNsmtHJS2LKU29UTe6PGh5XgF+aIT8JN3LG/OSWTdZ2PtcQaiySOl17TArVb/ty8sNEf; 25:P8Ae/0TKFV1FZA5KYzNdaD1UcbOFvsflpFKzZMGpTDF2GizRbsYb/gGzK74SdFpMx4bdCpxb9FSIIjEzXmBvGWgxEU+0qBiCrJD+TPnrOuRPoXd3EC7CMHss6mnu64modBTUkHCDAX7khCV3x+141ZZNDevI2Y+vu+uO7mXDXS0ghH/0+ArYJcwgD7QZw3pOdfpyuoHnJASsgZgIjuobCCj+FcWq4nMQFmJcAM7hK2CRY8Xoksv+xgLXJ732bqLoHoKPg/HSh+k7JyoAORE5y1o2KQNxurN6o/LZRQzCtDyOZe/I6gSMK5cL9YG7BQwkJrSE0c4uEs/fKSJ2FO4CGQ==; 31:mVr7uImO9uCx2XlMjtHW9wMuTO8wrtlMhZNrfgcSSycjUSTYuD4j8bytEij4gejaK+q0VbW3KOGK0pL6kUNylVrevLnfPm/pQiIGefXZFJfjEKFkK8UPN61GUHW+5V8PpRnI9t6UHDR3FGsovCd9vzsRaRqKZdlQKe3nrKIm6vZKfzHXisMbNWGZ2GV139aEq7UdafFFNfMEd89T5Qgupfom8Y3mem1haAER/G2qMbU= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:HA4ThxUwtPHq2Vx1yQMEvAMYkovGPYDcth5VBmL90C/BS+VNqg7inGDFj5AFQWglXS+Hdq9CaOTMnLmlVOQEuI1d8VWHnRHxG4vUwxURO5QIut6Px/4NyzGEcHBV2/cDO6bHmD5KgU/FWsbZcTMY58bX4qR/YwJxLvaJEfatioOoZ1X/vz5ecNNC9r7UZu3kpgu8E5oy9S4auNnv46xNK2IDY6OSUAKerHuOItaB2eMjFGGATGdv6zUato+zHZNEUwP9erncvLMUMPPbDR1VAs+0kBsd8G/T56ZsWenGI1exUID6XxACVCZ+4FxoNZlpgocNjFEOr9biznYQPT80C/W8+BSiZ5DQb2TVl57u3cio9GElTgEraxjHJeJK6MEgWA48Ak4SELvsgBvpmu3kPk5fx84JAyIPy91tHja3sEooFVrT+OcUPCQbSuvDYlM0g7gUqtg4yyb/0Fmj0bKSmXzx8HKuW7vi+GjxTkBxdTcNCNq99rAqe483cHJlox1SAXM2iEWAheCP484v8Jv4bOfVpuv4JQ4iU5JvT9WeUkHONsfmzxXMc13f1bQiMjtdYHH02QXvrVyeSkNLw+O0YteGRtIAZgBsQVZqbT2/0U8=; 4:nDF2qXZ/2ngDUjv4qr4H9ExNmAfsrzZGkUU4ARr7VNpE+lBPr+kDv0RwH4cqwSzg7w6Ttdn6pEpGvNJOSfHKf7+b5Ro0HYLOjksmvS9eMexA07GE3F76KJp8tY3StMKCvKNcPy1rf3Gg7iwklXtkgmMxgDpMbqACwRVnFbXrf+0l2tw2vnZQe0W6eMqHs1sb5p86PvGERdRSYpBS8ip95e2h20gLLPXXHiO5pugSTZQH/H7pe8i5jy414Qt4SZgUOMbO5P5JUExNk+D69jMCbg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(14444005)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(2351001)(42882007)(54906003)(69596002)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(575784001)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:D2L4gPe7Vi9diHwfteL+KjQmrr3ZT6Myn1AmntM?= RkKrYa9uIrgweCTFc1tLERpF9Ht15YIaJdn7XeXkmp7IWd2fi8TC8RQU0x0OY7gqwGmq+Zqd+lgdBNrkoA5Zcua3jtO4I4vG+IrDbHL7pI8koaiWHdnduXl8EYJE+dao9vr2I6iuMBHjoqhpRkTAm8ZAwqHEr16kk9gzLO45xF+lfQ1/jJ9v2+7n2VHX/ReaZYKRbSVxcKqsqlMSCSqm/kzqUzQITdQUM7JjLU+43b8x0OeZH7LrzLtiInyBSQ12KcNYgD23S5xFWeyAa4/nS4OfqmTdlwE95NamciKjYQFODbHgC0MdDkFnrgafrA6op1RO9tECmxw+bXsLH9LLD5UYDehraF/EpZSZgnBa3cdqpSQxeeDKenHEkplHiIUVNSdvaafyQ4PKYQBCWMFdxw2nQZ9mDTzNyxFLsU6pXeKmCXkepmhwh4eYtShUtnNsLCm+HZm6bnJfLq/dk7XDOC7uGgV47vgspxk+ulkggnXBOidkwVff210GZ1kH5QjE2Q5kwgQTVETFJUrMJMfEPzZEhNJGYtfEfgSNasr41CboR17Ozuv/dHTwMeSZJghn31I8MZlC9t7WUaL6xt5ZcvOPaxohYwMTR0lWTxjOebR7+BJJux1vS2Rx9GkXfb9xPhFOXlMxUggLoM69+nJOk6tENVwC7ioeuSwZYhwAh/dxqIuuktlV7IrJGmWtjpTklpz8/hC6DZH4Loy5lUUrvK3XhXg5cFVKAYVumUOrvsmzPSj31jqSKKSc6TbfEPSlZ65ZssCowf35iZgL3LZgGd8ZqTyq8VPuORw4uMaBhxzc/x8/XGGRA8YHITemUkYG1qzEwH1zfIgRmMOOTVZSCQZgo7+01DdzM502365zMFWXqEcO9QnrsL+/xciJP49IBX0650hbzy0/rGFYVZxngiLFIxccE/mpVxLQKogrgqH56/GbkfduZRVkkuvNbc91qYURDGqtdR2N4iNKiUy5W2/UIGxvh3+2on3Cb7L6IwjaObRcnBOKPSYR3qp9iQxtiXgaLTh+E+42qtzaMulI2KYxIlbR7wfEqVUxaUv5rh3AAgGv+6zJE/kMGI6VLDovKA9ygZPr4exNibNKL/NH9cBWwZioNZ4xIjv5ZBszBvDLZTII+PqXq+Pt4uwdUj06llouVhQeGOAb+ak5DaCtSXzGV5Ej++DQ9VuYapgh9g2UInewHabXvkTVZ2GNJmTQ88gbkAA96oNThhv31BzT8PtZfHlgBXhg07VUfQP72qun1Q+Bjjd7aP45EdhZS2ajsdK5w8Ig0/9jpK0WiY018RzwCxMNobU7Dvu1ycDtBZCmmztgjUUvkNqr1wJeNi3EYXSNcDKSBEHt7UA6TIdO3imSr X-Microsoft-Antispam-Message-Info: 8Kq0CPmvjHvjtHWNVd+yxpiNneNdSvhOGUpaCRUxOOu6sUJVhLNx8WZwk2ZvS5i7Vn4i1WI3Foyv6o6lp6g381TwSU+cisKJJbX1WLYvnI9+Z4Lvn8Vn4B9wqR/DirPO8hB0CErPxJlD/oiGV5RKUOVIYbtjmCwLFdtgFpzlMsVeeYUyx/pua+UwutfA01K71CR89U27hVF3QHVfvHYdYgEkj/KzqVEvoHb2vBGTAUCoDFTAQiAtkBI6RtzhcWWV+ix4Xrf7eJhYV/jEgUP/WaguTRThvum7eHP0oBRmBA7PgBqGXxFJ527YMApyBvB48MbUo4LcixJZtj3jG2GY+r6oNYr1NVX//iTz9c6uM6s= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:eS735T7bOkSsMMMaE1CrfkC+t+hji0tinvjNmSA03WFwZke/66MUrFE7wqfj9HpjFG8OjlzT3cxnKjjixvkjec5G+AlVKUxxnIAgnmYd8ccpV0Wz9PaEu+gzWrbjcLB4wABzdsk23ESFjx9g1KxuQCd6JnW36v15evrvRYnybXTarI1g6MnFdr13N+FjzwCN1Vnas1vaU83pbA5pC8AJei7pAQwn3/gmU1ccHjxOQBRBwTIXI+3eQZ01q3PpHp68vVxW4OoTUW+5xmuUh8FNynSPD4NJgrJua1oS9RER9MIM4uTn/Vpx7OF/qtVE0vfjYg93ARPQAhNiIHZIxUE2twxbOtCvgaHk08C5n3pdh5VEHsuyHKOuakSpN4q1uA2QJqFqOekndFtlGmPd1H5/EGmMCt4wsZ1XbME+fsGhxxyxqLyehn/FLKm4e1XoQv2R/A+INUlQUNs9Dsazb0ZLFw==; 5:PLOiIh2LptCWTlG86BQOeSDkHcHrwAkaXwlwM+Fh9x5XwVOX9ZDK45I/FrPS2cisZH/odSyX6gKpyc58ioYiQuOOO5I3LeMTqrsVu6p3XVVbPj2Ozs9QDPfoFdVt1rFIrmio3iGqhP98oGQXrpcwlEJ8fo7gceDlGMgudyQwrd0=; 24:Q9OmSnxxEpS4u0RHlrzN+ZJBIoWWow8LnrbTH4AqxnYdZoSMmHPWfgEWrrb1miOrZUBiCveTpdPr2Ck/Yf3KCVuhE8GXE9DD7JbnX8/Txcg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:zJFncf7mRushsqXFuMDOMvySUUPvkHVmWw/Rw6OQVsxNsBs9a+houBfxET7sXkGJVKZmUcnkTjhdf8eXefpd387Vk9HmOB6TJDprhURdZFkCqtPEpYWEYoGNDDsKWvajxPSamvyQDtSxHcVbz75BNkfbbIOlC/Pcq0LwuG+hBWvghsnHpjHMvDz9EwdiKNxfe31TMQsXL+veev/T/MkbOaj86nsseF9KSecW0rVzxPiA6ZGsg9ORuJ5y1EWRxI1D X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:55:59.2520 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8745f7aa-11f2-49df-97fb-08d5e03cb3d9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 4/6] compress/octeontx: add ops enq deq apis X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ashish Gupta implement enqueue and dequeue apis Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- drivers/compress/octeontx/zip_pmd.c | 114 ++++++++++++++++++++++++ drivers/compress/octeontx/zipvf.c | 49 +++++++++++ drivers/compress/octeontx/zipvf.h | 169 ++++++++++++++++++++++++++++++++++++ 3 files changed, 332 insertions(+) diff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c index c8feb96bc..4a0eea41a 100644 --- a/drivers/compress/octeontx/zip_pmd.c +++ b/drivers/compress/octeontx/zip_pmd.c @@ -25,6 +25,67 @@ static const struct rte_compressdev_capabilities RTE_COMP_END_OF_CAPABILITIES_LIST() }; +/* + * Reset session to default state for next set of stateless operation + */ +static inline void +reset_stream(struct zip_stream *z_stream) +{ + union zip_inst_s *inst = (union zip_inst_s *)(z_stream->inst); + + inst->s.bf = 1; + inst->s.ef = 0; +} + +int +zip_process_op(struct rte_comp_op *op, + struct zipvf_qp *qp, + struct zip_stream *zstrm) +{ + int ret; + union zip_inst_s *inst = zstrm->inst; + volatile union zip_zres_s *zresult = NULL; + + zipvf_prepare_cmd_stateless(op, zstrm); + + zresult = (union zip_zres_s *)zstrm->bufs[RES_BUF]; + zresult->s.compcode = 0; + +#ifdef ZIP_DBG + zip_dump_instruction(inst); +#endif + + /* Submit zip command */ + ret = zipvf_push_command(qp, (void *)inst); + + /* Check and Process results in sync mode */ + do { + } while (!zresult->s.compcode); + + if (zresult->s.compcode == ZIP_COMP_E_SUCCESS) { + op->status = RTE_COMP_OP_STATUS_SUCCESS; + } else { + /* FATAL error cannot do anything */ + ZIP_PMD_ERR("operation failed with error code:%d\n", + zresult->s.compcode); + if (zresult->s.compcode == ZIP_COMP_E_DSTOP) + op->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + else + op->status = RTE_COMP_OP_STATUS_ERROR; + } + + ZIP_PMD_INFO("ret %d,written %d\n", ret, zresult->s.totalbyteswritten); + + op->produced = zresult->s.totalbyteswritten; + op->consumed = zresult->s.totalbytesread; + + if (zresult->s.ef == 1) + reset_stream(zstrm); + + zresult->s.compcode = 0; + return ret; +} + /** Parse xform parameters and setup a stream */ int zip_set_stream_parameters(struct rte_compressdev *dev, @@ -111,6 +172,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; @@ -385,6 +447,56 @@ zip_pmd_stream_free(struct rte_compressdev *dev, void *stream) return 0; } +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 ret, i; + uint16_t enqd = 0; + + for (i = 0; i < nb_ops; i++) { + op = ops[i]; + if (op->op_type == RTE_COMP_OP_STATEFUL) + 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 + */ + 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, @@ -446,6 +558,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; } diff --git a/drivers/compress/octeontx/zipvf.c b/drivers/compress/octeontx/zipvf.c index 2a74e8bbb..996ae69ab 100644 --- a/drivers/compress/octeontx/zipvf.c +++ b/drivers/compress/octeontx/zipvf.c @@ -91,6 +91,55 @@ zipvf_q_term(struct zipvf_qp *qp) } +int +zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *cmd) +{ + zip_quex_doorbell_t dbell; + union zip_nptr_s ncp; + uint64_t *ncb_ptr; + struct zipvf_cmdq *cmdq = &qp->cmdq; + void *reg_base = qp->vf->vbar0; + + /*Held queue lock*/ + rte_spinlock_lock(&(cmdq->qlock)); + + /* Check space availability in zip cmd queue */ + if ((((cmdq->sw_head - (uint64_t *)cmdq->va) * sizeof(uint64_t *)) + + ZIP_CMD_SIZE) == (ZIP_MAX_CMDQ_SIZE - 8)) { + /*Last buffer of the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + /* move pointer to next loc in unit of 64-bit word */ + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + + /* now, point the "Next-Chunk Buffer Ptr" to sw_head */ + ncb_ptr = cmdq->sw_head; + /* Pointing head again to cmdqueue base*/ + cmdq->sw_head = (uint64_t *)cmdq->va; + + ncp.u = 0ull; + ncp.s.addr = cmdq->iova; + *ncb_ptr = ncp.u; + } else { + /*Enough buffers available in the command queue*/ + memcpy((uint8_t *)cmdq->sw_head, + (uint8_t *)cmd, + sizeof(union zip_inst_s)); + cmdq->sw_head += ZIP_CMD_SIZE_WORDS; + } + + rte_wmb(); + + /* Ringing ZIP VF doorbell */ + dbell.u = 0ull; + dbell.s.dbell_cnt = 1; + zip_reg_write64(reg_base, ZIP_VQ_DOORBELL, dbell.u); + + rte_spinlock_unlock(&(cmdq->qlock)); + return 0; +} + int zipvf_create(struct rte_compressdev *compressdev) { diff --git a/drivers/compress/octeontx/zipvf.h b/drivers/compress/octeontx/zipvf.h index 038877e4e..ee39b8eb3 100644 --- a/drivers/compress/octeontx/zipvf.h +++ b/drivers/compress/octeontx/zipvf.h @@ -156,6 +156,170 @@ struct zip_vf { /* pointer to pools */ } __rte_cache_aligned; + +static inline int +zipvf_prepare_in_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset, inlen; + union zip_zptr_s *sg_list = NULL; + struct rte_mbuf *m_src; + union zip_inst_s *inst = zstrm->inst; + rte_iova_t iova; + + inlen = op->src.length; + offset = op->src.offset; + m_src = op->m_src; + + if (m_src->nb_segs == 1) { + /* Prepare direct input data pointer */ + inst->s.dg = 0; + inst->s.inp_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_src, offset); + inst->s.inp_ptr_ctl.s.length = inlen; + return 0; + } + + ZIP_PMD_INFO("Input packet is segmented\n"); + + /* Packet is segmented, create gather buffer */ + inst->s.dg = 1; + iova = rte_mempool_virt2iova(zstrm->bufs[IN_DATA_BUF]); + if (iova & 0xF) { + /* Align it to 16 Byte address */ + iova = ZIP_ALIGN_ROUNDUP(iova, ZIP_SGPTR_ALIGN); + } + + inst->s.inp_ptr_addr.s.addr = iova; + inst->s.inp_ptr_ctl.s.length = (m_src->nb_segs < MAX_SG_LEN) ? + (m_src->nb_segs) : MAX_SG_LEN; + + sg_list = (union zip_zptr_s *)(zstrm->bufs[IN_DATA_BUF]); + + int i = 0; + rte_iova_t addr; + uint16_t len; + + while (i < inst->s.inp_ptr_ctl.s.length) { + addr = rte_pktmbuf_iova_offset(m_src, offset); + len = rte_pktmbuf_data_len(m_src); + if (len > inlen) + len = inlen; + sg_list[i].s.addr = addr; + sg_list[i].s.length = len; + i++; + inlen -= len; + m_src = m_src->next;//try offset += len instead + offset = 0; + } + return 0; +} + +static inline int +zipvf_prepare_out_buf(struct zip_stream *zstrm, struct rte_comp_op *op) +{ + uint32_t offset; + union zip_zptr_s *sg_list = NULL; + struct rte_mbuf *m_dst; + union zip_inst_s *inst = zstrm->inst; + rte_iova_t iova; + + offset = op->src.offset; + m_dst = op->m_dst; + + if (m_dst->nb_segs == 1) { + /* Prepare direct input data pointer */ + inst->s.ds = 0; + inst->s.out_ptr_addr.s.addr = + rte_pktmbuf_iova_offset(m_dst, offset); + inst->s.totaloutputlength = rte_pktmbuf_data_len(m_dst) - + op->dst.offset; + inst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength; + return 0; + } + + ZIP_PMD_INFO("output packet is segmented\n"); + + /* Packet is segmented, create gather buffer */ + inst->s.ds = 1; + iova = rte_mempool_virt2iova(zstrm->bufs[OUT_DATA_BUF]); + if (iova & 0xF) { + /* Align it to 16 Byte address */ + iova = ZIP_ALIGN_ROUNDUP(iova, ZIP_SGPTR_ALIGN); + } + + inst->s.out_ptr_addr.s.addr = iova; + inst->s.inp_ptr_ctl.s.length = (m_dst->nb_segs < MAX_SG_LEN) ? + (m_dst->nb_segs) : MAX_SG_LEN; + + sg_list = (union zip_zptr_s *)(zstrm->bufs[OUT_DATA_BUF]); + + int i = 0; + + while (i < inst->s.inp_ptr_ctl.s.length) { + sg_list[i].s.addr = rte_pktmbuf_iova_offset(m_dst, offset); + sg_list[i].s.length = rte_pktmbuf_data_len(m_dst); + inst->s.totaloutputlength += sg_list[i].s.length; + m_dst = m_dst->next;//try offset += len instead + offset = 0; + i++; + } + + return 0; +} + +static inline int +zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zip_stream *zstrm) +{ + union zip_inst_s *inst = zstrm->inst; + + /* set flush flag to always 1*/ + inst->s.ef = 1; + + if (inst->s.op == ZIP_OP_E_DECOMP) + inst->s.sf = 1; + else + inst->s.sf = 0; + + /* Set input checksum */ + inst->s.adlercrc32 = op->input_chksum; + + /* Prepare gather buffers if input packet is segmented */ + zipvf_prepare_in_buf(zstrm, op); + zipvf_prepare_out_buf(zstrm, op); + + return 0; +} + +#ifdef ZIP_DBG +static inline void +zip_dump_instruction(void *inst) +{ + union zip_inst_s *cmd83 = (union zip_inst_s *)inst; + printf("####### START ########\n"); + printf("doneint:%d totaloutputlength:%d\n", cmd83->s.doneint, + cmd83->s.totaloutputlength); + printf("exnum:%d iv:%d exbits:%d hmif:%d halg:%d\n", cmd83->s.exn, + cmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg); + printf("flush:%d speed:%d cc:%d\n", cmd83->s.sf, + cmd83->s.ss, cmd83->s.cc); + printf("eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\n", + cmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds, + cmd83->s.dg, cmd83->s.hg); + printf("historylength:%d adler32:%d\n", cmd83->s.historylength, + cmd83->s.adlercrc32); + printf("ctx_ptr.addr:0x%lx\n", cmd83->s.ctx_ptr_addr.s.addr); + printf("ctx_ptr.len:%d\n", cmd83->s.ctx_ptr_ctl.s.length); + printf("history_ptr.addr:0x%lx\n", cmd83->s.his_ptr_addr.s.addr); + printf("history_ptr.len:%d\n", cmd83->s.his_ptr_ctl.s.length); + printf("inp_ptr.addr:0x%lx\n", cmd83->s.inp_ptr_addr.s.addr); + printf("inp_ptr.len:%d\n", cmd83->s.inp_ptr_ctl.s.length); + printf("out_ptr.addr:0x%lx\n", cmd83->s.out_ptr_addr.s.addr); + printf("out_ptr.len:%d\n", cmd83->s.out_ptr_ctl.s.length); + printf("result_ptr.len:%d\n", cmd83->s.res_ptr_ctl.s.length); + printf("####### END ########\n"); +} +#endif + int zipvf_create(struct rte_compressdev *compressdev); @@ -176,6 +340,11 @@ zip_set_stream_parameters(struct rte_compressdev *dev, const struct rte_comp_xform *xform, struct zip_stream *z_stream); +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); From patchwork Mon Jul 2 16:54:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42112 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 CFF5C1B561; Mon, 2 Jul 2018 18:56:11 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0088.outbound.protection.outlook.com [104.47.40.88]) by dpdk.org (Postfix) with ESMTP id 06B091B554 for ; Mon, 2 Jul 2018 18:56:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YyRGItndvZAw8TEn0itgeN57xAutMHefZ7o5LScQsYc=; b=I+Xy7nCDmBObvHjvChmkW+3ToTDv7zbd0rFlVh6X9OZkDkxcFvLEGEGFC2IHGV1gNdV7iuvGFRG/a/i0Ch97YmPOOS88q1AftiC1Ha9Lveczz1/O98vvbj8p2bXmZH0QKoOOOqUusNC1CDgGbB7sQrQ+rzzJAfEv4YNQpbAYbC0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:56:06 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:24:36 +0530 Message-Id: <1530550477-22444-6-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 61272d99-d7c7-498b-2664-08d5e03cb54b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:q1wy/gr4pKRnJNEHNhtA5cVXESE4dlucqbhDXYmfABHmBwxk6gTUe+wTIby0SQils3tgdELrK3rF2x0llqU5d2PNFTlKD5uHzQzN0VD7RNyzBk3bFf//nUF8ICnMtcvg4Ot1wVIfN0DCyB6yau+NbvKBBXmjUR61wq2oMX0H0QtZAEggmZzFgzhqwhwAQTQ2Go/vd1pyMO04cMUghsHFi76xjkqK78X1gfL+yvF7cgfduDiED6BQbKNjIV/JDguF; 25:lR7f1H/AY0gbfBrWU0/QNmvY2kTRHGK2jAyvJZxzZxvGo9vF3ycYghqsoZHZdYrWyjOgiBdayXSEMLVIBV17+Va6pG8FnKCY1fmHmv6ta3fkZfcmBcrP4AaPoNoUxjTUFdA4uERXWbgpMkyGPP3Tv/8D1pDxcLcq4KBWsXvXVufgUxGXuHgfszYK0WT9k75yEchpPbPnWZ85w+ZbR1gRMfchaTzrbwm47kPKddpy8Ivc5Xz1NS+hy04vzeu+sJ5C6VzOwlCASV45Dv7pPlHuhWtfU3McHoS8I/vYn8hUZ492DP1P7W/KqKMn/7Gb0wKI93AahthszrS1gVt4CMi/5g==; 31:Hj8/1R+tQR/Pq+lfjP9yKGL/xfdvLew55U+Q2FOQQQPjGmXc0IaRrLJrpM2g71V1qM9zOGAiHOnsliekgIEyEjbwOMlVPAEPHBFCJzgEk6JaDguQNsrKn5dRZNx3jb+0dEBIQm0qapRdf5NNl+XwkbbbH5mSy0Ge8IVULY/lRPK4hiGS9cF1h9G/6pkU3n8tpnabXQ0X/LScsOsC3BPmm+uwqWrdMHMOrhTmySalGj0= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:xP1zwn8GWrg0yWlUQplxz99Fft2HfNwa7UdFVAO00FJIt2Ap9LJyRcaZAsLXy0yXMPMfTq8nTyN7UV3oTSIRrd/r3XJzsoLyb8ci2tkCyMM9gZVFtrse4uZwYvXUUEsh65Ac6veVbfQ/OTBmLt88JD1PikOEYPkf1kN991GzyR3uAQfxz9jsZJPHHDS7+TmrHz2oxkXYXskqqZCi4E/sMTDGIlD5i77Bwn0+ML0SX+SyBYJkozguRDJkKIFv6N03yA7SCAMmnXsMkGQrAAcCaiSC0Pf0hcEIoCFoFB+l4MvtADHh+fet03tCidbgVg0LVxN3miQkgUihC7w415W3LHJBOpn4MwxqO/FHTkU30qjhf+RU9oXVLxwNFdtR8ebpQT7vaahhWyVyE0hIeIWtApedGfIwSiWdJpTdKLWpxmbQ54GcVhRY2lh06iw/wRj2CkKPawQbJhrg99HC+Cl0V3z+oBP4bO5SYqiJTEbDQR3dD1n2GERC/kg97KTY8HpHJNl5IY5eB0YytAzy/0X60AsuFB/Ry75Va6hkmrQVGO0jEuGRVh7eabKNvM1etkrB7xLrvGH/Tkcxu6AyOhXzeph+IKPxB1e9za+XQkFW3PU=; 4:foh1wYz5GY3sNuGXZ/xFzyLC3iytSHPq/WJIJtEj4wb0mYVwG4W38z/A+aDJte0mTay+qUiFonzV3LucgwddoJArvXm9GqjVOizNyP2DD9lIl3btMAcohmbJxWO9FVLKs9KfmvidreEDkvLpVdDrWhkQAFCQSyALjBfXTC4CLgGGiCS0mRS0kotZs/sU2KYmo72Su0X+jyO9Ipd+iajhP3R/V7JlGdoecFaI5whInYOarWVU2T1WcR6jyeFi9WsH8USf7BDWZ1jlQK0cnHaWYg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(6306002)(2351001)(42882007)(54906003)(69596002)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:0W9has9S03iO7mggtcIjzxuQ/J/HzP2aos98w7O?= MtytXZh+txwSGXZF5kas7EgJfZkhS+8O2TSrJWnZonEsdAcRdPRkcPet4OQdIWLO6DhUquru946yXEwleMF8kQ4UJa4KuowFfoyueqsQ/AP8TL7d04KHcJgiZLkDRS8KyizMDCPz5pDChggpDzrwVWA7o0uPMGzX4hB6vz/V4D2H8ZMgukZ4rYVHjjtBlMsJII7r+PdHDRmQejG4Ul8bHPWd6FhR1sbH5FieAo/ncKHkiRlmizvorKDybXgNSIDPDP8G7zBWcaYpnczwGuWlXmmQj3gNWTsKBb63lZevyaiUl7MnbCGoBxoSdbp1v0kbtVfebR6WIMFxKYBZFNRWMPFbysTzRKCXotr55/6vZMIBl34z3lDNKicO2pwJhXp6l6zeAuspuLI/huvpzrGqLrHXh8Fc9P16ya0jVHd4j3ht75glj+sYmv5dER+MjQdhnie5AR+6zyDKb8gWK1tu6O+fXKKIsKPFq1KV7AD+ANgqUKpBpirqcvKhkpKMOIM/moeuKKqXIsnbmBxfIGV9am2J9YV3hkpr9waHd+uxIf6kVbGB0VOvFlC37EWl3tPpCyAXR06O/rMr8bxXq2hlb8qaOGRrWXksfb+s+C4Q/xHq3JlLORtFz5rZD1/5KnYZXqpxZlQNqxxD/6z9eHT8yu6QQaj3TzkNpELoxk9l83UDtR2sEJlNs4/hJb6FnWYjZHCjt8wXYqMhMy1Qqhiti1pIrt4Gqsrp4hkcyAMiejzyCdHcxPeCGAWD9PLHQT6POtN9WIPyEWwiFYP/gl8T59tBYNDCSr+30QVuTtjUHjwu/iArYzv+D254ElVCPZB2Utr8fBkwodiHJ37lANLYeH51EU+MIWx0EpuPtQjNjKt8vCaXxIkfCrWcYykWIwN7GIqg1nekHVb4MyZu1pxHGUHCso2/iC0/1bTFu4E4D0sHS7y1AoOqMy4B71Hf4kJXehKTw2CXUhIBlx/wRDGxomX2RFWaVdWcI09TMzuFIh6arn3ZIF8AdpFTC3ZAgaYNV9Ds2Vywqay5a10uDaOc9xyr/oYaQz0ma6Om9NHxOKM9B+FBVSev41VPU9mH2NUtQSMmdIi9x8SOUKm/hk5+0Cm6LIjSrB+lOcSqTi1N6NgUl4ll67K2RE2lVLAnOfl3al4pfcDr/JwSAwRKTPUbw15a9nQZOq0Xc3PLoSI0I9tVuKbBc9uzc9d4Xf9kZqR8B1KoRS2IRYk8Z/7ewKOKzPh8ikp98BotSyKTOxY7rjreIf3cupWaZxSyEf7PUAszm1+D6rN2u+meLHUiNuD4sImFgG0drEOa7ic3aF/uFR9ApADbTQhEDDaneD4I3ACqG/sQ= X-Microsoft-Antispam-Message-Info: 7rhfD132YuDMESM+SZ+x1l4dWLHdYb23VodCP1y7HVD1K49tuPMlmfrfxH9C4xu4/XwJav6WDqKalOhoSVaslytiBB+GUorsNTggHJOXrkUIUTj0XoLX/4tN/K82lYzsFbBsrGh3R9J+ftrGFDYu0UYx6OS9KNFsPo9YJrnI+ig7gRwMAscEJLIgDIs9QGC1dUFZlEEux5ral69m/7vtUmycwK4HjXtTTG6Qhbo3ESTHGDXQ+j4wOnEQhmGsVi14s6HmHgbyHz1UFDZMyOXFvewtrrO9qwuTLRR7xwGLn3RklIWAo4hX8nAg3IXmB75a0VoBvuRSQVjXHh933YeKLjAk0pwLa9/pMj4xLK3x6Qk= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:NDjOFY570Jh77KNnCcT+B2SZjZCO2yapPoBxWgmZqabOsSLZks4XUH3R6tzVZSdhYcAT53Tkv6jDyQavVhvgbnfV3SPe41ddjFyXI0euEH3bJNXYYNzHOnjEiw4b9hPnBs1sgfG1cl7ev6vh8dPn4y8/E7dCnx/pegUP/WhnaIfq5u3oD/zTC6YctM/rwfiRFPaKsQ2jUR/uw9P7IEV9MHNBD66fwwdNfkQ6HX4m0d5xSna08SfvMlbR5Kg0c0uJpVxSv7exk7+/ZiWQ5IFVV2Zo0qmPc+Red0wFbdv+yNuoAFGCuR0I45QJO9289HsWOSSXj2qUsVjzPSeFTbtzM2ACiD5gY/nn3OOItl7HdPW0YGzw183vfvIKRVo6BbvseEBGIrJ9Rrdc7tHf8xntBVnl6O700sjw6Uozoftxny9n3ECZTOwVmel0oR6aJqbVtbBeDUsHdxj/sCFhnnusEw==; 5:Wso2hLFy69SIqaO4DBKnNOeMlzFNyYGBsXdVcaOHa3IIZ/cGPg68FLqIshyUFpYom+6FIAzotoAzZNOSTOdsJLu0VG9+s+iViiZGW/UBobP9xI46YecPR+vcknplL9DDy/BNQfK8Yhm6H0dN7WvJBnlnaSVtov/5jEEgijsbeP0=; 24:VG+L366G+o+IUSC2ywMle3xI4r+gUgfDHAAWEVYICD56GXSjUDwQW1TwAVieIe0Cs0oB9j+jmYSslHNzOhddSdNN8TJSxPodWg7jZZ4LIqI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:H86TWsswoJAdRHEYkZ7XMars12N4QEF89mkONw1fjYMyOnhAqa5gGE4LP0BbL81Es0i3tJiHGlT+JD4JyQDgUP1g6TQbIT78IkUaLQZe6ChXumTI7BBe5UEy5co4HZTvEksKycBJQ/vBJmWHb11OmPu1TWtam3qrH1rHlE0tFeWPZXunakNsPwF9VjtioTFQ3/riYWiH6JWd+neaqYXhbt6abQVRWZmBupo4bXxM60YUIEauxjHU2MoxttUoiTZU X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:56:06.8928 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61272d99-d7c7-498b-2664-08d5e03cb54b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 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 zip pmd feature specification and overview documentation Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- doc/guides/compressdevs/features/octeontx.ini | 22 ++++++ doc/guides/compressdevs/index.rst | 1 + doc/guides/compressdevs/octeontx.rst | 107 ++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) diff --git a/doc/guides/compressdevs/features/octeontx.ini b/doc/guides/compressdevs/features/octeontx.ini new file mode 100644 index 000000000..224bcb8bb --- /dev/null +++ b/doc/guides/compressdevs/features/octeontx.ini @@ -0,0 +1,22 @@ +; +; Refer to default.ini for the full list of available PMD features. +; +; Supported features of 'OCTEONTX ZIP' compression driver. +; +[Features] +HW Accelerated = Y +CPU SSE = +CPU AVX = +CPU AVX2 = +CPU AVX512 = +CPU NEON = +Stateful = +By-Pass = +Chained mbufs = +Deflate = Y +LZS = +Adler32 = +Crc32 = +Adler32&Crc32 = +Fixed = Y +Dynamic = Y diff --git a/doc/guides/compressdevs/index.rst b/doc/guides/compressdevs/index.rst index bc59ce810..cb467ab90 100644 --- a/doc/guides/compressdevs/index.rst +++ b/doc/guides/compressdevs/index.rst @@ -11,3 +11,4 @@ Compression Device Drivers overview isal + octeontx diff --git a/doc/guides/compressdevs/octeontx.rst b/doc/guides/compressdevs/octeontx.rst new file mode 100644 index 000000000..d4010d31d --- /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 16K (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 Mon Jul 2 16:54:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42113 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 4B4391B53F; Mon, 2 Jul 2018 18:56:19 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0071.outbound.protection.outlook.com [104.47.40.71]) by dpdk.org (Postfix) with ESMTP id 812F61B51E for ; Mon, 2 Jul 2018 18:56:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1URUMxmhMss4je9hYipqOKz65O62HkfbjjNceJJMHls=; b=G93ks/ldLbOkErPrhFk8CI6PEuypHtinMlkxc8Vb+8OunvhEoC25XV9xIIyinCwpHXR8ggLO8z0t7TpY3Zu45+cs59VPxl4+Y+Udvk0n4GmfXinl5RfmHWKjWqs2lv1w9U24qsTnZyEvZ11FAlU/X3REPCIcmr1XllZvh4F2+Pc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20; Mon, 2 Jul 2018 16:56:09 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com, Ashish Gupta , Ashish Gupta , Sunila Sahu Date: Mon, 2 Jul 2018 22:24:37 +0530 Message-Id: <1530550477-22444-7-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: be71cb59-4324-4824-5a24-08d5e03cb9c8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3644; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 3:2EMO7jtGfo8IEgxiHAksFmb/6/U/DasRI15pn9JFYJrM+m+88d2Vi6wTwJyybB7PDUPDxSsx4hfpVh1FQM+m8mn6n93N34qTPPDjpnVnpU3+hK3oMEmoET9mVwXvu0rol7wnAzL1ivN0Ewo2Ergr1J1OZPRLo6PgMc/thFA/DK13MpkxWQm+Ve+jg6DVVAU22nPFQaOBMfqAFSkSoWd6h5MH6hv3MaGPO9+olKm42OcHl+62db/+cadrIpXayvRz; 25:S8JV5N7t2s8OASzlHlkZ50ZESxDyGPmvDbvy5iOZWyjw2Fuwe7Qp0Wd4Y0dHwTQIQGhFF0Jf/Wq2VhlS8JtzjWuT1EvAheWrsxrCmo9mVsCVUM9+m1Jga/XfjTC1VBbtmtdBDlR4/o0PTH1tTGXR6Ce5yj4nsMwe2kCTfNNRHl87gS0xOSFLd1DJfwe9U1ECWWcljkAHgOMNH2z+jlJ2Kmc+XkKDa6fPA44wTKCmlpfxDZV365I0qG+2piOhjnsAq7LlNHEuzetZhedKkllgT6x7WkPxbOPqMSf0dNBiJhYV/WiRurTCrmk+3Et2JZ9i4/wGnCRYa0wuTejYrkWKdA==; 31:1vHx0ydPMhDzsjN+LOWLXqr1JjEN9XWwNxrQa8M/QsF7I9tVEuZYU45EhCewCbPJcEjXTn2wntxDDyddTV+883E29M0EgONZm4Ou1cQXndGqgGuxB46B97B2YEMFITO9Dlky8x2kohTZsMWlsrOhCunjiynbJcBc2698kD9sL08s13RgNxfiK0SMFsHgdW89dWG8jDySewJc/h9gmPkFlJlXhjMmZ8Zxu0zWxd/1qxk= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3644: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 20:pZrp8DS7WSmpW+9KHAATHxw7z+N/TaldibNlmkfSTA6z83jbbWFaFlUDtBtsOstFirgS57g9VozGZvwFFB7gtK+G48rGmf4XROCgKojocHUZlODB4hgVXDNJvOdTeD2oqf5z+40wA5W8oUlP67CPQXoikjHm7HvyTHpjyiALL2l9AUxHEo/YTpvNRBY5wQ+SWH4VR8zTC/6hmldrcIXh4TUUpE6Us3ujW7LhvqZE26Fh0+Pv+A4EJ4vxuKHaLTk8a+c/776sl9LMRr/dZjXsY4yHtHfAaqYvfVPhpYU/rc9g0DSdPPrIkLyHqf9kyNEAM7A6J6vAiiT0aJisHvUy8NVvevh7AoXP57hKEv1yr892orN0d+LylqNWeFnBj8by3Vyr7RjHbZUs35nMWllr4HrytQLNBK6i7IeMARkub3chjlMmzrChZOU7mc0WMHVLizxYNdj9QvGykYBscC3NG24e5ZKmYQ2y4vuayaxNpAEkWMcfPnmdVCSzeAFeYk/5Ay5//mOBJMD6EJkfKeLN7mV8y9OnvjybXq4KqU33+8CQkcs6gh7NAiTk+mzzZMmtcuppmlM2VFZDA2IHw/PpxHusXIKiVOJ3CFsq4l3+Dsc=; 4:fEVVLSGdFqQMHau374GYiQ+nAilBqoZJhgMKbKQycNWJAhd78PBan14QFzhYY8QtYfL5QXS4K01sDRifj2wsBGqrQsD5mtVEnssUlsd9QIHkrTMGs3izYDn9rFCr0Kna1Plmp38jtyx9LOGfbNxcOuK2Ha+DbbZQi0c882FF4gT67kWkEPzWoGfmnt4g8dyi5XAFjL5l2hn6X83S4EFCoWV0twIrz9fNWK2Yajj6DagyJNXNig8slW6dG8ppgJwZSALRDjgXjHWchdJ6RdORpA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; X-Forefront-PRVS: 07215D0470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(6506007)(25786009)(55236004)(107886003)(3846002)(6116002)(16586007)(2906002)(186003)(51416003)(52116002)(16526019)(76176011)(4326008)(6486002)(105586002)(386003)(36756003)(6512007)(2351001)(42882007)(54906003)(69596002)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(575784001)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3644; H:hyd1sverma-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; MWHPR0701MB3644; 23:tTiepUoVGMFuMQVmznSuvYxEX+1c1wOelfjN8/3?= s1Aa8VsJK5KUKDHlG+80NldYgnvjBGP7EHV02Gqp/j9QVoFQap/ONWsOSmuNFnIMMfTwiW+tgMhGCVRExc8W7lyw8sZTnV78xKyztLqrf1JZi1uk6rBbDduyZM0sIpC2Dcb/L2YF2qGKZ4aZz1e4s3K4rDpVr26ZI0Pk0xAXZzSKSLNoEscWj59rMuLQmNdTh/WK4Oh90S4G9/NzUmaiiD/PSN0sX++Y7GPyaup3hj1aCk33hj2XB2N/t13OL6bci9KEPBz1GfvYpeJOYRAAmBb+ip8QRDG02KVU/3pcatTDyodORhtcW7LZKW84jScJvdkYiqoPHRWmF+j1JRj7ks5H4XjZJoDRQz/9RvwkHFeHmyXy7YuYumTT84e/oKjZm8b3jxG3g7YhuX2o+AF8iI0pJ9w3xzBLpSNVYOMire4UkvURS+dc7xFFcXCdWx1kSe6F8ST5++0cAZ6baFlWrXG4SKuPZEEvYsv8HR9MjOq69zUijfjhpwrNqIc0nTJZ+pox3t+YfIxEyIP6S1RRfhpBUr9Fqt0XiC60tudeYe79xNOXnvWR9MHhlys74pquSLeCdf2YxpxDt3i1LpfKkBYWBc4TvtKofS2km0wZQJCLCB4ZQI7Mf3/0ZD/x8uHIDdZHUKjlVlf7qYktfGQ0vUajUWpTej/EPqpO3hRvWUdVCrwgcbB3v5varjOG2h6C6KPWDGol/6973QetbeuxuoA35YemJuCQUpQHyp83QeLNocZN2rDt7VcX50SV7xdQM3B9BXPG07uWO3vItdir4mivhq82yuyI62xYzBjEQK96dvXB4qkOLYWGYOR9GGTaxuC48M7Lh8Um+JOmCOprw/powJdoWEsNyLBPloWpy7HuzXT2BN1lhDTJp6aCBmfQzEV1a7r89zZzj5DItCgFl57lQCXfJj1vXB/buPTilci7ZeGhuCvHTxxfxsW7aJhPb5nvX7OD61IL5OqjqqJiwioaP2px9D1JPOhWLyI4iwFkv6jWyH4m33g2X9ncbiFKMOKaUm5T3Fz9xcLXr+RWgDlJ2Xqqk73efYp4UZr0ytT+LaGQJ0lMsiTHFdPOpmFydPnzUfEPJ+iPkVSvjHR1ujOzvC9FgtTZNmJrz6lCD56bYgDrQu252j8Pv539BpN70Zb9/2kFQCg23ALe+CavPgYcDC9kZ6cOo+W8TO3TXrewuWTBboKKAuSwi22uxdvlMMq1HFOVnpL0uO6+gvzlQp+CpwRGholWrsLvqDLi2XbEGieeTtK6jORN8oUwK4ydXy5TlcXlobo03rremumRRlIrEUKa8BIbK0o8EwYOwFVQw1Lj1gHQktfhtHmT6/jL1WoM= X-Microsoft-Antispam-Message-Info: ndY3YBD2iqPkw+NW3BcvPPm+BvBFSCAUHqp5TG7aFBr5oRBIha2E7NVuaSMty38N8FR9S6Oq6XzLWAtvhV0Aw6F3kqxeM6ws9GrhzYj2tyKJtBGnUciYlrX6AO41mDH7D/y51XckWNSOJFkEXtBCYOPwvg5zIhb3sZlLM1TevPsO8VYVz5aq8LkSP3prpvNN1/fTlukJqVuecfu6ozzv6vkD1mvclfMDSj6cm37HNts8zy9kZA4xjYQ9PwqTR21FG/7KJqpWRMA4oI33g/eLVN/sD2rfwb653kZmEk9L4RmMD/OySK2VO6/teapijZAHVGN0PJZGwai2Au8wVq9+xVAPodl1AKkJ3woXkd0eEHU= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 6:TMKxaZWfGwzrempRrGARIc7N62GaoiRDLozy44QCJX9lNDMir/wRPgqAjh9UIVcaYdt2QS8FXsLYawpr4+ua1D5f0ogoYzyM0+xAEBdSRM7H/ml5TNjwcyBJBe/XxU06HreXviziZGJrIvSD4dELDbPoCpAYYahLwFQZhWk/IHaqZ3UspzsNR3yOtiT2MPFwZKyyXMuZmVX+EH+tjIGepzkmSV+McNOXxfrrs+uprBZ3ZGzTtadIKnEJBrYi2BUTxbjySH0cnNaU+ARvOzUPzs9OWqc0h1AMC0bWUXMNeqZJAMsWSgbck2RCpoBnrxjvNBVdRA8N8Ap4YdM6Vv8fqVX1o1JGGVmq/bwbW5FRVNEa/oMuZYKELtZ8EjrLBTIemDWrA9JzrPkroblgJMhOn9otVnhy+D+Vvu7WsvI0h+gRlfbQveZ/WdYBGqDKdV5IosLwav9L5XWyRsc8sgT/Qw==; 5:iAmu+jLRtE6RXgz/L1Pc5n15FbuhN8VDT9SLLS58tZQMMdiazaJLdbakijVDHicCxjpOENkQ2aHva9V/FENIR30iyMJsqk821kB5vVxU0y+Xa1Wb+9v1F4WTSCa8M1G/PkbBHlJgg7WApC/tatuqrs5TcUIajyhtW+hCh8wpSEE=; 24:7RLn/mabrMzVZWmju1lBn+5smD+eUJff4/6byjZIJk3Q/jOlVdKSCgb2T93ClNe7gGJUeZF+MqGI6YCLZXUXJX4gbQIOzJLwgKjdgECN5dU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3644; 7:JMqNNEpQ/7qwb+0nXAQmBP1CAoia6JkS3sZAr3SEUqw3orG2I4UZBfo9q1/iVIeu+VcGAmNDg7rIPV+8wf7XqRtqrBs9I+GRX12ffLmfTcWmNhNjvTRxDJLF7Exu3HJEDBrDzwC2prIjMKFB/UQVkVrjMWs8mUaOOiZLAixxusfQwX9nZtWbeGlUDp5zfb79lZqhtUOFTKRX19DYe199wqfX2fzqvugKYZlS9qtPuEKmN/keUt4gJ/EDDZEfD4Bw X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 16:56:09.2210 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be71cb59-4324-4824-5a24-08d5e03cb9c8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3644 Subject: [dpdk-dev] [PATCH v2 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: Ashish Gupta add the cavium octeontx zip pci device details. Signed-off-by: Ashish Gupta Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu --- usertools/dpdk-devbind.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py index d0c420906..1d48a6cba 100755 --- a/usertools/dpdk-devbind.py +++ b/usertools/dpdk-devbind.py @@ -24,6 +24,8 @@ 'SVendor': None, 'SDevice': None} cavium_tim = {'Class': '08', 'Vendor': '177d', 'Device': 'a051', 'SVendor': None, 'SDevice': None} +cavium_zip = {'Class': '12', 'Vendor': '177d', 'Device': 'a037', + 'SVendor': None, 'SDevice': None} avp_vnic = {'Class': '05', 'Vendor': '1af4', 'Device': '1110', 'SVendor': None, 'SDevice': None} @@ -31,6 +33,7 @@ crypto_devices = [encryption_class, intel_processor_class] eventdev_devices = [cavium_sso, cavium_tim] mempool_devices = [cavium_fpa] +compress_devices = [cavium_zip] # global dict ethernet devices present. Dictionary indexed by PCI address. # Each device within this is itself a dictionary of device properties @@ -569,6 +572,10 @@ def show_status(): if status_dev == "mempool" or status_dev == "all": show_device_status(mempool_devices, "Mempool") + if status_dev == "compress" or status_dev == "all": + show_device_status(compress_devices , "Compress") + + def parse_args(): '''Parses the command-line arguments given by the user and takes the appropriate action for each''' @@ -642,6 +649,7 @@ def do_arg_actions(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) show_status() @@ -654,6 +662,7 @@ def main(): get_device_details(crypto_devices) get_device_details(eventdev_devices) get_device_details(mempool_devices) + get_device_details(compress_devices) do_arg_actions() if __name__ == "__main__":