get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 43362,
    "url": "http://patches.dpdk.org/api/patches/43362/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180725170456.3319-5-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-5-Ashish.Gupta@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180725170456.3319-5-Ashish.Gupta@caviumnetworks.com",
    "date": "2018-07-25T17:04:54",
    "name": "[v4,4/6] compress/octeontx: support burst enqueue/dequeue",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "db8a13c4758848c6fc93130fc61cbb3865d45878",
    "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-5-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/43362/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43362/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 07FBC4C88;\n\tWed, 25 Jul 2018 18:43:13 +0200 (CEST)",
            "from NAM01-BN3-obe.outbound.protection.outlook.com\n\t(mail-bn3nam01on0079.outbound.protection.outlook.com [104.47.33.79])\n\tby dpdk.org (Postfix) with ESMTP id 59BC049E1\n\tfor <dev@dpdk.org>; Wed, 25 Jul 2018 18:43:10 +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:43:06 +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=OK+jHJFXV63TlxYPOIPzmCN7gOcxYTUo1eW7BmHl2RM=;\n\tb=iCfaxQRZ2pWYo96G9U7P2HNZKyh8H36RrN82mkh/RER1jUL8lAutbfbbqI1JemeBMPutptgz8Qa+3OOMCp5goGx64dp2PxcQH47A8QjqHbav0uRxodc6ZCwJxHKLODZTb7f2TzeY3YrMc0BDsqvdgFic8uNASw627thbDFXjIz4=",
        "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, Ashish Gupta <ashish.gupta@caviumnetworks.com>,\n\tShally Verma <shally.verma@caviumnetworks.com>,\n\tSunila Sahu <sunila.sahu@caviumnetworks.com>",
        "Date": "Wed, 25 Jul 2018 22:34:54 +0530",
        "Message-Id": "<20180725170456.3319-5-Ashish.Gupta@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.14.3",
        "In-Reply-To": "<20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com>",
        "References": "<20180725170456.3319-1-Ashish.Gupta@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "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": "b99c4b67-49ff-44e9-6c4f-08d5f24db3f0",
        "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:ECigK/CDBHmBluY95fsFsfv55en8PZGBbAZAgxDPEHStQkQViy1cg15lRvTvxdVDoKxUEDnVg2ZwcYK9D4U9CqvKXKwKZ/QIfcDd3bi2IoNpJb2kOf1voYzmyhYoGcAJaKsdLVWdB05FM1t5KvFCq42KYhVIC/IiMVSqEVzxo9Ho9sJouaitVMC7NRn5QFymDd0XDZ2q6vdA4cBDlkYKPoxjWlV+eEawkaYNa4qC3h0+7k5PFWAebXQSa1B48FWK;\n\t25:7nWALGOH+iPnCfBPcgvcuE1WQ9eBsDrzEXQAXEzN5rTlx/O/aaYHRx97SXT+8zAS9Nm2gSVmm9m5cJYrOLKR2rExiNXWNKKVjuOST1rUyynKT6sHUzoUB+2xZuF8f0QsmRgQm/Vi+lSRY+7waDyBtil1pkKKa0y2nU9gq4S60eaNbcQLW4g6JgGGxmd5j/fDdjMJtLlOREGwc79Zn7dxlXtQxICXo+PTnO2Oc5kzqUOMneXKyR97z86ual4+enOmfF+4oHI2Ue9HE2JWb4URcRsUonq67+G5nIvePhTkTysnfVvpB/5zKx6snbj2en0su6hG4koeeum3EXaWkoSa/Q==;\n\t31:7vJuVqpTkSHifFdZ3EUNig0A30xMMAy6oExwzafyM27xzrvSC+AtPpAs+FNppWpASOu39NJ6p1topNTEAWvbt1XnqVfUXBu9mBq/LHfceCsNyst/yLWlWp4TnLE/HTTI3+11cIiJJnf8fnkT+2lMn0Mm3XxFTc8RabhhQjxfoDVlKbns/l8tNY2Hm5d6OdlEuWOvvyXHHRd1XuzJ2KOXIWgD5fbhz5EejN6bgNxwRq4=",
            "1; CY4PR07MB3062;\n\t20:p7pQh8qpptkHOyx4cn4g5gYudgwoDih9/5JHl3tOR3wK5tYYwovKRB5bsGx23ldospF57YYiwVaW2MCt6InzLKwFayoBFosFoSJRkV2R+hyDo3CXF2GXCVp29H0e88YZeI9uMLwiu73vIT4KKpO4fxMpcgEkPfYfCxYCac7IWG874sh7lbqSW6vxtUWWseGjPNt+PCZggZffYGBGj9MQFXduFrRW2Unbxa78c2M1SeblrFziMszQX95P9UBOqKgzgQOW623lH0zhGcYxaqlE5pU6KAVuvpvez+4UA3HwWiy6vuRvE/CHmwMzE878jYkV51u+xxeDEO2s+Zx4LHUyvDjJtolu6yMdqE1U5rbb5mbcOhTe26YGl4w6EgbryZhpnONy+KMFMz0FiJSl4rC52CGFa+xf8vggbxZoB3v9+7vRRJ5Lhwy54Klb3p2hD0HV0/0wWocgdflFs0Ox9yIa5Srym0m7BZvWJA+uJy5rXvW/YsBiP8MSLdh5Y9X37AZ40TQEzujlDf7jWMdX2IIxVYY9az11MQ8Uok8d1soaLYDMOK3w/4/L7HtTynwNH3pZ9P4AaTRNue924cnMVgc1Tqpih99sVbqKFRntwoXGfG4=;\n\t4:J4um4jDwHW17G0wrxNMiCOmw+KYzgv4oQ2j6i5Ijll2gMRDdW+53/kvBIDrC+bkChn2TBBDTuHrQnDsZe66ZHvGlrgM0veGzaDDQ57+jBMcFZXmHXqx2RQZZrL/Wxvp2pcRvR/lqVhWj7uSe7/0HnFxRZ8XAD7P/YHVN5ZqqyfQM5zKk/qMrWFwADD7CZKSiBUmsYA4VxhDyiv40jP5wgsL8+Bfu1lDwkiTgGs+L9IuBacokQ04qN1dKkB4Eqg6IPCRCKG6/zrtLg4MKFv5kzQ==",
            "=?us-ascii?Q?1; CY4PR07MB3062;\n\t23:/voOwR1GQnE7iyjMCtNHLpNjaJzjgSm/4MAdskH1N?=\n\tNyX29ymEnnLYhelXtb1oqKqlHmEpX+G/DGkKTecop12aW88OtLlSFI/6az71JTFp88U/6hkIECYkryfYX0ju/dEl6ylCOOoOasbxtTIiUvTDPn2KxufHk9Srw1SHpQTHcnENBeBjQgJ1bp9cUfJvh4NBV9KXjqRuD8SDjI6l/1YEChO9qpBFaW6LpSxc++b9fJkYxuiQivxmXjpMDYWiiU3dIrJeCBMqSy58MvLJTeH2teLhEWz0DGAsau3Q+xpARLvDZL6CXeeOVmN1DosfXzqP8GCDBMRy0EXKr3vdbKCrxYghtsbdkczsvo4LtnRWnYwGt01fyoob7282NO6Gm3Z767ml8Xv60hGri8GZ0Wl3L+7xD2bug+drxf/w2FfjetGFtQ9TooTOgElQGAMGuUAERf/lpZCFqcmrkrIAydfAnNRJdkvyr8efglTjwHiwYAeoPrahVclY05H0bBQ7ObQPP5csu/dWmuSjg2yqTnucBN7POKK2A5D4DKju1x94a+m6MWORxB+qjKw0N7EWEzFf1biuiLtVDdmXuOLEnxpGU0gVdAl8yIHed9Xik7zaYILQFD6Z5OtS27xnWOUe19Ggma1hD7bhD+GqYFFKnTqLnDlaE58zQo/o1nobGrvvD0iUtE/qLPuX6d+mimQxej6hwnlvlYqCL3768Qx5qgC66JFxXhjSWfyHItyupORGUrw9Lj8HDCSGyJoulXcMQtcUmT6QUoHOmuEOCGjPvQjjIXHprAJSm3383+qi1PU0UCn+zCHbkwv0ISP734hwses4l5jCgyXlq2UIdJcGqytybXWvgngyZyl7EH8lqHavOM7zh3E23RHQ5DjV8j03kqAzJ3TbMvj5y3KN9pTtQfnk9gXe3fBWwrcmlqsegdAvjKJeTya3O95OpGhzexA/6Rs3x+cuyvJAt7XrtrJ2+rxCddASc0CbtlRsMmGBZMU4TI9nAYEbmBWIKD6ibSe3dQgVwh8PMh0ge3NaQMcuVcrco+ls/jtP/uSXyZ1lFFKKAzrjn7+zj1N5leMuK9ORkEUub3yh/LboNKQOL4dERXJQmGOkxXP8cnDjTKmV/R07sxwwsO1r9Lb9Z3MheOcFTZbpTGSGhg2iLrFcEwwEWSGfsSC9DV+3pPeTHyXFXdITyE9o7JH95xHq2dDTgDdAnsWDo1wkRteYw6deAEtOJzRgU1BjX6G+mh6BoryYhxfpA5U3kSo02Df1eacpyBbUiPqSGH4/9HcIhqMWTjQFtLsvSk+93tnC/CLwl6uT7TXsrGwg7NZ7kDpO1Xgu/4/SspN6FpVHASzg8hbcmsmMT2cn3jLmkdptdgF23RO/SUa5Bk=",
            "1; CY4PR07MB3062;\n\t6:JRfGrcByCFJkmSTQwPHuPw+e/XvJxueIbCMrrvFmfHTQIOF6Omb6LpOzNlENyp2+Axl/Pmgut/Jy/kXhn04WjLM5+XQKZzj3I5xWua82HphlnQYUDBcgX1qYZZknVlyKYkw1O4Lis0rmZyu+YxtSpyGSSUZNkJOveQjPABwPV17DqfemlY5VwFAZM06CRyyI84p+ooSV/n1Zcn91hTBzxddrqLVpOqEG8asdfDHiEmCEp7nTXCppS1tk/KQ/rW6ppBHDX+RD3hNNdxMTu50Pu/PFqmkX4d6GCgqChBT1Pz3sYcQNBr/Csxvx+XJ7iVzS1+tIL+evg5Me1bZTuOSTX35hwBaQfg/Bb9KGUlO5nTQsc+OIZ0rs96T8NC1l0DZhQhmY8efruWILYYdIIYF3tXiliD0mYvsBKhny5P4hdZ9D1c5ODZoJi1DleYGt3zey9xN2HnPg4U8QCUDRzDRD/A==;\n\t5:GprvuZfygBLDhNk0ATM9/VXXerqaGr1aeQw/DXBBfzC1m445FGnHroYyA3hFnwf9t5ZHmHBRllwSlpS6FQGvp/VvCz6M+Z7tk9h6OTGdu/M1zFr1FY73LQv5/apebVZolV6UJgcuyAL2m9JDlnVcmESSgT4bdaqB2YfbqRgnNsA=;\n\t7:IU89sim3Hkjm9Ny9wpnTsvl1QoRl7DQ4s47WdULQT/QnSNj68Xn6Ul2x+NvoDsoRpGjrg6tDR4hRrHkHQjf85lYbWPGzA3rYbdpM38nmWvkA1UtHEBvH2pR7usW7MHDsWMR1a+8846+eL+vYMAf3n1OgXDGe8Km6H6HBlXKrF+/hfls/amK37lydCaVyII4AkOR25XtKao24EBH0BzthoNOo3P58ic7oP22Q9g07efKCAbT9lvGDBUH2d9zOgPBp"
        ],
        "X-MS-TrafficTypeDiagnostic": "CY4PR07MB3062:",
        "X-Microsoft-Antispam-PRVS": "<CY4PR07MB3062482A32E5411E3A41DBFBE1540@CY4PR07MB3062.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)(5005006)(8121501046)(10201501046)(3002001)(93006095)(3231311)(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:NSPM;\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)(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);\n\tDIR:OUT; SFP:1101; SCL:1; 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": "4oxAcSEb9XQNVYE2SWZGKovtjbfV7kTlyWhnYhGJhCywYEdmGXflM2QLSuDSxVmGgIOp9hHJjPDH65VwwK2y3Uf9e+HMhvG8tgpPBeUm25oRQKEDKgPqzdAwJ4bTH0pzLUD0ZiO7zV+6qsMrjrmycjPlpt5qlaJmmCoubKz62e47XpMpQ97jf2Gs5P+KSKXvKiyuQeeOkOL6WKfYS9VXdBr4P8iuW55sZmjbmwa8uSk82reH+kVltRcQjw33CSdRJ5BSW7M9KFiHJDirVm55UeCFeNA+ldLQrdRgCzQ0RoQOgUja7OrzKkVdVRF/FewL/uMBdKKnYBiYGayYHv1pp3qqeQnvjNr6WmDRWf9Mnaw=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Jul 2018 16:43:06.3093\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "b99c4b67-49ff-44e9-6c4f-08d5f24db3f0",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY4PR07MB3062",
        "Subject": "[dpdk-dev] [PATCH v4 4/6] compress/octeontx: support burst\n\tenqueue/dequeue",
        "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": "Implement enqueue/dequeue APIs to perform compression/decompression\noperations\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/otx_zip.c     |  47 +++++++++++\n drivers/compress/octeontx/otx_zip.h     |  96 +++++++++++++++++++++-\n drivers/compress/octeontx/otx_zip_pmd.c | 136 ++++++++++++++++++++++++++++++++\n 3 files changed, 278 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/compress/octeontx/otx_zip.c b/drivers/compress/octeontx/otx_zip.c\nindex 7c81db1..a9046ff 100644\n--- a/drivers/compress/octeontx/otx_zip.c\n+++ b/drivers/compress/octeontx/otx_zip.c\n@@ -88,6 +88,53 @@ zipvf_q_term(struct zipvf_qp *qp)\n \treturn 0;\n }\n \n+void\n+zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *cmd)\n+{\n+\tzip_quex_doorbell_t dbell;\n+\tunion zip_nptr_s ncp;\n+\tuint64_t *ncb_ptr;\n+\tstruct zipvf_cmdq *cmdq = &qp->cmdq;\n+\tvoid *reg_base = qp->vf->vbar0;\n+\n+\t/*Held queue lock*/\n+\trte_spinlock_lock(&(cmdq->qlock));\n+\n+\t/* Check space availability in zip cmd queue */\n+\tif ((((cmdq->sw_head - (uint64_t *)cmdq->va) * sizeof(uint64_t *)) +\n+\t\tZIP_CMD_SIZE) == (ZIP_MAX_CMDQ_SIZE - ZIP_MAX_NCBP_SIZE)) {\n+\t\t/*Last buffer of the command queue*/\n+\t\tmemcpy((uint8_t *)cmdq->sw_head,\n+\t\t\t(uint8_t *)cmd,\n+\t\t\tsizeof(union zip_inst_s));\n+\t\t/* move pointer to next loc in unit of 64-bit word */\n+\t\tcmdq->sw_head += ZIP_CMD_SIZE_WORDS;\n+\n+\t\t/* now, point the \"Next-Chunk Buffer Ptr\" to sw_head */\n+\t\tncb_ptr = cmdq->sw_head;\n+\t\t/* Pointing head again to cmdqueue base*/\n+\t\tcmdq->sw_head = (uint64_t *)cmdq->va;\n+\n+\t\tncp.u = 0ull;\n+\t\tncp.s.addr = cmdq->iova;\n+\t\t*ncb_ptr = ncp.u;\n+\t} else {\n+\t\t/*Enough buffers available in the command queue*/\n+\t\tmemcpy((uint8_t *)cmdq->sw_head,\n+\t\t\t(uint8_t *)cmd,\n+\t\t\tsizeof(union zip_inst_s));\n+\t\tcmdq->sw_head += ZIP_CMD_SIZE_WORDS;\n+\t}\n+\n+\trte_wmb();\n+\n+\t/* Ringing ZIP VF doorbell */\n+\tdbell.u = 0ull;\n+\tdbell.s.dbell_cnt = 1;\n+\tzip_reg_write64(reg_base, ZIP_VQ_DOORBELL, dbell.u);\n+\n+\trte_spinlock_unlock(&(cmdq->qlock));\n+}\n \n int\n zipvf_create(struct rte_compressdev *compressdev)\ndiff --git a/drivers/compress/octeontx/otx_zip.h b/drivers/compress/octeontx/otx_zip.h\nindex 3fcd86a..fc2dfe4 100644\n--- a/drivers/compress/octeontx/otx_zip.h\n+++ b/drivers/compress/octeontx/otx_zip.h\n@@ -159,6 +159,95 @@ struct zip_vf {\n \t/* pointer to pools */\n } __rte_cache_aligned;\n \n+\n+static inline void\n+zipvf_prepare_in_buf(struct zip_stream *zstrm, struct rte_comp_op *op)\n+{\n+\tuint32_t offset, inlen;\n+\tstruct rte_mbuf *m_src;\n+\tunion zip_inst_s *inst = zstrm->inst;\n+\n+\tinlen = op->src.length;\n+\toffset = op->src.offset;\n+\tm_src = op->m_src;\n+\n+\t/* Prepare direct input data pointer */\n+\tinst->s.dg = 0;\n+\tinst->s.inp_ptr_addr.s.addr =\n+\t\t\trte_pktmbuf_iova_offset(m_src, offset);\n+\tinst->s.inp_ptr_ctl.s.length = inlen;\n+}\n+\n+static inline void\n+zipvf_prepare_out_buf(struct zip_stream *zstrm, struct rte_comp_op *op)\n+{\n+\tuint32_t offset;\n+\tstruct rte_mbuf *m_dst;\n+\tunion zip_inst_s *inst = zstrm->inst;\n+\n+\toffset = op->dst.offset;\n+\tm_dst = op->m_dst;\n+\n+\t/* Prepare direct input data pointer */\n+\tinst->s.ds = 0;\n+\tinst->s.out_ptr_addr.s.addr =\n+\t\t\trte_pktmbuf_iova_offset(m_dst, offset);\n+\tinst->s.totaloutputlength = rte_pktmbuf_pkt_len(m_dst) -\n+\t\t\top->dst.offset;\n+\tinst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength;\n+}\n+\n+static inline void\n+zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zip_stream *zstrm)\n+{\n+\tunion zip_inst_s *inst = zstrm->inst;\n+\n+\t/* set flush flag to always 1*/\n+\tinst->s.ef = 1;\n+\n+\tif (inst->s.op == ZIP_OP_E_DECOMP)\n+\t\tinst->s.sf = 1;\n+\telse\n+\t\tinst->s.sf = 0;\n+\n+\t/* Set input checksum */\n+\tinst->s.adlercrc32 = op->input_chksum;\n+\n+\t/* Prepare gather buffers */\n+\tzipvf_prepare_in_buf(zstrm, op);\n+\tzipvf_prepare_out_buf(zstrm, op);\n+}\n+\n+#ifdef ZIP_DBG\n+static inline void\n+zip_dump_instruction(void *inst)\n+{\n+\tunion zip_inst_s *cmd83 = (union zip_inst_s *)inst;\n+\tprintf(\"####### START ########\\n\");\n+\tprintf(\"doneint:%d totaloutputlength:%d\\n\", cmd83->s.doneint,\n+\t\tcmd83->s.totaloutputlength);\n+\tprintf(\"exnum:%d iv:%d exbits:%d hmif:%d halg:%d\\n\", cmd83->s.exn,\n+\t\tcmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg);\n+\tprintf(\"flush:%d speed:%d cc:%d\\n\", cmd83->s.sf,\n+\t\tcmd83->s.ss, cmd83->s.cc);\n+\tprintf(\"eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\\n\",\n+\t\tcmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds,\n+\t\tcmd83->s.dg, cmd83->s.hg);\n+\tprintf(\"historylength:%d adler32:%d\\n\", cmd83->s.historylength,\n+\t\tcmd83->s.adlercrc32);\n+\tprintf(\"ctx_ptr.addr:0x%lx\\n\", cmd83->s.ctx_ptr_addr.s.addr);\n+\tprintf(\"ctx_ptr.len:%d\\n\", cmd83->s.ctx_ptr_ctl.s.length);\n+\tprintf(\"history_ptr.addr:0x%lx\\n\", cmd83->s.his_ptr_addr.s.addr);\n+\tprintf(\"history_ptr.len:%d\\n\", cmd83->s.his_ptr_ctl.s.length);\n+\tprintf(\"inp_ptr.addr:0x%lx\\n\", cmd83->s.inp_ptr_addr.s.addr);\n+\tprintf(\"inp_ptr.len:%d\\n\", cmd83->s.inp_ptr_ctl.s.length);\n+\tprintf(\"out_ptr.addr:0x%lx\\n\", cmd83->s.out_ptr_addr.s.addr);\n+\tprintf(\"out_ptr.len:%d\\n\", cmd83->s.out_ptr_ctl.s.length);\n+\tprintf(\"result_ptr.len:%d\\n\", cmd83->s.res_ptr_ctl.s.length);\n+\tprintf(\"####### END ########\\n\");\n+}\n+#endif\n+\n int\n zipvf_create(struct rte_compressdev *compressdev);\n \n@@ -171,9 +260,14 @@ zipvf_q_init(struct zipvf_qp *qp);\n int\n zipvf_q_term(struct zipvf_qp *qp);\n \n-int\n+void\n zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd);\n \n+int\n+zip_process_op(struct rte_comp_op *op,\n+\t\t\t\tstruct zipvf_qp *qp,\n+\t\t\t\tstruct zip_stream *zstrm);\n+\n uint64_t\n zip_reg_read64(uint8_t *hw_addr, uint64_t offset);\n \ndiff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c\nindex 16f581b..e211af0 100644\n--- a/drivers/compress/octeontx/otx_zip_pmd.c\n+++ b/drivers/compress/octeontx/otx_zip_pmd.c\n@@ -28,6 +28,85 @@ static const struct rte_compressdev_capabilities\n \tRTE_COMP_END_OF_CAPABILITIES_LIST()\n };\n \n+/*\n+ * Reset session to default state for next set of stateless operation\n+ */\n+static inline void\n+reset_stream(struct zip_stream *z_stream)\n+{\n+\tunion zip_inst_s *inst = (union zip_inst_s *)(z_stream->inst);\n+\n+\tinst->s.bf = 1;\n+\tinst->s.ef = 0;\n+}\n+\n+int\n+zip_process_op(struct rte_comp_op *op,\n+\t\tstruct zipvf_qp *qp,\n+\t\tstruct zip_stream *zstrm)\n+{\n+\tunion zip_inst_s *inst = zstrm->inst;\n+\tvolatile union zip_zres_s *zresult = NULL;\n+\n+\n+\tif ((op->m_src->nb_segs > 1) || (op->m_dst->nb_segs > 1) ||\n+\t\t\t(op->src.offset > rte_pktmbuf_pkt_len(op->m_src)) ||\n+\t\t\t(op->dst.offset > rte_pktmbuf_pkt_len(op->m_dst))) {\n+\t\top->status = RTE_COMP_OP_STATUS_INVALID_ARGS;\n+\t\tZIP_PMD_ERR(\"Segmented packet is not supported\\n\");\n+\t\treturn 0;\n+\t}\n+\n+\tzipvf_prepare_cmd_stateless(op, zstrm);\n+\n+\tzresult = (union zip_zres_s *)zstrm->bufs[RES_BUF];\n+\tzresult->s.compcode = 0;\n+\n+#ifdef ZIP_DBG\n+\tzip_dump_instruction(inst);\n+#endif\n+\n+\t/* Submit zip command */\n+\tzipvf_push_command(qp, (void *)inst);\n+\n+\t/* Check and Process results in sync mode */\n+\tdo {\n+\t} while (!zresult->s.compcode);\n+\n+\tif (zresult->s.compcode == ZIP_COMP_E_SUCCESS) {\n+\t\top->status = RTE_COMP_OP_STATUS_SUCCESS;\n+\t} else {\n+\t\t/* FATAL error cannot do anything */\n+\t\tZIP_PMD_ERR(\"operation failed with error code:%d\\n\",\n+\t\t\tzresult->s.compcode);\n+\t\tif (zresult->s.compcode == ZIP_COMP_E_DSTOP)\n+\t\t\top->status = RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED;\n+\t\telse\n+\t\t\top->status = RTE_COMP_OP_STATUS_ERROR;\n+\t}\n+\n+\tZIP_PMD_INFO(\"written %d\\n\", zresult->s.totalbyteswritten);\n+\n+\t/* Update op stats */\n+\tswitch (op->status) {\n+\tcase RTE_COMP_OP_STATUS_SUCCESS:\n+\t\top->consumed = zresult->s.totalbytesread;\n+\t/* Fall-through */\n+\tcase RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED:\n+\t\top->produced = zresult->s.totalbyteswritten;\n+\t\tbreak;\n+\tdefault:\n+\t\tZIP_PMD_ERR(\"stats not updated for status:%d\\n\",\n+\t\t\t\top->status);\n+\t\tbreak;\n+\t}\n+\t/* zstream is reset irrespective of result */\n+\treset_stream(zstrm);\n+\n+\tzresult->s.compcode = ZIP_COMP_E_NOTDONE;\n+\treturn 0;\n+}\n+\n /** Parse xform parameters and setup a stream */\n static int\n zip_set_stream_parameters(struct rte_compressdev *dev,\n@@ -114,6 +193,7 @@ zip_set_stream_parameters(struct rte_compressdev *dev,\n \tinst->s.res_ptr_ctl.s.length = 0;\n \n \tz_stream->inst = inst;\n+\tz_stream->func = zip_process_op;\n \n \treturn 0;\n \n@@ -397,6 +477,60 @@ zip_pmd_stream_free(struct rte_compressdev *dev, void *stream)\n }\n \n \n+static uint16_t\n+zip_pmd_enqueue_burst_sync(void *queue_pair,\n+\t\tstruct rte_comp_op **ops, uint16_t nb_ops)\n+{\n+\tstruct zipvf_qp *qp = queue_pair;\n+\tstruct rte_comp_op *op;\n+\tstruct zip_stream *zstrm;\n+\tint i, ret = 0;\n+\tuint16_t enqd = 0;\n+\n+\tfor (i = 0; i < nb_ops; i++) {\n+\n+\t\top = ops[i];\n+\n+\t\tif ((op->op_type == RTE_COMP_OP_STATEFUL) || (zstrm == NULL)) {\n+\t\t\top->status = RTE_COMP_OP_STATUS_INVALID_ARGS;\n+\t\t} else {\n+\t\t\t/* process stateless ops */\n+\t\t\tzstrm = (struct zip_stream *)op->private_xform;\n+\t\t\tret = zstrm->func(op, qp, zstrm);\n+\t\t}\n+\n+\t\t/* Whatever is out of op, put it into completion queue with\n+\t\t * its status\n+\t\t */\n+\t\tif (!ret)\n+\t\t\tret = rte_ring_enqueue(qp->processed_pkts, (void *)op);\n+\n+\t\tif (unlikely(ret < 0)) {\n+\t\t\t/* increment count if failed to enqueue op*/\n+\t\t\tqp->qp_stats.enqueue_err_count++;\n+\t\t} else {\n+\t\t\tqp->qp_stats.enqueued_count++;\n+\t\t\tenqd++;\n+\t\t}\n+\t}\n+\treturn enqd;\n+}\n+\n+static uint16_t\n+zip_pmd_dequeue_burst_sync(void *queue_pair,\n+\t\tstruct rte_comp_op **ops, uint16_t nb_ops)\n+{\n+\tstruct zipvf_qp *qp = queue_pair;\n+\n+\tunsigned int nb_dequeued = 0;\n+\n+\tnb_dequeued = rte_ring_dequeue_burst(qp->processed_pkts,\n+\t\t\t(void **)ops, nb_ops, NULL);\n+\tqp->qp_stats.dequeued_count += nb_dequeued;\n+\n+\treturn nb_dequeued;\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@@ -458,6 +592,8 @@ zip_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,\n \n \tcompressdev->dev_ops = &octtx_zip_pmd_ops;\n \t/* register rx/tx burst functions for data path */\n+\tcompressdev->dequeue_burst = zip_pmd_dequeue_burst_sync;\n+\tcompressdev->enqueue_burst = zip_pmd_enqueue_burst_sync;\n \tcompressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED;\n \treturn ret;\n }\n",
    "prefixes": [
        "v4",
        "4/6"
    ]
}