get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 132250,
    "url": "http://patchwork.dpdk.org/api/patches/132250/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230930100053.1227215-2-chaoyong.he@corigine.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": "<20230930100053.1227215-2-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230930100053.1227215-2-chaoyong.he@corigine.com",
    "date": "2023-09-30T10:00:50",
    "name": "[1/4] net/nfp: prepare for the flow merge",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "fbd24c51d8be6e87dc8ce5b964bc3acdbd729d98",
    "submitter": {
        "id": 2554,
        "url": "http://patchwork.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230930100053.1227215-2-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 29708,
            "url": "http://patchwork.dpdk.org/api/series/29708/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29708",
            "date": "2023-09-30T10:00:49",
            "name": "support offload of simple conntrack flow rules",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/29708/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/132250/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/132250/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 5E30242682;\n\tSat, 30 Sep 2023 12:01:51 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2CD0B40287;\n\tSat, 30 Sep 2023 12:01:46 +0200 (CEST)",
            "from NAM12-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam12on2128.outbound.protection.outlook.com [40.107.243.128])\n by mails.dpdk.org (Postfix) with ESMTP id 2766C40268\n for <dev@dpdk.org>; Sat, 30 Sep 2023 12:01:43 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by PH7PR13MB5429.namprd13.prod.outlook.com (2603:10b6:510:138::10)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.21; Sat, 30 Sep\n 2023 10:01:40 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::28c0:63e2:ecd1:9314]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::28c0:63e2:ecd1:9314%4]) with mapi id 15.20.6813.027; Sat, 30 Sep 2023\n 10:01:40 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=XcnL4DMHn5LH5/FR0v6LqxvQbIZCY5UkaqMJBw9jyxwsi5WZ/KDIGJ0Zkn04RKaRlv6Kq38rddVB+FI5k1EU/LakYOX80YwR7IayJT9kxWxOibZUrG6Yt+byIzDJhWd/daKZx9vqEWpMD+fHnKUA7lB+XcVT240S8XXsh8UIAXkF0aahh7UVvVnbcKdONha1urtZB/5Q3n9EfamJnaLhtbGc/nf2Gwu3JC88G4VhppeCbuaNkzpwBJiFPlEUJqwS5LDxSTrEbfpvozLWxKJKPWHQ3sDltQkyGxn2drsRQByPjpGKca39cPG1M5lcY1k/Tl/ygQkb1CKBA6tffJiFwg==",
        "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=LTSL5EhAxJkOQ2c0702HEgJe0y0TEYktLlnmF+jxK8c=;\n b=mm480CjcIwFaXC1rLS1Kg58bfGp4G7SKCg3miWOaXRQbydAma2oJ+WpCvJLxJUZEsn8flSWxB8xNlVoZ4oPf9yiu8RdpBH2N89JyqI/wghPiXDhWh1rXy6JAF4u+gDbtHPNt9aUWDSBSqz+ZnICBuR7R7cAPnWuoGWmyf14iZAA04Juo+aoQYASurgCyOeubnkCzsCDwzdZLAZhxE+TneRK31A33h7sXdCFZxe+wVkdU2znmzJsGveoBzxMN1bZFzeLH/d1xyg5nsLz+Q5puCis1usciXTLEKFwUYECYtMU1HDfHGKHiOYFkS+OHWrq+luzpHD+JREyfC+I8qbwHug==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=LTSL5EhAxJkOQ2c0702HEgJe0y0TEYktLlnmF+jxK8c=;\n b=XK7gkS+HqC/ZRYHQi3V6pUjeb1tfV/+kzKd0wREE9u72NA79LLfQIPmWE82/pBfPX8t4zrDAbMsM2dtbM2QDgs6b9SER2Scix4o7Ephx1QTDKXr7wbV8UR7nwzzaZiGqEtkITaDDsNvICYkjPFDWtV9KiC3y3rIlpBM4GqOxhQw=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Chaoyong He <chaoyong.he@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "oss-drivers@corigine.com,\n\tChaoyong He <chaoyong.he@corigine.com>",
        "Subject": "[PATCH 1/4] net/nfp: prepare for the flow merge",
        "Date": "Sat, 30 Sep 2023 18:00:50 +0800",
        "Message-Id": "<20230930100053.1227215-2-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20230930100053.1227215-1-chaoyong.he@corigine.com>",
        "References": "<20230930100053.1227215-1-chaoyong.he@corigine.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "PH8PR22CA0022.namprd22.prod.outlook.com\n (2603:10b6:510:2d1::17) To SJ0PR13MB5545.namprd13.prod.outlook.com\n (2603:10b6:a03:424::5)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ0PR13MB5545:EE_|PH7PR13MB5429:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "b016b9d6-89f2-4b9b-f5ef-08dbc19c3db6",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n GHT01QIrTPgIMK+7hV4axU4VQLiz4BNKuZa3eWbuEZLs4lEDossyJ7+2SMCM9G5YdS1MT+8m45p1Pij7auFp8HUAPqKsrhIhu/tvIdgeCJnpCEdtZgYekRyzoERNPOMEGRTH+zY4gy/IMMa+wUQK5Esi8OkKE4mB2q58rvPetUgjDs9LxLVDdhf5ZHAtGmdAkqjo2grFtPR9YVwxFqeTfYj/Js/0ddfWVLRJ6EMgBgRUEHpb9t0Yx/oGiwrjO4GDiKYzsKR75N3rUiaw4qRhhKNXKd4YRCfRHmSIQXfFdDKKTBRz75hFgO0NbmmyRi0gCVtwMMqNin2O+t5y6u81Uh1B1tTBW7/Zhf1V17ApAeSXkWWKVvv8yZQxe6h0orC3zb4ynHuboxt5H6hEUNw3du6Ti6lqgRALg0frtlvRxftd4HjBN+qB3oy/+aUwcp8u3SGGwD3se98z+dg9UeSzM0zMH4jNaSQYlUkROQPcu4deY9k6DrKey3qAz/uJ6gf9IVQ+zLnNZQvWqUQlZjFlCAhXg9FO5Lr4a+VMYYH53vK5YvvWeuR9ENgMgQMSJMDNlyjBjvrdbGNrCuSyq4Q0tugEvyQuprFUd6SE9pvzHVlKr+pb+wzuIuhIy2t9r5K0B6VysZXf9Ly6VKOOujUnT1pTY2XJmi5tsjdLKySpvik=",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230031)(366004)(346002)(136003)(39830400003)(396003)(376002)(230922051799003)(1800799009)(451199024)(64100799003)(186009)(66946007)(6916009)(8676002)(44832011)(316002)(4326008)(66476007)(66556008)(38100700002)(38350700002)(86362001)(6486002)(478600001)(41300700001)(2906002)(5660300002)(8936002)(6512007)(2616005)(52116002)(107886003)(1076003)(26005)(36756003)(6666004)(83380400001)(6506007);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n GoW+SItEgiEYAu5eZGkcLKR++wuQ414JQegtJOwOuRP7ZOYEfLfLZNPL1c8nq8pWAt/35kGJMsB1Z9BVa93KeAVv8Te/Yx9gPXCtBzfAjY4idIzxw1Grpf+3dFuE+6afYTe1TU7Ki8SI8+K+xw6bud71JFRb0u/fUN2xNhHGZOv6NJ11fVH+fmQ8OfUo0YLTpra5sAc4ShDVW7cnFU/zt2Ly2eKm5Gjem/dFBTUP9/F4wz++G/NkIpFumFpwdU9/M9LSOfmK3Xm8oJcFaDnq/VHLL07RODE+iaZhgjWKR96s6TNXWisTZesQxVpPOFfPX4IsP1vZfAaYlkW4Yk6qr1GbwIr0B0k/Bd0yPU8LaimnZcUGaH5UhKpUCaWl6BDYk12rBu//ZSvkkvtkMrolJZSqCvEXvaMjWitTaob4jr1sq350KBggsryCjcQx1eQIJcQ81PaoGLh1Wg6LSvsX7gOOGArmaeHHCDXiRCmdxHQtS8nIlNyFJrSBb0/K/Nvde76rPrxsafGkHrcWkLgd+W/TL46dHmxJczZEyzawE9QVz7cDG/yYXmQUbk4b4h5uymP9Bsf2sOBagd051xNq5A0R5BzXg/j+VcSvztwvDys/VwhF+wekcgV5L+HuzQ67/qCfSkWTAeGhkt81Qb/aUQs/DbkCulZEsuX7vE383ilRDYaCNQTyWt8mleehUw93sdWE1PIcD5++D5tmbAMemG7oGjhUnl0KWkpTixzvGlFOp94Z1FqtCtUPtdAxNEgoxImYm52+4//CoOmpfFi68w2OPIa6igFE2GvOTXNF8iQhf3XWyjM84L3+IGcAf47JumnlEk0br87f2Doij+jEamY+WQCzrzdPwJxPQeTDiJ1LzJUZg0fMoV/YE7drj4LZlDEYbIAHOiEZtXumJD+3FTh7V+cCbuFTVsx5/lWDh4wfsOryZvsRwVUgKqshTLKR5GbY5xujdygBrp3/PYbbRim4+tzb8FTJm2P0TD4St+RR5qULJ5zMCQIKG7zrnI5ePB4EnfExXiKjiocaj7Tpvz3cfRx7ixBwPkoZ2kppraPVFVeULnrhKVwsFVcb4hL6xVu9WK1HfuiB3ESoJwBz4o28ssIXCcn6NX0PYO5kxPSzPRmE/C+U9NyWfw+pmulFdEwADflczyrmBJpVHqLHgpAdwp31KUpuSk5PNOaZ7pZiv1ADbqtQpoBHIMC0HK8AIMc0YW4wdOXjZTCIN4TnX1LpvcvpVXW81kLFkxNY3E5rVodW1f66pmnoTJsF9T8EcOjlo7DQlN/CSx6dbPhOsmikjlmDnfUFm0FZ9QOxqeP6/hmFyWjdC5iUEb1CuaZlLRJRiBBSohCydCQZpjM9uVefrNQXwmXu4Mtg+DRT3qrFw3mODRP0uu3rjN59qc/C3c/cTif7lkbUbDVcr6V0h/kS1i08NTEoCOI8dhwOFhHe1zwS2i/A0p7LW5nafrL5pRetes7zt3EiLt+4x7X3fELoiRzJnipwgcWeanMfT0latsjyFOmiToMwU2MtVM6j4zHn4lqgrpsUe750cO76BXwA6449nmz8ciddtNehv+A11sCJg4VMahG3c+CrQrDCjoChcNze2K2OzmZde+xs1Q==",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b016b9d6-89f2-4b9b-f5ef-08dbc19c3db6",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "30 Sep 2023 10:01:40.1993 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "fe128f2c-073b-4c20-818e-7246a585940c",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n hzbVFHJrAKSeqkjV3qEEpbGp/mIjTBo4shZayCDE1vSSwDBdMOBPnO0By3ssO5uZAuvdVp9OI7CgH6ggypHYaDxFURXUp1aSUr1xk4+/ka0=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR13MB5429",
        "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": "Move data structure and macro from source file to header file.\nExport the needed function to header file.\n\nWe add two more parameter for 'nfp_flow_process()' to prepare for the\nflow merge.\nThe 'cookie' moved as parameter is because the flow merge logic need\nthis cookie.\nThe 'install' parameter is needed because in flow merge, some flow are\nnot need install to the hardware.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\n---\n drivers/net/nfp/nfp_flow.c | 42 +++++++++++++++++---------------------\n drivers/net/nfp/nfp_flow.h | 31 ++++++++++++++++++++++++++++\n 2 files changed, 50 insertions(+), 23 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c\nindex aa286535f7..1bb93bcfb5 100644\n--- a/drivers/net/nfp/nfp_flow.c\n+++ b/drivers/net/nfp/nfp_flow.c\n@@ -89,17 +89,6 @@\n /* Tunnel ports */\n #define NFP_FL_PORT_TYPE_TUN            0x50000000\n \n-/*\n- * Maximum number of items in struct rte_flow_action_vxlan_encap.\n- * ETH / IPv4(6) / UDP / VXLAN / END\n- */\n-#define ACTION_VXLAN_ENCAP_ITEMS_NUM 5\n-\n-struct vxlan_data {\n-\tstruct rte_flow_action_vxlan_encap conf;\n-\tstruct rte_flow_item items[ACTION_VXLAN_ENCAP_ITEMS_NUM];\n-};\n-\n /* Static initializer for a list of subsequent item types */\n #define NEXT_ITEM(...) \\\n \t((const enum rte_flow_item_type []){ \\\n@@ -359,7 +348,7 @@ nfp_check_mask_remove(struct nfp_flow_priv *priv,\n \treturn true;\n }\n \n-static int\n+int\n nfp_flow_table_add(struct nfp_flow_priv *priv,\n \t\tstruct rte_flow *nfp_flow)\n {\n@@ -440,7 +429,7 @@ nfp_flow_alloc(struct nfp_fl_key_ls *key_layer, uint32_t port_id)\n \treturn NULL;\n }\n \n-static void\n+void\n nfp_flow_free(struct rte_flow *nfp_flow)\n {\n \trte_free(nfp_flow->payload.meta);\n@@ -721,7 +710,8 @@ static void\n nfp_flow_compile_metadata(struct nfp_flow_priv *priv,\n \t\tstruct rte_flow *nfp_flow,\n \t\tstruct nfp_fl_key_ls *key_layer,\n-\t\tuint32_t stats_ctx)\n+\t\tuint32_t stats_ctx,\n+\t\tuint64_t cookie)\n {\n \tstruct nfp_fl_rule_metadata *nfp_flow_meta;\n \tchar *mbuf_off_exact;\n@@ -737,7 +727,7 @@ nfp_flow_compile_metadata(struct nfp_flow_priv *priv,\n \tnfp_flow_meta->act_len      = key_layer->act_size >> NFP_FL_LW_SIZ;\n \tnfp_flow_meta->flags        = 0;\n \tnfp_flow_meta->host_ctx_id  = rte_cpu_to_be_32(stats_ctx);\n-\tnfp_flow_meta->host_cookie  = rte_rand();\n+\tnfp_flow_meta->host_cookie  = rte_cpu_to_be_64(cookie);\n \tnfp_flow_meta->flow_version = rte_cpu_to_be_64(priv->flower_version);\n \n \tmbuf_off_exact = nfp_flow->payload.unmasked_data;\n@@ -1958,7 +1948,7 @@ nfp_flow_is_tun_item(const struct rte_flow_item *item)\n \treturn false;\n }\n \n-static bool\n+bool\n nfp_flow_inner_item_get(const struct rte_flow_item items[],\n \t\tconst struct rte_flow_item **inner_item)\n {\n@@ -3650,11 +3640,13 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor,\n \treturn 0;\n }\n \n-static struct rte_flow *\n+struct rte_flow *\n nfp_flow_process(struct nfp_flower_representor *representor,\n \t\tconst struct rte_flow_item items[],\n \t\tconst struct rte_flow_action actions[],\n-\t\tbool validate_flag)\n+\t\tbool validate_flag,\n+\t\tuint64_t cookie,\n+\t\tbool install_flag)\n {\n \tint ret;\n \tchar *hash_data;\n@@ -3690,9 +3682,9 @@ nfp_flow_process(struct nfp_flower_representor *representor,\n \t\tgoto free_stats;\n \t}\n \n-\tnfp_flow->install_flag = true;\n+\tnfp_flow->install_flag = install_flag;\n \n-\tnfp_flow_compile_metadata(priv, nfp_flow, &key_layer, stats_ctx);\n+\tnfp_flow_compile_metadata(priv, nfp_flow, &key_layer, stats_ctx, cookie);\n \n \tret = nfp_flow_compile_items(representor, items, nfp_flow);\n \tif (ret != 0) {\n@@ -3755,6 +3747,8 @@ nfp_flow_setup(struct nfp_flower_representor *representor,\n \t\t__rte_unused struct rte_flow_error *error,\n \t\tbool validate_flag)\n {\n+\tuint64_t cookie;\n+\n \tif (attr->group != 0)\n \t\tPMD_DRV_LOG(INFO, \"Pretend we support group attribute.\");\n \n@@ -3764,10 +3758,12 @@ nfp_flow_setup(struct nfp_flower_representor *representor,\n \tif (attr->transfer != 0)\n \t\tPMD_DRV_LOG(INFO, \"Pretend we support transfer attribute.\");\n \n-\treturn nfp_flow_process(representor, items, actions, validate_flag);\n+\tcookie = rte_rand();\n+\n+\treturn nfp_flow_process(representor, items, actions, validate_flag, cookie, true);\n }\n \n-static int\n+int\n nfp_flow_teardown(struct nfp_flow_priv *priv,\n \t\tstruct rte_flow *nfp_flow,\n \t\tbool validate_flag)\n@@ -3895,7 +3891,7 @@ nfp_flow_create(struct rte_eth_dev *dev,\n \treturn NULL;\n }\n \n-static int\n+int\n nfp_flow_destroy(struct rte_eth_dev *dev,\n \t\tstruct rte_flow *nfp_flow,\n \t\tstruct rte_flow_error *error)\ndiff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h\nindex 7ce7f62453..817eaecba2 100644\n--- a/drivers/net/nfp/nfp_flow.h\n+++ b/drivers/net/nfp/nfp_flow.h\n@@ -11,6 +11,17 @@\n /* The firmware expects lengths in units of long words */\n #define NFP_FL_LW_SIZ                   2\n \n+/*\n+ * Maximum number of items in struct rte_flow_action_vxlan_encap.\n+ * ETH / IPv4(6) / UDP / VXLAN / END\n+ */\n+#define ACTION_VXLAN_ENCAP_ITEMS_NUM 5\n+\n+struct vxlan_data {\n+\tstruct rte_flow_action_vxlan_encap conf;\n+\tstruct rte_flow_item items[ACTION_VXLAN_ENCAP_ITEMS_NUM];\n+};\n+\n enum nfp_flower_tun_type {\n \tNFP_FL_TUN_NONE   = 0,\n \tNFP_FL_TUN_GRE    = 1,\n@@ -153,8 +164,28 @@ struct rte_flow {\n \tenum nfp_flow_type type;\n };\n \n+/* Forward declaration */\n+struct nfp_flower_representor;\n+\n int nfp_flow_priv_init(struct nfp_pf_dev *pf_dev);\n void nfp_flow_priv_uninit(struct nfp_pf_dev *pf_dev);\n int nfp_net_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops);\n+bool nfp_flow_inner_item_get(const struct rte_flow_item items[],\n+\t\tconst struct rte_flow_item **inner_item);\n+struct rte_flow *nfp_flow_process(struct nfp_flower_representor *representor,\n+\t\tconst struct rte_flow_item items[],\n+\t\tconst struct rte_flow_action actions[],\n+\t\tbool validate_flag,\n+\t\tuint64_t cookie,\n+\t\tbool install_flag);\n+int nfp_flow_table_add(struct nfp_flow_priv *priv,\n+\t\tstruct rte_flow *nfp_flow);\n+int nfp_flow_teardown(struct nfp_flow_priv *priv,\n+\t\tstruct rte_flow *nfp_flow,\n+\t\tbool validate_flag);\n+void nfp_flow_free(struct rte_flow *nfp_flow);\n+int nfp_flow_destroy(struct rte_eth_dev *dev,\n+\t\tstruct rte_flow *nfp_flow,\n+\t\tstruct rte_flow_error *error);\n \n #endif /* _NFP_FLOW_H_ */\n",
    "prefixes": [
        "1/4"
    ]
}