get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 97061,
    "url": "http://patchwork.dpdk.org/api/patches/97061/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20210818151441.12400-3-rzidane@nvidia.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": "<20210818151441.12400-3-rzidane@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210818151441.12400-3-rzidane@nvidia.com",
    "date": "2021-08-18T15:14:40",
    "name": "[RFC,2/3] compress/mlx5: refactor queue creation in mlx5 add support to compress and regex drivers in BlueField3",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "1ff21c443929c57ee8b224ed757b1b0fb07347ed",
    "submitter": {
        "id": 2300,
        "url": "http://patchwork.dpdk.org/api/people/2300/?format=api",
        "name": "Raja Zidane",
        "email": "rzidane@nvidia.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20210818151441.12400-3-rzidane@nvidia.com/mbox/",
    "series": [
        {
            "id": 18334,
            "url": "http://patchwork.dpdk.org/api/series/18334/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=18334",
            "date": "2021-08-18T15:14:38",
            "name": "mlx5: replaced hardware queue object",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/18334/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/97061/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/97061/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 268F4A0C52;\n\tWed, 18 Aug 2021 17:15:26 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7A54B411F1;\n\tWed, 18 Aug 2021 17:15:15 +0200 (CEST)",
            "from NAM11-BN8-obe.outbound.protection.outlook.com\n (mail-bn8nam11on2054.outbound.protection.outlook.com [40.107.236.54])\n by mails.dpdk.org (Postfix) with ESMTP id 78F4440151\n for <dev@dpdk.org>; Wed, 18 Aug 2021 17:15:13 +0200 (CEST)",
            "from BN6PR21CA0008.namprd21.prod.outlook.com (2603:10b6:404:8e::18)\n by BYAPR12MB3574.namprd12.prod.outlook.com (2603:10b6:a03:ae::16)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.20; Wed, 18 Aug\n 2021 15:15:11 +0000",
            "from BN8NAM11FT036.eop-nam11.prod.protection.outlook.com\n (2603:10b6:404:8e:cafe::3a) by BN6PR21CA0008.outlook.office365.com\n (2603:10b6:404:8e::18) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.1 via Frontend\n Transport; Wed, 18 Aug 2021 15:15:11 +0000",
            "from mail.nvidia.com (216.228.112.36) by\n BN8NAM11FT036.mail.protection.outlook.com (10.13.177.168) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id\n 15.20.4436.19 via Frontend Transport; Wed, 18 Aug 2021 15:15:11 +0000",
            "from DRHQMAIL107.nvidia.com (10.27.9.16) by HQMAIL101.nvidia.com\n (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 18 Aug\n 2021 15:15:07 +0000",
            "from nvidia.com (172.20.187.6) by DRHQMAIL107.nvidia.com\n (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 18 Aug\n 2021 15:15:06 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=D61fAKT6pfJZt+jDzVS99exsI2ooPpwzv6J/N7Vbn/1p47dem3tDY0RkhChxKCHrCtAjzeOsjLzoHW0wuJPTDpBvW6PTpeIK4amMUs5XLitrudQty80meVggKBmZzIZKbGeV1WE35cqwjKGC8HfhQKZIqHKTbESf5MCP35wpMOhfZXQ359B6GJQpnh0lXfECbesfAFgt+AOM//pXqJknijRhjyToyKBchQBRovExATZeQ15PFc4oEgZIwljAhA3ZECWkoHvo8sPz8nFl7tOayv71iGoo6qSgt4nFg06JvhjYwl/LiPZ4TMWtXFZv/T59lDdIFIXtfMAMVmrcCB7vcg==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=f2dpLZe4iKaW0izOVqeFWHn67nK3Tb892r9+xqJkjBg=;\n b=YYOktpSjKOl0URcjGveb/Wz4IJJdZrHAJ/1ize7gx1KRTTHI/3QXVND4b3gU1lnhiwT5VbTtNCKZIRuBU4AR11dT8DW1jFDVZ4tcQM5npo9LQbinOoylhCOg+zkIr9IxUupF/C8bCjCu/7M2puQb8Mc8mfOlmkuNR2LPKsjBdiFVMY+YKMGEdBN7t25uoWIxl/C9BWbsIPuQfe+BtExJEo8eaTk6HxqsUuLUo3B24rN5rVUXy4OCSRvIBjVJh2tLxIgHLWYNncAhx6A0CMLbLSdCdumXeDExod3zSe6n/f5XEi8o0TvH907+EKF4EjqRaOygBNzlCajtbSryaylxew==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.112.36) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=f2dpLZe4iKaW0izOVqeFWHn67nK3Tb892r9+xqJkjBg=;\n b=cnYyiSbEkoWun1bc0pw/QSidDa3STdhhlpBhYPRi+/26DXBOX4xzRcpVpm5rNG2TScCLcHnoRbxqGUqQ9s5rFVw2vRg2bRSvvvjacnE8TjhHU+jXm+Cu1/9gk04oI1XhcOaGeTrkFaNb/ja6xIvxYjkjyLLHuQDn7rhyvEZx/2XT9OJAnjOh6MA69aBzX5cUn+AbtmkHD7iGzjitFCgEWeG3ibWG90AfayRgULOMwiCJlE1rNIpDAX8+IRRtZBJJ+lRn6ZmUTfoJ2h0ojrY9aLAiwRxhfwVQv6Sz1tD4JwJdZ/ztd0gI7bB08hch5JRMPAzfrzsKA1I4DTvu5iw26g==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.112.36)\n smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed)\n header.d=none;dpdk.org; dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.112.36 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.112.36; helo=mail.nvidia.com;",
        "From": "Raja Zidane <rzidane@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<matan@nvidia.com>, <orika@nvidia.com>",
        "Date": "Wed, 18 Aug 2021 18:14:40 +0300",
        "Message-ID": "<20210818151441.12400-3-rzidane@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20210818151441.12400-1-rzidane@nvidia.com>",
        "References": "<20210818151441.12400-1-rzidane@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[172.20.187.6]",
        "X-ClientProxiedBy": "HQMAIL101.nvidia.com (172.20.187.10) To\n DRHQMAIL107.nvidia.com (10.27.9.16)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "20d8e88b-d3cb-416e-21f3-08d9625af904",
        "X-MS-TrafficTypeDiagnostic": "BYAPR12MB3574:",
        "X-Microsoft-Antispam-PRVS": "\n <BYAPR12MB35746F42968157E99FF55E3DC7FF9@BYAPR12MB3574.namprd12.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:813;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n 2pSqtYEpTgrePxJ339Q1AuR9FcGnEQBumhJu9+fr4dg0MPR8bNKf6eru+NcOm0SUJjRGCDthENP4dY79EqIF/mienKmlWVwCD2ked1KThWbt/SPRRMy6ZfQUz1yRc0I8ybGpiB1viip340hEuAnLaCniuXkifibtOF5JxPxxGc8A44CnuWsons0KoJ0iUZ0tJiRf0sTGEVZfSmaY3fNLMmTXJa9M2BjxuiZNtJn3R6k+RCppOQfkXRiD3cDSD5Z4eawQ6S4fecWwIyIeFHKhfU8OMw4+gpQYH422L47dRmtjvC0n2bBwjgECmO8VEzaOh8sjDaeUGV37LHWi3Vx/fdFyOEd9IqnY8ine78ASigXcvzmD+XJwFq3da3nOmZ4Q4YwDbJqMcdohluFzzcLHau2h3zmep7cXPvEnA255UQGcO9xXMNEb+LKgsGCooO3pXuYs9Xylrp57wPCvJ6jL01BayCxiKhfBAgXidyd+n/MUMhwlMMTP6sjF7W51RrEzLHV//Xxv3hfUxdK20qJaz5evvgE8AIZGtxTS++9mUi5jEmB98NqxHx6uJ2EplsKzZszm7SRg3S5Zhkqy5AQvq4R4LZnOyVyDUeHbAtaFtT6eJHkdnjUYpC7fO7g2N81Nxw8fR8usyPV7EBEIKs8H9AB2EfjgwDRjv1QuRodEI8zOyTW4osDp21z23Rnn5uCuO3Gnrtjuju6SbjmC0INnqQ==",
        "X-Forefront-Antispam-Report": "CIP:216.228.112.36; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid05.nvidia.com; CAT:NONE;\n SFS:(4636009)(39860400002)(396003)(136003)(346002)(376002)(46966006)(36840700001)(6916009)(55016002)(36756003)(16526019)(4326008)(2906002)(86362001)(7696005)(426003)(336012)(186003)(107886003)(26005)(478600001)(2616005)(6666004)(82310400003)(30864003)(36860700001)(8936002)(70206006)(47076005)(5660300002)(8676002)(6286002)(356005)(70586007)(1076003)(316002)(83380400001)(54906003)(7636003)(82740400003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "18 Aug 2021 15:15:11.2173 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 20d8e88b-d3cb-416e-21f3-08d9625af904",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.36];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT036.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BYAPR12MB3574",
        "Subject": "[dpdk-dev] [RFC 2/3] compress/mlx5: refactor queue creation in mlx5\n add support to compress and regex drivers in BlueField3",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <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 <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Raja Zidane <rzidane@nvidia.com>\n---\n drivers/common/mlx5/mlx5_devx_cmds.c  | 14 ++++-\n drivers/common/mlx5/mlx5_devx_cmds.h  | 10 ++-\n drivers/common/mlx5/mlx5_prm.h        | 42 +++++++++++--\n drivers/compress/mlx5/mlx5_compress.c | 91 ++++++++++++++++++---------\n 4 files changed, 116 insertions(+), 41 deletions(-)",
    "diff": "diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c\nindex 56407cc332..347ae75d37 100644\n--- a/drivers/common/mlx5/mlx5_devx_cmds.c\n+++ b/drivers/common/mlx5/mlx5_devx_cmds.c\n@@ -858,9 +858,12 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,\n \tattr->log_max_srq_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_srq_sz);\n \tattr->reg_c_preserve =\n \t\tMLX5_GET(cmd_hca_cap, hcattr, reg_c_preserve);\n-\tattr->mmo_dma_en = MLX5_GET(cmd_hca_cap, hcattr, dma_mmo);\n-\tattr->mmo_compress_en = MLX5_GET(cmd_hca_cap, hcattr, compress);\n-\tattr->mmo_decompress_en = MLX5_GET(cmd_hca_cap, hcattr, decompress);\n+\tattr->mmo_dma_sq_en = MLX5_GET(cmd_hca_cap, hcattr, dma_mmo_sq);\n+\tattr->mmo_compress_sq_en = MLX5_GET(cmd_hca_cap, hcattr, compress_mmo_sq);\n+\tattr->mmo_decompress_sq_en = MLX5_GET(cmd_hca_cap, hcattr, decompress_mmo_sq);\n+\tattr->mmo_dma_qp_en = MLX5_GET(cmd_hca_cap, hcattr, dma_mmo_qp);\n+\tattr->mmo_compress_qp_en = MLX5_GET(cmd_hca_cap, hcattr, compress_mmo_qp);\n+\tattr->mmo_decompress_qp_en = MLX5_GET(cmd_hca_cap, hcattr, decompress_mmo_qp);\n \tattr->compress_min_block_size = MLX5_GET(cmd_hca_cap, hcattr,\n \t\t\t\t\t\t compress_min_block_size);\n \tattr->log_max_mmo_dma = MLX5_GET(cmd_hca_cap, hcattr, log_dma_mmo_size);\n@@ -2022,6 +2025,11 @@ mlx5_devx_cmd_create_qp(void *ctx,\n \tMLX5_SET(qpc, qpc, pd, attr->pd);\n \tMLX5_SET(qpc, qpc, ts_format, attr->ts_format);\n \tif (attr->uar_index) {\n+\t\tif(attr->mmo) {\n+\t\t\tvoid *qpc_ext_and_pas_list = MLX5_ADDR_OF(create_qp_in, in, qpc_extension_and_pas_list);\n+\t\t\tvoid* qpc_ext = MLX5_ADDR_OF(qpc_extension_and_pas_list, qpc_ext_and_pas_list, qpc_data_extension);\n+\t\t\tMLX5_SET(qpc_extension, qpc_ext, mmo, 1);\n+\t\t}\n \t\tMLX5_SET(qpc, qpc, pm_state, MLX5_QP_PM_MIGRATED);\n \t\tMLX5_SET(qpc, qpc, uar_page, attr->uar_index);\n \t\tif (attr->log_page_size > MLX5_ADAPTER_PAGE_SHIFT)\ndiff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h\nindex e576e30f24..f993b511dc 100644\n--- a/drivers/common/mlx5/mlx5_devx_cmds.h\n+++ b/drivers/common/mlx5/mlx5_devx_cmds.h\n@@ -173,9 +173,12 @@ struct mlx5_hca_attr {\n \tuint32_t log_max_srq;\n \tuint32_t log_max_srq_sz;\n \tuint32_t rss_ind_tbl_cap;\n-\tuint32_t mmo_dma_en:1;\n-\tuint32_t mmo_compress_en:1;\n-\tuint32_t mmo_decompress_en:1;\n+\tuint32_t mmo_dma_sq_en:1;\n+\tuint32_t mmo_compress_sq_en:1;\n+\tuint32_t mmo_decompress_sq_en:1;\n+\tuint32_t mmo_dma_qp_en:1;\n+\tuint32_t mmo_compress_qp_en:1;\n+\tuint32_t mmo_decompress_qp_en:1;\n \tuint32_t compress_min_block_size:4;\n \tuint32_t log_max_mmo_dma:5;\n \tuint32_t log_max_mmo_compress:5;\n@@ -397,6 +400,7 @@ struct mlx5_devx_qp_attr {\n \tuint64_t dbr_address;\n \tuint32_t wq_umem_id;\n \tuint64_t wq_umem_offset;\n+\tuint32_t mmo;\n };\n \n struct mlx5_devx_virtio_q_couners_attr {\ndiff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h\nindex fdb20f5d49..d0c75b97df 100644\n--- a/drivers/common/mlx5/mlx5_prm.h\n+++ b/drivers/common/mlx5/mlx5_prm.h\n@@ -1385,10 +1385,10 @@ struct mlx5_ifc_cmd_hca_cap_bits {\n \tu8 rtr2rts_qp_counters_set_id[0x1];\n \tu8 rts2rts_udp_sport[0x1];\n \tu8 rts2rts_lag_tx_port_affinity[0x1];\n-\tu8 dma_mmo[0x1];\n+\tu8 dma_mmo_sq[0x1];\n \tu8 compress_min_block_size[0x4];\n-\tu8 compress[0x1];\n-\tu8 decompress[0x1];\n+\tu8 compress_mmo_sq[0x1];\n+\tu8 decompress_mmo_sq[0x1];\n \tu8 log_max_ra_res_qp[0x6];\n \tu8 end_pad[0x1];\n \tu8 cc_query_allowed[0x1];\n@@ -1631,7 +1631,12 @@ struct mlx5_ifc_cmd_hca_cap_bits {\n \tu8 num_vhca_ports[0x8];\n \tu8 reserved_at_618[0x6];\n \tu8 sw_owner_id[0x1];\n-\tu8 reserved_at_61f[0x1e1];\n+\tu8 reserved_at_61f[0x109];\n+\tu8 dma_mmo_qp[0x1];\n+\tu8 reserved_at_621[0x1];\n+\tu8 compress_mmo_qp[0x1];\n+\tu8 decompress_mmo_qp[0x1];\n+\tu8 reserved_at_624[0xd4];\n };\n \n struct mlx5_ifc_qos_cap_bits {\n@@ -3235,6 +3240,27 @@ struct mlx5_ifc_create_qp_out_bits {\n \tu8 reserved_at_60[0x20];\n };\n \n+struct mlx5_ifc_qpc_extension_bits {\n+\tu8 reserved_at_0[0x2];\n+\tu8 mmo[0x1];\n+\tu8 reserved_at_3[0x5fd];\n+};\n+\n+#ifdef PEDANTIC\n+#pragma GCC diagnostic ignored \"-Wpedantic\"\n+#endif\n+struct mlx5_ifc_qpc_pas_list_bits {\n+\tu8 pas[0][0x40];\n+};\n+\n+#ifdef PEDANTIC\n+#pragma GCC diagnostic ignored \"-Wpedantic\"\n+#endif\n+struct mlx5_ifc_qpc_extension_and_pas_list_bits {\n+\tstruct mlx5_ifc_qpc_extension_bits qpc_data_extension;\n+\tu8 pas[0][0x40];\n+};\n+\n #ifdef PEDANTIC\n #pragma GCC diagnostic ignored \"-Wpedantic\"\n #endif\n@@ -3243,7 +3269,8 @@ struct mlx5_ifc_create_qp_in_bits {\n \tu8 uid[0x10];\n \tu8 reserved_at_20[0x10];\n \tu8 op_mod[0x10];\n-\tu8 reserved_at_40[0x40];\n+\tu8 qpc_ext[0x1];\n+\tu8 reserved_at_41[0x3f];\n \tu8 opt_param_mask[0x20];\n \tu8 reserved_at_a0[0x20];\n \tstruct mlx5_ifc_qpc_bits qpc;\n@@ -3251,7 +3278,10 @@ struct mlx5_ifc_create_qp_in_bits {\n \tu8 wq_umem_id[0x20];\n \tu8 wq_umem_valid[0x1];\n \tu8 reserved_at_861[0x1f];\n-\tu8 pas[0][0x40];\n+\tunion {\n+\t\tstruct mlx5_ifc_qpc_pas_list_bits qpc_pas_list;\n+\t\tstruct mlx5_ifc_qpc_extension_and_pas_list_bits qpc_extension_and_pas_list;\n+\t};\n };\n #ifdef PEDANTIC\n #pragma GCC diagnostic error \"-Wpedantic\"\ndiff --git a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c\nindex 883e720ec1..05e75adb1c 100644\n--- a/drivers/compress/mlx5/mlx5_compress.c\n+++ b/drivers/compress/mlx5/mlx5_compress.c\n@@ -48,6 +48,7 @@ struct mlx5_compress_priv {\n \trte_spinlock_t xform_sl;\n \tstruct mlx5_mr_share_cache mr_scache; /* Global shared MR cache. */\n \tvolatile uint64_t *uar_addr;\n+\tuint8_t mmo_caps; /* bitmap 0->5: decomp_sq, decomp_qp, comp_sq, comp_qp, dma_sq, dma_qp */\n #ifndef RTE_ARCH_64\n \trte_spinlock_t uar32_sl;\n #endif /* RTE_ARCH_64 */\n@@ -61,7 +62,7 @@ struct mlx5_compress_qp {\n \tstruct mlx5_mr_ctrl mr_ctrl;\n \tint socket_id;\n \tstruct mlx5_devx_cq cq;\n-\tstruct mlx5_devx_sq sq;\n+\tstruct mlx5_devx_qp qp;\n \tstruct mlx5_pmd_mr opaque_mr;\n \tstruct rte_comp_op **ops;\n \tstruct mlx5_compress_priv *priv;\n@@ -134,8 +135,8 @@ mlx5_compress_qp_release(struct rte_compressdev *dev, uint16_t qp_id)\n {\n \tstruct mlx5_compress_qp *qp = dev->data->queue_pairs[qp_id];\n \n-\tif (qp->sq.sq != NULL)\n-\t\tmlx5_devx_sq_destroy(&qp->sq);\n+\tif (qp->qp.qp != NULL)\n+\t\tmlx5_devx_qp_destroy(&qp->qp);\n \tif (qp->cq.cq != NULL)\n \t\tmlx5_devx_cq_destroy(&qp->cq);\n \tif (qp->opaque_mr.obj != NULL) {\n@@ -152,12 +153,12 @@ mlx5_compress_qp_release(struct rte_compressdev *dev, uint16_t qp_id)\n }\n \n static void\n-mlx5_compress_init_sq(struct mlx5_compress_qp *qp)\n+mlx5_compress_init_qp(struct mlx5_compress_qp *qp)\n {\n \tvolatile struct mlx5_gga_wqe *restrict wqe =\n-\t\t\t\t    (volatile struct mlx5_gga_wqe *)qp->sq.wqes;\n+\t\t\t\t    (volatile struct mlx5_gga_wqe *)qp->qp.wqes;\n \tvolatile struct mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr;\n-\tconst uint32_t sq_ds = rte_cpu_to_be_32((qp->sq.sq->id << 8) | 4u);\n+\tconst uint32_t sq_ds = rte_cpu_to_be_32((qp->qp.qp->id << 8) | 4u);\n \tconst uint32_t flags = RTE_BE32(MLX5_COMP_ALWAYS <<\n \t\t\t\t\tMLX5_COMP_MODE_OFFSET);\n \tconst uint32_t opaq_lkey = rte_cpu_to_be_32(qp->opaque_mr.lkey);\n@@ -173,6 +174,35 @@ mlx5_compress_init_sq(struct mlx5_compress_qp *qp)\n \t}\n }\n \n+static int\n+mlx5_compress_qp2rts(struct mlx5_compress_qp *qp)\n+{\n+\t/*\n+\t * In Order to configure self loopback, when calling these functions the\n+\t * remote QP id that is used is the id of the same QP.\n+\t */\n+\tif (mlx5_devx_cmd_modify_qp_state(qp->qp.qp, MLX5_CMD_OP_RST2INIT_QP,\n+\t\t\t\t\t  qp->qp.qp->id)) {\n+\t\tDRV_LOG(ERR, \"Failed to modify QP to INIT state(%u).\",\n+\t\t\trte_errno);\n+\t\treturn -1;\n+\t}\n+\tif (mlx5_devx_cmd_modify_qp_state(qp->qp.qp, MLX5_CMD_OP_INIT2RTR_QP,\n+\t\t\t\t\t  qp->qp.qp->id)) {\n+\t\tDRV_LOG(ERR, \"Failed to modify QP to RTR state(%u).\",\n+\t\t\trte_errno);\n+\t\treturn -1;\n+\t}\n+\tif (mlx5_devx_cmd_modify_qp_state(qp->qp.qp, MLX5_CMD_OP_RTR2RTS_QP,\n+\t\t\t\t\t  qp->qp.qp->id)) {\n+\t\tDRV_LOG(ERR, \"Failed to modify QP to RTS state(%u).\",\n+\t\t\trte_errno);\n+\t\treturn -1;\n+\t}\n+\treturn 0;\n+}\n+\n+\n static int\n mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,\n \t\t       uint32_t max_inflight_ops, int socket_id)\n@@ -182,15 +212,9 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,\n \tstruct mlx5_devx_cq_attr cq_attr = {\n \t\t.uar_page_id = mlx5_os_get_devx_uar_page_id(priv->uar),\n \t};\n-\tstruct mlx5_devx_create_sq_attr sq_attr = {\n-\t\t.user_index = qp_id,\n-\t\t.wq_attr = (struct mlx5_devx_wq_attr){\n-\t\t\t.pd = priv->pdn,\n-\t\t\t.uar_page = mlx5_os_get_devx_uar_page_id(priv->uar),\n-\t\t},\n-\t};\n-\tstruct mlx5_devx_modify_sq_attr modify_attr = {\n-\t\t.state = MLX5_SQC_STATE_RDY,\n+\tstruct mlx5_devx_qp_attr qp_attr = {\n+\t\t.pd = priv->pdn,\n+\t\t.uar_index = mlx5_os_get_devx_uar_page_id(priv->uar),\n \t};\n \tuint32_t log_ops_n = rte_log2_u32(max_inflight_ops);\n \tuint32_t alloc_size = sizeof(*qp);\n@@ -242,24 +266,26 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,\n \t\tDRV_LOG(ERR, \"Failed to create CQ.\");\n \t\tgoto err;\n \t}\n-\tsq_attr.cqn = qp->cq.cq->id;\n-\tsq_attr.ts_format = mlx5_ts_format_conv(priv->sq_ts_format);\n-\tret = mlx5_devx_sq_create(priv->ctx, &qp->sq, log_ops_n, &sq_attr,\n+\tqp_attr.cqn = qp->cq.cq->id;\n+\tqp_attr.ts_format = mlx5_ts_format_conv(priv->sq_ts_format);\n+\tqp_attr.rq_size = 0;\n+\tqp_attr.sq_size = 1 << log_ops_n;\n+\tqp_attr.mmo = (priv->mmo_caps & (1<<1)) && (priv->mmo_caps & (1<<3)) && (priv->mmo_caps & (1<<5));\n+\tret = mlx5_devx_qp_create(priv->ctx, &qp->qp, log_ops_n, &qp_attr,\n \t\t\t\t  socket_id);\n \tif (ret != 0) {\n-\t\tDRV_LOG(ERR, \"Failed to create SQ.\");\n+\t\tDRV_LOG(ERR, \"Failed to create QP.\");\n \t\tgoto err;\n \t}\n-\tmlx5_compress_init_sq(qp);\n-\tret = mlx5_devx_cmd_modify_sq(qp->sq.sq, &modify_attr);\n-\tif (ret != 0) {\n-\t\tDRV_LOG(ERR, \"Can't change SQ state to ready.\");\n+\tret = mlx5_compress_qp2rts(qp);\n+\tif(ret) {\n \t\tgoto err;\n \t}\n+\tmlx5_compress_init_qp(qp);\n \t/* Save pointer of global generation number to check memory event. */\n \tqp->mr_ctrl.dev_gen_ptr = &priv->mr_scache.dev_gen;\n \tDRV_LOG(INFO, \"QP %u: SQN=0x%X CQN=0x%X entries num = %u\",\n-\t\t(uint32_t)qp_id, qp->sq.sq->id, qp->cq.cq->id, qp->entries_n);\n+\t\t(uint32_t)qp_id, qp->qp.qp->id, qp->cq.cq->id, qp->entries_n);\n \treturn 0;\n err:\n \tmlx5_compress_qp_release(dev, qp_id);\n@@ -508,7 +534,7 @@ mlx5_compress_enqueue_burst(void *queue_pair, struct rte_comp_op **ops,\n {\n \tstruct mlx5_compress_qp *qp = queue_pair;\n \tvolatile struct mlx5_gga_wqe *wqes = (volatile struct mlx5_gga_wqe *)\n-\t\t\t\t\t\t\t      qp->sq.wqes, *wqe;\n+\t\t\t\t\t\t\t      qp->qp.wqes, *wqe;\n \tstruct mlx5_compress_xform *xform;\n \tstruct rte_comp_op *op;\n \tuint16_t mask = qp->entries_n - 1;\n@@ -563,7 +589,7 @@ mlx5_compress_enqueue_burst(void *queue_pair, struct rte_comp_op **ops,\n \t} while (--remain);\n \tqp->stats.enqueued_count += nb_ops;\n \trte_io_wmb();\n-\tqp->sq.db_rec[MLX5_SND_DBR] = rte_cpu_to_be_32(qp->pi);\n+\tqp->qp.db_rec[MLX5_SND_DBR] = rte_cpu_to_be_32(qp->pi);\n \trte_wmb();\n \tmlx5_compress_uar_write(*(volatile uint64_t *)wqe, qp->priv);\n \trte_wmb();\n@@ -598,7 +624,7 @@ mlx5_compress_cqe_err_handle(struct mlx5_compress_qp *qp,\n \tvolatile struct mlx5_err_cqe *cqe = (volatile struct mlx5_err_cqe *)\n \t\t\t\t\t\t\t      &qp->cq.cqes[idx];\n \tvolatile struct mlx5_gga_wqe *wqes = (volatile struct mlx5_gga_wqe *)\n-\t\t\t\t\t\t\t\t    qp->sq.wqes;\n+\t\t\t\t\t\t\t\t    qp->qp.wqes;\n \tvolatile struct mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr;\n \n \top->status = RTE_COMP_OP_STATUS_ERROR;\n@@ -813,8 +839,9 @@ mlx5_compress_dev_probe(struct rte_device *dev)\n \t\treturn -rte_errno;\n \t}\n \tif (mlx5_devx_cmd_query_hca_attr(ctx, &att) != 0 ||\n-\t    att.mmo_compress_en == 0 || att.mmo_decompress_en == 0 ||\n-\t    att.mmo_dma_en == 0) {\n+\t    ((att.mmo_compress_sq_en == 0 || att.mmo_decompress_sq_en == 0 ||\n+\t    \tatt.mmo_dma_sq_en == 0) && (att.mmo_compress_qp_en == 0 || \n+\t\t\t\tatt.mmo_decompress_qp_en == 0 || att.mmo_dma_qp_en == 0))) {\n \t\tDRV_LOG(ERR, \"Not enough capabilities to support compress \"\n \t\t\t\"operations, maybe old FW/OFED version?\");\n \t\tclaim_zero(mlx5_glue->close_device(ctx));\n@@ -835,6 +862,12 @@ mlx5_compress_dev_probe(struct rte_device *dev)\n \tcdev->enqueue_burst = mlx5_compress_enqueue_burst;\n \tcdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED;\n \tpriv = cdev->data->dev_private;\n+\tpriv->mmo_caps = 0 | att.mmo_decompress_sq_en;\n+\tpriv->mmo_caps |= att.mmo_decompress_qp_en << 1;\n+\tpriv->mmo_caps |= att.mmo_compress_sq_en << 2;\n+\tpriv->mmo_caps |= att.mmo_compress_qp_en << 3;\n+\tpriv->mmo_caps |= att.mmo_dma_sq_en << 4;\n+\tpriv->mmo_caps |= att.mmo_dma_qp_en << 5;\n \tpriv->ctx = ctx;\n \tpriv->cdev = cdev;\n \tpriv->min_block_size = att.compress_min_block_size;\n",
    "prefixes": [
        "RFC",
        "2/3"
    ]
}