Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/131726/?format=api
http://patchwork.dpdk.org/api/patches/131726/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230920125250.804055-3-tshmilovich@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": "<20230920125250.804055-3-tshmilovich@nvidia.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20230920125250.804055-3-tshmilovich@nvidia.com", "date": "2023-09-20T12:52:49", "name": "[2/2] app/testpmd: add group set miss actions CLI commands", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "ddb39e377ec4329373ed6e173efdf2bb0e94e71d", "submitter": { "id": 3144, "url": "http://patchwork.dpdk.org/api/people/3144/?format=api", "name": "Tomer Shmilovich", "email": "tshmilovich@nvidia.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/20230920125250.804055-3-tshmilovich@nvidia.com/mbox/", "series": [ { "id": 29572, "url": "http://patchwork.dpdk.org/api/series/29572/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29572", "date": "2023-09-20T12:52:47", "name": "ethdev: add group set miss actions API", "version": 1, "mbox": "http://patchwork.dpdk.org/series/29572/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/131726/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/131726/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 29FB7425F0;\n\tWed, 20 Sep 2023 14:53:37 +0200 (CEST)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D5853427D8;\n\tWed, 20 Sep 2023 14:53:30 +0200 (CEST)", "from NAM02-BN1-obe.outbound.protection.outlook.com\n (mail-bn1nam02on2069.outbound.protection.outlook.com [40.107.212.69])\n by mails.dpdk.org (Postfix) with ESMTP id 039C8410D3\n for <dev@dpdk.org>; Wed, 20 Sep 2023 14:53:29 +0200 (CEST)", "from BL0PR02CA0135.namprd02.prod.outlook.com (2603:10b6:208:35::40)\n by DM4PR12MB5359.namprd12.prod.outlook.com (2603:10b6:5:39e::24) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.27; Wed, 20 Sep\n 2023 12:53:26 +0000", "from BL6PEPF0001AB4E.namprd04.prod.outlook.com\n (2603:10b6:208:35:cafe::6f) by BL0PR02CA0135.outlook.office365.com\n (2603:10b6:208:35::40) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.30 via Frontend\n Transport; Wed, 20 Sep 2023 12:53:26 +0000", "from mail.nvidia.com (216.228.117.160) by\n BL6PEPF0001AB4E.mail.protection.outlook.com (10.167.242.72) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6792.19 via Frontend Transport; Wed, 20 Sep 2023 12:53:25 +0000", "from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 20 Sep\n 2023 05:53:14 -0700", "from nvidia.com (10.126.231.35) by rnnvmail202.nvidia.com\n (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 20 Sep\n 2023 05:53:12 -0700" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=GzTMo1Q3CqdjLlCYjuhkvTDE2KDUEkbpYugRqrn/d0cRDcXtK2qY4v51JwaGsoQwwwGFEsJijQCnzWMmQ9NrrmnfaOsxq3ZQ72gQKWLU9gOmx/GtZDZx1/7jQa0Ah5BVAofvjoyss6fnr/qaSpFyIFZaEREhgLFUBjCoEW4SREJOho5O+x1WDGBf6l0dbraMjmAR51xXWmhUQyYWUSWDKId26wG7Va5fgx9hfx8U/Ja/FtZBZAa1GylYotOTBzhZyrvbErgk2Ze0HH05Tg8CwIuqETiCSO94dhX3TG3XB+DsC3Z/b2jqxJwYV+2/+AqL0Jl+1b7+DcwLuWpxpYcPoA==", "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=i3DqfKxe6u23E/EQU0RTmSAFFlVK4ULUEDWUXyn6Ido=;\n b=GM/BLcM/ox6rBG7/9AHWNRNztw3YZxem14HHvcLr/GBdfTrRUUbbZy7enM5yru6XRWwsr9cV4PMejLVMl+VgwfNDdfitRVx7OQKX7pTpO9afT49A3zheQhC75ACUhUAG21VNWry/Rj67EntoSDGV8HNF7620H93o8LOwlJDFSOTxy/XkCn2ZmbLS3uwnGyyT9g8VaMAPHuVKH54wVXvo8kyoG6Pj8y0SdTdGdp3qZ3hULW4tSUs8Qy7mHNQGX8KB/t3bkIAgpZ6GS4tJ+1+qjadFXqanTVdfiKpfyEzzxUpV25KWzlwAfXk/nKvK0LBnmZgdGOxFOwYnDxKAee1u6Q==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=intel.com 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=i3DqfKxe6u23E/EQU0RTmSAFFlVK4ULUEDWUXyn6Ido=;\n b=I8Iq1f7YNi2wgCxGWRNZA4dM+8VqKTG/VHZeJ/Gotqb8voMUWzNsizfJ9EW728+yuWZpQLnd1hItE+hibeRlNb3Kjok6yQSfUibAzZcjcG70UlbXElUNQ45ztDp9coMceoMrgSox6xVxGF/IsyyZPNC5kPdBxPWpPbPmZLjrLfB8AiFeD4/8SvaLXkogLAwFp+ZeEmOl2OvScUXzh8h+W3NiKf7rcLZegRmBXKSuYGlfRmTR8/P7rO2RcnhQlIqlzoz8fgYAq9F4fs6FU6k+R2fBZwNhzgBSiQBjg+xIGyw9IGLfLo2o8NNwgdC7DQxEabvz9t90+JZlJnidf1Nvrg==", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\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.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C", "From": "Tomer Shmilovich <tshmilovich@nvidia.com>", "To": "Ori Kam <orika@nvidia.com>, Aman Singh <aman.deep.singh@intel.com>,\n \"Yuying Zhang\" <yuying.zhang@intel.com>", "CC": "<dev@dpdk.org>", "Subject": "[PATCH 2/2] app/testpmd: add group set miss actions CLI commands", "Date": "Wed, 20 Sep 2023 12:52:49 +0000", "Message-ID": "<20230920125250.804055-3-tshmilovich@nvidia.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20230920125250.804055-1-tshmilovich@nvidia.com>", "References": "<20230920125250.804055-1-tshmilovich@nvidia.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-Originating-IP": "[10.126.231.35]", "X-ClientProxiedBy": "rnnvmail203.nvidia.com (10.129.68.9) To\n rnnvmail202.nvidia.com (10.129.68.7)", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "BL6PEPF0001AB4E:EE_|DM4PR12MB5359:EE_", "X-MS-Office365-Filtering-Correlation-Id": "3b6ba7dc-6746-4c94-5908-08dbb9d8946d", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n qudafzn0T3CbL/PeLHWxUr/VdFEv3VdqAbTjZizf3oskhItKz2ZQ7f4OGiDavT2MVtW/lGRKpi66PhWBAsXg/GBLAWxOU9vjfPDHy1ObAjzDYxKBlHKWcZEz4SqrlUKKbxJXLQ82xJWJZzWw6mc98UP6Yx+XqPF++8n+q4Ob2IBhFqRiDbti7XecscbdMymnYn6rnVhhouk7qWIEnhmRCG3V5W0+XiTWFbmuk1E8uNicXpMGw0gcGBcj3sAtIbVxpYf9lAYLplWKW4FxYMesUn+eTQJZVFFmrBashH0jsVLMOJUu6wlzdqU8DrnmVkCMnkcXx5oaYOlqn7mqeFHMWqLE5z1e87XtHKYj4ScaH3M4Q5QI4jSWX6H6mWFiy3DUto8qdpeXudizHCRwc1Z7FZpPy8yWkjEExY+uLtHGW4x6mSu1jy6EQdy2g9ebU+82GmJGF6oydpsCL9YjsL2EP4cw2dXrw98mUYF2Rew2z8awplg+GYkkc2EyjXuG2auN4CS5yo3TEyllUNcSAXB3E4c4kE1Lftqx8ryswSXDiYKhE3Rg2TEwdBFjHZvwRsWEzyEp9rFBD81bWJtWIH5L1YuiccGw5kEjc8LnmNCQmAh/qZu/1dd4wCohCbouNh5b130Cbf5rTZnWckRvzmxiznxOwujhIuEBW0N3N82n2UAGJJb/ZwxP2UI1JH7ezZg2yQom/UWS4LDClOo0oFSNL5OyMCJk/VxZuTUO+Gf6B1Fz/2vSIUxat3GjxJr657Ca", "X-Forefront-Antispam-Report": "CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;\n SFS:(13230031)(4636009)(396003)(346002)(376002)(136003)(39860400002)(186009)(1800799009)(451199024)(82310400011)(46966006)(40470700004)(36840700001)(8936002)(8676002)(2906002)(316002)(41300700001)(16526019)(6286002)(55016003)(336012)(26005)(40480700001)(426003)(1076003)(110136005)(478600001)(70206006)(70586007)(4326008)(5660300002)(36860700001)(7696005)(40460700003)(47076005)(2616005)(36756003)(6666004)(83380400001)(86362001)(356005)(7636003)(82740400003);\n DIR:OUT; SFP:1101;", "X-OriginatorOrg": "Nvidia.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "20 Sep 2023 12:53:25.5450 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 3b6ba7dc-6746-4c94-5908-08dbb9d8946d", "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.160];\n Helo=[mail.nvidia.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n BL6PEPF0001AB4E.namprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM4PR12MB5359", "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": "Add testpmd CLI interface for the group set miss actions API:\n\n\tflow group 0 group_id 1 ingress set_miss_actions jump group 3 / end\n\tflow group 0 group_id 1 ingress set_miss_actions end\n\nSigned-off-by: Tomer Shmilovich <tshmilovich@nvidia.com>\nAcked-by: Ori Kam <orika@nvidia.com>\n---\n app/test-pmd/cmdline_flow.c | 112 ++++++++++++++++++++++++++++++++++++\n app/test-pmd/config.c | 27 +++++++++\n app/test-pmd/testpmd.h | 2 +\n 3 files changed, 141 insertions(+)", "diff": "diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex 94827bcc4a..b3b8893e37 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -86,6 +86,7 @@ enum index {\n \tPATTERN_TEMPLATE,\n \tACTIONS_TEMPLATE,\n \tTABLE,\n+\tFLOW_GROUP,\n \tINDIRECT_ACTION,\n \tVALIDATE,\n \tCREATE,\n@@ -206,6 +207,13 @@ enum index {\n \tTABLE_PATTERN_TEMPLATE,\n \tTABLE_ACTIONS_TEMPLATE,\n \n+\t/* Group arguments */\n+\tGROUP_ID,\n+\tGROUP_INGRESS,\n+\tGROUP_EGRESS,\n+\tGROUP_TRANSFER,\n+\tGROUP_SET_MISS_ACTIONS,\n+\n \t/* Tunnel arguments. */\n \tTUNNEL_CREATE,\n \tTUNNEL_CREATE_TYPE,\n@@ -1293,6 +1301,14 @@ static const enum index next_at_destroy_attr[] = {\n \tZERO,\n };\n \n+static const enum index next_group_attr[] = {\n+\tGROUP_INGRESS,\n+\tGROUP_EGRESS,\n+\tGROUP_TRANSFER,\n+\tGROUP_SET_MISS_ACTIONS,\n+\tZERO,\n+};\n+\n static const enum index next_table_subcmd[] = {\n \tTABLE_CREATE,\n \tTABLE_DESTROY,\n@@ -2678,6 +2694,9 @@ static int parse_push(struct context *, const struct token *,\n static int parse_pull(struct context *, const struct token *,\n \t\t const char *, unsigned int,\n \t\t void *, unsigned int);\n+static int parse_group(struct context *, const struct token *,\n+\t\t const char *, unsigned int,\n+\t\t void *, unsigned int);\n static int parse_tunnel(struct context *, const struct token *,\n \t\t\tconst char *, unsigned int,\n \t\t\tvoid *, unsigned int);\n@@ -3021,6 +3040,7 @@ static const struct token token_list[] = {\n \t\t\t PATTERN_TEMPLATE,\n \t\t\t ACTIONS_TEMPLATE,\n \t\t\t TABLE,\n+\t\t\t FLOW_GROUP,\n \t\t\t INDIRECT_ACTION,\n \t\t\t VALIDATE,\n \t\t\t CREATE,\n@@ -3411,6 +3431,46 @@ static const struct token token_list[] = {\n \t\t.call = parse_table,\n \t},\n \t/* Top-level command. */\n+\t[FLOW_GROUP] = {\n+\t\t.name = \"group\",\n+\t\t.help = \"manage flow groups\",\n+\t\t.next = NEXT(NEXT_ENTRY(GROUP_ID), NEXT_ENTRY(COMMON_PORT_ID)),\n+\t\t.args = ARGS(ARGS_ENTRY(struct buffer, port)),\n+\t\t.call = parse_group,\n+\t},\n+\t/* Sub-level commands. */\n+\t[GROUP_SET_MISS_ACTIONS] = {\n+\t\t.name = \"set_miss_actions\",\n+\t\t.help = \"set group miss actions\",\n+\t\t.next = NEXT(next_action),\n+\t\t.call = parse_group,\n+\t},\n+\t/* Group arguments */\n+\t[GROUP_ID]\t= {\n+\t\t.name = \"group_id\",\n+\t\t.help = \"group id\",\n+\t\t.next = NEXT(next_group_attr, NEXT_ENTRY(COMMON_GROUP_ID)),\n+\t\t.args = ARGS(ARGS_ENTRY(struct buffer, args.vc.attr.group)),\n+\t},\n+\t[GROUP_INGRESS] = {\n+\t\t.name = \"ingress\",\n+\t\t.help = \"group ingress attr\",\n+\t\t.next = NEXT(next_group_attr),\n+\t\t.call = parse_group,\n+\t},\n+\t[GROUP_EGRESS] = {\n+\t\t.name = \"egress\",\n+\t\t.help = \"group egress attr\",\n+\t\t.next = NEXT(next_group_attr),\n+\t\t.call = parse_group,\n+\t},\n+\t[GROUP_TRANSFER] = {\n+\t\t.name = \"transfer\",\n+\t\t.help = \"group transfer attr\",\n+\t\t.next = NEXT(next_group_attr),\n+\t\t.call = parse_group,\n+\t},\n+\t/* Top-level command. */\n \t[QUEUE] = {\n \t\t.name = \"queue\",\n \t\t.help = \"queue a flow rule operation\",\n@@ -10449,6 +10509,54 @@ parse_pull(struct context *ctx, const struct token *token,\n \treturn len;\n }\n \n+static int\n+parse_group(struct context *ctx, const struct token *token,\n+\t const char *str, unsigned int len,\n+\t void *buf, unsigned int size)\n+{\n+\tstruct buffer *out = buf;\n+\n+\t/* Token name must match. */\n+\tif (parse_default(ctx, token, str, len, NULL, 0) < 0)\n+\t\treturn -1;\n+\t/* Nothing else to do if there is no buffer. */\n+\tif (!out)\n+\t\treturn len;\n+\tif (!out->command) {\n+\t\tif (ctx->curr != FLOW_GROUP)\n+\t\t\treturn -1;\n+\t\tif (sizeof(*out) > size)\n+\t\t\treturn -1;\n+\t\tout->command = ctx->curr;\n+\t\tctx->objdata = 0;\n+\t\tctx->object = out;\n+\t\tctx->objmask = NULL;\n+\t\tout->args.vc.data = (uint8_t *)out + size;\n+\t\treturn len;\n+\t}\n+\tswitch (ctx->curr) {\n+\tcase GROUP_INGRESS:\n+\t\tout->args.vc.attr.ingress = 1;\n+\t\treturn len;\n+\tcase GROUP_EGRESS:\n+\t\tout->args.vc.attr.egress = 1;\n+\t\treturn len;\n+\tcase GROUP_TRANSFER:\n+\t\tout->args.vc.attr.transfer = 1;\n+\t\treturn len;\n+\tcase GROUP_SET_MISS_ACTIONS:\n+\t\tout->command = ctx->curr;\n+\t\tctx->objdata = 0;\n+\t\tctx->object = out;\n+\t\tctx->objmask = NULL;\n+\t\tout->args.vc.actions = (void *)RTE_ALIGN_CEIL((uintptr_t)(out + 1),\n+\t\t\t\t\t\t\t sizeof(double));\n+\t\treturn len;\n+\tdefault:\n+\t\treturn -1;\n+\t}\n+}\n+\n static int\n parse_flex(struct context *ctx, const struct token *token,\n \t const char *str, unsigned int len,\n@@ -12329,6 +12437,10 @@ cmd_flow_parsed(const struct buffer *in)\n \t\t\t\t\tin->args.table_destroy.table_id_n,\n \t\t\t\t\tin->args.table_destroy.table_id);\n \t\tbreak;\n+\tcase GROUP_SET_MISS_ACTIONS:\n+\t\tport_queue_group_set_miss_actions(in->port, &in->args.vc.attr,\n+\t\t\t\t\t\t in->args.vc.actions);\n+\t\tbreak;\n \tcase QUEUE_CREATE:\n \t\tport_queue_flow_create(in->port, in->queue, in->postpone,\n \t\t\tin->args.vc.table_id, in->args.vc.rule_id,\ndiff --git a/app/test-pmd/config.c b/app/test-pmd/config.c\nindex 3d1da99307..709864bb44 100644\n--- a/app/test-pmd/config.c\n+++ b/app/test-pmd/config.c\n@@ -3514,6 +3514,33 @@ port_queue_flow_pull(portid_t port_id, queueid_t queue_id)\n \treturn ret;\n }\n \n+/* Set group miss actions */\n+int\n+port_queue_group_set_miss_actions(portid_t port_id, const struct rte_flow_attr *attr,\n+\t\t\t\t const struct rte_flow_action *actions)\n+{\n+\tstruct rte_flow_group_attr gattr = {\n+\t\t.ingress = attr->ingress,\n+\t\t.egress = attr->egress,\n+\t\t.transfer = attr->transfer,\n+\t};\n+\tstruct rte_flow_error error;\n+\tint ret = 0;\n+\n+\tif (port_id_is_invalid(port_id, ENABLED_WARN) ||\n+\t port_id == (portid_t)RTE_PORT_ALL)\n+\t\treturn -EINVAL;\n+\n+\tmemset(&error, 0x66, sizeof(error));\n+\tret = rte_flow_group_set_miss_actions(port_id, attr->group, &gattr, actions, &error);\n+\n+\tif (ret < 0)\n+\t\treturn port_flow_complain(&error);\n+\n+\tprintf(\"Group #%u set miss actions succeeded\\n\", attr->group);\n+\treturn ret;\n+}\n+\n /** Create flow rule. */\n int\n port_flow_create(portid_t port_id,\ndiff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h\nindex f1df6a8faf..e69b76f380 100644\n--- a/app/test-pmd/testpmd.h\n+++ b/app/test-pmd/testpmd.h\n@@ -979,6 +979,8 @@ int port_flow_template_table_create(portid_t port_id, uint32_t id,\n int port_flow_template_table_destroy(portid_t port_id,\n \t\t\t uint32_t n, const uint32_t *table);\n int port_flow_template_table_flush(portid_t port_id);\n+int port_queue_group_set_miss_actions(portid_t port_id, const struct rte_flow_attr *attr,\n+\t\t\t\t const struct rte_flow_action *actions);\n int port_queue_flow_create(portid_t port_id, queueid_t queue_id,\n \t\t\t bool postpone, uint32_t table_id, uint32_t rule_idx,\n \t\t\t uint32_t pattern_idx, uint32_t actions_idx,\n", "prefixes": [ "2/2" ] }{ "id": 131726, "url": "