From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 267AE41D9B for ; Tue, 28 Feb 2023 10:03:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 21C2540EE4; Tue, 28 Feb 2023 10:03:33 +0100 (CET) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2114.outbound.protection.outlook.com [40.107.94.114]) by mails.dpdk.org (Postfix) with ESMTP id D646B4021F; Tue, 28 Feb 2023 10:03:30 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ddsDMwBU5XZuc2yIDJzcPWV8RUTcYHx0IEoOUEyzTTAOiH1bFV4Gx+kJOApQ713+f/2D/4KQ0gI2vdrB7Tfq7nuF1/9AZthaPo7OdIMgoyhfCoD8Xd7ES5YBTjqypdM7H9qG3l5J+iZrVdh3Qc59LfUWPLynsA2hMiG7c/fkG3yRHvIbT5AC1KPWwM3dAMOi1HNuD2xeAxTWvABCMlr3lfJwCQtAG7n4sQqRVehLpF9pzo+hlhio4pm/W/+r1vnLZgz42E1/45TbbWzizje67HpIfh3E8n6jmZ+WIfp7c5XBzBZ5rBewKbW7HmC1MfrvGBgpI6C9KZEUxWp5jri9+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=7WQhv4lX/Frt9/+dopFWhQlYbH0zoZQCevOVxubxI1g=; b=JC+JqKqrE/q50IrAGDn6xPlrR+alKKSId0PXdSD+WpyUCtJ8ZX1AXIqGH7XDFvMmzzBiuokH9/wL6FHK7lGx5D9efNbqLyjMTyyRa245xPCcX/eFD64ge+uyxwP7Y0aL6hN/TnfJhrYB5JJUKFVl0e4sLBN/52P/0SW02qXr8kFSSb2X02UQ4M8HGcSyEWQ5RuTybgjAO3vaHUR1rf0T2SvYDtsKpGOWvPaxF2G8x4j72l82EjrJk9awlHfxB4jWbW8FHrrKPq6RUO7nkxWq7XNKpPO2cg/IGlvJ9ybza++chb/t1RTqKC5l3iGvQd1VKELfglmL/XgH4WM+MQ0ZFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7WQhv4lX/Frt9/+dopFWhQlYbH0zoZQCevOVxubxI1g=; b=INH7nBs7kuup2pW+EigkKjCQmEpbQ/74hUiSNJvGete1/sea+Cnoi7sG7eUNbngaXd/7Zf0hVwqhG1ZPNLeQEHq8k71Gg7UarVtYfRbM9vNJCdHjnDiTzZSQ6pVZf8K9Eqkzrdae8QXhthAjjMmWFNkpDx0mCYmDJKBuawuon5s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by SA1PR13MB6053.namprd13.prod.outlook.com (2603:10b6:806:33a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.30; Tue, 28 Feb 2023 09:03:27 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d%7]) with mapi id 15.20.6134.030; Tue, 28 Feb 2023 09:03:27 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He , stable@dpdk.org Subject: [PATCH] net/nfp: fix the offload of multiple output actions Date: Tue, 28 Feb 2023 17:03:05 +0800 Message-Id: <20230228090305.501732-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SG2PR02CA0121.apcprd02.prod.outlook.com (2603:1096:4:188::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB6053:EE_ X-MS-Office365-Filtering-Correlation-Id: 19995ab2-1336-422e-c8ee-08db196aa787 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gk81yiNAqvILPsbufATY2vRZl+3+K/SB8X5bm0PKGtT3zn1XMXK5JXjGGggxJ7bIa/G1N9kFy7HBytM83AnQ9TIErJtKl7ZaNteXXNF9sB6S0RkZTFL+H9rXT+ZZueEPcXm9eZZYyS+MRaMwsIhVoR+bfKtCxkUZFU5dlL+gdNd9VmGqI/lux7W2D+hE5l2b4dwzcHI3Tf+1D2ws+GBXqWSldbKRfrO6znsg7uyoanaT334iYGro3EbM2LaBmCr177b+CWe0W6Ifw7c5/TfEjTVht3WfUULcs/4QhuRRoLEmIs+LFykmuQ2p0jmv/Fs4unsXTGFCunkZo2YFmNrCY4E7bea9M46KzkZPK42keMYwdLS59oywEKKaFxjiucrWEXVhoMS20lKvl/08Z51GdnDBoiotkZKzSZonjunuj2FOjf5QDi7WWjtY3djS2806LmG5atMSkcRZt9nvrKEWLL59eeHc0cK+p7Z6h8tC7ABA2Kwqy4iZBQoYVg/dgPAJtUUI3I/eJu5vZSPnKoxtMnNPlt3W26CRQD+YeH3AONjQ0ktNOJKT17PgMY18ev50JNOfrI9X7DHy3Qe8UOFcVH0/NzPfwVstXQqc19Jdk8847dWMMxpqFaEX2uRlAMoeP9C8apng+ACSwzBU3sWqQrGFRavfXtAU25Pk9xvQOxxw1xlqE2RXJJGXixB9bQ62 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(136003)(346002)(376002)(366004)(39830400003)(396003)(451199018)(86362001)(36756003)(41300700001)(66946007)(66556008)(66476007)(5660300002)(8936002)(6916009)(4326008)(8676002)(44832011)(2906002)(38350700002)(38100700002)(52116002)(6666004)(6486002)(450100002)(478600001)(316002)(83380400001)(2616005)(186003)(6512007)(6506007)(26005)(1076003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WXg0SEhJanJaaTljVzZWTXRJZmIyMS9FYU1oWlYyU0FkNUtJMlFQQzk1L1lU?= =?utf-8?B?Tngyc2JzdU1vd1VSTmxmd2FqK0hKRGJnbTN6UXJrZUFkWGRhN3dSQUFyTmVh?= =?utf-8?B?eVV5emdMZTJ2TElkWXlSVFU3MmliR2d5RkF4NmpITlNjM3F1elZFTHBpbGhw?= =?utf-8?B?eVoyUWlydnp1ZFVDdUhnSEpMWVVEREZleFBvazRmU2IyOGJYalpQVllScWc0?= =?utf-8?B?NmVQdGNQajJTSDVIdzRac3lWZ3FRSG5Ud1cyOGdLUnZOUlM4d3NDZS9FdWJv?= =?utf-8?B?M0xFd2RlaUhHblpUZi9CbUIyWXNSTjJaYmtGbEk1NXAxV0grZGxOR09iS0Nr?= =?utf-8?B?UmhPM1hIQTFqT3ZLbzBJTlFPYnNDMG5PaEt2ZG11azFSYTFoVHdUYVJyVHhy?= =?utf-8?B?Q01lWWIyU1N3WjAxTzluNkxJT0o4T3ZmeXcwc0VuYjlMU3ZWVXBycm00OGti?= =?utf-8?B?dFZDVGZTdUJXWHphTDA1WUVhcUJMeHFRN29qTlNuSEIvZE82UUtCcHVNMDVM?= =?utf-8?B?dE5Pek1Xb2FxdVROM2dURFpGYnFmQ1BHUnQxTjc4YXZ0S0ZONkdwM1ZPdWM3?= =?utf-8?B?bFdFTVhNWGZzZ3JVYmZLL2RQbkxiSTFsMGhUUWZlK2w0WGw2UlozMW9FYU9X?= =?utf-8?B?RndnM2hzc0xmQmIzazJEN1huTjdxUHJDSis0UTRjclhRcFVkTmlMbkNJRGt0?= =?utf-8?B?ZXJSbTMzNzJOUXU4WUs4VTZ4cWUvZ01JamdTcFBzM0thL1E0aGhOTzZ1SHRM?= =?utf-8?B?VUVjZURQMjJZdzVaRjFKZGNBWlN5TjdibjZ2SXpqUzF4ajFKZGlXcnlXeC9x?= =?utf-8?B?TVJJV0c1eEROU2pxRDJTNE8zN2JWSHoxWSs1RXNmRFB2dElHcnJlVVRUZXBU?= =?utf-8?B?ZndiZ0tmY2Z6b1RTTmdTL0M5a1pueTB2Tmc4bm9nSWUrRmk2WUliUnFPYlJY?= =?utf-8?B?WEk2M0FQVDVyaDNYNk95ZURFTEthZjlOWFBPbUJXSTRCVUhacytCK1UzYkk5?= =?utf-8?B?NXRhNmpBalN5MVR5UzFzZ1hSU3BUTEgwcVVpeTl2bmNjbTBIdUR0THFzd1or?= =?utf-8?B?ZncyWnRoSXdJM3Z5c1grN1Z4a2VQc2lJZEc4bDBhc2h3UDVkVFdyM0hKRWhY?= =?utf-8?B?OVlFODJ5aU16QU5xcGExVTd4NXZrR0JxU05lUVkxYUxFSGlRWnVVU3dEcXh3?= =?utf-8?B?MnowL0FYUThrdjVtcElEeTFkNUxxMzNYY01DQk11NkVHVXQ5VDZsS3BQa3Vv?= =?utf-8?B?WUxYNWhQemR4NkJUT2phRzFlWEYvYjh2SDJjQS85My9OK0hlTEZ6ZkVoZ1VX?= =?utf-8?B?bE5ZQW5sUWtXZUROcDh6RVZKRWNiQ0RMdXQycTVRWE95Q2wvdm93RUFxRjI5?= =?utf-8?B?aVBjU3hpd1REZEdaUFpiZWxLL2wvSjYzMUFTajJnZ1pZa3pVWWxrcUlWOGtx?= =?utf-8?B?dldFZDlwbnJ6QTNrYTgvcExxc1BrUFUxVFRqY3d4cWxTdFhCOFdZK3lFV2NB?= =?utf-8?B?WG1nbmgwVWc4RldibktLOTJ0S3VCN3pJZlRZS2ljVWgyR3BFWjBRVnNNZFVK?= =?utf-8?B?eENTNHRMelVHb3FqNmRlbnU1SUtRZFZCaG1ra1ZPWlJxUGxzZUFhLzl1anBE?= =?utf-8?B?KzJzSGs1dVBtWGkvZUNuVHpsTGk1RmdZbkxlNmZ3enlBYWdNRXFTd1pJRnZP?= =?utf-8?B?OXFSTGpDM3lxY2tnd3VRTzBpWEdGdzY1cG9Vb3Rwdm9xR0VIdFpOOWJINTBp?= =?utf-8?B?RGdRbVZQNXhtbTljZmFEaWtMNlpSbTZTeVp0NXZjUmVFaXBKdm5YS1FobTVP?= =?utf-8?B?b0MyN2hzck1zRW9naTR1djhBUUhnVG5ra0Jrb1d1SkVIR0tCQ3JlSU1nRmlP?= =?utf-8?B?ZEVmaUNVd21XR2NCdFBRUW4xYk0xS21NQ1A3YmVDNXp5Y3BqZ0Q0cVkvaG5G?= =?utf-8?B?TmNNZjJvd3RhOXluVWsvRk8zWDlOQjZaZHRDTHRCK3JOMnBrVTc0cjhsazkz?= =?utf-8?B?eUxZUEpGd2puWmorQ2h0QVdQbG1vQTRYZjdhV2plY1dBc0RoaWNVejZQRGdL?= =?utf-8?B?V3Z5MjhGbUFMY3k3QzVmdndIR0QxYUNkRzJac24xUGxOWk9aU054SmJzMExS?= =?utf-8?B?c2QvSjVrZ2QwdVZMa05Md1NGeFVGVUZpU3RtTXlCdmtxWmpaYnpNenp1V0lv?= =?utf-8?B?YXc9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19995ab2-1336-422e-c8ee-08db196aa787 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 09:03:27.5366 (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: pZr7ZcoKiWqiHjyh8LNi+0JygqoYrM3/P6BSmEVoZ9GyK5apNUXVX/NzrWuvXoaXbcPskxzjB6cD/Rmy5oRBoLOI5phQ82vZw1w13FJGrvw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB6053 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org When offload the flow with multiple output actions, the original logic add a flag to every output action wrongly, and this cause only the first output action can take effect. Fix it by only add the flag to the last output action. Fixes: 4d946034bf9c ("net/nfp: support basic flow actions") Cc: stable@dpdk.org Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/nfp_flow.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index 0c38925701..3fa7c2f3b0 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -2033,7 +2033,8 @@ nfp_flow_compile_items(struct nfp_flower_representor *representor, static int nfp_flow_action_output(char *act_data, const struct rte_flow_action *action, - struct nfp_fl_rule_metadata *nfp_flow_meta) + struct nfp_fl_rule_metadata *nfp_flow_meta, + uint32_t output_cnt) { size_t act_size; struct rte_eth_dev *ethdev; @@ -2052,8 +2053,9 @@ nfp_flow_action_output(char *act_data, output = (struct nfp_fl_act_output *)act_data; output->head.jump_id = NFP_FL_ACTION_OPCODE_OUTPUT; output->head.len_lw = act_size >> NFP_FL_LW_SIZ; - output->flags = rte_cpu_to_be_16(NFP_FL_OUT_FLAGS_LAST); output->port = rte_cpu_to_be_32(representor->port_id); + if (output_cnt == 0) + output->flags = rte_cpu_to_be_16(NFP_FL_OUT_FLAGS_LAST); nfp_flow_meta->shortcut = rte_cpu_to_be_32(representor->port_id); @@ -3290,12 +3292,27 @@ nfp_flow_action_meter(struct nfp_flower_representor *representor, return 0; } +static uint32_t +nfp_flow_count_output(const struct rte_flow_action actions[]) +{ + uint32_t count = 0; + const struct rte_flow_action *action; + + for (action = actions; action->type != RTE_FLOW_ACTION_TYPE_END; ++action) { + if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) + count++; + } + + return count; +} + static int nfp_flow_compile_action(struct nfp_flower_representor *representor, const struct rte_flow_action actions[], struct rte_flow *nfp_flow) { int ret = 0; + uint32_t count; char *position; char *action_data; bool ttl_tos_flag = false; @@ -3314,6 +3331,8 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, position = action_data; meta_tci = (struct nfp_flower_meta_tci *)nfp_flow->payload.unmasked_data; + count = nfp_flow_count_output(actions); + for (action = actions; action->type != RTE_FLOW_ACTION_TYPE_END; ++action) { switch (action->type) { case RTE_FLOW_ACTION_TYPE_VOID: @@ -3330,7 +3349,8 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, break; case RTE_FLOW_ACTION_TYPE_PORT_ID: PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_PORT_ID"); - ret = nfp_flow_action_output(position, action, nfp_flow_meta); + count--; + ret = nfp_flow_action_output(position, action, nfp_flow_meta, count); if (ret != 0) { PMD_DRV_LOG(ERR, "Failed when process" " RTE_FLOW_ACTION_TYPE_PORT_ID"); -- 2.39.1