Show a patch.

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

{
    "id": 74461,
    "url": "https://patches.dpdk.org/api/patches/74461/",
    "web_url": "https://patches.dpdk.org/patch/74461/",
    "project": {
        "id": 1,
        "url": "https://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": "<1595226378-81144-2-git-send-email-orika@mellanox.com>",
    "date": "2020-07-20T06:26:05",
    "name": "[v6,01/13] regex/mlx5: add RegEx PMD layer and mlx5 driver",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "9a5139781adbc5aa30a075d5580c2f3250f65add",
    "submitter": {
        "id": 795,
        "url": "https://patches.dpdk.org/api/people/795/",
        "name": "Ori Kam",
        "email": "orika@mellanox.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/patch/74461/mbox/",
    "series": [
        {
            "id": 11159,
            "url": "https://patches.dpdk.org/api/series/11159/",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=11159",
            "date": "2020-07-20T06:26:04",
            "name": "add Mellanox RegEx PMD",
            "version": 6,
            "mbox": "https://patches.dpdk.org/series/11159/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/74461/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/74461/checks/",
    "tags": {},
    "headers": {
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "List-Post": "<mailto:dev@dpdk.org>",
        "References": "<1593941027-86651-1-git-send-email-orika@mellanox.com>\n <1595226378-81144-1-git-send-email-orika@mellanox.com>",
        "X-BeenThere": "dev@dpdk.org",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "Subject": "[dpdk-dev] [PATCH v6 01/13] regex/mlx5: add RegEx PMD layer and\n\tmlx5 driver",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "From": "Ori Kam <orika@mellanox.com>",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 317D1A0540;\n\tMon, 20 Jul 2020 08:26:40 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id E1DB22C2B;\n\tMon, 20 Jul 2020 08:26:30 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id 220AC2BF3\n for <dev@dpdk.org>; Mon, 20 Jul 2020 08:26:28 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n orika@mellanox.com) with SMTP; 20 Jul 2020 09:26:24 +0300",
            "from pegasus04.mtr.labs.mlnx. (pegasus04.mtr.labs.mlnx\n [10.210.16.126])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 06K6QKud008177;\n Mon, 20 Jul 2020 09:26:24 +0300"
        ],
        "To": "jerinj@marvell.com, xiang.w.wang@intel.com, matan@mellanox.com,\n viacheslavo@mellanox.com, Thomas Monjalon <thomas@monjalon.net>,\n John McNamara <john.mcnamara@intel.com>,\n Marko Kovacevic <marko.kovacevic@intel.com>,\n Parav Pandit <parav@mellaox.com>, Shahaf Shuler <shahafs@mellanox.com>,\n Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "Date": "Mon, 20 Jul 2020 06:26:05 +0000",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "In-Reply-To": "<1595226378-81144-1-git-send-email-orika@mellanox.com>",
        "Cc": "guyk@marvell.com, dev@dpdk.org, pbhagavatula@marvell.com,\n hemant.agrawal@nxp.com, opher@mellanox.com, alexr@mellanox.com,\n dovrat@marvell.com, pkapoor@marvell.com, nipun.gupta@nxp.com,\n bruce.richardson@intel.com, yang.a.hong@intel.com,\n harry.chang@intel.com, gu.jian1@zte.com.cn, shanjiangh@chinatelecom.cn,\n zhangy.yun@chinatelecom.cn, lixingfu@huachentel.com,\n wushuai@inspur.com, yuyingxia@yxlink.com, fanchenggang@sunyainfo.com,\n davidfgao@tencent.com, liuzhong1@chinaunicom.cn, zhaoyong11@huawei.com,\n oc@yunify.com, jim@netgate.com, hongjun.ni@intel.com, deri@ntop.org,\n fc@napatech.com, arthur.su@lionic.com, orika@mellanox.com,\n rasland@mellanox.com, Yuval Avnery <yuvalav@mellanox.com>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Message-Id": "<1595226378-81144-2-git-send-email-orika@mellanox.com>",
        "Return-Path": "<dev-bounces@dpdk.org>"
    },
    "content": "From: Yuval Avnery <yuvalav@mellanox.com>\n\nThis commit introduce the RegEx pull mode drivers class, and\nadds Mellanox RegEx PMD.\n\nSigned-off-by: Yuval Avnery <yuvalav@mellanox.com>\nSigned-off-by: Ori Kam <orika@mellanox.com>\n---\nv6:\n* Address ML comments.\n\nv5:\n* Move to mlx5 bus\n\nv3:\n* Address ML comments.\n\nv2:\n* Add docs.\n\n---\n .gitignore                                        |   1 +\n MAINTAINERS                                       |  11 +++\n config/common_base                                |   5 ++\n doc/guides/conf.py                                |   7 +-\n doc/guides/index.rst                              |   1 +\n doc/guides/regexdevs/features/default.ini         |  32 +++++++\n doc/guides/regexdevs/features/mlx5.ini            |   9 ++\n doc/guides/regexdevs/features_overview.rst        | 100 ++++++++++++++++++++++\n doc/guides/regexdevs/index.rst                    |  15 ++++\n doc/guides/regexdevs/mlx5.rst                     |  53 ++++++++++++\n doc/guides/rel_notes/release_20_08.rst            |   2 +\n drivers/Makefile                                  |   2 +\n drivers/bus/Makefile                              |   2 +-\n drivers/bus/mlx5_pci/mlx5_pci_bus.c               |   6 +-\n drivers/common/Makefile                           |   2 +-\n drivers/common/mlx5/Makefile                      |   4 +-\n drivers/common/mlx5/mlx5_common.h                 |   1 +\n drivers/meson.build                               |   1 +\n drivers/regex/Makefile                            |   8 ++\n drivers/regex/meson.build                         |   7 ++\n drivers/regex/mlx5/Makefile                       |  34 ++++++++\n drivers/regex/mlx5/meson.build                    |  26 ++++++\n drivers/regex/mlx5/mlx5_regex.c                   |   5 ++\n drivers/regex/mlx5/mlx5_regex.h                   |   8 ++\n drivers/regex/mlx5/rte_pmd_mlx5_regex_version.map |   3 +\n mk/rte.app.mk                                     |   5 +-\n 26 files changed, 342 insertions(+), 8 deletions(-)\n create mode 100644 doc/guides/regexdevs/features/default.ini\n create mode 100644 doc/guides/regexdevs/features/mlx5.ini\n create mode 100644 doc/guides/regexdevs/features_overview.rst\n create mode 100644 doc/guides/regexdevs/index.rst\n create mode 100644 doc/guides/regexdevs/mlx5.rst\n create mode 100644 drivers/regex/Makefile\n create mode 100644 drivers/regex/meson.build\n create mode 100644 drivers/regex/mlx5/Makefile\n create mode 100644 drivers/regex/mlx5/meson.build\n create mode 100644 drivers/regex/mlx5/mlx5_regex.c\n create mode 100644 drivers/regex/mlx5/mlx5_regex.h\n create mode 100644 drivers/regex/mlx5/rte_pmd_mlx5_regex_version.map",
    "diff": "diff --git a/.gitignore b/.gitignore\nindex f2f8892..f73d93c 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -9,6 +9,7 @@ doc/guides/cryptodevs/overview_auth_table.txt\n doc/guides/cryptodevs/overview_aead_table.txt\n doc/guides/cryptodevs/overview_asym_table.txt\n doc/guides/compressdevs/overview_feature_table.txt\n+doc/guides/regexdevs/overview_feature_table.txt\n doc/guides/vdpadevs/overview_feature_table.txt\n doc/guides/bbdevs/overview_feature_table.txt\n \ndiff --git a/MAINTAINERS b/MAINTAINERS\nindex 9e3bd16..dc4bf21 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -454,6 +454,7 @@ RegEx API - EXPERIMENTAL\n M: Ori Kam <orika@mellanox.com>\n F: lib/librte_regexdev/\n F: doc/guides/prog_guide/regexdev.rst\n+F: doc/guides/regexdevs/features/default.ini\n \n Eventdev API\n M: Jerin Jacob <jerinj@marvell.com>\n@@ -1133,6 +1134,16 @@ F: doc/guides/compressdevs/zlib.rst\n F: doc/guides/compressdevs/features/zlib.ini\n \n \n+RegEx Drivers\n+-------------\n+\n+Mellanox MLX5\n+M: Ori Kam <orika@mellanox.com>\n+F: drivers/regex/mlx5/\n+F: doc/guides/regexdevs/mlx5.rst\n+F: doc/guides/regexdevs/features/mlx5.ini\n+\n+\n vDPA Drivers\n ------------\n T: git://dpdk.org/next/dpdk-next-virtio\ndiff --git a/config/common_base b/config/common_base\nindex f7a8824..f76585f 100644\n--- a/config/common_base\n+++ b/config/common_base\n@@ -375,6 +375,11 @@ CONFIG_RTE_LIBRTE_MLX5_PMD=n\n CONFIG_RTE_LIBRTE_MLX5_DEBUG=n\n \n #\n+# Compile regex-oriented Mellanox PMD\n+#\n+CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD=n\n+\n+#\n # Compile vdpa-oriented Mellanox ConnectX-6 & BlueField (MLX5) PMD\n #\n CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD=n\ndiff --git a/doc/guides/conf.py b/doc/guides/conf.py\nindex 700e05e..d8fe5cc 100644\n--- a/doc/guides/conf.py\n+++ b/doc/guides/conf.py\n@@ -47,7 +47,7 @@\n master_doc = 'index'\n \n # Maximum feature description string length\n-feature_str_len = 25\n+feature_str_len = 30\n \n # Figures, tables and code-blocks automatically numbered if they have caption\n numfig = True\n@@ -409,6 +409,11 @@ def setup(app):\n                             'Features',\n                             'Features availability in compression drivers',\n                             'Feature')\n+    table_file = dirname(__file__) + '/regexdevs/overview_feature_table.txt'\n+    generate_overview_table(table_file, 1,\n+                            'Features',\n+                            'Features availability in regex drivers',\n+                            'Feature')\n     table_file = dirname(__file__) + '/vdpadevs/overview_feature_table.txt'\n     generate_overview_table(table_file, 1,\n                             'Features',\ndiff --git a/doc/guides/index.rst b/doc/guides/index.rst\nindex 988c6ea..857f036 100644\n--- a/doc/guides/index.rst\n+++ b/doc/guides/index.rst\n@@ -20,6 +20,7 @@ DPDK documentation\n    cryptodevs/index\n    compressdevs/index\n    vdpadevs/index\n+   regexdevs/index\n    eventdevs/index\n    rawdevs/index\n    mempool/index\ndiff --git a/doc/guides/regexdevs/features/default.ini b/doc/guides/regexdevs/features/default.ini\nnew file mode 100644\nindex 0000000..10f6c50\n--- /dev/null\n+++ b/doc/guides/regexdevs/features/default.ini\n@@ -0,0 +1,32 @@\n+;\n+; Features of a default RegEx driver.\n+;\n+; This file defines the features that are valid for inclusion in\n+; the other driver files and also the order that they appear in\n+; the features table in the documentation. The feature description\n+; string should not exceed feature_str_len defined in conf.py.\n+;\n+[Features]\n+Cross buffer                =\n+PCRE start anchor           =\n+PCRE atomic grouping        =\n+PCRE back reference         =\n+PCRE back tracking ctrl     =\n+PCRE call outs              =\n+PCRE forward reference      =\n+PCRE greedy                 =\n+PCRE match all              =\n+PCRE match as end           =\n+PCRE match point rst        =\n+PCRE New line conventions   =\n+PCRE new line SEQ           =\n+PCRE look around            =\n+PCRE possessive qualifiers  =\n+PCRE subroutine references  =\n+PCRE UTF 8                  =\n+PCRE UTF 16                 =\n+PCRE UTF 32                 =\n+PCRE word boundary          =\n+Run time compilation        =\n+Armv8                       =\n+x86                         =\ndiff --git a/doc/guides/regexdevs/features/mlx5.ini b/doc/guides/regexdevs/features/mlx5.ini\nnew file mode 100644\nindex 0000000..9fe5f73\n--- /dev/null\n+++ b/doc/guides/regexdevs/features/mlx5.ini\n@@ -0,0 +1,9 @@\n+;\n+; Supported features of the 'mlx5' RegEx driver.\n+;\n+; Refer to default.ini for the full list of available driver features.\n+;\n+[Features]\n+Armv8                = Y\n+x86                  = Y\n+\ndiff --git a/doc/guides/regexdevs/features_overview.rst b/doc/guides/regexdevs/features_overview.rst\nnew file mode 100644\nindex 0000000..f90b394\n--- /dev/null\n+++ b/doc/guides/regexdevs/features_overview.rst\n@@ -0,0 +1,100 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+   Copyright 2020 Mellanox Technologies, Ltd\n+\n+Overview of RegEx Drivers Features\n+==================================\n+\n+This section explains the supported features that are listed in the table below.\n+\n+Cross buffer\n+  Support cross buffer detection.\n+\n+PCRE start anchor\n+  Support PCRE start anchor.\n+\n+PCRE atomic grouping\n+  Support PCRE atomic grouping.\n+\n+PCRE back reference\n+  Support PCRE back regerence.\n+\n+PCRE back tracking ctrl\n+  Support PCRE back tracking ctrl.\n+\n+PCRE call outs\n+  Support PCRE call outes.\n+\n+PCRE forward reference\n+  Support Forward reference.\n+\n+PCRE greedy\n+  Support PCRE greedy mode.\n+\n+PCRE match all\n+  Support PCRE match all.\n+\n+PCRE match as end\n+  Support match as end.\n+\n+PCRE match point rst\n+  Support PCRE match point reset directive.\n+\n+PCRE New line conventions\n+  Support new line conventions.\n+\n+PCRE new line SEQ\n+  Support new line sequence.\n+\n+PCRE look around\n+  Support PCRE look around.\n+\n+PCRE possessive qualifiers\n+  Support PCRE possessive qualifiers.\n+\n+PCRE subroutine references\n+  Support PCRE subroutine references.\n+\n+PCRE UTF 8\n+  Support UTF-8.\n+\n+PCRE UTF 16\n+  Support UTF-16.\n+\n+PCRE UTF 32\n+  Support UTF-32.\n+\n+PCRE word boundary\n+  Support word boundaries.\n+\n+Run time compilation\n+  Support compilation during run time.\n+\n+Armv8\n+  Support armv8 (64bit) architecture.\n+\n+x86\n+  Support x86 architecture.\n+\n+.. note::\n+\n+   Most of the features capabilities should be provided by the drivers via the\n+   RegEx ``info_get`` operation.\n+\n+\n+References\n+==========\n+\n+  * `PCRE: PCRE pattern man page <https://www.pcre.org/original/doc/html/pcrepattern.html>`_\n+\n+\n+Features Table\n+==============\n+\n+.. _table_regex_pmd_features:\n+\n+.. include:: overview_feature_table.txt\n+\n+.. Note::\n+\n+   Features marked with \"P\" are partially supported. Refer to the appropriate\n+   driver guide in the following sections for details.\ndiff --git a/doc/guides/regexdevs/index.rst b/doc/guides/regexdevs/index.rst\nnew file mode 100644\nindex 0000000..49216a9\n--- /dev/null\n+++ b/doc/guides/regexdevs/index.rst\n@@ -0,0 +1,15 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+   Copyright 2020 Mellanox Technologies, Ltd\n+\n+REGEX Device Drivers\n+====================\n+\n+The following are a list of RegEx (Regular Expression) device drivers,\n+which can be used from an application through RegEx API.\n+\n+.. toctree::\n+   :maxdepth: 2\n+   :numbered:\n+\n+   features_overview\n+   mlx5\ndiff --git a/doc/guides/regexdevs/mlx5.rst b/doc/guides/regexdevs/mlx5.rst\nnew file mode 100644\nindex 0000000..0e6ee8c\n--- /dev/null\n+++ b/doc/guides/regexdevs/mlx5.rst\n@@ -0,0 +1,53 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+   Copyright 2020 Mellanox Technologies, Ltd\n+\n+.. include:: <isonum.txt>\n+\n+MLX5 RegEx driver\n+=================\n+\n+The MLX5 RegEx (Regular Expression) driver library\n+(**librte_pmd_mlx5_regex**) provides support for **Mellanox BlueField 2**\n+families of 25/50/100/200 Gb/s adapters.\n+\n+Design\n+------\n+\n+This PMD is configuring the RegEx HW engine.\n+For the PMD to work, the application must supply\n+a precompiled rule file in rof2 format.\n+\n+The PMD uses libibverbs and libmlx5 to access the device firmware\n+or directly the hardware components.\n+There are different levels of objects and bypassing abilities\n+to get the best performances:\n+\n+- Verbs is a complete high-level generic API\n+- Direct Verbs is a device-specific API\n+- DevX allows to access firmware objects\n+\n+Enabling librte_pmd_mlx5_regex causes DPDK applications to be linked against\n+libibverbs.\n+\n+Mellanox mlx5 pci device can be probed by number of different pci devices,\n+for example net / vDPA / RegEx. To select the RegEx PMD ``class=regex`` should\n+be specified as device parameter. The RegEx device can be probed and used with\n+other Mellanox devices, by adding more options in the class.\n+For example: ``class=net:regex`` will probe both the net PMD and the RegEx PMD.\n+\n+Supported NICs\n+--------------\n+\n+* Mellanox\\ |reg| BlueField 2 SmartNIC\n+\n+Prerequisites\n+-------------\n+\n+- BlueField 2 running Mellanox supported kernel.\n+- Enable the RegEx capabilities using system call from the BlueField 2.\n+- Official support is not yet released.\n+\n+Run-time configuration\n+~~~~~~~~~~~~~~~~~~~~~~\n+\n+- **ethtool** operations on related kernel interfaces also affect the PMD.\ndiff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst\nindex 917a5b8..3f18273 100644\n--- a/doc/guides/rel_notes/release_20_08.rst\n+++ b/doc/guides/rel_notes/release_20_08.rst\n@@ -81,6 +81,8 @@ New Features\n   Added the RegEx library which provides an API for offload of regular\n   expressions search operations to hardware or software accelerator devices.\n \n+  Added Mellanox RegEx PMD, allowing to offload RegEx searches.\n+\n * **Added eCPRI protocol support in rte_flow.**\n \n   The ``ECPRI`` item has been added to support eCPRI packet offloading for\ndiff --git a/drivers/Makefile b/drivers/Makefile\nindex c70bdf9..b814e05 100644\n--- a/drivers/Makefile\n+++ b/drivers/Makefile\n@@ -18,6 +18,8 @@ DIRS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += common/qat\n DEPDIRS-common/qat := bus mempool\n DIRS-$(CONFIG_RTE_LIBRTE_COMPRESSDEV) += compress\n DEPDIRS-compress := bus mempool\n+DIRS-$(CONFIG_RTE_LIBRTE_REGEXDEV) += regex\n+DEPDIRS-regex := common\n DIRS-$(CONFIG_RTE_LIBRTE_VHOST) += vdpa\n DEPDIRS-vdpa := common bus mempool\n DIRS-$(CONFIG_RTE_LIBRTE_EVENTDEV) += event\ndiff --git a/drivers/bus/Makefile b/drivers/bus/Makefile\nindex a70f213..b07786a 100644\n--- a/drivers/bus/Makefile\n+++ b/drivers/bus/Makefile\n@@ -9,7 +9,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc\n endif\n DIRS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga\n DIRS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += pci\n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n DEPDIRS-mlx5_pci := pci\n DIRS-y += mlx5_pci\n endif\ndiff --git a/drivers/bus/mlx5_pci/mlx5_pci_bus.c b/drivers/bus/mlx5_pci/mlx5_pci_bus.c\nindex 6f21973..22c24f8 100644\n--- a/drivers/bus/mlx5_pci/mlx5_pci_bus.c\n+++ b/drivers/bus/mlx5_pci/mlx5_pci_bus.c\n@@ -25,13 +25,17 @@ static TAILQ_HEAD(mlx5_pci_devices_head, mlx5_pci_device) devices_list =\n \tconst char *name;\n \tunsigned int dev_class;\n } mlx5_classes[] = {\n-\t{ .name = \"vdpa\", .dev_class = MLX5_CLASS_VDPA },\n \t{ .name = \"net\", .dev_class = MLX5_CLASS_NET },\n+\t{ .name = \"vdpa\", .dev_class = MLX5_CLASS_VDPA },\n+\t{ .name = \"regex\", .dev_class = MLX5_CLASS_REGEX },\n };\n \n static const unsigned int mlx5_class_combinations[] = {\n \tMLX5_CLASS_NET,\n \tMLX5_CLASS_VDPA,\n+\tMLX5_CLASS_REGEX,\n+\tMLX5_CLASS_REGEX | MLX5_CLASS_NET,\n+\tMLX5_CLASS_REGEX | MLX5_CLASS_VDPA,\n \t/* New class combination should be added here.\n \t * For example a new multi class device combination\n \t * can be MLX5_CLASS_FOO | MLX5_CLASS_BAR.\ndiff --git a/drivers/common/Makefile b/drivers/common/Makefile\nindex df2e840..cbc7107 100644\n--- a/drivers/common/Makefile\n+++ b/drivers/common/Makefile\n@@ -36,7 +36,7 @@ ifneq (,$(findstring y,$(IAVF-y)))\n DIRS-y += iavf\n endif\n \n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n DIRS-y += mlx5\n endif\n \ndiff --git a/drivers/common/mlx5/Makefile b/drivers/common/mlx5/Makefile\nindex 96a2dae..6b89a6c 100644\n--- a/drivers/common/mlx5/Makefile\n+++ b/drivers/common/mlx5/Makefile\n@@ -10,7 +10,7 @@ LIB_GLUE_BASE = librte_pmd_mlx5_glue.so\n LIB_GLUE_VERSION = 20.02.0\n \n # Sources.\n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)\n SRCS-y += linux/mlx5_glue.c\n endif\n@@ -370,7 +370,7 @@ mlx5_autoconf.h: mlx5_autoconf.h.new\n \t\tcmp '$<' '$@' $(AUTOCONF_OUTPUT) || \\\n \t\tmv '$<' '$@'\n \n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n $(SRCS-y:.c=.o): mlx5_autoconf.h\n endif\n \ndiff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h\nindex 5b9b7bd..a1f34c3 100644\n--- a/drivers/common/mlx5/mlx5_common.h\n+++ b/drivers/common/mlx5/mlx5_common.h\n@@ -212,6 +212,7 @@ enum mlx5_class {\n \tMLX5_CLASS_INVALID,\n \tMLX5_CLASS_NET = RTE_BIT64(0),\n \tMLX5_CLASS_VDPA = RTE_BIT64(1),\n+\tMLX5_CLASS_REGEX = RTE_BIT64(2),\n };\n \n #define MLX5_DBR_PAGE_SIZE 4096 /* Must be >= 512. */\ndiff --git a/drivers/meson.build b/drivers/meson.build\nindex 161cfda..e76ebdd 100644\n--- a/drivers/meson.build\n+++ b/drivers/meson.build\n@@ -9,6 +9,7 @@ dpdk_driver_classes = ['common',\n \t       'raw',     # depends on common, bus and net.\n \t       'crypto',  # depends on common, bus and mempool (net in future).\n \t       'compress', # depends on common, bus, mempool.\n+\t       'regex', # depends on common, bus, regexdev.\n \t       'vdpa',    # depends on common, bus and mempool.\n \t       'event',   # depends on common, bus, mempool and net.\n \t       'baseband'] # depends on common and bus.\ndiff --git a/drivers/regex/Makefile b/drivers/regex/Makefile\nnew file mode 100644\nindex 0000000..906b205\n--- /dev/null\n+++ b/drivers/regex/Makefile\n@@ -0,0 +1,8 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2020 Mellanox Technologies, Ltd\n+\n+include $(RTE_SDK)/mk/rte.vars.mk\n+\n+DIRS-$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD) += mlx5\n+\n+include $(RTE_SDK)/mk/rte.subdir.mk\ndiff --git a/drivers/regex/meson.build b/drivers/regex/meson.build\nnew file mode 100644\nindex 0000000..8edeba3\n--- /dev/null\n+++ b/drivers/regex/meson.build\n@@ -0,0 +1,7 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2020 Mellanox Technologies, Ltd\n+\n+drivers = ['mlx5']\n+std_deps = ['ethdev', 'kvargs'] # 'ethdev' also pulls in mbuf, net, eal etc\n+config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'\n+driver_name_fmt = 'rte_pmd_@0@'\ndiff --git a/drivers/regex/mlx5/Makefile b/drivers/regex/mlx5/Makefile\nnew file mode 100644\nindex 0000000..2aba90e\n--- /dev/null\n+++ b/drivers/regex/mlx5/Makefile\n@@ -0,0 +1,34 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2020 Mellanox Technologies, Ltd\n+\n+include $(RTE_SDK)/mk/rte.vars.mk\n+\n+# Library name.\n+LIB = librte_pmd_mlx5_regex.a\n+\n+# Sources.\n+SRCS-$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD) += mlx5_regex.c\n+\n+# Basic CFLAGS.\n+CFLAGS += -O3\n+CFLAGS += -std=c11 -Wall -Wextra\n+CFLAGS += -g\n+CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5\n+CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5\n+CFLAGS += -D_BSD_SOURCE\n+CFLAGS += -D_DEFAULT_SOURCE\n+CFLAGS += -D_XOPEN_SOURCE=600\n+CFLAGS += $(WERROR_FLAGS)\n+CFLAGS += -Wno-strict-prototypes\n+LDLIBS += -lrte_common_mlx5\n+LDLIBS += -lm\n+LDLIBS += -lrte_eal -lrte_mbuf -lrte_regexdev\n+LDLIBS += -lrte_kvargs\n+LDLIBS += -lrte_bus_pci -lrte_buf_mlx5_pci\n+\n+# A few warnings cannot be avoided in external headers.\n+CFLAGS += -Wno-error=cast-qual\n+\n+EXPORT_MAP := rte_pmd_mlx5_regex_version.map\n+\n+include $(RTE_SDK)/mk/rte.lib.mk\ndiff --git a/drivers/regex/mlx5/meson.build b/drivers/regex/mlx5/meson.build\nnew file mode 100644\nindex 0000000..27bb0ad\n--- /dev/null\n+++ b/drivers/regex/mlx5/meson.build\n@@ -0,0 +1,26 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2020 Mellanox Technologies, Ltd\n+\n+if not is_linux\n+\tbuild = false\n+\treason = 'only supported on Linux'\n+\tsubdir_done()\n+endif\n+\n+fmt_name = 'mlx5_regex'\n+deps += ['common_mlx5', 'bus_pci', 'bus_mlx5_pci', 'eal', 'regexdev']\n+sources = files(\n+\t'mlx5_regex.c',\n+)\n+cflags_options = [\n+\t'-std=c11',\n+\t'-Wno-strict-prototypes',\n+\t'-D_BSD_SOURCE',\n+\t'-D_DEFAULT_SOURCE',\n+\t'-D_XOPEN_SOURCE=600'\n+]\n+foreach option:cflags_options\n+\tif cc.has_argument(option)\n+\t\tcflags += option\n+\tendif\n+endforeach\ndiff --git a/drivers/regex/mlx5/mlx5_regex.c b/drivers/regex/mlx5/mlx5_regex.c\nnew file mode 100644\nindex 0000000..b942a75\n--- /dev/null\n+++ b/drivers/regex/mlx5/mlx5_regex.c\n@@ -0,0 +1,5 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2020 Mellanox Technologies, Ltd\n+ */\n+\n+#include \"mlx5_regex.h\"\ndiff --git a/drivers/regex/mlx5/mlx5_regex.h b/drivers/regex/mlx5/mlx5_regex.h\nnew file mode 100644\nindex 0000000..0e0495c\n--- /dev/null\n+++ b/drivers/regex/mlx5/mlx5_regex.h\n@@ -0,0 +1,8 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2020 Mellanox Technologies, Ltd\n+ */\n+\n+#ifndef MLX5_REGEX_H\n+#define MLX5_REGEX_H\n+\n+#endif /* MLX5_REGEX_H */\ndiff --git a/drivers/regex/mlx5/rte_pmd_mlx5_regex_version.map b/drivers/regex/mlx5/rte_pmd_mlx5_regex_version.map\nnew file mode 100644\nindex 0000000..4a76d1d\n--- /dev/null\n+++ b/drivers/regex/mlx5/rte_pmd_mlx5_regex_version.map\n@@ -0,0 +1,3 @@\n+DPDK_21 {\n+\tlocal: *;\n+};\ndiff --git a/mk/rte.app.mk b/mk/rte.app.mk\nindex d7c1d90..a7f30c4 100644\n--- a/mk/rte.app.mk\n+++ b/mk/rte.app.mk\n@@ -201,12 +201,13 @@ endif\n _LDLIBS-$(CONFIG_RTE_LIBRTE_LIO_PMD)        += -lrte_pmd_lio\n _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MEMIF)      += -lrte_pmd_memif\n _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD)       += -lrte_pmd_mlx4\n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n _LDLIBS-y                                   += -lrte_common_mlx5\n _LDLIBS-y                                   += -lrte_bus_mlx5_pci\n endif\n _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD)       += -lrte_pmd_mlx5\n _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)  += -lrte_pmd_mlx5_vdpa\n+_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)  += -lrte_pmd_mlx5_regex\n ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)\n _LDLIBS-y                                   += -ldl\n else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y)\n@@ -215,7 +216,7 @@ _LDLIBS-y                                   += --no-whole-archive\n _LDLIBS-y                                   += $(LIBS_IBVERBS_STATIC)\n _LDLIBS-y                                   += --whole-archive\n else\n-ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)\n+ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)$(CONFIG_RTE_LIBRTE_MLX5_REGEX_PMD)),y)\n _LDLIBS-y                                   += -libverbs -lmlx5\n endif\n _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD)       += -libverbs -lmlx4\n",
    "prefixes": [
        "v6",
        "01/13"
    ]
}