get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/43359/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 43359,
    "url": "http://patches.dpdk.org/api/patches/43359/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com",
    "date": "2018-07-25T17:04:51",
    "name": "[v4,1/6] compress/octeontx: add octeontx zip PMD",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b32f8b3fb2c220790a4b6988552e304e56fc0f92",
    "submitter": {
        "id": 1089,
        "url": "http://patches.dpdk.org/api/people/1089/?format=api",
        "name": "Ashish Gupta",
        "email": "Ashish.Gupta@caviumnetworks.com"
    },
    "delegate": {
        "id": 22,
        "url": "http://patches.dpdk.org/api/users/22/?format=api",
        "username": "pdelarag",
        "first_name": "Pablo",
        "last_name": "de Lara Guarch",
        "email": "pablo.de.lara.guarch@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 773,
            "url": "http://patches.dpdk.org/api/series/773/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=773",
            "date": "2018-07-25T17:04:50",
            "name": "compress: add Octeontx ZIP compression PMD",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/773/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/43359/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43359/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 991CF326C;\n\tWed, 25 Jul 2018 18:43:03 +0200 (CEST)",
            "from NAM01-BN3-obe.outbound.protection.outlook.com\n\t(mail-bn3nam01hn0200.outbound.protection.outlook.com [104.47.33.200])\n\tby dpdk.org (Postfix) with ESMTP id 538FD3257\n\tfor <dev@dpdk.org>; Wed, 25 Jul 2018 18:43:01 +0200 (CEST)",
            "from hyd1agupta-dt.caveonetworks.com (115.113.156.2) by\n\tCY4PR07MB3062.namprd07.prod.outlook.com (2603:10b6:903:d1::15) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.973.21; Wed, 25 Jul 2018 16:42:57 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=UPu7PzbYasOi78w3HJnM/90pffLI21FbNS5O9DLQZu8=;\n\tb=ZCJTNT9eTKMCeizHx39fgzbthjPracoGc9Wkjw0hxaicqwO2cVf7Zg1f37TA9E5Ef1XpaDcQKwWUIp81Lsxw66XWE2j7DONbRZn8fZGLeTUMbiIad6dayDLXUUQmL8UxsyCNa8Y83tvdZVtI7yf/8oVGTLkMSxm2XumKQyKHfSs=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Ashish.Gupta@cavium.com; ",
        "From": "Ashish Gupta <Ashish.Gupta@caviumnetworks.com>",
        "To": "pablo.de.lara.guarch@intel.com",
        "Cc": "dev@dpdk.org, narayanaprasad.athreya@cavium.com,\n\tmahipal.challa@cavium.com, \n\tfiona.trahe@intel.com, Sunila Sahu <sunila.sahu@caviumnetworks.com>, \n\tShally Verma <shally.verma@caviumnetworks.com>",
        "Date": "Wed, 25 Jul 2018 22:34:51 +0530",
        "Message-Id": "<20180725170456.3319-2-Ashish.Gupta@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.14.3",
        "In-Reply-To": "<20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com>",
        "References": "<20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "MA1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:a00:1::22) To CY4PR07MB3062.namprd07.prod.outlook.com\n\t(2603:10b6:903:d1::15)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "44c93e92-0138-45d9-5070-08d5f24dae45",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600073)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:CY4PR07MB3062; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; CY4PR07MB3062;\n\t3:rw/Yrq0Mmr44FOQ/u/D6LSYhALHyKx+l7efcMxRmqlAuMdeTXv/hA+u7vXjroflL5jYy13gpnfwYQaOnlU8pFkSaW+OKb1bnbV3R+6P/f5auQVzhaD1C7q0vmlMT4qDitRHXTf+VosjUiwt7D1Q2hlGbkrRJ9HMS1zsB35Mn7neZcoB8G4JOZ0dIgOab1zVy4lZzpBD4xedkpfpOe+OpIiHIhgEF9409pcJAn362M2CJHKtZ4zpOOrI15Zhbk7G0;\n\t25:f1KquheMSVKN/HmCLVddYohsiqLOKlDpSM5zCizur34MAUuvxzpN5K8fb8zpcrsX8ChCg+YQ1tr4+jLFZAeM8/jWLx4g567W+EXejP7rs35TOQ8BiDcaIpZpxK5ObE7FkrRY0dtEp2HaO+LB2gPcImdONDYEcK4OlCfvcwKMGkykl/YmZobzvV0OXviNRFr6GOXHLOD/oEkqExtO8Y5o0/eieMR5JsufWMHqDgztY6Li3j3JeSAzrgW8Gy8bDe2kEjnszYQBDKSZR5jCFTd82RTXMvS/yvAAomQvCgVlrfZHpDm3RxeJthMbng0fOgkS7+Tisp2uaKw00W3/xvo2VQ==;\n\t31:vAoTTvSrihYnRXBk7RkO9tnkcfNtFwfmbzME7abdvOl9vAVNoniysCqdDqHIN+9azat7EzmrnPguwTH1L7XIyiIVmcdsiVskPpmsGPDHJHAqEgoXJu+9tEAxiuEfhHtiB0JLzk0jwIxjPgg7Ry1at7udszJDKDVvEtjuQ1Kei8cH0vL+H+0oiylGS4TP0twtEZppo5QuHBW0WZ2Hz20cTnnWg1pxgqA3lJpwcO3EpVY=",
            "1; CY4PR07MB3062;\n\t20:ztUrGHl/u0a1T4jUxhR7DlFXegfAaZI2No8Nl0mi9GQ5wzK4b7Eh4ZBq62opD8UEEBv0Z2qpmjQUcmSK9Iam9eT4yAFaQy6jxGyYtECYzVJ1Au1IdsGqD2nIPTEp00tmK3zYOmCynm8ZDlEpx8JFHpoZMORPt8qCr4OaoZr4Aam8zFYAI1S5S6wFJMgHs+Jeo9XxIfR5gSNzHuHKWtzISjcsPKcWxqo7Ed/H1FJdSsVg9JselPP9KjE4xx4E/891MLUn9icaPiAh3pN20ygTtWdojFm5BuPTKlSOPKRuZKgt9XjIZmUhI47NFMHmQocITGzV2yMrcEZp3bcA0AKCIDwGkaqJqzlDBTpPTuc9CSA6Bg+p5Wf27lHkyxi53ihlLDNYqGCmFDqxXPbtGoxDIdaOj+TPeH2zsXh9RC6Ija7q2Fj2HM2NXdbwa5wI8Gf0wQKnVri9zn4QFJyiiFCFziUSreQffaqkZL6A08zQ4LEvUJ/9xRkPsv0B+ER2JXEWmfdT8ugyY5Xlw6nXuhW7OMBTz7vFkPa3oIec5YeibzGwUtYBlAP9s6fmKheNN99lghlfpzxNQVCJkOKQquoCu9LutfpmBzsNWGJV6LoHGvc=;\n\t4:blv9O/DCVZa0SlWMBWBZAZ7prIvBR0krWb4gebmR3B9VH+GdJwXxh1MeNi9b7O568L8osWETm7pHuCepRFpBul/Dnd7opu6qcg9mgGNmrpMaCXf0Gj8HLPipflPk5zf+/IXW3qrwN/2zVdY3Qoi/CIn7QzaU3qU4s60fTmi7h0IN9SuZjirbRqR45wRjo+MvIlYSVNJWG3pN8GwWJPi6RqNiaykVThmncegS4GOohY1UzPsAb1yHOwJJS6US+Br1+UJm/uNRobCFHRbOq5lUaqwICcKIXYbS0ogrM/dcn95RNBXVDRB3K90aSrv5NhN2",
            "=?us-ascii?Q?1; CY4PR07MB3062;\n\t23:qGjy5W47dvJkN5E4h2c3pOBiXvslEFGPK2ijeYuXT?=\n\t8K6OMlctfkrLPdTujpZ6xyEPGkyjnlyuP6DPxjtn4xSg5RUo2hcU8J4nbVPu4yv/13HteR8139yRkqWWxKSbbTxnetx0GCMqle8pfD5Rp640iMf3719IWbMSaSsnUtEUJ9bMJfsrB+jw0YM4rfAxOPgeXUc+4+MJxsXJtMjkKkuK0mRLiorQp8meXPs6haqMaTiajtEbhhAptRkhfzfWKXxLf1a7tUbPm2Vj1zCH3M/gYbu0YWIUqo5RToM2Nhn2flU685D2fDQdzB6+j6ttZ3HDZpsFMFzJtV7SRymhvrLsU1CWyFERPVsGvVn1lfz4PeHU+Lmw8Cyh4nMrd1lcRrH2eyoyfMbIHpEax+j8Mm6q4w+AQ4sCHx4BqqV/XZ2FXtWbdJ3hSOJJ9tDt6D8M2g7htzw64SQWKu/zpu1KAexi0cB5xOtYYanTxFTEWczh4KqvA4GotRq6Vg6N+GlT5Z9Ji9uqISlb3HGYwfFR5fRQ9uLDAtc/la4ZoRqFMON0Badz6Sx+g1HMsEZF5JeU37TxPKXAZoAJZp11it8w7IOHT6M3YTalsLaG6oJfwhPciEjoiq81dadPNiqozJ+BgS3BgRtuqr8fJECjVYZT+RchnaXOeE+fldjY6kZf+eYUuPSrk5HKbAKVfY4XIZP4DO8U2E4UviQ/Mb7d2YQZ7sql8Eei2CHnpK5XY0RY2jbBL9DRQPaSTfox4nhdnzbcovacseD34R70N1dNOppULJ0DHZrGq2+9K2dXrPA34cdsdpZb0DHkasaltItcgcgvMXvUQRlwv6JNM06Hh+fvDSpIaxNQ/cv3dgm8Ec7w3Zr7nKx+l5tCIx0OO2ydaPV4xn7u4JW/GHo1CMp0mTYJQE+iVyseP+snfGYhqw43w5Orp2lqaCZZdbevLK4WfvdPinzjzXv2jpFwihqoHJXM4vC6wEEI70vTpviG1CZ6QGVb93JqWV7/3pUmfV52gdQTKmCRQieJ27PVV/mFxa8XRLe5Co/Lebvp3XoOzc1jrRMAc5NePqWDLBAVhLulZokGz/IrDe4smazd4o7C5b+iCX/RFC43f/upoleO1UbduWU93qaZc48DaN6Mgz9FkiuwCYXk59uihbUOXLgzl0TjkyYsWz3mikmKWEEO5WworMdvVTKp4ilt0cYLW1Y18yk3LuZhVkNA/6UvzJYTbzOdWzYinsJ5QAC41vtwhun/uvn1mB88PL+h5t5DJz1p/jpJAoLAWujkswf6KDWqUYUFMtdBd7vmXu1bGzCcCIKSPoXRvnud6cccHSA8HPQeN98BBt5hm14ylP129s7QytRiTaqs7T6+Z+m+kXTTBS5f/tExCEn54DMIb3NL0irbssgKgzIl/DM8JDNFJ1SXcEjXYlpyC401anWVdEg1NinUAfLDTgvjTFGhnn9cR6fC+CdBzTl",
            "1; CY4PR07MB3062;\n\t6:7HSHNUndXJvCJjqUXcDMG0jQVbgZEG28w+epruuZxGfx9ngYJS6UjewmZVx6R1TjF//EqmMm8lcZhtDGW+f4jfJ0mNvmh2mYxHqmM57Iqmt1nIghNkkHBZAKv038fURLS77p+d9p217UHbFCR1Lnenz0kpfQdjyrpSediVMOh7GmS1Wyy0gnqbD5bJ5N+Tf6q+smgW9dQ3u+R9bDfBf1c8m1VBtD86cD8CSDq3OB7UNPyo+akB2iRn5YaoWtxk67sCCqpLT2gxrr2++ZD/DCz1UHC7adD40KRdvH7I0ifg5sbFiRtlGwY8Q8PICjrC9n1vovqfeLfUUPsh3rBVOVP13FhUseP/YSAJfXZWn9wRvnsLhPtvvJzLQz74jw5pAv60D/4A8Ma2ZgJh3M41xdXuAxZoPYwd8YTYEAzy2iqnc2reeHrMYhqnEgi52nS3KpjPUY2h3NSaMNWB2bV4udjA04uQamFfGAOdJF8n09GhSkrMaYLCufKXWEPsnMX/ue;\n\t5:YaXYjQQJwyC/0/Vr/joP57YTJgSlg1PvuYg/V0QuPCxabYg8v8F270qZaRKUusfox8e8NxqusSzsL0lhP54QG1+GlUOCLWH53XVPpuvIIJ2F7Kc8MZ4XaxMtVAMrkU/kFf8Y82vPBTyJmCKTRMrNxZ5nGvjy7Zy4h8tCyGXtajk=;\n\t7:cjqo57bH/P7/Xsuvqb42LQwAytacDL1zYFoY2xl1nS+6E7ccJFpvdptrk0ICBvdn0KgKA+fZUwkFfbJKwXwfCUJBMOZID+fr6SgtTt2hrYmWhxRppoUWQ3fPplsgpSL0HMICXI9NSrZtpRRUGQZX8wwSKGskNi0KSMXCB4t6v68WcdlvIMnxzc5YCo0k86vKTISK+T0LRHqtVNwDOjQN/YAoylsET7YuldI1e0+gozWZj/UoStquZcJG8xGnX8Ht"
        ],
        "X-MS-TrafficTypeDiagnostic": "CY4PR07MB3062:",
        "X-Microsoft-Antispam-PRVS": "<CY4PR07MB3062243A909359FA8B71525EE1540@CY4PR07MB3062.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(66839620246622);",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(3231311)(2232096)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);\n\tSRVR:CY4PR07MB3062; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3062; ",
        "X-Forefront-PRVS": "0744CFB5E8",
        "X-Forefront-Antispam-Report": "SFV:SPM;\n\tSFS:(10009020)(396003)(376002)(346002)(136003)(366004)(39860400002)(189003)(199004)(2616005)(956004)(446003)(25786009)(69596002)(6486002)(2351001)(53416004)(81156014)(8676002)(11346002)(47776003)(105586002)(4326008)(66066001)(81166006)(486006)(8936002)(476003)(2361001)(26005)(186003)(16526019)(42882007)(7736002)(106356001)(68736007)(386003)(305945005)(6506007)(53946003)(50226002)(107886003)(6512007)(51416003)(48376002)(52116002)(54906003)(72206003)(14444005)(50466002)(6666003)(97736004)(6916009)(5660300001)(478600001)(76176011)(16586007)(53936002)(3846002)(36756003)(2906002)(6116002)(55236004)(1076002)(316002)(59010400001);\n\tDIR:OUT; SFP:1501; SCL:5; SRVR:CY4PR07MB3062;\n\tH:hyd1agupta-dt.caveonetworks.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "zrQSV/KTYSIK/Dbd5Bk4WMLHZ6K50vBG0lQJBne6ggFzRIMWvYKyamT/yplKBGDHvUFco+1NrX6f9Dz+nPXsj1wO1kg7n+pWRkszQHRcjahgd96/EgA1PicMhyVCF2YXMw2R5MCttE4dIiz8HJqeGJW18SXmkNMTA5+oAXz4qBnU9H1xq1EfEHiOeXRRpQd+9xDvAghvLlnvwBrNXyWdeiDo7FLQeOnDq2lUNzCVzl+8yaf+G8Pg0JhayCnAKVcuQUUWtHYX9vT8VN6n1/3JAT/7R9DgxCVNWx6FL3J0d4uutg3W/ofmCSpu+9ybq/GvyHQr1RreAwuFsp1nMeoVfHu9AOWdyAiwirU3+fG5w/7xrvP6z5ey6gtiDjJpLsXCtgLlGIv3agPg3sEKUy4/DWzTK7nMRQ2fg+uJlbbL6zL6Af1cvcV0Y5KruP2pVZhHF51TfTPhSv2L53E+UJVJAqiGw3QNBidKMVNr7HivdNcBR5uACRjAPXAZmF+yFjwG+69NMDTFuRgLnaX3OobXVmCFrYF/QYqcvhrhGyil70PhtKu6Eo1S9hNgIA0kld+jGquhNO4EchsLijhFFrz/XMeV6j077V+zaQTDj+qUVvQlT5/YdguHf9m8b9RV2Lu2dXizRt/rQH4lCjAOBrcLP1lnfFwlBCKyaCzXepOjaZGMN/FiacumRolPCb54g69IefQfrpbmjW1M0QOYlH0b3g==",
        "SpamDiagnosticOutput": "1:22",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Jul 2018 16:42:57.0426\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "44c93e92-0138-45d9-5070-08d5f24dae45",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY4PR07MB3062",
        "Subject": "[dpdk-dev] [PATCH v4 1/6] compress/octeontx: add octeontx zip PMD",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Sunila Sahu <sunila.sahu@caviumnetworks.com>\n\nOctentx zipvf PMD provides hardware acceleration for\ndeflate and lzs compression and decompression operations\nusing Octeontx zip co-processor, which provide 8\nvirtualized zip devices.\n\nThis patch add basic initialization routine to register zip VFs\nto compressdev library.\n\nSigned-off-by: Ashish Gupta <Ashish.Gupta@caviumnetworks.com>\nSigned-off-by: Shally Verma <shally.verma@caviumnetworks.com>\nSigned-off-by: Sunila Sahu <sunila.sahu@caviumnetworks.com>\n---\n MAINTAINERS                                        |   3 +\n config/common_base                                 |   5 +\n drivers/compress/Makefile                          |   1 +\n drivers/compress/meson.build                       |   2 +-\n drivers/compress/octeontx/Makefile                 |  30 +\n drivers/compress/octeontx/include/zip_regs.h       | 711 +++++++++++++++++++++\n drivers/compress/octeontx/meson.build              |   9 +\n drivers/compress/octeontx/otx_zip.c                |  62 ++\n drivers/compress/octeontx/otx_zip.h                | 113 ++++\n drivers/compress/octeontx/otx_zip_pmd.c            | 118 ++++\n .../octeontx/rte_pmd_octeontx_compress_version.map |   3 +\n mk/rte.app.mk                                      |   1 +\n 12 files changed, 1057 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex 7e3c450..16cbfd0 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -855,6 +855,9 @@ F: drivers/crypto/zuc/\n F: doc/guides/cryptodevs/zuc.rst\n F: doc/guides/cryptodevs/features/zuc.ini\n \n+Cavium OCTEONTX zipvf\n+M: Ashish Gupta <ashish.gupta@cavium.com>\n+F: drivers/compress/octeontx\n \n Compression Drivers\n -------------------\ndiff --git a/config/common_base b/config/common_base\nindex 662da4d..4bcbaf9 100644\n--- a/config/common_base\n+++ b/config/common_base\n@@ -578,6 +578,11 @@ CONFIG_RTE_COMPRESS_MAX_DEVS=64\n CONFIG_RTE_COMPRESSDEV_TEST=n\n \n #\n+# Compile PMD for Octeontx ZIPVF compression device\n+#\n+CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=y\n+\n+#\n # Compile PMD for ISA-L compression device\n #\n CONFIG_RTE_LIBRTE_PMD_ISAL=n\ndiff --git a/drivers/compress/Makefile b/drivers/compress/Makefile\nindex 1f159a5..af26060 100644\n--- a/drivers/compress/Makefile\n+++ b/drivers/compress/Makefile\n@@ -5,5 +5,6 @@ include $(RTE_SDK)/mk/rte.vars.mk\n \n DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal\n DIRS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib\n+DIRS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += octeontx\n \n include $(RTE_SDK)/mk/rte.subdir.mk\ndiff --git a/drivers/compress/meson.build b/drivers/compress/meson.build\nindex d2ca8fc..0b428ba 100644\n--- a/drivers/compress/meson.build\n+++ b/drivers/compress/meson.build\n@@ -1,7 +1,7 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2018 Intel Corporation\n \n-drivers = ['isal', 'qat', 'zlib']\n+drivers = ['isal', 'qat', 'zlib', 'octeontx']\n \n std_deps = ['compressdev'] # compressdev pulls in all other needed deps\n config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'\ndiff --git a/drivers/compress/octeontx/Makefile b/drivers/compress/octeontx/Makefile\nnew file mode 100644\nindex 0000000..f34424c\n--- /dev/null\n+++ b/drivers/compress/octeontx/Makefile\n@@ -0,0 +1,30 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2018 Cavium, Inc\n+\n+include $(RTE_SDK)/mk/rte.vars.mk\n+\n+# library name\n+LIB = librte_pmd_octeontx_zip.a\n+\n+# library version\n+LIBABIVER := 1\n+\n+# build flags\n+CFLAGS += $(WERROR_FLAGS)\n+CFLAGS += -O3\n+CFLAGS += -DALLOW_EXPERIMENTAL_API\n+CFLAGS += -I$(RTE_SDK)/drivers/compress/octeontx/include\n+\n+# external library include paths\n+LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring\n+LDLIBS += -lrte_compressdev\n+LDLIBS += -lrte_pci -lrte_bus_pci\n+\n+# library source files\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip_pmd.c\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += otx_zip.c\n+\n+# versioning export map\n+EXPORT_MAP := rte_pmd_octeontx_compress_version.map\n+\n+include $(RTE_SDK)/mk/rte.lib.mk\ndiff --git a/drivers/compress/octeontx/include/zip_regs.h b/drivers/compress/octeontx/include/zip_regs.h\nnew file mode 100644\nindex 0000000..1e74db4\n--- /dev/null\n+++ b/drivers/compress/octeontx/include/zip_regs.h\n@@ -0,0 +1,711 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#ifndef _RTE_OCTEONTX_ZIP_REGS_H_\n+#define _RTE_OCTEONTX_ZIP_REGS_H_\n+\n+\n+/**\n+ * Enumeration zip_cc\n+ *\n+ * ZIP compression coding Enumeration\n+ * Enumerates ZIP_INST_S[CC].\n+ */\n+enum {\n+\tZIP_CC_DEFAULT = 0,\n+\tZIP_CC_DYN_HUFF,\n+\tZIP_CC_FIXED_HUFF,\n+\tZIP_CC_LZS\n+} zip_cc;\n+\n+/**\n+ * Register (NCB) zip_vq#_ena\n+ *\n+ * ZIP VF Queue Enable Register\n+ * If a queue is disabled, ZIP CTL stops fetching instructions from the queue.\n+ */\n+typedef union {\n+\tuint64_t u;\n+\tstruct zip_vqx_ena_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\tuint64_t reserved_1_63         : 63;\n+\t\tuint64_t ena                   : 1;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t ena                   : 1;\n+\t\tuint64_t reserved_1_63         : 63;\n+#endif /* Word 0 - End */\n+\t} s;\n+\t/* struct zip_vqx_ena_s cn; */\n+} zip_vqx_ena_t;\n+\n+/**\n+ * Register (NCB) zip_vq#_sbuf_addr\n+ *\n+ * ZIP VF Queue Starting Buffer Address Registers\n+ * These registers set the buffer parameters for the instruction queues.\n+ * When quiescent (i.e.\n+ * outstanding doorbell count is 0), it is safe to rewrite this register\n+ * to effectively reset the\n+ * command buffer state machine.\n+ * These registers must be programmed after software programs the\n+ * corresponding ZIP_QUE()_SBUF_CTL.\n+ */\n+typedef union {\n+\tuint64_t u;\n+\tstruct zip_vqx_sbuf_addr_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\tuint64_t reserved_49_63        : 15;\n+\t\tuint64_t ptr                   : 42;\n+\t\tuint64_t off                   : 7;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t off                   : 7;\n+\t\tuint64_t ptr                   : 42;\n+\t\tuint64_t reserved_49_63        : 15;\n+#endif /* Word 0 - End */\n+\t} s;\n+\t/* struct zip_vqx_sbuf_addr_s cn; */\n+} zip_vqx_sbuf_addr_t;\n+\n+/**\n+ * Register (NCB) zip_que#_doorbell\n+ *\n+ * ZIP Queue Doorbell Registers\n+ * Doorbells for the ZIP instruction queues.\n+ */\n+typedef union {\n+\tuint64_t u;\n+\tstruct zip_quex_doorbell_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\tuint64_t reserved_20_63        : 44;\n+\t\tuint64_t dbell_cnt             : 20;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t dbell_cnt             : 20;\n+\t\tuint64_t reserved_20_63        : 44;\n+#endif /* Word 0 - End */\n+\t} s;\n+\t/* struct zip_quex_doorbell_s cn; */\n+} zip_quex_doorbell_t;\n+\n+/**\n+ * Structure zip_nptr_s\n+ *\n+ * ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) Structure\n+ * This structure is used to chain all the ZIP instruction buffers\n+ * together. ZIP instruction buffers are managed\n+ * (allocated and released) by software.\n+ */\n+union zip_nptr_s {\n+\tuint64_t u;\n+\tstruct zip_nptr_s_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\tuint64_t addr                  : 64;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t addr                  : 64;\n+#endif /* Word 0 - End */\n+\t} s;\n+\t/* struct zip_nptr_s_s cn83xx; */\n+};\n+\n+/**\n+ * generic ptr address\n+ */\n+union zip_zptr_addr_s {\n+\t/** This field can be used to set/clear all bits, or do bitwise\n+\t * operations over the entire structure.\n+\t */\n+\tuint64_t u;\n+\t/** generic ptr address */\n+\tstruct {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\tuint64_t addr : 64;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t addr : 64;\n+#endif /* Word 0 - End */\n+\t} s;\n+};\n+\n+/**\n+ * generic ptr ctl\n+ */\n+union zip_zptr_ctl_s {\n+\t/** This field can be used to set/clear all bits, or do bitwise\n+\t * operations over the entire structure.\n+\t */\n+\tuint64_t u;\n+\t/** generic ptr ctl */\n+\tstruct {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */\n+\t\tuint64_t reserved_112_127      : 16;\n+\t\tuint64_t length                : 16;\n+\t\tuint64_t reserved_67_95        : 29;\n+\t\tuint64_t fw                    : 1;\n+\t\tuint64_t nc                    : 1;\n+\t\tuint64_t data_be               : 1;\n+#else /* Word 1 - Little Endian */\n+\t\tuint64_t data_be               : 1;\n+\t\tuint64_t nc                    : 1;\n+\t\tuint64_t fw                    : 1;\n+\t\tuint64_t reserved_67_95        : 29;\n+\t\tuint64_t length                : 16;\n+\t\tuint64_t reserved_112_127      : 16;\n+#endif /* Word 1 - End */\n+\t} s;\n+\n+};\n+\n+/**\n+ * Structure zip_inst_s\n+ *\n+ * ZIP Instruction Structure\n+ * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15\n+ * within the structure).\n+ */\n+union zip_inst_s {\n+\t/** This field can be used to set/clear all bits, or do bitwise\n+\t * operations over the entire structure.\n+\t */\n+\tuint64_t u[16];\n+\t/** ZIP Instruction Structure */\n+\tstruct zip_inst_s_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\t/** Done interrupt */\n+\t\tuint64_t doneint               : 1;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_56_62        : 7;\n+\t\t/**  Total output length */\n+\t\tuint64_t totaloutputlength     : 24;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_27_31        : 5;\n+\t\t/** EXNUM */\n+\t\tuint64_t exn                   : 3;\n+\t\t/**  HASH IV */\n+\t\tuint64_t iv                    : 1;\n+\t\t/** EXBITS */\n+\t\tuint64_t exbits                : 7;\n+\t\t/** Hash more-in-file */\n+\t\tuint64_t hmif                  : 1;\n+\t\t/** Hash Algorithm and enable */\n+\t\tuint64_t halg                  : 3;\n+\t\t/** Sync flush*/\n+\t\tuint64_t sf                    : 1;\n+\t\t/** Compression speed/storage */\n+\t\tuint64_t ss                    : 2;\n+\t\t/** Compression coding */\n+\t\tuint64_t cc                    : 2;\n+\t\t/** End of input data */\n+\t\tuint64_t ef                    : 1;\n+\t\t/** Beginning of file */\n+\t\tuint64_t bf                    : 1;\n+\t\t// uint64_t reserved_3_4          : 2;\n+\t\t/** Comp/decomp operation */\n+\t\tuint64_t op                    : 2;\n+\t\t/** Data sactter */\n+\t\tuint64_t ds                    : 1;\n+\t\t/** Data gather */\n+\t\tuint64_t dg                    : 1;\n+\t\t/** History gather */\n+\t\tuint64_t hg                    : 1;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t hg                    : 1;\n+\t\tuint64_t dg                    : 1;\n+\t\tuint64_t ds                    : 1;\n+\t\t//uint64_t reserved_3_4          : 2;\n+\t\tuint64_t op                    : 2;\n+\t\tuint64_t bf                    : 1;\n+\t\tuint64_t ef                    : 1;\n+\t\tuint64_t cc                    : 2;\n+\t\tuint64_t ss                    : 2;\n+\t\tuint64_t sf                    : 1;\n+\t\tuint64_t halg                  : 3;\n+\t\tuint64_t hmif                  : 1;\n+\t\tuint64_t exbits                : 7;\n+\t\tuint64_t iv                    : 1;\n+\t\tuint64_t exn                   : 3;\n+\t\tuint64_t reserved_27_31        : 5;\n+\t\tuint64_t totaloutputlength     : 24;\n+\t\tuint64_t reserved_56_62        : 7;\n+\t\tuint64_t doneint               : 1;\n+\n+#endif /* Word 0 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */\n+\t\t/** History length */\n+\t\tuint64_t historylength         : 16;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_96_111       : 16;\n+\t\t/** adler/crc32 checksum*/\n+\t\tuint64_t adlercrc32            : 32;\n+#else /* Word 1 - Little Endian */\n+\t\tuint64_t adlercrc32            : 32;\n+\t\tuint64_t reserved_96_111       : 16;\n+\t\tuint64_t historylength         : 16;\n+#endif /* Word 1 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */\n+\t\t/** Decompression Context Pointer Address */\n+\t\tunion zip_zptr_addr_s  ctx_ptr_addr;\n+#else /* Word 2 - Little Endian */\n+\t\tunion zip_zptr_addr_s  ctx_ptr_addr;\n+#endif /* Word 2 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Decompression Context Pointer Control */\n+\t\tunion zip_zptr_ctl_s   ctx_ptr_ctl;\n+#else /* Word 3 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   ctx_ptr_ctl;\n+#endif /* Word 3 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Decompression history pointer address */\n+\t\tunion zip_zptr_addr_s  his_ptr_addr;\n+#else /* Word 4 - Little Endian */\n+\t\tunion zip_zptr_addr_s  his_ptr_addr;\n+#endif /* Word 4 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Decompression history pointer control */\n+\t\tunion zip_zptr_ctl_s   his_ptr_ctl;\n+#else /* Word 5 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   his_ptr_ctl;\n+#endif /* Word 5 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Input and compression history pointer address */\n+\t\tunion zip_zptr_addr_s  inp_ptr_addr;\n+#else /* Word 6 - Little Endian */\n+\t\tunion zip_zptr_addr_s  inp_ptr_addr;\n+#endif /* Word 6 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Input and compression history pointer control */\n+\t\tunion zip_zptr_ctl_s   inp_ptr_ctl;\n+#else /* Word 7 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   inp_ptr_ctl;\n+#endif /* Word 7 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Output pointer address */\n+\t\tunion zip_zptr_addr_s  out_ptr_addr;\n+#else /* Word 8 - Little Endian */\n+\t\tunion zip_zptr_addr_s  out_ptr_addr;\n+#endif /* Word 8 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Output pointer control */\n+\t\tunion zip_zptr_ctl_s   out_ptr_ctl;\n+#else /* Word 9 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   out_ptr_ctl;\n+#endif /* Word 9 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Result pointer address */\n+\t\tunion zip_zptr_addr_s  res_ptr_addr;\n+#else /* Word 10 - Little Endian */\n+\t\tunion zip_zptr_addr_s  res_ptr_addr;\n+#endif /* Word 10 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Result pointer control */\n+\t\tunion zip_zptr_ctl_s   res_ptr_ctl;\n+#else /* Word 11 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   res_ptr_ctl;\n+#endif /* Word 11 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */\n+\t\t/** reserved */\n+\t\tuint64_t reserved_812_831      : 20;\n+\t\t/** SSO guest group */\n+\t\tuint64_t ggrp                  : 10;\n+\t\t/** SSO tag type */\n+\t\tuint64_t tt                    : 2;\n+\t\t/** SSO tag */\n+\t\tuint64_t tag                   : 32;\n+#else /* Word 12 - Little Endian */\n+\t\tuint64_t tag                   : 32;\n+\t\tuint64_t tt                    : 2;\n+\t\tuint64_t ggrp                  : 10;\n+\t\tuint64_t reserved_812_831      : 20;\n+#endif /* Word 12 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */\n+\t\t/** Work queue entry pointer */\n+\t\tuint64_t wq_ptr                : 64;\n+#else /* Word 13 - Little Endian */\n+\t\tuint64_t wq_ptr                : 64;\n+#endif /* Word 13 - End */\n+\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** reserved */\n+\t\tuint64_t reserved_896_959      : 64;\n+#else /* Word 14 - Little Endian */\n+\t\tuint64_t reserved_896_959      : 64;\n+#endif /* Word 14 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD)\n+\t\t/** Hash structure pointer */\n+\t\tuint64_t hash_ptr              : 64;\n+#else /* Word 15 - Little Endian */\n+\t\tuint64_t hash_ptr              : 64;\n+#endif /* Word 15 - End */\n+\t} /** ZIP 88xx Instruction Structure */zip88xx;\n+\n+\t/** ZIP Instruction Structure */\n+\tstruct zip_inst_s_cn83xx {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\t/** Done interrupt */\n+\t\tuint64_t doneint               : 1;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_56_62        : 7;\n+\t\t/**  Total output length */\n+\t\tuint64_t totaloutputlength     : 24;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_27_31        : 5;\n+\t\t/** EXNUM */\n+\t\tuint64_t exn                   : 3;\n+\t\t/**  HASH IV */\n+\t\tuint64_t iv                    : 1;\n+\t\t/** EXBITS */\n+\t\tuint64_t exbits                : 7;\n+\t\t/** Hash more-in-file */\n+\t\tuint64_t hmif                  : 1;\n+\t\t/** Hash Algorithm and enable */\n+\t\tuint64_t halg                  : 3;\n+\t\t/** Sync flush*/\n+\t\tuint64_t sf                    : 1;\n+\t\t/** Compression speed/storage */\n+\t\tuint64_t ss                    : 2;\n+\t\t/** Compression coding */\n+\t\tuint64_t cc                    : 2;\n+\t\t/** End of input data */\n+\t\tuint64_t ef                    : 1;\n+\t\t/** Beginning of file */\n+\t\tuint64_t bf                    : 1;\n+\t\t/** Comp/decomp operation */\n+\t\tuint64_t op                    : 2;\n+\t\t/** Data sactter */\n+\t\tuint64_t ds                    : 1;\n+\t\t/** Data gather */\n+\t\tuint64_t dg                    : 1;\n+\t\t/** History gather */\n+\t\tuint64_t hg                    : 1;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t hg                    : 1;\n+\t\tuint64_t dg                    : 1;\n+\t\tuint64_t ds                    : 1;\n+\t\tuint64_t op                    : 2;\n+\t\tuint64_t bf                    : 1;\n+\t\tuint64_t ef                    : 1;\n+\t\tuint64_t cc                    : 2;\n+\t\tuint64_t ss                    : 2;\n+\t\tuint64_t sf                    : 1;\n+\t\tuint64_t halg                  : 3;\n+\t\tuint64_t hmif                  : 1;\n+\t\tuint64_t exbits                : 7;\n+\t\tuint64_t iv                    : 1;\n+\t\tuint64_t exn                   : 3;\n+\t\tuint64_t reserved_27_31        : 5;\n+\t\tuint64_t totaloutputlength     : 24;\n+\t\tuint64_t reserved_56_62        : 7;\n+\t\tuint64_t doneint               : 1;\n+#endif /* Word 0 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */\n+\t\t/** History length */\n+\t\tuint64_t historylength         : 16;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_96_111       : 16;\n+\t\t/** adler/crc32 checksum*/\n+\t\tuint64_t adlercrc32            : 32;\n+#else /* Word 1 - Little Endian */\n+\t\tuint64_t adlercrc32            : 32;\n+\t\tuint64_t reserved_96_111       : 16;\n+\t\tuint64_t historylength         : 16;\n+#endif /* Word 1 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */\n+\t\t/** Decompression Context Pointer Address */\n+\t\tunion zip_zptr_addr_s  ctx_ptr_addr;\n+#else /* Word 2 - Little Endian */\n+\t\tunion zip_zptr_addr_s  ctx_ptr_addr;\n+#endif /* Word 2 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */\n+\t\t/** Decompression Context Pointer Control */\n+\t\tunion zip_zptr_ctl_s   ctx_ptr_ctl;\n+#else /* Word 3 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   ctx_ptr_ctl;\n+#endif /* Word 3 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */\n+\t\t/** Decompression history pointer address */\n+\t\tunion zip_zptr_addr_s  his_ptr_addr;\n+#else /* Word 4 - Little Endian */\n+\t\tunion zip_zptr_addr_s  his_ptr_addr;\n+#endif /* Word 4 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */\n+\t\t/** Decompression history pointer control */\n+\t\tunion zip_zptr_ctl_s   his_ptr_ctl;\n+#else /* Word 5 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   his_ptr_ctl;\n+#endif /* Word 5 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */\n+\t\t/** Input and compression history pointer address */\n+\t\tunion zip_zptr_addr_s  inp_ptr_addr;\n+#else /* Word 6 - Little Endian */\n+\t\tunion zip_zptr_addr_s  inp_ptr_addr;\n+#endif /* Word 6 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */\n+\t\t/** Input and compression history pointer control */\n+\t\tunion zip_zptr_ctl_s   inp_ptr_ctl;\n+#else /* Word 7 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   inp_ptr_ctl;\n+#endif /* Word 7 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 8 - Big Endian */\n+\t\t/** Output pointer address */\n+\t\tunion zip_zptr_addr_s  out_ptr_addr;\n+#else /* Word 8 - Little Endian */\n+\t\tunion zip_zptr_addr_s  out_ptr_addr;\n+#endif /* Word 8 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 9 - Big Endian */\n+\t\t/** Output pointer control */\n+\t\tunion zip_zptr_ctl_s   out_ptr_ctl;\n+#else /* Word 9 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   out_ptr_ctl;\n+#endif /* Word 9 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 10 - Big Endian */\n+\t\t/** Result pointer address */\n+\t\tunion zip_zptr_addr_s  res_ptr_addr;\n+#else /* Word 10 - Little Endian */\n+\t\tunion zip_zptr_addr_s  res_ptr_addr;\n+#endif /* Word 10 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 11 - Big Endian */\n+\t\t/** Result pointer control */\n+\t\tunion zip_zptr_ctl_s   res_ptr_ctl;\n+#else /* Word 11 - Little Endian */\n+\t\tunion zip_zptr_ctl_s   res_ptr_ctl;\n+#endif /* Word 11 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */\n+\t\t/** reserved */\n+\t\tuint64_t reserved_812_831      : 20;\n+\t\t/** SSO guest group */\n+\t\tuint64_t ggrp                  : 10;\n+\t\t/** SSO tag type */\n+\t\tuint64_t tt                    : 2;\n+\t\t/** SSO tag */\n+\t\tuint64_t tag                   : 32;\n+#else /* Word 12 - Little Endian */\n+\t\tuint64_t tag                   : 32;\n+\t\tuint64_t tt                    : 2;\n+\t\tuint64_t ggrp                  : 10;\n+\t\tuint64_t reserved_812_831      : 20;\n+#endif /* Word 12 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */\n+\t\t/** Work queue entry pointer */\n+\t\tuint64_t wq_ptr                : 64;\n+#else /* Word 13 - Little Endian */\n+\t\tuint64_t wq_ptr                : 64;\n+#endif /* Word 13 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 14 - Big Endian */\n+\t\t/** reserved */\n+\t\tuint64_t reserved_896_959      : 64;\n+#else /* Word 14 - Little Endian */\n+\t\tuint64_t reserved_896_959      : 64;\n+#endif /* Word 14 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 15 - Big Endian */\n+\t\t/** Hash structure pointer */\n+\t\tuint64_t hash_ptr              : 64;\n+#else /* Word 15 - Little Endian */\n+\t\tuint64_t hash_ptr              : 64;\n+#endif /* Word 15 - End */\n+\t} /** ZIP 83xx Instruction Structure */s;\n+};\n+\n+/**\n+ * Structure zip_zres_s\n+ *\n+ * ZIP Result Structure\n+ * The ZIP coprocessor writes the result structure after it completes the\n+ * invocation. The result structure is exactly 24 bytes, and each invocation\n+ * of the ZIP coprocessor produces exactly one result structure.\n+ */\n+union zip_zres_s {\n+\t/** This field can be used to set/clear all bits, or do bitwise\n+\t * operations over the entire structure.\n+\t */\n+\tuint64_t u[8];\n+\t/** ZIP Result Structure */\n+\tstruct zip_zres_s_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\t/** crc32 checksum of uncompressed stream */\n+\t\tuint64_t crc32                 : 32;\n+\t\t/** adler32 checksum of uncompressed stream*/\n+\t\tuint64_t adler32               : 32;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t adler32               : 32;\n+\t\tuint64_t crc32                 : 32;\n+#endif /* Word 0 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */\n+\t\t/** Total numer of Bytes produced in output stream */\n+\t\tuint64_t totalbyteswritten     : 32;\n+\t\t/** Total number of bytes processed from the input stream */\n+\t\tuint64_t totalbytesread        : 32;\n+#else /* Word 1 - Little Endian */\n+\t\tuint64_t totalbytesread        : 32;\n+\t\tuint64_t totalbyteswritten     : 32;\n+#endif /* Word 1 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */\n+\t\t/** Total number of compressed input bits\n+\t\t * consumed to decompress all blocks in the file\n+\t\t */\n+\t\tuint64_t totalbitsprocessed    : 32;\n+\t\t/** Done interrupt*/\n+\t\tuint64_t doneint               : 1;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_155_158      : 4;\n+\t\t/** EXNUM */\n+\t\tuint64_t exn                   : 3;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_151          : 1;\n+\t\t/** EXBITS */\n+\t\tuint64_t exbits                : 7;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_137_143      : 7;\n+\t\t/** End of file */\n+\t\tuint64_t ef                    : 1;\n+\t\t/** Completion/error code */\n+\t\tuint64_t compcode              : 8;\n+#else /* Word 2 - Little Endian */\n+\t\tuint64_t compcode              : 8;\n+\t\tuint64_t ef                    : 1;\n+\t\tuint64_t reserved_137_143      : 7;\n+\t\tuint64_t exbits                : 7;\n+\t\tuint64_t reserved_151          : 1;\n+\t\tuint64_t exn                   : 3;\n+\t\tuint64_t reserved_155_158      : 4;\n+\t\tuint64_t doneint               : 1;\n+\t\tuint64_t totalbitsprocessed    : 32;\n+#endif /* Word 2 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */\n+\t\t/** reserved */\n+\t\tuint64_t reserved_253_255      : 3;\n+\t\t/** Hash length in bytes */\n+\t\tuint64_t hshlen                : 61;\n+#else /* Word 3 - Little Endian */\n+\t\tuint64_t hshlen                : 61;\n+\t\tuint64_t reserved_253_255      : 3;\n+#endif /* Word 3 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */\n+\t\t/** Double-word 0 of computed hash */\n+\t\tuint64_t hash0                 : 64;\n+#else /* Word 4 - Little Endian */\n+\t\tuint64_t hash0                 : 64;\n+#endif /* Word 4 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */\n+\t\t/** Double-word 1 of computed hash */\n+\t\tuint64_t hash1                 : 64;\n+#else /* Word 5 - Little Endian */\n+\t\tuint64_t hash1                 : 64;\n+#endif /* Word 5 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */\n+\t\t/** Double-word 2 of computed hash */\n+\t\tuint64_t hash2                 : 64;\n+#else /* Word 6 - Little Endian */\n+\t\tuint64_t hash2                 : 64;\n+#endif /* Word 6 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */\n+\t\t/** Double-word 3 of computed hash */\n+\t\tuint64_t hash3                 : 64;\n+#else /* Word 7 - Little Endian */\n+\t\tuint64_t hash3                 : 64;\n+#endif /* Word 7 - End */\n+\t} /** ZIP Result Structure */s;\n+\n+\t/* struct zip_zres_s_s cn83xx; */\n+};\n+\n+/**\n+ * Structure zip_zptr_s\n+ *\n+ * ZIP Generic Pointer Structure\n+ * This structure is the generic format of pointers in ZIP_INST_S.\n+ */\n+union zip_zptr_s {\n+\t/** This field can be used to set/clear all bits, or do bitwise\n+\t * operations over the entire structure.\n+\t */\n+\tuint64_t u[2];\n+\t/** ZIP Generic Pointer Structure */\n+\tstruct zip_zptr_s_s {\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */\n+\t\t/** Pointer to Data or scatter-gather list */\n+\t\tuint64_t addr                  : 64;\n+#else /* Word 0 - Little Endian */\n+\t\tuint64_t addr                  : 64;\n+#endif /* Word 0 - End */\n+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */\n+\t\t/** reserved */\n+\t\tuint64_t reserved_112_127      : 16;\n+\t\t/** Length of Data or scatter-gather list*/\n+\t\tuint64_t length                : 16;\n+\t\t/** reserved */\n+\t\tuint64_t reserved_67_95        : 29;\n+\t\t/** Full-block write */\n+\t\tuint64_t fw                    : 1;\n+\t\t/** No cache allocation */\n+\t\tuint64_t nc                    : 1;\n+\t\t/** reserved */\n+\t\tuint64_t data_be               : 1;\n+#else /* Word 1 - Little Endian */\n+\t\tuint64_t data_be               : 1;\n+\t\tuint64_t nc                    : 1;\n+\t\tuint64_t fw                    : 1;\n+\t\tuint64_t reserved_67_95        : 29;\n+\t\tuint64_t length                : 16;\n+\t\tuint64_t reserved_112_127      : 16;\n+#endif /* Word 1 - End */\n+\t} /** ZIP Generic Pointer Structure */s;\n+};\n+\n+/**\n+ * Enumeration zip_comp_e\n+ *\n+ * ZIP Completion Enumeration\n+ * Enumerates the values of ZIP_ZRES_S[COMPCODE].\n+ */\n+#define ZIP_COMP_E_NOTDONE       (0)\n+#define ZIP_COMP_E_SUCCESS       (1)\n+#define ZIP_COMP_E_DTRUNC        (2)\n+#define ZIP_COMP_E_DSTOP         (3)\n+#define ZIP_COMP_E_ITRUNC        (4)\n+#define ZIP_COMP_E_RBLOCK        (5)\n+#define ZIP_COMP_E_NLEN          (6)\n+#define ZIP_COMP_E_BADCODE       (7)\n+#define ZIP_COMP_E_BADCODE2      (8)\n+#define ZIP_COMP_E_ZERO_LEN      (9)\n+#define ZIP_COMP_E_PARITY        (0xa)\n+#define ZIP_COMP_E_FATAL         (0xb)\n+#define ZIP_COMP_E_TIMEOUT       (0xc)\n+#define ZIP_COMP_E_INSTR_ERR     (0xd)\n+#define ZIP_COMP_E_HCTX_ERR      (0xe)\n+#define ZIP_COMP_E_STOP          (3)\n+\n+/**\n+ * Enumeration zip_op_e\n+ *\n+ * ZIP Operation Enumeration\n+ * Enumerates ZIP_INST_S[OP].\n+ * Internal:\n+ */\n+#define ZIP_OP_E_DECOMP   (0)\n+#define ZIP_OP_E_NOCOMP   (1)\n+#define ZIP_OP_E_COMP     (2)\n+\n+/**\n+ * Enumeration zip compression levels\n+ *\n+ * ZIP Compression Level Enumeration\n+ * Enumerates ZIP_INST_S[SS].\n+ * Internal:\n+ */\n+#define ZIP_COMP_E_LEVEL_MAX  (0)\n+#define ZIP_COMP_E_LEVEL_MED  (1)\n+#define ZIP_COMP_E_LEVEL_LOW  (2)\n+#define ZIP_COMP_E_LEVEL_MIN  (3)\n+\n+#endif\t/* _RTE_ZIP_REGS_H_ */\ndiff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build\nnew file mode 100644\nindex 0000000..7cd202d\n--- /dev/null\n+++ b/drivers/compress/octeontx/meson.build\n@@ -0,0 +1,9 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2018 Cavium, Inc\n+\n+name = 'octeontx_compress'\n+sources = files('otx_zip.c', 'otx_zip_pmd.c')\n+allow_experimental_apis = true\n+includes += include_directories('include')\n+deps += ['mempool_octeontx', 'bus_pci']\n+ext_deps += dep\ndiff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c\nnew file mode 100644\nindex 0000000..7a1dd58\n--- /dev/null\n+++ b/drivers/compress/octeontx/otx_zip.c\n@@ -0,0 +1,62 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#include \"otx_zip.h\"\n+\n+uint64_t\n+zip_reg_read64(uint8_t *hw_addr, uint64_t offset)\n+{\n+\tuint8_t *base = hw_addr;\n+\treturn *(volatile uint64_t *)(base + offset);\n+}\n+\n+void\n+zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val)\n+{\n+\tuint8_t *base = hw_addr;\n+\t*(uint64_t *)(base + offset) = val;\n+}\n+\n+int\n+zipvf_create(struct rte_compressdev *compressdev)\n+{\n+\tstruct   rte_pci_device *pdev = RTE_DEV_TO_PCI(compressdev->device);\n+\tstruct   zip_vf *zipvf = NULL;\n+\tchar     *dev_name = compressdev->data->name;\n+\tvoid     *vbar0;\n+\tuint64_t reg;\n+\n+\tif (pdev->mem_resource[0].phys_addr == 0ULL)\n+\t\treturn -EIO;\n+\n+\tvbar0 = pdev->mem_resource[0].addr;\n+\tif (!vbar0) {\n+\t\tZIP_PMD_ERR(\"Failed to map BAR0 of %s\", dev_name);\n+\t\treturn -ENODEV;\n+\t}\n+\n+\tzipvf = (struct zip_vf *)(compressdev->data->dev_private);\n+\n+\tif (!zipvf)\n+\t\treturn -ENOMEM;\n+\n+\tzipvf->vbar0 = vbar0;\n+\treg = zip_reg_read64(zipvf->vbar0, ZIP_VF_PF_MBOXX(0));\n+\t/* Storing domain in local to ZIP VF */\n+\tzipvf->dom_sdom = reg;\n+\tzipvf->pdev = pdev;\n+\tzipvf->max_nb_queue_pairs = ZIP_MAX_VF_QUEUE;\n+\treturn 0;\n+}\n+\n+int\n+zipvf_destroy(struct rte_compressdev *compressdev)\n+{\n+\tstruct zip_vf *vf = (struct zip_vf *)(compressdev->data->dev_private);\n+\n+\t/* Rewriting the domain_id in ZIP_VF_MBOX for app rerun */\n+\tzip_reg_write64(vf->vbar0, ZIP_VF_PF_MBOXX(0), vf->dom_sdom);\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h\nnew file mode 100644\nindex 0000000..8a58f31\n--- /dev/null\n+++ b/drivers/compress/octeontx/otx_zip.h\n@@ -0,0 +1,113 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#ifndef _RTE_OCTEONTX_ZIP_VF_H_\n+#define _RTE_OCTEONTX_ZIP_VF_H_\n+\n+#include <unistd.h>\n+\n+#include <rte_bus_pci.h>\n+#include <rte_comp.h>\n+#include <rte_compressdev.h>\n+#include <rte_compressdev_pmd.h>\n+#include <rte_malloc.h>\n+#include <rte_memory.h>\n+#include <rte_spinlock.h>\n+\n+#include <zip_regs.h>\n+\n+int octtx_zip_logtype_driver;\n+\n+/* ZIP VF Control/Status registers (CSRs): */\n+/* VF_BAR0: */\n+#define ZIP_VQ_ENA              (0x10)\n+#define ZIP_VQ_SBUF_ADDR        (0x20)\n+#define ZIP_VF_PF_MBOXX(x)      (0x400 | (x)<<3)\n+#define ZIP_VQ_DOORBELL         (0x1000)\n+\n+/**< Vendor ID */\n+#define PCI_VENDOR_ID_CAVIUM\t0x177D\n+/**< PCI device id of ZIP VF */\n+#define PCI_DEVICE_ID_OCTEONTX_ZIPVF\t0xA037\n+\n+/* maxmum number of zip vf devices */\n+#define ZIP_MAX_VFS 8\n+\n+/* max size of one chunk */\n+#define ZIP_MAX_CHUNK_SIZE\t8192\n+\n+/* each instruction is fixed 128 bytes */\n+#define ZIP_CMD_SIZE\t\t128\n+\n+#define ZIP_CMD_SIZE_WORDS\t(ZIP_CMD_SIZE >> 3) /* 16 64_bit words */\n+\n+/* size of next chunk buffer pointer */\n+#define ZIP_MAX_NCBP_SIZE\t8\n+\n+/* size of instruction queue in units of instruction size */\n+#define ZIP_MAX_NUM_CMDS\t((ZIP_MAX_CHUNK_SIZE - ZIP_MAX_NCBP_SIZE) / \\\n+\t\t\t\tZIP_CMD_SIZE) /* 63 */\n+\n+/* size of instruct queue in bytes */\n+#define ZIP_MAX_CMDQ_SIZE\t((ZIP_MAX_NUM_CMDS * ZIP_CMD_SIZE) + \\\n+\t\t\t\tZIP_MAX_NCBP_SIZE)/* ~8072ull */\n+\n+#define ZIP_BUF_SIZE\t256\n+\n+#define ZIP_SGPTR_ALIGN\t16\n+#define ZIP_CMDQ_ALIGN\t128\n+#define MAX_SG_LEN\t((ZIP_BUF_SIZE - ZIP_SGPTR_ALIGN) / sizeof(void *))\n+\n+/**< ZIP PMD specified queue pairs */\n+#define ZIP_MAX_VF_QUEUE\t1\n+\n+#define ZIP_ALIGN_ROUNDUP(x, _align) \\\n+\t((_align) * (((x) + (_align) - 1) / (_align)))\n+\n+/**< ZIP PMD device name */\n+#define COMPRESSDEV_NAME_ZIP_PMD\tcompress_octeonx\n+\n+#define ZIP_PMD_LOG(level, fmt, args...) \\\n+\trte_log(RTE_LOG_ ## level, \\\n+\tocttx_zip_logtype_driver, \"%s(): \"fmt \"\\n\", \\\n+\t__func__, ##args)\n+\n+#define ZIP_PMD_INFO(fmt, args...) \\\n+\tZIP_PMD_LOG(INFO, fmt, ## args)\n+#define ZIP_PMD_ERR(fmt, args...) \\\n+\tZIP_PMD_LOG(ERR, fmt, ## args)\n+#define ZIP_PMD_WARN(fmt, args...) \\\n+\tZIP_PMD_LOG(WARNING, fmt, ## args)\n+\n+/**\n+ * ZIP VF device structure.\n+ */\n+struct zip_vf {\n+\tint vfid;\n+\t/* vf index */\n+\tstruct rte_pci_device *pdev;\n+\t/* pci device */\n+\tvoid *vbar0;\n+\t/* CSR base address for underlying BAR0 VF.*/\n+\tuint64_t dom_sdom;\n+\t/* Storing mbox domain and subdomain id for app rerun*/\n+\tuint32_t  max_nb_queue_pairs;\n+\t/* pointer to device qps */\n+\tstruct rte_mempool *zip_mp;\n+\t/* pointer to pools */\n+} __rte_cache_aligned;\n+\n+int\n+zipvf_create(struct rte_compressdev *compressdev);\n+\n+int\n+zipvf_destroy(struct rte_compressdev *compressdev);\n+\n+uint64_t\n+zip_reg_read64(uint8_t *hw_addr, uint64_t offset);\n+\n+void\n+zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val);\n+\n+#endif /* _RTE_ZIP_VF_H_ */\ndiff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c\nnew file mode 100644\nindex 0000000..4d92c9d\n--- /dev/null\n+++ b/drivers/compress/octeontx/otx_zip_pmd.c\n@@ -0,0 +1,118 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#include <string.h>\n+\n+#include <rte_byteorder.h>\n+#include <rte_common.h>\n+#include <rte_cpuflags.h>\n+#include <rte_malloc.h>\n+\n+#include \"otx_zip.h\"\n+\n+struct rte_compressdev_ops octtx_zip_pmd_ops = {\n+\n+};\n+\n+static int\n+zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,\n+\tstruct rte_pci_device *pci_dev)\n+{\n+\tint ret = 0;\n+\tchar compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN];\n+\tstruct rte_compressdev *compressdev;\n+\tstruct rte_compressdev_pmd_init_params init_params = {\n+\t\t\"\",\n+\t\trte_socket_id(),\n+\t};\n+\n+\tZIP_PMD_INFO(\"vendor_id=0x%x device_id=0x%x\",\n+\t\t\t(unsigned int)pci_dev->id.vendor_id,\n+\t\t\t(unsigned int)pci_dev->id.device_id);\n+\n+\trte_pci_device_name(&pci_dev->addr, compressdev_name,\n+\t\t\t    sizeof(compressdev_name));\n+\n+\tcompressdev = rte_compressdev_pmd_create(compressdev_name,\n+\t\t&pci_dev->device, sizeof(struct zip_vf), &init_params);\n+\tif (compressdev == NULL) {\n+\t\tZIP_PMD_ERR(\"driver %s: create failed\", init_params.name);\n+\t\treturn -ENODEV;\n+\t}\n+\n+\t/*\n+\t * create only if proc_type is primary.\n+\t */\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY) {\n+\t\t/*  create vf dev with given pmd dev id */\n+\t\tret = zipvf_create(compressdev);\n+\t\tif (ret < 0) {\n+\t\t\tZIP_PMD_ERR(\"Device creation failed\");\n+\t\t\trte_compressdev_pmd_destroy(compressdev);\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\n+\tcompressdev->dev_ops = &octtx_zip_pmd_ops;\n+\t/* register rx/tx burst functions for data path */\n+\tcompressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED;\n+\treturn ret;\n+}\n+\n+static int\n+zip_pci_remove(struct rte_pci_device *pci_dev)\n+{\n+\tstruct rte_compressdev *compressdev;\n+\tchar compressdev_name[RTE_COMPRESSDEV_NAME_MAX_LEN];\n+\n+\tif (pci_dev == NULL) {\n+\t\tZIP_PMD_ERR(\" Invalid PCI Device\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\trte_pci_device_name(&pci_dev->addr, compressdev_name,\n+\t\t\tsizeof(compressdev_name));\n+\n+\tcompressdev = rte_compressdev_pmd_get_named_dev(compressdev_name);\n+\tif (compressdev == NULL)\n+\t\treturn -ENODEV;\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY) {\n+\t\tif (zipvf_destroy(compressdev) < 0)\n+\t\t\treturn -ENODEV;\n+\t}\n+\treturn rte_compressdev_pmd_destroy(compressdev);\n+}\n+\n+static struct rte_pci_id pci_id_octtx_zipvf_table[] = {\n+\t{\n+\t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM,\n+\t\t\tPCI_DEVICE_ID_OCTEONTX_ZIPVF),\n+\t},\n+\t{\n+\t\t.device_id = 0\n+\t},\n+};\n+\n+/**\n+ * Structure that represents a PCI driver\n+ */\n+static struct rte_pci_driver octtx_zip_pmd = {\n+\t.id_table    = pci_id_octtx_zipvf_table,\n+\t.drv_flags   = RTE_PCI_DRV_NEED_MAPPING,\n+\t.probe       = zip_pci_probe,\n+\t.remove      = zip_pci_remove,\n+};\n+\n+RTE_PMD_REGISTER_PCI(COMPRESSDEV_NAME_ZIP_PMD, octtx_zip_pmd);\n+RTE_PMD_REGISTER_PCI_TABLE(COMPRESSDEV_NAME_ZIP_PMD, pci_id_octtx_zipvf_table);\n+\n+RTE_INIT(octtx_zip_init_log);\n+\n+static void\n+octtx_zip_init_log(void)\n+{\n+\tocttx_zip_logtype_driver = rte_log_register(\"pmd.compress.octeontx\");\n+\tif (octtx_zip_logtype_driver >= 0)\n+\t\trte_log_set_level(octtx_zip_logtype_driver, RTE_LOG_INFO);\n+}\ndiff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map\nnew file mode 100644\nindex 0000000..ad6e191\n--- /dev/null\n+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map\n@@ -0,0 +1,3 @@\n+DPDK_18.08 {\n+\tlocal: *;\n+};\ndiff --git a/mk/rte.app.mk b/mk/rte.app.mk\nindex 5b7c684..429b8ba 100644\n--- a/mk/rte.app.mk\n+++ b/mk/rte.app.mk\n@@ -222,6 +222,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto\n endif # CONFIG_RTE_LIBRTE_CRYPTODEV\n \n ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)\n+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += -lrte_pmd_octeontx_zip\n _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp\n _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal\n # Link QAT driver if it has not been linked yet\n",
    "prefixes": [
        "v4",
        "1/6"
    ]
}