Show a patch.

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

{
    "id": 41570,
    "url": "http://patches.dpdk.org/api/patches/41570/",
    "web_url": "http://patches.dpdk.org/patch/41570/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/",
        "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"
    },
    "msgid": "<20180626123925.37439-5-yskoh@mellanox.com>",
    "date": "2018-06-26T12:39:24",
    "name": "[v2,4/5] net/mlx5: use stride index in Rx completion entry",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "332e2edca3351c07527633ea21ff06a9d6733298",
    "submitter": {
        "id": 636,
        "url": "http://patches.dpdk.org/api/people/636/",
        "name": "Yongseok Koh",
        "email": "yskoh@mellanox.com"
    },
    "delegate": {
        "id": 6624,
        "url": "http://patches.dpdk.org/api/users/6624/",
        "username": "shahafs",
        "first_name": "Shahaf",
        "last_name": "Shuler",
        "email": "shahafs@mellanox.com"
    },
    "mbox": "http://patches.dpdk.org/patch/41570/mbox/",
    "series": [
        {
            "id": 242,
            "url": "http://patches.dpdk.org/api/series/242/",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=242",
            "date": "2018-06-26T12:39:20",
            "name": "net/mlx5: support new completion field for Multi-Packet RQ",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/242/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/41570/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/41570/checks/",
    "tags": {},
    "headers": {
        "X-Mailman-Version": "2.1.15",
        "In-Reply-To": "<20180626123925.37439-1-yskoh@mellanox.com>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Message-Id": "<20180626123925.37439-5-yskoh@mellanox.com>",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Microsoft-Antispam-Message-Info": "gk2j1zptEZaEkRtC6MD1UC8bcGp/aGIckQqZUsUC0yzaF/MwKkBHuFNg96QqGYS6paJfY35OjzzuCl+9i5pVKc7NkSyG5V1fx/2DgUIt4ekFE6F/k+lJ/4c0LmII7Tph716hSHfOilJlbHw1W3NTkAN+rpNJ2nNDd3vMdE7uiWd29fSltGVajBFAltN73JErzb5eu+yVZsW5v9NrhU/E8ON0b123krlCyb0ZWKSAXwPlUMlpkXeoYvjNPRARW21RXQBB4Tp73glrLkCsxqF/jv4MmkyZFg41R2JTgXbs7Whu/LHS8MUuTnC4RS3rfEZ6rTQdylNf9zdineK0WIfYxNfc/LOYAKQuBnT+WLWK0h0=",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7C1FB1B5A3;\n\tTue, 26 Jun 2018 14:40:11 +0200 (CEST)",
            "from EUR04-HE1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr70048.outbound.protection.outlook.com [40.107.7.48])\n\tby dpdk.org (Postfix) with ESMTP id 03ED21B581\n\tfor <dev@dpdk.org>; Tue, 26 Jun 2018 14:40:02 +0200 (CEST)",
            "from mellanox.com (209.116.155.178) by\n\tHE1PR0501MB2043.eurprd05.prod.outlook.com (2603:10a6:3:35::21) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.884.23; Tue, 26 Jun 2018 12:39:58 +0000"
        ],
        "References": "<20180626123925.37439-1-yskoh@mellanox.com>",
        "X-MS-Office365-Filtering-Correlation-Id": "c3a490cd-554a-4fd8-20ca-08d5db61ee91",
        "MIME-Version": "1.0",
        "From": "Yongseok Koh <yskoh@mellanox.com>",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Jun 2018 12:39:58.9372\n\t(UTC)",
        "X-Exchange-Antispam-Report-Test": "UriScan:(788757137089);",
        "X-ClientProxiedBy": "CO1PR15CA0100.namprd15.prod.outlook.com\n\t(2603:10b6:101:21::20) To HE1PR0501MB2043.eurprd05.prod.outlook.com\n\t(2603:10a6:3:35::21)",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Content-Type": "text/plain",
        "List-Post": "<mailto:dev@dpdk.org>",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020);\n\tSRVR:HE1PR0501MB2043; ",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "To": "adrien.mazarguil@6wind.com,\n\tnelio.laranjeiro@6wind.com",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; HE1PR0501MB2043;\n\t3:yhhm3YQeyszZ12dWXdxQ28PnNhdrQGYMJJZNdnPQEfa8jz0bTI+zd32XUSAshKxhkNbsXP74Nznvqshr56Ir5B8XQ6JFhLu/SDroJT8Pbw2mRl1wi94oB7Qn7mvPmQzyisbWT4WCQBlJlKj3mwSU8339Kw/7vF1eSIJW+xQhxTBbn36hG1Zd0nVsIHlERhV33aeJWlnMGpsFW0fEv4lm7QQ0Rp2j6Y8nYYCeQZhbOUFn2DXbhhiaIPz/D0G9PJmX;\n\t25:Ojz8m1FokFnUu8Xp9EDZ1RruB7CCAGRLJ/7mJJPfo8EYzXzJ4m04QafV++jidt94hGqSqWOacDobLf7ERBORriH/i4vPuGlTqcC4h4F2di7CxvOM5xnNRpMgxQj8mLHO3LT2eEBl3eF5+knFOPZWvs3GyQcaqHzG04mcaKEPiSFHAWXX9Cm5N+UVv9xFSagNZS2E40aLcXqtsQUVRtEQpI9J9mtd0xHvUTN8rkcCnb+avjV73yHOn5XFg+DBlxg4K+8lfjiWvp/guwVv/SFt9K2FqAiRkbO5/SFWIq9ADqQxBLX1cXymM/Kk8Nvtaj9eyDab9omJCYIDeSCYkXm8Eg==;\n\t31:Z48cC7qx0qNcHGc4hYxQv7mKRVkYwNsA0H5GdZoPeuAo4F34rKDbhPzs2hZB1N9CmUbWodidJpdECiCAEc5JWneNYgbc8+OhS7l/SHBFbH76VRFd1IEuBQvYPgXrVM2Zzq3/tLi6azDFnd4z7HkTqCixzEh5yWiY8nlIhk1vN4kK3lEKjrYjff2dHxqTWpxeUIPsmurynx24fG9i6u6T3vF5G9DIlaK6Pp432imHld8=",
            "1; HE1PR0501MB2043;\n\t20:AWSAdKvGFhkUbIe26ZpqHpo5mIZJW3VVZm8RLa3EwJZ3iHX19y7p3M4x/n2LdfQrjoB7C5nTjDEcoU7F+QLhEjx4t5ayzrcKUm37BkM/vgGhBx8mFxyDa/sHg8f0/JABlRIOI7IbuwHHxpJi2icq7WYxtUtFzHk1KkQrK8+rbn35IZoZANy2SVArMMJrZUDki+4CUYPqqZaeEJWUCT0eXlEBeYaGLx0k3snV8aZpWYVuK7fYMWVVcXVhFMPQpnpKPTrInKz94AClp7XZuh+J8Om2b+QC3juIdVZwBLlKrqEUu2qmY4CvFeHvAXJ5Of8X1IPLzkDTnb3T26Lj61D98oDSGwut0U/pCnNlrF8Xu+95ZTsHHuvwbv7TkkJ7mXYufkZp/9j2lgHW3nZx3jQ9AHwDT5rfw001hjmh/x157BRrb5qo68ncyxAOn94l4pAvd6So5PGULLr1ooKDjVLt99h2f1TZTW2BchTMcJiiQnBEA9S94rRPPhZ5TnF7T+06;\n\t4:DVx6lVR3j/SqaGrrzoZsEIzVbpUmnb2bjkjKQEKHEGC7PotVFbxe14WvYTPYYc25HxCF8EZcfD2/QWkRXv5hwgjv2dnDWpCYoyj5Rq9GaPe4upKa/qfB0oglGL/NuxQGT+jiZfw3HJQ852Gp/J5aZ+amDIVJKi/faAXDNOiT/W0AruEPuXjUVTPTTnry8pDn+KgFeDLZ+iVMCZuh/WZx3z13BeVGemQ9jVcsC01IWL5OZdjEgMntGxdYDAiQm/dCBTwgvfjre5vaZxtsT7zuKAj3vEoVaqt/bBIDW7pWAUlmsLolsitsIq3yYoJLdzU/",
            "=?us-ascii?Q?1; HE1PR0501MB2043;\n\t23:RG7RFGlh2YkvE5klbewSP+f/Zne7UVQd9b8+sa0?=\n\t+nL8RP2FDFLGWAki+SNtPtTVegmPLhI78lNPQTAcNQu1X2v5cApHAxGugDsQJ4x+AvFTpImRbTaus5BqjeMxRYGFuSMVDgtNj+YjN5PQS1fnwExjWFa+NZsvQRCxz/Q1cQxHpmS0Tp3gzd7gzaNNPF+J4tYQcyOJkgHIEBsa6YvySlGgEXDTp5/0Z/dwLHoDbFuql4yiUl0le5jWJPb36rHYw+dVk4A7p7QLcg7/cj7/WLLF/lx5OB4i0w90Ps6nuOk4xjEPpPtQgdE2k3Dt3Hmt8mSAco/S8Hs/iNrypyhIamQ8vvrCcTmQtZeoxoEu9xbcbsMPVZHcrSTYsvw5EFcOW/W5ZL2i/4dd2JS2+2E1w9tapHDoG+5vG89eNuCSqW8GVD8H5SmXT+W3k7FEZRCZimMLEgKFpoVwiuGjWcnwx03Zg+FdzgD90zhSEArIxZzBspGIuSrYgHEQb8bufw9D03WiHbWbq6yWAqR3KlUD3jYeDyLjdp/0TobcuLLvzsI0pOWjjji80/+k3cBssiyGryviJ3wGdDcNY8QCjefv7PhcBYADyz+vhYbxFqkaktGs+VQCJjdV4rRHHuhN9vioavOemxPqXzhn12lPocaqbS4/1O78N7kdx0+C17B6z1uOWWaWzvi/p4Zyqj/5Pp0jaB1ZtGYb7UgzJSWRwRHbzG2ueJF7Cc3xUmMNYfIbW2VLkmlQ8Jd0owU0WQ7hy+L6uKsuaw1SptxSGQm3/tzCkbKqxk/Woq7UWUDzHSUB7Kvl0P3rJUVbSjxtIYVjsJBdX+5ZQDRbpaS23RdMlRdtWYDs2wfNGtYETcfjdqhMOwtG2SkImrJoInkIgB7+dCr2k7DF1fJXvxupIlt4koQYbDesdgC1S3nyxveodYR3VrbL6F6wywxwDkVSh4DUQOudnFIH5iBJi2rdakUpntaoMC+42+3ApK930IWCjSi39+BZqSE7ao3e1QHeiqS1poUE/mSQcByanXusPbg2rXXMVrDkTNBc/dRMD/cmUklD3+GQU2m15+1Fm8puAN4gZZsK9AICS7NZj2VgfeSrCZtvSRZt9IosMAxwGodLUdxGFNCd1MOQXL3alQFth+TAIXl1h8sGHHNdM9X0U1dxQLzgIcESIx7q/YgNwEIIemfGALA6skmSPRzr4zB/BzqpheJGyXkfNzac58ajKS1XDucF5lQ==",
            "1; HE1PR0501MB2043;\n\t6:25n4cPsfU5/ic/DKP05Pp1z0jKqORmisaGlP47CnDoXCxhdrkRntY5Jkdu4d69ffXSyZfmWdVXKCAi/ipfRsc20v0kdr64tl9iD5yLuuI8bqVf4pR8u1bfguGNDjglNnN4S6/wTMtzYf7G2BKwf/s4jp4vjg718Byt50c6sxIYLbdBgfrAUF9cm7hXN1+QMl9I5qlBpgjR6VjUKBYk11ejw0/vyfAO9TdhEScD+kIGutzwut9LCW9IIHCDJNhcWUZmPyScceYmtNq1d+dyjiFShkxjyMX0gHEd4HXahBcjkpz4/mN6IJKM6kWb+IELtOs814U8iRPxkGZsInuqF4SC0qRUqFN3d1ehH++6URw/B9MCQFjGjhsa5470Gy2C0cXgs+UG7nuqSm/DOrpXegPVN+I5sCIL+fmmmlhdqAt4imrHU0BK30BG2mzrUbYK03XTWBKgI77oTJcWa4Mp/7Cg==;\n\t5:IJX3bQcS/xYegz66YM9OYjYKmQ7JIgdao9I+TIHohngyXP8ZQ1EKThzM7vgDAJBuvZbPWj2/5MOySDvhcuiN/CaPug8chMsI+YMnnWYt6HCBIgBBvfW/9OvLTDP1/a4B0LHC5sq2uOvMDnnXxWf/5yY4i7+kYgCp1t71aWoDqpg=;\n\t24:Rn9hSwkiouHS7JDfhdlcYSMTcF2mrV4dEscLjMS6NtmjER0twAJF9loTgpdEqel4Yi+YTJL/skR5cwvWwiT7omCTAUQrU0+ed1P+4E2+ZAk=",
            "1; HE1PR0501MB2043;\n\t7:6Q9GfCG3JKHa7X3okAxkaKa2yAEiPeO14Y0ZiraRIqTFEOJ+vbjKaAHjuyaiYeh3/H5x00OgTcDLo0mZ2eEkavBTPbuKd4y1SHxdW1amlTTrzPmFQ/x/96LMZ5huM/kR6INDWPjRkEcUK1t2dLMxHnpX6I9bS8Bh/EEP5jGIzUksDtoHWpEX4NEtLnvHbEJ8cHpDdWT+ZJetSy75nUlmRg57qKlpYHDy+g/zgC5vWD8loCprFC719JMODU+imdkz"
        ],
        "X-MS-TrafficTypeDiagnostic": "HE1PR0501MB2043:",
        "Cc": "dev@dpdk.org,\n\tshahafs@mellanox.com,\n\tYongseok Koh <yskoh@mellanox.com>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "Date": "Tue, 26 Jun 2018 05:39:24 -0700",
        "X-Microsoft-Antispam-PRVS": "<HE1PR0501MB20437904DD7860A7FEB7DA5EC3490@HE1PR0501MB2043.eurprd05.prod.outlook.com>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "Received-SPF": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "X-Originating-IP": "[209.116.155.178]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "c3a490cd-554a-4fd8-20ca-08d5db61ee91",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=nNmJ/JTZve/gbkDt6yMSoF6H/bg5Jh+AIwIa7FqiSQI=;\n\tb=SC0LAGIXAq4ereVAhJXl70EWVofh+5dzMwR93KGQGetZTF5enrrZSbAubyaKlFU3IqxW2rt2jcefYjAUqmFjPfKwUl7IDUJE2XKp1C9QA1UKkeG6hoJEY4g6wnmmsZndB4soQIJu2NPoRxRF7wWoS5uuZ0IHy+xPbNNkIo8kQC8=",
        "SpamDiagnosticOutput": "1:99",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=yskoh@mellanox.com; ",
        "Delivered-To": "patchwork@dpdk.org",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016);\n\tSRVR:HE1PR0501MB2043; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2043; ",
        "SpamDiagnosticMetadata": "NSPM",
        "X-Mailer": "git-send-email 2.11.0",
        "X-OriginatorOrg": "Mellanox.com",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-PublicTrafficType": "Email",
        "Precedence": "list",
        "X-Forefront-PRVS": "071518EF63",
        "X-BeenThere": "dev@dpdk.org",
        "Subject": "[dpdk-dev] [PATCH v2 4/5] net/mlx5: use stride index in Rx\n\tcompletion entry",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "HE1PR0501MB2043",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(396003)(346002)(136003)(39860400002)(376002)(366004)(189003)(199004)(66066001)(7736002)(956004)(478600001)(386003)(8676002)(48376002)(50466002)(486006)(107886003)(86362001)(16586007)(47776003)(316002)(186003)(68736007)(6666003)(4326008)(69596002)(25786009)(2616005)(11346002)(305945005)(476003)(446003)(81166006)(81156014)(21086003)(55016002)(2906002)(53936002)(76176011)(51416003)(97736004)(26005)(1076002)(105586002)(7696005)(5660300001)(36756003)(50226002)(3846002)(52116002)(6116002)(106356001)(8936002)(16526019)(14444005);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2043; H:mellanox.com; FPR:;\n\tSPF:None; \n\tLANG:en; PTR:InfoNoRecords; MX:1; A:1; "
    },
    "content": "Multi-Packet Receive Queue is to receive multiple packets on a single large\nbuffer. The number of consumed strides in CQE is accumulated to keep track\nof the current stride index. However, it is safer to directly use stride\nindex in CQE to avoid out-of-order situation which can possibly be caused\nby introducing LRO in the future.\n\nIf Rx CQE compression is enabled, HW can be configured to store the stride\nindex in a mini-CQE but this will need newer version of library/driver.\nTherefore, since this change, MPRQ is only supported with the newer\nlibrary/driver and Rx hash result is not supported if MPRQ is enabled along\nwith Rx CQE compression.\n\nSigned-off-by: Yongseok Koh <yskoh@mellanox.com>\nAcked-by: Shahaf Shuler <shahafs@mellanox.com>\n---\n doc/guides/nics/mlx5.rst     |  4 ++++\n drivers/net/mlx5/Makefile    |  2 +-\n drivers/net/mlx5/mlx5_rxq.c  |  8 +++++++-\n drivers/net/mlx5/mlx5_rxtx.c | 41 +++++++++++++++++++++++------------------\n drivers/net/mlx5/mlx5_rxtx.h |  2 +-\n 5 files changed, 36 insertions(+), 21 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst\nindex 79c982e29..7dd9c1c5e 100644\n--- a/doc/guides/nics/mlx5.rst\n+++ b/doc/guides/nics/mlx5.rst\n@@ -132,6 +132,10 @@ Limitations\n   the external buffers will be freed by PMD and the application which still\n   holds the external buffers may be corrupted.\n \n+- If Multi-Packet Rx queue is configured (``mprq_en``) and Rx CQE compression is\n+  enabled (``rxq_cqe_comp_en``) at the same time, RSS hash result is not fully\n+  supported. Some Rx packets may not have PKT_RX_RSS_HASH.\n+\n Statistics\n ----------\n \ndiff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile\nindex 8a5229e61..955861a41 100644\n--- a/drivers/net/mlx5/Makefile\n+++ b/drivers/net/mlx5/Makefile\n@@ -100,7 +100,7 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh\n \t$Q sh -- '$<' '$@' \\\n \t\tHAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT \\\n \t\tinfiniband/mlx5dv.h \\\n-\t\tenum MLX5DV_CONTEXT_MASK_STRIDING_RQ \\\n+\t\tenum MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX \\\n \t\t$(AUTOCONF_OUTPUT)\n \t$Q sh -- '$<' '$@' \\\n \t\tHAVE_IBV_DEVICE_TUNNEL_SUPPORT \\\ndiff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex 17db7c160..08dd5596b 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -818,7 +818,13 @@ mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx)\n \tif (config->cqe_comp && !rxq_data->hw_timestamp) {\n \t\tattr.cq.mlx5.comp_mask |=\n \t\t\tMLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE;\n+#ifdef HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT\n+\t\tattr.cq.mlx5.cqe_comp_res_format =\n+\t\t\tmprq_en ? MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX :\n+\t\t\t\t  MLX5DV_CQE_RES_FORMAT_HASH;\n+#else\n \t\tattr.cq.mlx5.cqe_comp_res_format = MLX5DV_CQE_RES_FORMAT_HASH;\n+#endif\n \t\t/*\n \t\t * For vectorized Rx, it must not be doubled in order to\n \t\t * make cq_ci and rq_ci aligned.\n@@ -976,7 +982,7 @@ mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx)\n \trxq_data->rq_db = rwq.dbrec;\n \trxq_data->cqe_n = log2above(cq_info.cqe_cnt);\n \trxq_data->cq_ci = 0;\n-\trxq_data->strd_ci = 0;\n+\trxq_data->consumed_strd = 0;\n \trxq_data->rq_pi = 0;\n \trxq_data->zip = (struct rxq_zip){\n \t\t.ai = 0,\ndiff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c\nindex a4e15c519..a7ed8d8e4 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.c\n+++ b/drivers/net/mlx5/mlx5_rxtx.c\n@@ -2108,7 +2108,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \tvolatile struct mlx5_cqe *cqe = &(*rxq->cqes)[rxq->cq_ci & cq_mask];\n \tunsigned int i = 0;\n \tuint16_t rq_ci = rxq->rq_ci;\n-\tuint16_t strd_idx = rxq->strd_ci;\n+\tuint16_t consumed_strd = rxq->consumed_strd;\n \tstruct mlx5_mprq_buf *buf = (*rxq->mprq_bufs)[rq_ci & wq_mask];\n \n \twhile (i < pkts_n) {\n@@ -2116,13 +2116,14 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\tvoid *addr;\n \t\tint ret;\n \t\tunsigned int len;\n-\t\tuint16_t consumed_strd;\n+\t\tuint16_t strd_cnt;\n+\t\tuint16_t strd_idx;\n \t\tuint32_t offset;\n \t\tuint32_t byte_cnt;\n \t\tvolatile struct mlx5_mini_cqe8 *mcqe = NULL;\n-\t\tuint32_t rss_hash_res;\n+\t\tuint32_t rss_hash_res = 0;\n \n-\t\tif (strd_idx == strd_n) {\n+\t\tif (consumed_strd == strd_n) {\n \t\t\t/* Replace WQE only if the buffer is still in use. */\n \t\t\tif (rte_atomic16_read(&buf->refcnt) > 1) {\n \t\t\t\tmprq_buf_replace(rxq, rq_ci & wq_mask);\n@@ -2142,7 +2143,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\t\t\trxq->mprq_repl = rep;\n \t\t\t}\n \t\t\t/* Advance to the next WQE. */\n-\t\t\tstrd_idx = 0;\n+\t\t\tconsumed_strd = 0;\n \t\t\t++rq_ci;\n \t\t\tbuf = (*rxq->mprq_bufs)[rq_ci & wq_mask];\n \t\t}\n@@ -2156,14 +2157,21 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\tcontinue;\n \t\t}\n \t\tbyte_cnt = ret;\n-\t\tconsumed_strd = (byte_cnt & MLX5_MPRQ_STRIDE_NUM_MASK) >>\n-\t\t\t\tMLX5_MPRQ_STRIDE_NUM_SHIFT;\n-\t\tassert(consumed_strd);\n-\t\t/* Calculate offset before adding up stride index. */\n-\t\toffset = strd_idx * strd_sz + strd_shift;\n-\t\tstrd_idx += consumed_strd;\n+\t\tstrd_cnt = (byte_cnt & MLX5_MPRQ_STRIDE_NUM_MASK) >>\n+\t\t\t   MLX5_MPRQ_STRIDE_NUM_SHIFT;\n+\t\tassert(strd_cnt);\n+\t\tconsumed_strd += strd_cnt;\n \t\tif (byte_cnt & MLX5_MPRQ_FILLER_MASK)\n \t\t\tcontinue;\n+\t\tif (mcqe == NULL) {\n+\t\t\trss_hash_res = rte_be_to_cpu_32(cqe->rx_hash_res);\n+\t\t\tstrd_idx = rte_be_to_cpu_16(cqe->wqe_counter);\n+\t\t} else {\n+\t\t\t/* mini-CQE for MPRQ doesn't have hash result. */\n+\t\t\tstrd_idx = rte_be_to_cpu_16(mcqe->stride_idx);\n+\t\t}\n+\t\tassert(strd_idx < strd_n);\n+\t\tassert(!((rte_be_to_cpu_16(cqe->wqe_id) ^ rq_ci) & wq_mask));\n \t\t/*\n \t\t * Currently configured to receive a packet per a stride. But if\n \t\t * MTU is adjusted through kernel interface, device could\n@@ -2171,7 +2179,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t * case, the packet should be dropped because it is bigger than\n \t\t * the max_rx_pkt_len.\n \t\t */\n-\t\tif (unlikely(consumed_strd > 1)) {\n+\t\tif (unlikely(strd_cnt > 1)) {\n \t\t\t++rxq->stats.idropped;\n \t\t\tcontinue;\n \t\t}\n@@ -2184,6 +2192,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\tassert((int)len >= (rxq->crc_present << 2));\n \t\tif (rxq->crc_present)\n \t\t\tlen -= ETHER_CRC_LEN;\n+\t\toffset = strd_idx * strd_sz + strd_shift;\n \t\taddr = RTE_PTR_ADD(mlx5_mprq_buf_addr(buf), offset);\n \t\t/* Initialize the offload flag. */\n \t\tpkt->ol_flags = 0;\n@@ -2206,7 +2215,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t} else {\n \t\t\trte_iova_t buf_iova;\n \t\t\tstruct rte_mbuf_ext_shared_info *shinfo;\n-\t\t\tuint16_t buf_len = consumed_strd * strd_sz;\n+\t\t\tuint16_t buf_len = strd_cnt * strd_sz;\n \n \t\t\t/* Increment the refcnt of the whole chunk. */\n \t\t\trte_atomic16_add_return(&buf->refcnt, 1);\n@@ -2242,10 +2251,6 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t}\n-\t\t/* If compressed, take hash result from mini-CQE. */\n-\t\trss_hash_res = rte_be_to_cpu_32(mcqe == NULL ?\n-\t\t\t\t\t\tcqe->rx_hash_res :\n-\t\t\t\t\t\tmcqe->rx_hash_result);\n \t\trxq_cq_to_mbuf(rxq, pkt, cqe, rss_hash_res);\n \t\tPKT_LEN(pkt) = len;\n \t\tDATA_LEN(pkt) = len;\n@@ -2259,7 +2264,7 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t++i;\n \t}\n \t/* Update the consumer indexes. */\n-\trxq->strd_ci = strd_idx;\n+\trxq->consumed_strd = consumed_strd;\n \trte_cio_wmb();\n \t*rxq->cq_db = rte_cpu_to_be_32(rxq->cq_ci);\n \tif (rq_ci != rxq->rq_ci) {\ndiff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h\nindex 04a432adf..0007be08b 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.h\n+++ b/drivers/net/mlx5/mlx5_rxtx.h\n@@ -93,7 +93,7 @@ struct mlx5_rxq_data {\n \tvolatile uint32_t *cq_db;\n \tuint16_t port_id;\n \tuint16_t rq_ci;\n-\tuint16_t strd_ci; /* Stride index in a WQE for Multi-Packet RQ. */\n+\tuint16_t consumed_strd; /* Number of consumed strides in WQE. */\n \tuint16_t rq_pi;\n \tuint16_t cq_ci;\n \tstruct mlx5_mr_ctrl mr_ctrl; /* MR control descriptor. */\n",
    "prefixes": [
        "v2",
        "4/5"
    ]
}