get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42108,
    "url": "http://patches.dpdk.org/api/patches/42108/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1530550477-22444-2-git-send-email-shally.verma@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": "<1530550477-22444-2-git-send-email-shally.verma@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1530550477-22444-2-git-send-email-shally.verma@caviumnetworks.com",
    "date": "2018-07-02T16:54:32",
    "name": "[v2,1/6] compress/octeontx: add octeontx zip PMD support",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "75883e11919479490b6acdbfd0c6a6c607a87b80",
    "submitter": {
        "id": 960,
        "url": "http://patches.dpdk.org/api/people/960/?format=api",
        "name": "Shally Verma",
        "email": "shally.verma@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/1530550477-22444-2-git-send-email-shally.verma@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 361,
            "url": "http://patches.dpdk.org/api/series/361/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=361",
            "date": "2018-07-02T16:54:31",
            "name": "compress: add Octeontx ZIP compression PMD",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/361/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/42108/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/42108/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 073971B532;\n\tMon,  2 Jul 2018 18:55:52 +0200 (CEST)",
            "from NAM03-CO1-obe.outbound.protection.outlook.com\n\t(mail-co1nam03hn0226.outbound.protection.outlook.com [104.47.40.226])\n\tby dpdk.org (Postfix) with ESMTP id 335451B523\n\tfor <dev@dpdk.org>; Mon,  2 Jul 2018 18:55:50 +0200 (CEST)",
            "from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by\n\tMWHPR0701MB3644.namprd07.prod.outlook.com (2603:10b6:301:7d::37) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.20;\n\tMon, 2 Jul 2018 16:55:46 +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=n0539EFMWv1JxrDLYChJBrmmds0vL4dON7FJxal8KIY=;\n\tb=Xk4TSS1dpzNAACF9Sqkt4bhAfqLXLuBMfFOiwsESqazFN/VaQxrpg1vW20W79RwlHkkLpC9jk/Fg77uHGlvz3ih3kioJkW0bbBhyHPLf1cOuBUlLlpYoTwsF5RxBrjcEAoj7e/q8SnRvxTlGVXgCUCY4tVz6gKMixy4OYclrfEo=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Shally.Verma@cavium.com; ",
        "From": "Shally Verma <shally.verma@caviumnetworks.com>",
        "To": "pablo.de.lara.guarch@intel.com",
        "Cc": "dev@dpdk.org, pathreya@caviumnetworks.com, mchalla@caviumnetworks.com,\n\tSunila Sahu <sunila.sahu@caviumnetworks.com>,\n\tAshish Gupta <Ashish.Gupta@caviumnetworks.com>",
        "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",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "MAXPR0101CA0007.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:a00:c::17) To MWHPR0701MB3644.namprd07.prod.outlook.com\n\t(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;\n\tRULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);\n\tSRVR:MWHPR0701MB3644; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; MWHPR0701MB3644;\n\t3:DKLY1eDkso3NZPULeusKKsf5v/FB/xU2ET4/bV6vMtU7La0crjcfnTv0YhyJdlx7+L/1nJA/TGKI+U2vfndT71mu6Bq+CxJMReHBJZu8KT4xB3fdruFz0dO4nKoTko0McTM0DFT3zvZsmKY7FwNujgEZifUkeoliKv7uw29ZB8NL8kUis2YtTU/sxJgefb3X5Lxph1IS4pjV/7E3yTNR5y527KK6ilvT7kwsuZFu8R8ShJg61OAihTA89wTXDmCQ;\n\t25:w68sefXBABt6MCXIWuUhnsI4ctBCfQU65UOWwbY18sXm690Dl29DJEgh0aMgR+3ZvpYUh8FK5k6mS50F5KYGZG2n6t31fQCyaa/nmWsDfK9lldTNqNpgaMxFyj91XxUG76UgWA5xuFJh5kAtc+yJSVTUfzXdVMLXjfw7sG7OQqDaDVVICIHNoIbfsPTSgPoUN3Ao1w+VaHm1Y9DbDYV+09UZP3XR9KDBcBalaYcRfIjwU7KSoQC0K8sy07mQqMz6S/yzHE61wYhTF6XP3EJvfR6rxkc/18T2trzjW4g2Pa4zipYYqCvzATEN8lqGTw6N1KAyRtWZiWkGMd2C1bU+yQ==;\n\t31:iBM7UhcGDlu068vAwzMeXxZ/LzSkfYvZlrPwkekPOeJBD676KoDpPBldjUxXJ/Gu25wj2qVDQJztXwuqpJJsQCHV5DNwkpPexUOt7hGSeJOL+YwHK/LWWnGvQdK8qDkN+Qw35Eto4QQ5o8Q0gq4+GkFWytZzrY29ibr5s9hZFi8jsQLS8tOoLZV/edTd0KzGrSzNhxH1qBC0jVigIilkIzZrnkGzgYkvwfp52Gg4gNQ=",
            "1; MWHPR0701MB3644;\n\t20:BZXhY5eAjZdv8M41YdpiDG0OnnlPNJxnqfCRz5BcW8XY39MekHLxvf4nzWK9sp6hciHVxFhzl81xL5WHiJgQaUi5gWP1+vSIHMB5eMgz9HhumHIQbqcrIOHvgMzd7njKC+C4YtbFzAZTxrP7GDySw3x9ldJWItBvyLUKMeTtAgxatv/Qg8ThcsDmeD++odatpw0MW4ZO6gPcucWmdCtv1yxe40gyLUjnacs9VoVki6KfKMXMupYIy5PZ9tEfrAouaR7rMWl3tFlirQs/wL7XkEfwZRpph8aDl+/Chk0EbvGuSyeLvG2O3MX8dm7AV4j9Xy8X2AybCvyAVd3gXtO6CPWav+dm4Zw7mnXlHK8uV2y1QbENN1BEOe4wmmmErvXAFQ0f1ePcBt55Zk1+hu+AJZbXJyjzyU/WggoZ/Px5Nqrml/+10AgZzOPNVo3L1oGqE6i5sWMCKSSpSm4QVAUXePckDKgXjoHRvloHFRv/bm2vOFebwjctyI6lbUrRohDng4IDBBJkPG6LJVjn8kVkeVMlHlRCq954jw2CS+evY54KGi666U/LfawIj3wyrEMqJOslaz5I4w+7bCi8rF/jZDlcAoHoAS0PGP77G+MWnjk=;\n\t4:XSXrPZrYSCHlh4Eo4U/xmNHgelEjviY507ZmXL8Y7IxZTs6Q62T5izERgVX9kbni628z8lOMsIF+SZatwz+ADqDMCdB6NeqQY8aJjtNwLIEtQmMPPcVcegTMerxy6UccxyajgIiAwuyfXgxfPs9PzlE675q455q6IGyB9a9LNJS450jH2nCjHxjOx3Ww6L28aENwSFBFKHEw6gDIXTg6DKbw0YZVJtsYzqZYIQSkV2xONjotGbf+n6U5wiLMW9dC+MVO67MZKOhdQDF/ztlWqaddjathDVuX6KYM1BLczK36xW4m/DCe4/tmhW1zg8mu",
            "=?us-ascii?Q?1; MWHPR0701MB3644;\n\t23:ybivFIwNdy0jx5KEteoZ3EDJulJbG+TNxXN7bUK?=\n\tE9W/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==",
            "1; MWHPR0701MB3644;\n\t6:hc1cP6QDaBxH10zdpyFEWqyIr2sz7dnbPuQknB+dI6IimBElZD2uS4flKkXKh0TGSi4qaxdk26DnL4qZ8AjfAURpuiWyv5lO9uP/dX6rv1s8Z2wUT5nvEUDFpjPw+KgP1Psw76POYHuV607j851wDR9ZKIEd090Yy/0m9dyDb/Mpd5tLbpujeB+LQ85pcHJwjIVcuwtYP+CxlTVWW9anKnXblTRuCh0IC9yTvqm4NM6UKbSyYZBv2l/jocgQUHsIw+U7Wc/m7nrI03rfRoTwffJuqYGoVveTw72RJw/zx74BN6f3jbEKbuUVA2TZM2dpFmTRkMmqK3ShgK7cDCyADiFpVKwQCA1lpo5WLwk/IqkWATyxCXoDUxqRHq5Hl/G0PS3D6ouT7iosIGLPXlC1Nu5OqDHKPEIgVDqmnjmkBz/bWaPUpOjh5E6vprCW7AmMbYV80YVImhyPyyS96SkiL9S6hbhe4x3K04KjEIzYjOuZEgUxLSCk36/ifEiVLCMD;\n\t5:mF/AMd90w4DA/aGtjVsXyd+/r2d8z4o+ETVbbYM7BDptY7p/+rD+9LOHOmnkE/nzdqpF1zxTvobL5Co4wD4lP/q4YDs3fMNilNdCQ5Ghj8DcxA/nwqgV8LjPaYj7b0fclJczJKUUL5jzDBYF7E6xiLDqC13JRVmfAiEnqZoIKqY=;\n\t24:YiOmbgztkxXQ1opV0CShcls6MSPP1r0zOx64gLPoqMNhxRT5wMG18Rhr6WkVfuWXGkr/eNrGnWMRNcYeOjf/nQ==",
            "1; MWHPR0701MB3644;\n\t7:KzylJghFPI9IYmLep9fkaN0Ng4niJvfTtDs0nCPACSGEce0Hro9iAo5P0+zUuPZ23l+3cSOmzhR4FgdBhYjqmerYamQ8n1lRFf/XBR4gt6kIwLvQ5ir9GWYF87dXl1A66n0pBBKnPE4ouX90VqEYUhxMHvVkTw7xybFrJPdwiREOIOchuhmapFJUxiC1JGf08IA8jSYMfQuW2tfI+5xaX2WDG8pSak+hkVaGxImPVZtC35TkvAqQWAmSnuMc8diX"
        ],
        "X-MS-TrafficTypeDiagnostic": "MWHPR0701MB3644:",
        "X-Microsoft-Antispam-PRVS": "<MWHPR0701MB3644DAFCDD1898FDB8EAC60CF0430@MWHPR0701MB3644.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)(8121501046)(5005006)(93006095)(10201501046)(3002001)(3231254)(2232096)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016);\n\tSRVR:MWHPR0701MB3644; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3644; ",
        "X-Forefront-PRVS": "07215D0470",
        "X-Forefront-Antispam-Report": "SFV:SPM;\n\tSFS:(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);\n\tDIR:OUT; SFP:1501; SCL:5; SRVR:MWHPR0701MB3644;\n\tH:hyd1sverma-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": "WpJgiJPmj2Hg7NhZVcPH23VgSgb2wq6BM0B2bLjaveV0Q2D6AjknpmkeZatAih4erO5uMaXMTw2JFeNetqGo5uDohahIARO7UrS2ZXzqsloXoSOHqV8y5mvGI3CiZLQ55+0zawx6M3eXPU6OufNjG+AjM8h0AweZiaqhUvWh3B1cFWERv9+bRhd9bdMohmYF+pEei9S1v31F++xtF0KzNL2XOWguK04qAc0L4qfJRZ6KlyZF1WFpcnRejNRSr3nv4/LGISPkh9p65yjM826u/xOqW8j9HCl+c99Pg5PVP6wZ7PzTYZ3TMerB2OPbQlHTruPazXYAOcWx0qve7ptHvNLiPuuZAPmlvzKXqOEaTA8LOtl/x2zjdaxwhbsem7dlZj+jyKUDyvoiAJrBIBP4k40niWDYSzlI3ubBz7GZN3IiS6XgRaHV55Wnopq5U6n2HrxNW6F3iMSTgbm3aC2/nxl2gkVpdU2AYTabtuT73bcm2irsqSE1D3oG3o8XceZPL4fdZ5DT/iGSiK7IrOOjnEZZBk4aWuVAkjUNHTUtXYSc2SoWQSgP9UmC8A5J5ZXk2OYsvD16JGKNMeNlma/OkeN8QsZnyKp+uyJeHJhqnLrzicl/u+CGcIJkR4ix88BcoDDBbWVzcGs2MCUZbyl1z3/SGK2iEQ8tXW2B1wIQDtDclAb3kUYThX0eoFtH4qoBunes/yxvlvLa5Eln30g2HQ==",
        "SpamDiagnosticOutput": "1:22",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "02 Jul 2018 16:55:46.8924\n\t(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\n\tsupport",
        "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\nAdd octeontx zip pmd support in compressdev driver.\nOcteontx ZIP appears as PCI device.\nAdd device probe and remove support.\nlink zip pmd library in rtp.app.mk\nUpdate meson.build and Makefile to build octeontx zip pmd\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                                        |   5 +\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       | 721 +++++++++++++++++++++\n drivers/compress/octeontx/meson.build              |  11 +\n .../compress/octeontx/rte_pmd_octeontx_version.map |   3 +\n drivers/compress/octeontx/zip_pmd.c                | 120 ++++\n drivers/compress/octeontx/zipvf.c                  |  63 ++\n drivers/compress/octeontx/zipvf.h                  | 111 ++++\n mk/rte.app.mk                                      |   1 +\n 12 files changed, 1072 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex bc1607844..78708d8af 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -850,6 +850,11 @@ F: drivers/compress/isal/\n F: doc/guides/compressdevs/isal.rst\n F: doc/guides/compressdevs/features/isal.ini\n \n+Cavium OCTEONTX zipvf\n+M: Ashish Gupta <ashish.gupta@cavium.com>\n+F: drivers/compress/octeontx\n+F: doc/guides/compressdevs/octeontx.rst\n+F: doc/guides/compressdevs/features/octeontx.ini\n \n Eventdev Drivers\n ----------------\ndiff --git a/config/common_base b/config/common_base\nindex 6541ad5b2..396a09682 100644\n--- a/config/common_base\n+++ b/config/common_base\n@@ -578,6 +578,11 @@ CONFIG_RTE_COMPRESS_MAX_DEVS=64\n #\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 #\ndiff --git a/drivers/compress/Makefile b/drivers/compress/Makefile\nindex 592497f51..25cced348 100644\n--- a/drivers/compress/Makefile\n+++ b/drivers/compress/Makefile\n@@ -4,5 +4,6 @@\n include $(RTE_SDK)/mk/rte.vars.mk\n \n DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal\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 fb136e1b2..a7d6f3a40 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']\n+drivers = ['isal', '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 000000000..a58f3df3a\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) += zip_pmd.c\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += zipvf.c\n+\n+# versioning export map\n+EXPORT_MAP := rte_pmd_octeontx_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 000000000..0eec393c3\n--- /dev/null\n+++ b/drivers/compress/octeontx/include/zip_regs.h\n@@ -0,0 +1,721 @@\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+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <stddef.h>\n+#include <stdint.h>\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+#ifdef __cplusplus\n+}\n+#endif\n+#endif\t/* _RTE_ZIP_REGS_H_ */\n+\ndiff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build\nnew file mode 100644\nindex 000000000..9145cb047\n--- /dev/null\n+++ b/drivers/compress/octeontx/meson.build\n@@ -0,0 +1,11 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2018 Cavium, Inc\n+\n+name = 'octeontx_compress'\n+sources = files('zipvf.c', 'zip_pmd.c')\n+allow_experimental_apis = true\n+includes += include_directories('include')\n+deps += ['mempool_octeontx', 'bus_pci']\n+ext_deps += dep\n+\n+\ndiff --git a/drivers/compress/octeontx/rte_pmd_octeontx_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_version.map\nnew file mode 100644\nindex 000000000..ad6e191e4\n--- /dev/null\n+++ b/drivers/compress/octeontx/rte_pmd_octeontx_version.map\n@@ -0,0 +1,3 @@\n+DPDK_18.08 {\n+\tlocal: *;\n+};\ndiff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c\nnew file mode 100644\nindex 000000000..2011db37e\n--- /dev/null\n+++ b/drivers/compress/octeontx/zip_pmd.c\n@@ -0,0 +1,120 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#include \"zipvf.h\"\n+#include <string.h>\n+#include <rte_byteorder.h>\n+#include <rte_common.h>\n+#include <rte_cpuflags.h>\n+#include <rte_malloc.h>\n+\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+\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(\"comp_octeontx_zip\");\n+\tif (octtx_zip_logtype_driver >= 0)\n+\t\trte_log_set_level(octtx_zip_logtype_driver, RTE_LOG_INFO);\n+}\n+\ndiff --git a/drivers/compress/octeontx/zipvf.c b/drivers/compress/octeontx/zipvf.c\nnew file mode 100644\nindex 000000000..a85d7f323\n--- /dev/null\n+++ b/drivers/compress/octeontx/zipvf.c\n@@ -0,0 +1,63 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium, Inc\n+ */\n+\n+#include \"zipvf.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+}\n+\ndiff --git a/drivers/compress/octeontx/zipvf.h b/drivers/compress/octeontx/zipvf.h\nnew file mode 100644\nindex 000000000..36c44c8c5\n--- /dev/null\n+++ b/drivers/compress/octeontx/zipvf.h\n@@ -0,0 +1,111 @@\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+#include <zip_regs.h>\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+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_octtx_zipvf\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/mk/rte.app.mk b/mk/rte.app.mk\nindex 87a0c80ff..4ef8cd90e 100644\n--- a/mk/rte.app.mk\n+++ b/mk/rte.app.mk\n@@ -211,6 +211,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 endif # CONFIG_RTE_LIBRTE_COMPRESSDEV\n",
    "prefixes": [
        "v2",
        "1/6"
    ]
}