get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 125500,
    "url": "https://patches.dpdk.org/api/patches/125500/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230324032615.4141031-1-dongzhou@nvidia.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20230324032615.4141031-1-dongzhou@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230324032615.4141031-1-dongzhou@nvidia.com",
    "date": "2023-03-24T03:26:15",
    "name": "[RFC] ethdev: add flow item for RoCE infiniband BTH",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b4d2766cc7e17620fc33d4e5a02309497a3dd83f",
    "submitter": {
        "id": 2011,
        "url": "https://patches.dpdk.org/api/people/2011/?format=api",
        "name": "Dong Zhou",
        "email": "dongzhou@nvidia.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20230324032615.4141031-1-dongzhou@nvidia.com/mbox/",
    "series": [
        {
            "id": 27533,
            "url": "https://patches.dpdk.org/api/series/27533/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=27533",
            "date": "2023-03-24T03:26:15",
            "name": "[RFC] ethdev: add flow item for RoCE infiniband BTH",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/27533/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/125500/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/125500/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 6A4194281E;\n\tFri, 24 Mar 2023 04:27:28 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id EEC50406B8;\n\tFri, 24 Mar 2023 04:27:27 +0100 (CET)",
            "from NAM10-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam10on2086.outbound.protection.outlook.com [40.107.93.86])\n by mails.dpdk.org (Postfix) with ESMTP id CE85C4068E\n for <dev@dpdk.org>; Fri, 24 Mar 2023 04:27:26 +0100 (CET)",
            "from BN9PR03CA0988.namprd03.prod.outlook.com (2603:10b6:408:109::33)\n by SJ1PR12MB6097.namprd12.prod.outlook.com (2603:10b6:a03:488::6)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38; Fri, 24 Mar\n 2023 03:27:24 +0000",
            "from BN8NAM11FT052.eop-nam11.prod.protection.outlook.com\n (2603:10b6:408:109:cafe::7e) by BN9PR03CA0988.outlook.office365.com\n (2603:10b6:408:109::33) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38 via Frontend\n Transport; Fri, 24 Mar 2023 03:27:23 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n BN8NAM11FT052.mail.protection.outlook.com (10.13.177.210) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6222.22 via Frontend Transport; Fri, 24 Mar 2023 03:27:23 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 23 Mar 2023\n 20:27:12 -0700",
            "from nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 23 Mar\n 2023 20:27:09 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=d1oLUQR0L7EYEMYwat1EbIXs0mrP0OeOmgG5npPVcQ9ezojsLRe9jImCOFZBAIpP7otf+2XsvGde637jVrU7TA6/ivkVN6K/H9pOKRM66DJ2PpeJ4fpYjfDcF1tO6npWtkzPK/GvcyL7qD1XVV3lBn+7ir5h6RmN7SlbZ4QuUCsdUfpjM2o1P1AfEK1HowNPFqYnpomv5Ac/Hc/mPdFmYWJ3ESrw92LSxFk1eDebOsfkupgaUS+PvGuRufvFduriFZWC8Olf7hFaG+OqpjmENs+g9sBli+Nt2hZKhZg7MQZoucPkypJIVdJhCxSgbAcg6dhAoZ6NlHEF+FBMSAxk3A==",
        "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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=PEFea37agfGB4hpUuh26JPti8D7vVX4rELuzoA7KgMk=;\n b=eLr7d2C+Q2Vj5Rbrv96OqfqaWC26dZQBuT1d+CJuOSjciuEPDXAqlJA+TM+5OseI3Hoh24SCwUVY/tt6mdv8ua2tp1DZqopyhcHaV7GdkVOr+4JsSAKBhY6FW2AqogcvN5COCqfHi67YoBNITepLIJx1TlZW5AgV78phrrwZFyRXkgweMhzfK8A9PQAkRuEmLDsvHzMtvI2NxCsvk+boOB21orGCvjxy0tXwNnS15286DaY/5ZsFXSM4vFpMjJWWsZ8slV8qXzgfLK21Q6WsQxJGukurL4H8rc9YiFa2VvOIETFNMSkW5h12pp5oZc/IOvckXMUoeLXA+FCF6AHetw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=monjalon.net smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject 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=PEFea37agfGB4hpUuh26JPti8D7vVX4rELuzoA7KgMk=;\n b=ICB3g4TudNy5VPIb2oV5ddZ77I+2eX7Do1aMOVpB7lv53OxqBrhCkT3WoUeuNjomOYpqQIni1G2Zve7wZU0f3lF6o0nkwYaH7phvvT35GD5EZs+kfAqHJkkk/Or0GM/IKHFAQ3C38OSpgDO3jsY5jHDP9G41QegNebEBpSl8eXvvz7++3uJ/f0DPBlOWlRcgASuxYtzCsJpvs/eQZmYdUNDuOX6Q5pAddKVvmrTZ+1ZCgufqYwFAU3ztS4m4j+YrFyzjtyjlQBRzjWYwGJRgBZvC10GfDEsqfAUJyzta8lfvAGWt+afqclEao2JWjF/sy73YTjFO6Oz81vOfrU/jIg==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.161)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C",
        "From": "dong zhou <dongzhou@nvidia.com>",
        "To": "<orika@nvidia.com>, <thomas@monjalon.net>, Aman Singh\n <aman.deep.singh@intel.com>, Yuying Zhang <yuying.zhang@intel.com>, \"Ferruh\n Yigit\" <ferruh.yigit@amd.com>, Andrew Rybchenko\n <andrew.rybchenko@oktetlabs.ru>, Olivier Matz <olivier.matz@6wind.com>",
        "CC": "<dev@dpdk.org>, <rasland@nvidia.com>, Dong Zhou <dongzhou@nvidia.com>",
        "Subject": "[RFC PATCH] ethdev: add flow item for RoCE infiniband BTH",
        "Date": "Fri, 24 Mar 2023 06:26:15 +0300",
        "Message-ID": "<20230324032615.4141031-1-dongzhou@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.230.37]",
        "X-ClientProxiedBy": "rnnvmail203.nvidia.com (10.129.68.9) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN8NAM11FT052:EE_|SJ1PR12MB6097:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "7e642fb1-9736-40c0-aebd-08db2c17af39",
        "X-LD-Processed": "43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n UVPidcYmH0mHSOb+3LsSFBn3CnUCT403rWcAgEZ95obwCwRZKv44OeFM4l/j7etUfOscOJj9B79uTEj4SZlgvzRxoAtlps4Y/ua++HQwYAbriJuRNlzOHqP+TV+ylLHqwFJsFN//YZZJ1gkxlRrPCGderW1nR3BVMB2HA6vvALekpLEd3t0xYdhqHwUcGy/nzcmqvsJPDYixn/zT4ySgkS4YmpPwmipBn5mNCk1qxnCJR7bQL491f65qtupq9nxIqAog1FKa+qmOWLMwElrwZeU584CNHHpk+GHiwUrIbj0RsQIeHK/q0G6Smcu7B7BLdCkkQ6PXCd9qvritVT+HXFnXa3Y6HGGzrjY9U1+y0+IeRLJhbUlm0ZEU/XET4+G4QP50QC5Vra+n3BDw2ED1N3Jzpr4C7qGVPBAnuKDAgPmi7+pixGVTg4ZCE/AUKA/H/OADI2aND+QEWh9T5v6K8IeMUMnhcyfdWo7xgEcRpqTTjjOpnntdz2UnoXDtv9FrOpxlMTN1vDcxhv0k85JDuNehydnNDTlV1mNsEei1CzGDFwoZDq8i17V1Sy5incPkg/VDoC36ekZscPZdrXE4s6zc1TXhqOgV3CeuMrRX+Hg9cMU2rZUukhfDQMMmXS1d6yiagvDR8VxeLRKbC7SyAl8wKV9MIDmUxOeN9mz9HkXtUgQZun+0GWlfeALIim3xEvDdp1KNkAoLDWyc3vyb3HfVSiSqZGyjOYuK7/ghkgow4z+swooHGonBFX+9OmEx",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE;\n SFS:(13230025)(4636009)(396003)(136003)(376002)(39860400002)(346002)(451199018)(46966006)(36840700001)(40470700004)(47076005)(478600001)(66574015)(426003)(1076003)(6666004)(107886003)(16526019)(6286002)(186003)(26005)(55016003)(40480700001)(86362001)(36756003)(7696005)(2906002)(336012)(40460700003)(8936002)(82310400005)(2616005)(5660300002)(356005)(8676002)(4326008)(70586007)(70206006)(83380400001)(316002)(36860700001)(110136005)(41300700001)(7636003)(54906003)(82740400003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "24 Mar 2023 03:27:23.6689 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 7e642fb1-9736-40c0-aebd-08db2c17af39",
        "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.117.161];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT052.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ1PR12MB6097",
        "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"
    },
    "content": "From: Dong Zhou <dongzhou@nvidia.com>\n\nIB(InfiniBand) is one type of networking used in high-performance\ncomputing with high throughput and low latency. Like Ethernet,\nIB defines a layered protocol (Physical, Link, Network, Transport\nLayers). IB provides native support for RDMA(Remote DMA), an\nextension of the DMA that allows direct access to remote host\nmemory without CPU intervention. IB network requires NICs and\nswitches to support the IB protocol.\n\nRoCE(RDMA over Converged Ethernet) is a network protocol that\nallows RDMA to run on Ethernet. RoCE encapsulates IB packets on\nethernet and has two versions, RoCEv1 and RoCEv2. RoCEv1 is an\nethernet link layer protocol, IB packets are encapsulated in the\nethernet layer and use ethernet type 0x8915. RoCEv2 is an internet\nlayer protocol, IB packets are encapsulated in UDP payload and\nuse a destination port 4791, The format of the RoCEv2 packet is\nas follows:\n  ETH + IP + UDP(dport 4791) + IB(BTH + ExtHDR + PAYLOAD + CRC)\n\nBTH(Base Transport Header) is the IB transport layer header, RoCEv1\nand RoCEv2 both contain this header. This patch introduces a new\nRTE item to match the IB BTH in RoCE packets. One use of this match\nis that the user can monitor RoCEv2's CNP(Congestion Notification\nPacket) by matching BTH opcode 0x81.\n\nThis patch also adds the testpmd command line to match the RoCEv2\nBTH. Usage example:\n\n  testpmd> flow create 0 group 1 ingress pattern\n           eth / ipv4 / udp dst is 4791 / ib_bth opcode is 0x81\n           dst_qp is 0xd3 / end actions queue index 0 / end\n\nSigned-off-by: Dong Zhou <dongzhou@nvidia.com>\n---\n app/test-pmd/cmdline_flow.c                 | 58 ++++++++++++++++++\n doc/guides/nics/features/default.ini        |  1 +\n doc/guides/prog_guide/rte_flow.rst          |  7 +++\n doc/guides/testpmd_app_ug/testpmd_funcs.rst |  6 ++\n lib/ethdev/rte_flow.c                       |  1 +\n lib/ethdev/rte_flow.h                       | 27 ++++++++\n lib/net/rte_ib.h                            | 68 +++++++++++++++++++++\n 7 files changed, 168 insertions(+)\n create mode 100644 lib/net/rte_ib.h",
    "diff": "diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex 5fbc450849..3ff33b281d 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -531,6 +531,11 @@ enum index {\n \tITEM_QUOTA_STATE_NAME,\n \tITEM_PORT_AFFINITY,\n \tITEM_PORT_AFFINITY_VALUE,\n+\tITEM_IB_BTH,\n+\tITEM_IB_BTH_OPCODE,\n+\tITEM_IB_BTH_PKEY,\n+\tITEM_IB_BTH_DST_QPN,\n+\tITEM_IB_BTH_PSN,\n \n \t/* Validate/create actions. */\n \tACTIONS,\n@@ -1517,6 +1522,7 @@ static const enum index next_item[] = {\n \tITEM_QUOTA,\n \tITEM_PORT_AFFINITY,\n \tITEM_IPSEC_SYNDROME,\n+\tITEM_IB_BTH,\n \tEND_SET,\n \tZERO,\n };\n@@ -2025,6 +2031,15 @@ static const enum index item_ipsec_syndrome[] = {\n \tZERO,\n };\n \n+static const enum index item_ib_bth[] = {\n+\tITEM_IB_BTH_OPCODE,\n+\tITEM_IB_BTH_PKEY,\n+\tITEM_IB_BTH_DST_QPN,\n+\tITEM_IB_BTH_PSN,\n+\tITEM_NEXT,\n+\tZERO,\n+};\n+\n static const enum index next_action[] = {\n \tACTION_END,\n \tACTION_VOID,\n@@ -5750,6 +5765,46 @@ static const struct token token_list[] = {\n \t\t.args = ARGS(ARGS_ENTRY(struct mlx5_flow_item_ipsec_syndrome,\n \t\t\t\t\tsyndrome)),\n \t},\n+\t[ITEM_IB_BTH] = {\n+\t\t.name = \"ib_bth\",\n+\t\t.help = \"match ib bth fields\",\n+\t\t.priv = PRIV_ITEM(IB_BTH,\n+\t\t\t\t  sizeof(struct rte_flow_item_ib_bth)),\n+\t\t.next = NEXT(item_ib_bth),\n+\t\t.call = parse_vc,\n+\t},\n+\t[ITEM_IB_BTH_OPCODE] = {\n+\t\t.name = \"opcode\",\n+\t\t.help = \"match ib bth opcode\",\n+\t\t.next = NEXT(item_ib_bth, NEXT_ENTRY(COMMON_UNSIGNED),\n+\t\t\t\t item_param),\n+\t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ib_bth,\n+\t\t\t\t\t\t hdr.opcode)),\n+\t},\n+\t[ITEM_IB_BTH_PKEY] = {\n+\t\t.name = \"pkey\",\n+\t\t.help = \"partition key\",\n+\t\t.next = NEXT(item_ib_bth, NEXT_ENTRY(COMMON_UNSIGNED),\n+\t\t\t\t item_param),\n+\t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ib_bth,\n+\t\t\t\t\t\t hdr.pkey)),\n+\t},\n+\t[ITEM_IB_BTH_DST_QPN] = {\n+\t\t.name = \"dst_qp\",\n+\t\t.help = \"destination qp\",\n+\t\t.next = NEXT(item_ib_bth, NEXT_ENTRY(COMMON_UNSIGNED),\n+\t\t\t\t item_param),\n+\t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ib_bth,\n+\t\t\t\t\t\t hdr.dst_qp)),\n+\t},\n+\t[ITEM_IB_BTH_PSN] = {\n+\t\t.name = \"psn\",\n+\t\t.help = \"packet sequence number\",\n+\t\t.next = NEXT(item_ib_bth, NEXT_ENTRY(COMMON_UNSIGNED),\n+\t\t\t\t item_param),\n+\t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ib_bth,\n+\t\t\t\t\t\t hdr.psn)),\n+\t},\n \t/* Validate/create actions. */\n \t[ACTIONS] = {\n \t\t.name = \"actions\",\n@@ -12634,6 +12689,9 @@ flow_item_default_mask(const struct rte_flow_item *item)\n \tcase RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT:\n \t\tmask = &ipv6_routing_ext_default_mask;\n \t\tbreak;\n+\tcase RTE_FLOW_ITEM_TYPE_IB_BTH:\n+\t\tmask = &rte_flow_item_ib_bth_mask;\n+\t\tbreak;\n \tdefault:\n \t\tbreak;\n \t}\ndiff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini\nindex 510cc6679d..54045a29a0 100644\n--- a/doc/guides/nics/features/default.ini\n+++ b/doc/guides/nics/features/default.ini\n@@ -103,6 +103,7 @@ gtpc                 =\n gtpu                 =\n gtp_psc              =\n higig2               =\n+ib_bth               =\n icmp                 =\n icmp6                =\n icmp6_nd_na          =\ndiff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst\nindex 1d81334e96..363bbdd5d8 100644\n--- a/doc/guides/prog_guide/rte_flow.rst\n+++ b/doc/guides/prog_guide/rte_flow.rst\n@@ -1574,6 +1574,13 @@ Matches ipv6 routing extension header.\n - ``type``: IPv6 routing extension header type.\n - ``segments_left``: How many IPv6 destination addresses carries on\n \n+Item: ``IB_BTH``\n+^^^^^^^^^^^^^^^^\n+\n+Matches an InfiniBand base transport header in RoCE packet.\n+\n+- ``hdr``: InfiniBand base transport header definition (``rte_ib.h``).\n+\n Actions\n ~~~~~~~\n \ndiff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst\nindex 0c3317ee06..de90958596 100644\n--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst\n+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst\n@@ -3741,6 +3741,12 @@ This section lists supported pattern items and their attributes, if any.\n \n - ``send_to_kernel``: send packets to kernel.\n \n+- ``ib_bth``: match InfiniBand BTH(base transport header).\n+\n+  - ``opcode {unsigned}``: Opcode.\n+  - ``pkey {unsigned}``: Partition key.\n+  - ``dst_qp {unsigned}``: Destination Queue Pair.\n+  - ``psn {unsigned}``: Packet Sequence Number.\n \n Actions list\n ^^^^^^^^^^^^\ndiff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c\nindex 515edb0c01..61066aa615 100644\n--- a/lib/ethdev/rte_flow.c\n+++ b/lib/ethdev/rte_flow.c\n@@ -179,6 +179,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {\n \tMK_FLOW_ITEM(PORT_AFFINITY, sizeof(struct rte_flow_item_port_affinity)),\n \tMK_FLOW_ITEM_FN(IPV6_ROUTING_EXT, sizeof(struct rte_flow_item_ipv6_routing_ext),\n \t\t\trte_flow_item_ipv6_routing_ext_conv),\n+\tMK_FLOW_ITEM(IB_BTH, sizeof(struct rte_flow_item_ib_bth)),\n };\n \n /** Generate flow_action[] entry. */\ndiff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h\nindex 1590cd0498..d78bcf17cd 100644\n--- a/lib/ethdev/rte_flow.h\n+++ b/lib/ethdev/rte_flow.h\n@@ -38,6 +38,7 @@\n #include <rte_ppp.h>\n #include <rte_gre.h>\n #include <rte_macsec.h>\n+#include <rte_ib.h>\n \n #ifdef __cplusplus\n extern \"C\" {\n@@ -691,6 +692,13 @@ enum rte_flow_item_type {\n \t * See struct rte_flow_item_ipv6_routing_ext.\n \t */\n \tRTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT,\n+\n+\t/**\n+\t * Matches an InfiniBand base transport header in RoCE packet.\n+\t *\n+\t * See struct rte_flow_item_ib_bth.\n+\t */\n+\tRTE_FLOW_ITEM_TYPE_IB_BTH,\n };\n \n /**\n@@ -2284,6 +2292,25 @@ rte_flow_item_port_affinity_mask = {\n };\n #endif\n \n+/**\n+ * RTE_FLOW_ITEM_TYPE_IB_BTH.\n+ *\n+ * Matches an InfiniBand base transport header in RoCE packet.\n+ */\n+struct rte_flow_item_ib_bth {\n+\tstruct rte_ib_bth hdr; /**< InfiniBand base transport header definition. */\n+};\n+\n+/** Default mask for RTE_FLOW_ITEM_TYPE_IB_BTH. */\n+#ifndef __cplusplus\n+static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask = {\n+\t.hdr = {\n+\t\t.opcode = 0xff,\n+\t\t.dst_qp = \"\\xff\\xff\\xff\",\n+\t},\n+};\n+#endif\n+\n /**\n  * Action types.\n  *\ndiff --git a/lib/net/rte_ib.h b/lib/net/rte_ib.h\nnew file mode 100644\nindex 0000000000..c1b2797815\n--- /dev/null\n+++ b/lib/net/rte_ib.h\n@@ -0,0 +1,68 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright (c) 2023 NVIDIA Corporation & Affiliates\n+ */\n+\n+#ifndef RTE_IB_H\n+#define RTE_IB_H\n+\n+/**\n+ * @file\n+ *\n+ * InfiniBand headers definitions\n+ *\n+ * The infiniBand headers are used by RoCE (RDMA over Converged Ethernet).\n+ */\n+\n+#include <stdint.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/**\n+ * InfiniBand Base Transport Header according to\n+ * IB Specification Vol 1-Release-1.4.\n+ */\n+__extension__\n+struct rte_ib_bth {\n+\tuint8_t\topcode;\t\t/**< Opcode. */\n+#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n+\tuint8_t\ttver:4;\t\t/**< Transport Header Version. */\n+\tuint8_t\tpadcnt:2;\t/**< Pad Count. */\n+\tuint8_t\tm:1;\t\t/**< MigReq. */\n+\tuint8_t\tse:1;\t\t/**< Solicited Event. */\n+#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n+\tuint8_t\tse:1;\t\t/**< Solicited Event. */\n+\tuint8_t\tm:1;\t\t/**< MigReq. */\n+\tuint8_t\tpadcnt:2;\t/**< Pad Count. */\n+\tuint8_t\ttver:4;\t\t/**< Transport Header Version. */\n+#endif\n+\trte_be16_t pkey;\t/**< Partition key. */\n+#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n+\tuint8_t\trsvd0:6;\t/**< Reserved. */\n+\tuint8_t\tb:1;\t\t/**< BECN. */\n+\tuint8_t\tf:1;\t\t/**< FECN. */\n+#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n+\tuint8_t\tf:1;\t\t/**< FECN. */\n+\tuint8_t\tb:1;\t\t/**< BECN. */\n+\tuint8_t\trsvd0:6;\t/**< Reserved. */\n+#endif\n+\tuint8_t\tdst_qp[3];\t/**< Destination QP */\n+#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n+\tuint8_t\trsvd1:7;\t/**< Reserved. */\n+\tuint8_t\ta:1;\t\t/**< Acknowledge Request. */\n+#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n+\tuint8_t\ta:1;\t\t/**< Acknowledge Request. */\n+\tuint8_t\trsvd1:7;\t/**< Reserved. */\n+#endif\n+\tuint8_t\tpsn[3];\t\t/**< Packet Sequence Number */\n+} __rte_packed;\n+\n+/** RoCEv2 default port. */\n+#define RTE_ROCEV2_DEFAULT_PORT 4791\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* RTE_IB_H */\n",
    "prefixes": [
        "RFC"
    ]
}