get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42109,
    "url": "http://patchwork.dpdk.org/api/patches/42109/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1530550477-22444-3-git-send-email-shally.verma@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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-3-git-send-email-shally.verma@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1530550477-22444-3-git-send-email-shally.verma@caviumnetworks.com",
    "date": "2018-07-02T16:54:33",
    "name": "[v2,2/6] compress/octeontx: add device setup PMD ops",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "9744d4123caaef83b82ba42ed2a0684ec173a78d",
    "submitter": {
        "id": 960,
        "url": "http://patchwork.dpdk.org/api/people/960/?format=api",
        "name": "Shally Verma",
        "email": "shally.verma@caviumnetworks.com"
    },
    "delegate": {
        "id": 22,
        "url": "http://patchwork.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://patchwork.dpdk.org/project/dpdk/patch/1530550477-22444-3-git-send-email-shally.verma@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 361,
            "url": "http://patchwork.dpdk.org/api/series/361/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=361",
            "date": "2018-07-02T16:54:31",
            "name": "compress: add Octeontx ZIP compression PMD",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/361/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/42109/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/42109/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 45C4D1B539;\n\tMon,  2 Jul 2018 18:55:54 +0200 (CEST)",
            "from NAM03-CO1-obe.outbound.protection.outlook.com\n\t(mail-co1nam03on0083.outbound.protection.outlook.com [104.47.40.83])\n\tby dpdk.org (Postfix) with ESMTP id 80A141B539\n\tfor <dev@dpdk.org>; Mon,  2 Jul 2018 18:55:52 +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:49 +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=3LbP50wSOMBYswQsF9HyVk/dlGyUiDv/C3M0gRmQTJo=;\n\tb=RfEnl9qPXZQe+kNdzGLuaS9/QYZRwgkZDWfeQ0FAI0LQr3NZvo+0IgYLDzTZKqIrvuONcwbYU8DQ3mYk7xVumLp1rOcDVIdPPxlTT9matzHON98O1DILaftnejivbFZIPjiZW66UYbfBcNM1eDlGG76mjjkMKUt4PX0mqLcItRU=",
        "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:33 +0530",
        "Message-Id": "<1530550477-22444-3-git-send-email-shally.verma@caviumnetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com>",
        "References": "<1530550477-22444-1-git-send-email-shally.verma@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "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": "e857e445-3605-4f9b-ce28-08d5e03caadc",
        "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:gBhlhmqUGD/fCi2j3pB72NPw7z57PlUBX5CVFMZY3ld0G2b2dvvFD+wAARPqIn2pgkIFkrZqHUeZAtqc4UKU2+zqEJqkEIf+SrdKcpmkkvYlpXP11cGbrh6dzhBOp/TFXlV2yof1yFylMTuN+IxpQ82P38sTV1/qPwPqvsgRVbYXcAd/ieGRxhplWSHnUtPmCxZ2SDg1Wf5cZPIOAVrP/xTnrX9eMD1M3iCwOhvvbKq+rusydksBv68qkNjiWlgV;\n\t25:2QGvcpctAJTeipqfKE7e6Ed1nJp6O7LxCFsdMAe6ObAwdrltzZTDCY59R4HArbsH1wCxGvwoqkWqWLbgL4Ek0PT4GzGiymvLCn3L3swCRsg4vN1iZ6F8ceGnXe0p9N7S0v/88648AIKEAxrQdcR6IDfyjZ3Q84P3ohyIVkzASdEXygFoRxT2eED20VM41AYhJEkXEPtYwprXxymIzAaWNkgCKK9SmFNe8zZtLx9sjcRNJml8eR6F7+42N986LxPa3WHkvuu6sTkBjvNOELT5ZsSpu9EUEuvF8ye76mTOLwWF2zWrGDpuuQTihc79AKIUUzDJGjn6xXMQjr23aQTEeQ==;\n\t31:8oo2Vxe7V8xcHYAD3GR1sKkfj3sb2XiVMTbKF2Bd+6Cp90OrknPMN4qdpWhNURx0WMTbxShRJu+hvJY2JFvAjcMFDF0AE3ShQgtyzpZYICS0Iqql91qx3cpoUr6LIYvmmG9KDYXUYjSxBsGOPqRvUEF4+uI0bMOXQ6Pg2i2kYmaLtmyG0VFLg7fJeG4uwxtnJEz6m578Rx6Jtn7bDskwOLlgJ4935CH1tkipKTw2yXA=",
            "1; MWHPR0701MB3644;\n\t20:878iYLXsZKi5vNgtIzFoX/u9DfmvLX3GlnFsksPDJAjpS286YCLSfLlSpF73VO+Jrhl/Cq6M2AzcUgbnKPzhb1n1/xXubBE/8mS5maFfCw01zbv0VYALW9vYWOkWKKIeENQJjXrCXrK/Th+pZbpWxSU7b0gBRebMS/Ujt/kT0LoHVkbScRUGKy+Z421DPU26HQGOomYcxKyn8PWxdEazyqw26aA1r8fZgjGXzyNpX/UQ0+kyS+6W+U7hCqvhFy032Q4LdPgbuKbh0A4aaV3+WDMYKTrMiZR5zun2Z4mnK3RCQ37rKWDuxxRjwq+bbPvpyL6nwm8LSBZZ+OuYWLkZYiBXVNq4WSK6G1xngLkxymoxBWU+yZLyxdpaGPfy7zTA7UvTecRxkb6K0nHadJM2dj7RIF1c1aJPPrbKquBLuJlrRBeK40GoeCLWJuuz2/zdPwK4TSwD5vKFE4UYgGHMhBXcqB2QPJrt/duHbs/SdcIWrX6rOsvYD9f8xZZazdFDXVcf62PxpDYdMF6+pom8DpI9On9cjDjLLBWOedsM+sflOwAsDTRBqtYaXzHBtU1XG73pypgQUetMPK3FiKQEXAk7mWuE4MVs3zTaUWKpibY=;\n\t4:eUwDpj/NLy8pDMJ99rMdlH6xO0spVcjkQyuw2ts4gvbN4ByonnkoPUbTGKAXpJobWvgOLcnQDZ6Xkaelrj+NITdNbkhtEXMqNUzmo+nExeKSdxEb3AqaLbMyY/dD8MRK5bUaLG4eCTfXOFJv63fy9hl4B0x25UHDsA9KEcKEfEyez1QHrez3vNqWcFgFO+nx9zIAZHu5PHLhyKRUq8+I5eosA6b9Qe7Tk/Ra9aCpUfNyjm2TZPhPMyEg6/1QU4S3HSiTuEC101nvp7W+Uu/UNA==",
            "=?us-ascii?Q?1; MWHPR0701MB3644;\n\t23:KRfXYDMhKz8/e6xsg39bbUOXylkWx8xlSNu83zs?=\n\tANxrEzMCK0oxqE4D1wStL9GI/zXWHO6AtsXFNfg8X2wrVQnNlnlV/lsbkCBzRgZqSANG9QCY5rNpcnoFnaVNTLgyC3PgkQSrDR2EEuiHYvqPGM1Tto3yKbsaMyK95i5Jm8gwaMHPZYbqgKRmt4279aua6+B6a4Nkmx8J9ZUl4A+IUakcmgOmyYX87PhfncJ2+ojGoAjmml3wEIHeKUuB/MQ5JBiq0o4Dt+CompNsp+6ns7o4uepgWyH5WmEVcMJdkKBcFacKq2X77rocDetQx352mp2Pg1GNoPUsT2GY8sWiYXJAt6oa0IiTjnSrdiwUz+jSDqqtRJiKeaYx/6M5Bw0n4436cELlFHIVs1vErrasEqKify5e8MtLZ35v82fquoJ5gyn6UvmSk/cHX1Ngl2OFwlc89L/rOsieHZqJcWF26a7AIcjzQyw3myjLU4qUylLpDAWFLeijz9j3G7pa/pfgaP+m073RjRWVYhhiRLYTMimB1E6hiO/PgPlH3qOAPlAR50x5qjlf1ysk2xQ1vDvOre1V83d05SJb8msrgvuyg/csFGAqUHfI4LaHJ6Rg1RQx536kOK9+7YClvLTbM5tenn9tEBTQt1grBFHiLx7slMW8Jp1K/xK/rSfoxOvWotyu2pLqLh+RKYObC0qht738HVdmHFCnz2gQrs7S8r2mxSe3KWsoVUAIV0qY9MEPxrctdjgOHkvBypUTV0Lai6HCWV2CR2/31he+XHgHjt0Gv4vlCbAJ9Fni9jk2Btabi0hBfvYAYDxRzRoFyWvC+f5AH13fQ3daKVOCXuyk6w/v4YUb2kk/nKrA/I+ZVJn210Z+7J8afw38B3oLFigXuky1vmbEkqoyWx0TK/WTaY7qUsu36WWmyId7JQq1uh5CHCFqIVKdnE8aSWHcEkHVUlhYnJLjXAZ5K80LBxUHG1jDosqRBgjNl99DsiwRWungil5UDV+hVyZ3wdPp5A5aWlKYzHSCHCZJY2l6ue3VOqnPKKUQwK+uQLZEHlQnYAvxnQGMkbb43VYvoG7cKLHuGs77WRLuDiuConvUU+9osYrcjN9mmbGqory3S6/GVib40aO9Dl7gi8jSghsWk4CHjc5FRAl8M/Y1WpdagKPAWBYS+MYnnmyrsfUp6pvLOptjAGgVYvxCc0LckwJOQwZg6eNRdAL/xgaduNNjVoD2oDbDjTRl06nDw68YPMeOG5hoX3bBWSn5z9C200z9MkAOx1dOgpH7QxYI/7bA2CYNi3yAn4oEJuHyy1U9sECptNmFHnIaHcG0wuclyZN3am7QvKwj2yuBbgrBCTCUWXStRVnKuc2vv6IC0loPhXK+kZjIn+PY=",
            "1; MWHPR0701MB3644;\n\t6:/EwBrq0NinXVKJt1pqzLBl5Qzho+y3j1OOLm/NiFZ3SicSWlP7KVm6tXmy2YSng65wUPXDcUSrhGPi4a+YApnBakNcIqMQX9dp37g25dalcvWwMmschLA18f9g1WH5biZtpCOvQGGur/T7TiTHUxH0r3DzIlPZYNWFcdq7fjU5zAYJkEwqWgxHj7kAPEzUSwBmkmY/mUnzn/Ln/Wi/hmNPdoHNghcrppN2T/P4efDtZo7uGPifZbZmZqurxb6aSoQyRQkJQ+4pvagV0jVoapO6eah+3fGHtiJHCk1ZHc9r18XOqpuNRnyiuVgigu0BNVlESadIkj/k0z4lffHgivQH7kx2P8OmnqMOmpGrFTqAHIQEzVB4zjOXJ62vbYR1sWiCn9laxlNTCH/Z1yfPt+o+iZ+uwdT4OIWfe1MlR3PFl4AlgvehadEyehuOxnG93UMLI+okwj7sNM9gafpmIHew==;\n\t5:Sn69SW3AjDjJQply2JZkkJif5C3S52LpVRyvmHLIIwDH4CSUCmUQ+bA9AJjNpM9mwGoditfaYYRgTKPraNLqzj2hNb2af5uNFWYXFGYv1DKIniYdDebCLV4YizCv0cKaTg4OaH8ufy2OlC6sAe6dT1Hk8JDWoLCKU+APNa/bECk=;\n\t24:/pAV2BNkLrUFDVXTVQVjUskGJz2Uj478rj/HcA4G8hDmgNOGuG63jLap5Wm2rL5nKbzMmLMci898QL5TnsjvrRrPG0uKQ9V1wWGRv/DTY+A=",
            "1; MWHPR0701MB3644;\n\t7:sEmyHirjq6weJwW8Vz70uYgl/z447w+dfkJZnsjg0V63H4Vh5w/4ZYscKp+ewRKeoN9ZSCYs/PMOyRkKWaO6WBsrzhK28A4qGOwdpz6V4dWmTGE8N6s9rTSR+gcvu/00DWPvWPDhUbMrqy2Q99P8gGovlHPsnSbEjN0Mi88AYaahsYJuQ1OfUl5eyMGANMNKQtV60WBZuClYPfH7g/EfSUlEN9uprNWI61ObpNLRcVpe5kBE08FQVZy77gdI+RI9"
        ],
        "X-MS-TrafficTypeDiagnostic": "MWHPR0701MB3644:",
        "X-Microsoft-Antispam-PRVS": "<MWHPR0701MB3644FDBAAAEE7DA79482F12DF0430@MWHPR0701MB3644.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "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)(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:NSPM;\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)(72206003)(2361001)(53936002)(26005)(48376002)(50466002)(316002)(68736007)(478600001)(6916009)(476003)(81166006)(66066001)(81156014)(8936002)(97736004)(8676002)(47776003)(446003)(11346002)(106356001)(50226002)(2616005)(956004)(6666003)(44832011)(53416004)(486006)(7736002)(305945005)(5660300001);\n\tDIR:OUT; SFP:1101; SCL:1; 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": "aNICbvm0N6L5bs5GQAcJTRoGnd0G6gyirglGfKPR5pwB/VvgsusGlK+44b6bFQBcut/5Oqjjtf5LE8pDkUV7t/66b+YKe8MJpF3UFmhJjOVfkQSSldsBAONwsvPewPEOwxFmy3P9CYJP8rgWr/FeejDH9MJ2QIh7ewdAKFJxoMcxCgFyNfJsRkElCWqNjOt14qtqWLrj2opBMAzlij8rbysMxPzwEYQeZGGJkmlTjsSD5yVl5o2Z9QA35IPI7I6vg+JKdB9Jv+ylHJI7B5V4ajztl+JrGZEUdQuz3lk9lB+NI8ygV0Pt/3ZBww3LcC3uf+5WEfuJ49y08lwBj26yyw5Xaxm4JIM5g2iZZh4TBhU=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "02 Jul 2018 16:55:49.3924\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "e857e445-3605-4f9b-ce28-08d5e03caadc",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "MWHPR0701MB3644",
        "Subject": "[dpdk-dev] [PATCH v2 2/6] compress/octeontx: add device setup PMD\n\tops",
        "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\nimplement device configure and PMD ops.\nsetup stream resource memory pool\nsetup and enable hardware queue\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 drivers/compress/octeontx/zip_pmd.c | 251 ++++++++++++++++++++++++++++++++++++\n drivers/compress/octeontx/zipvf.c   |  73 +++++++++++\n drivers/compress/octeontx/zipvf.h   |  56 +++++++-\n 3 files changed, 378 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/compress/octeontx/zip_pmd.c b/drivers/compress/octeontx/zip_pmd.c\nindex 2011db37e..44c271e1a 100644\n--- a/drivers/compress/octeontx/zip_pmd.c\n+++ b/drivers/compress/octeontx/zip_pmd.c\n@@ -9,8 +9,259 @@\n #include <rte_cpuflags.h>\n #include <rte_malloc.h>\n \n+static const struct rte_compressdev_capabilities\n+\t\t\t\tocttx_zip_pmd_capabilities[] = {\n+\t{\t.algo = RTE_COMP_ALGO_DEFLATE,\n+\t\t/* Deflate */\n+\t\t.comp_feature_flags = 0,\n+\t\t/* Non sharable Priv XFORM and Stateless */\n+\t\t.window_size = {\n+\t\t\t\t.min = 1,\n+\t\t\t\t.max = 14,\n+\t\t\t\t.increment = 1\n+\t\t\t\t/* size supported 2^1 to 2^14 */\n+\t\t},\n+\t},\n+\tRTE_COMP_END_OF_CAPABILITIES_LIST()\n+};\n+\n+/** Configure device */\n+static int\n+zip_pmd_config(struct rte_compressdev *dev,\n+\t\tstruct rte_compressdev_config *config)\n+{\n+\tint nb_streams;\n+\tchar res_pool[RTE_MEMZONE_NAMESIZE];\n+\tstruct zip_vf *vf;\n+\tstruct rte_mempool *zip_buf_mp;\n+\n+\tif (!config || !dev)\n+\t\treturn -EIO;\n+\n+\tvf = (struct zip_vf *)(dev->data->dev_private);\n+\n+\t/* create pool with maximum numbers of resources\n+\t * required by streams\n+\t */\n+\n+\t/* use common pool for non-shareable priv_xform and stream */\n+\tnb_streams = config->max_nb_priv_xforms + config->max_nb_streams;\n+\n+\tsnprintf(res_pool, RTE_MEMZONE_NAMESIZE, \"octtx_zip_res_pool%u\",\n+\t\t dev->data->dev_id);\n+\n+\t/** TBD Should we use the per core object cache for stream resources */\n+\tzip_buf_mp = rte_mempool_create(\n+\t\t\tres_pool,\n+\t\t\tnb_streams * MAX_BUFS_PER_STREAM,\n+\t\t\tZIP_BUF_SIZE,\n+\t\t\t0,\n+\t\t\t0,\n+\t\t\tNULL,\n+\t\t\tNULL,\n+\t\t\tNULL,\n+\t\t\tNULL,\n+\t\t\tSOCKET_ID_ANY,\n+\t\t\t0);\n+\n+\tif (zip_buf_mp == NULL) {\n+\t\tZIP_PMD_ERR(\n+\t\t\t\"Failed to create buf mempool octtx_zip_res_pool%u\",\n+\t\t\tdev->data->dev_id);\n+\t\treturn -1;\n+\t}\n+\n+\tvf->zip_mp = zip_buf_mp;\n+\n+\treturn 0;\n+}\n+\n+/** Start device */\n+static int\n+zip_pmd_start(__rte_unused struct rte_compressdev *dev)\n+{\n+\treturn 0;\n+}\n+\n+/** Stop device */\n+static void\n+zip_pmd_stop(__rte_unused struct rte_compressdev *dev)\n+{\n+\n+}\n+\n+/** Close device */\n+static int\n+zip_pmd_close(struct rte_compressdev *dev)\n+{\n+\tif (dev == NULL)\n+\t\treturn -1;\n+\n+\tstruct zip_vf *vf = (struct zip_vf *)dev->data->dev_private;\n+\trte_mempool_free(vf->zip_mp);\n+\n+\treturn 0;\n+}\n+\n+/** Get device statistics */\n+static void\n+zip_pmd_stats_get(struct rte_compressdev *dev,\n+\t\tstruct rte_compressdev_stats *stats)\n+{\n+\tint qp_id;\n+\n+\tfor (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) {\n+\t\tstruct zipvf_qp *qp = dev->data->queue_pairs[qp_id];\n+\n+\t\tstats->enqueued_count += qp->qp_stats.enqueued_count;\n+\t\tstats->dequeued_count += qp->qp_stats.dequeued_count;\n+\n+\t\tstats->enqueue_err_count += qp->qp_stats.enqueue_err_count;\n+\t\tstats->dequeue_err_count += qp->qp_stats.dequeue_err_count;\n+\t}\n+}\n+\n+/** Reset device statistics */\n+static void\n+zip_pmd_stats_reset(struct rte_compressdev *dev)\n+{\n+\tint qp_id;\n+\n+\tfor (qp_id = 0; qp_id < dev->data->nb_queue_pairs; qp_id++) {\n+\t\tstruct zipvf_qp *qp = dev->data->queue_pairs[qp_id];\n+\t\tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n+\t}\n+}\n+\n+/** Get device info */\n+static void\n+zip_pmd_info_get(struct rte_compressdev *dev,\n+\t\tstruct rte_compressdev_info *dev_info)\n+{\n+\tstruct zip_vf *vf = (struct zip_vf *)dev->data->dev_private;\n+\n+\tif (dev_info != NULL) {\n+\t\tdev_info->driver_name = dev->device->driver->name;\n+\t\tdev_info->feature_flags = dev->feature_flags;\n+\t\tdev_info->capabilities = octtx_zip_pmd_capabilities;\n+\t\tdev_info->max_nb_queue_pairs = vf->max_nb_queue_pairs;\n+\t}\n+}\n+\n+/** Release queue pair */\n+static int\n+zip_pmd_qp_release(struct rte_compressdev *dev, uint16_t qp_id)\n+{\n+\tstruct zipvf_qp *qp = dev->data->queue_pairs[qp_id];\n+\tstruct rte_ring *r = NULL;\n+\n+\tif (qp != NULL) {\n+\t\tzipvf_q_term(qp);\n+\t\tr = rte_ring_lookup(qp->name);\n+\t\tif (r)\n+\t\t\trte_ring_free(r);\n+\t\trte_free(qp);\n+\t\tdev->data->queue_pairs[qp_id] = NULL;\n+\t}\n+\treturn 0;\n+}\n+\n+/** Create a ring to place process packets on */\n+static struct rte_ring *\n+zip_pmd_qp_create_processed_pkts_ring(struct zipvf_qp *qp,\n+\t\tunsigned int ring_size, int socket_id)\n+{\n+\tstruct rte_ring *r;\n+\n+\tr = rte_ring_lookup(qp->name);\n+\tif (r) {\n+\t\tif (rte_ring_get_size(r) >= ring_size) {\n+\t\t\tZIP_PMD_INFO(\"Reusing existing ring %s for processed\"\n+\t\t\t\t\t\" packets\", qp->name);\n+\t\t\treturn r;\n+\t\t}\n+\n+\t\tZIP_PMD_ERR(\"Unable to reuse existing ring %s for processed\"\n+\t\t\t\t\" packets\", qp->name);\n+\t\treturn NULL;\n+\t}\n+\n+\treturn rte_ring_create(qp->name, ring_size, socket_id,\n+\t\t\t\t\t\tRING_F_EXACT_SZ);\n+}\n+\n+/** Setup a queue pair */\n+static int\n+zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,\n+\t\tuint32_t max_inflight_ops, int socket_id)\n+{\n+\tstruct zipvf_qp *qp = NULL;\n+\tstruct zip_vf *vf = (struct zip_vf *) (dev->data->dev_private);\n+\tint ret;\n+\n+\tif (!dev)\n+\t\treturn -1;\n+\n+\t/* Free memory prior to re-allocation if needed. */\n+\tif (dev->data->queue_pairs[qp_id] != NULL) {\n+\t\tZIP_PMD_INFO(\"Using existing queue pair %d \", qp_id);\n+\t\treturn 0;\n+\t}\n+\n+\t/* Allocate the queue pair data structure. */\n+\tqp = rte_zmalloc_socket(\"ZIP PMD Queue Pair\", sizeof(*qp),\n+\t\t\t\tRTE_CACHE_LINE_SIZE, socket_id);\n+\tif (qp == NULL)\n+\t\treturn (-ENOMEM);\n+\n+\tsnprintf(qp->name, sizeof(qp->name),\n+\t\t \"zip_pmd_%u_qp_%u\",\n+\t\t dev->data->dev_id, qp_id);\n+\n+\t/* Create completion queue upto max_inflight_ops */\n+\tqp->processed_pkts = zip_pmd_qp_create_processed_pkts_ring(qp,\n+\t\t\t\t\t\tmax_inflight_ops, socket_id);\n+\tif (qp->processed_pkts == NULL)\n+\t\tgoto qp_setup_cleanup;\n+\n+\tqp->id = qp_id;\n+\tqp->vf = vf;\n+\n+\tret = zipvf_q_init(qp);\n+\tif (ret < 0)\n+\t\tgoto qp_setup_cleanup;\n+\n+\tdev->data->queue_pairs[qp_id] = qp;\n+\n+\tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n+\treturn 0;\n+\n+qp_setup_cleanup:\n+\tif (qp->processed_pkts) {\n+\t\trte_ring_free(qp->processed_pkts);\n+\t\tqp->processed_pkts = NULL;\n+\t}\n+\tif (qp) {\n+\t\trte_free(qp);\n+\t\tqp = NULL;\n+\t}\n+\treturn -1;\n+}\n+\n \n struct rte_compressdev_ops octtx_zip_pmd_ops = {\n+\t\t.dev_configure\t\t= zip_pmd_config,\n+\t\t.dev_start\t\t= zip_pmd_start,\n+\t\t.dev_stop\t\t= zip_pmd_stop,\n+\t\t.dev_close\t\t= zip_pmd_close,\n+\n+\t\t.stats_get\t\t= zip_pmd_stats_get,\n+\t\t.stats_reset\t\t= zip_pmd_stats_reset,\n+\n+\t\t.dev_infos_get\t\t= zip_pmd_info_get,\n+\n+\t\t.queue_pair_setup\t= zip_pmd_qp_setup,\n+\t\t.queue_pair_release\t= zip_pmd_qp_release,\n \n };\n \ndiff --git a/drivers/compress/octeontx/zipvf.c b/drivers/compress/octeontx/zipvf.c\nindex a85d7f323..2a74e8bbb 100644\n--- a/drivers/compress/octeontx/zipvf.c\n+++ b/drivers/compress/octeontx/zipvf.c\n@@ -18,6 +18,79 @@ zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val)\n \t*(uint64_t *)(base + offset) = val;\n }\n \n+static void\n+zip_q_enable(struct zipvf_qp *qp)\n+{\n+\tzip_vqx_ena_t que_ena;\n+\n+\t/*ZIP VFx command queue init*/\n+\tque_ena.u = 0ull;\n+\tque_ena.s.ena = 1;\n+\n+\tzip_reg_write64(qp->vf->vbar0, ZIP_VQ_ENA, que_ena.u);\n+\trte_wmb();\n+}\n+\n+/* initialize given qp on zip device */\n+int\n+zipvf_q_init(struct zipvf_qp *qp)\n+{\n+\tzip_vqx_sbuf_addr_t que_sbuf_addr;\n+\n+\tuint64_t size;\n+\tvoid *cmdq_addr;\n+\tuint64_t iova;\n+\tstruct zipvf_cmdq *cmdq = &qp->cmdq;\n+\tstruct zip_vf *vf = qp->vf;\n+\n+\t/* allocate and setup instruction queue */\n+\tsize = ZIP_MAX_CMDQ_SIZE;\n+\tsize = ZIP_ALIGN_ROUNDUP(size, ZIP_CMDQ_ALIGN);\n+\n+\tcmdq_addr = rte_zmalloc(qp->name, size, ZIP_CMDQ_ALIGN);\n+\tif (cmdq_addr == NULL)\n+\t\treturn -1;\n+\n+\tcmdq->sw_head = (uint64_t *)cmdq_addr;\n+\tcmdq->va = (uint8_t *)cmdq_addr;\n+\tiova = rte_mem_virt2iova(cmdq_addr);\n+\n+\t/* Check for 128 byte alignment, if not align it*/\n+\tiova = (uint64_t)ZIP_ALIGN_ROUNDUP(iova, 128);\n+\tcmdq->iova = iova;\n+\n+\tque_sbuf_addr.u = 0ull;\n+\tque_sbuf_addr.s.ptr = (cmdq->iova >> 7);\n+\tzip_reg_write64(vf->vbar0, ZIP_VQ_SBUF_ADDR, que_sbuf_addr.u);\n+\n+\tzip_q_enable(qp);\n+\n+\tmemset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE);\n+\trte_spinlock_init(&cmdq->qlock);\n+\n+\treturn 0;\n+}\n+\n+int\n+zipvf_q_term(struct zipvf_qp *qp)\n+{\n+\tstruct zipvf_cmdq *cmdq = &qp->cmdq;\n+\tzip_vqx_ena_t que_ena;\n+\tstruct zip_vf *vf = qp->vf;\n+\n+\tif (cmdq->va != NULL) {\n+\t\tmemset(cmdq->va, 0, ZIP_MAX_CMDQ_SIZE);\n+\t\trte_free(cmdq->va);\n+\t}\n+\n+\t/*Disabling the ZIP queue*/\n+\tque_ena.u = 0ull;\n+\tzip_reg_write64(vf->vbar0, ZIP_VQ_ENA, que_ena.u);\n+\n+\treturn 0;\n+}\n+\n+\n int\n zipvf_create(struct rte_compressdev *compressdev)\n {\ndiff --git a/drivers/compress/octeontx/zipvf.h b/drivers/compress/octeontx/zipvf.h\nindex 36c44c8c5..4c7eb8862 100644\n--- a/drivers/compress/octeontx/zipvf.h\n+++ b/drivers/compress/octeontx/zipvf.h\n@@ -75,8 +75,53 @@ int octtx_zip_logtype_driver;\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+/* resources required to process stream */\n+enum {\n+\tRES_BUF = 0,\n+\tCMD_BUF,\n+\tHASH_CTX_BUF,\n+\tDECOMP_CTX_BUF,\n+\tIN_DATA_BUF,\n+\tOUT_DATA_BUF,\n+\tHISTORY_DATA_BUF,\n+\tMAX_BUFS_PER_STREAM\n+} NUM_BUFS_PER_STREAM;\n+\n+\n+struct zipvf_qp;\n+\n+\n+/**\n+ * ZIP instruction Queue\n+ */\n+struct zipvf_cmdq {\n+\trte_spinlock_t qlock;\n+\t/* queue lock */\n+\tuint64_t *sw_head;\n+\t/* 64-bit word pointer to queue head */\n+\tuint8_t *va;\n+\t/* pointer to iq virual address */\n+\trte_iova_t iova;\n+\t/* iova addr of cmdq head*/\n+};\n+\n+/**\n+ * ZIP device queue structure\n+ */\n+struct zipvf_qp {\n+\tstruct zipvf_cmdq cmdq;\n+\t/* Hardware queue handle */\n+\tstruct rte_ring *processed_pkts;\n+\t/* Ring for placing process packets */\n+\tstruct rte_compressdev_stats qp_stats;\n+\t/* Queue pair statistics */\n+\tuint16_t id;\n+\t/* Queue Pair Identifier */\n+\tchar name[RTE_COMPRESSDEV_NAME_MAX_LEN];\n+\t/* Unique Queue Pair Name */\n+\tstruct zip_vf *vf;\n+} __rte_cache_aligned;\n \n /**\n  * ZIP VF device structure.\n@@ -102,6 +147,13 @@ zipvf_create(struct rte_compressdev *compressdev);\n int\n zipvf_destroy(struct rte_compressdev *compressdev);\n \n+int\n+zipvf_q_init(struct zipvf_qp *qp);\n+\n+int\n+zipvf_q_term(struct zipvf_qp *qp);\n+\n+\n uint64_t\n zip_reg_read64(uint8_t *hw_addr, uint64_t offset);\n \n",
    "prefixes": [
        "v2",
        "2/6"
    ]
}