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 93C51455E3; Tue, 9 Jul 2024 14:14:22 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 83EB74066A; Tue, 9 Jul 2024 14:14:22 +0200 (CEST) Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2103.outbound.protection.outlook.com [40.107.117.103]) by mails.dpdk.org (Postfix) with ESMTP id EDE3B40658 for ; Tue, 9 Jul 2024 14:14:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gq9/Qm0XLaJFK7m65NE+YMPzIT3BDFC6BYkNb0YH+9hg3WDYlObU0zd9NiX1ieGqGyqq/lkO5Jj2uWlCD3+5vYMUx5VMqPpcbpJXoY08iHO31Hjp3wf6lp6+9XVTroONzD/9WwSsC8lxVOwQrk3ODhffLrwohs0G1Xhoy6Z9uULxGuv6r6VrFIDabcjcficyE5pEtJcIBi/w5ACYehfBdZvUCarmndwQHM9eV1HsCUNtoVr+v8t02qvrFRwjYK21yDRgHDyjiZLjn6BOpg3kQXdUbF8Jl72Njsiim/OwmDeWbL0hNv/xZKaoXMQOUnexLPTE+btjen/qecN5xiDLuA== 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=RQv1L+RBNQt8+hrbXKWNTeDvJxEbq7RIlr6MP0sXW8A=; b=GdEOH+sA9HUFxWOYxWBMlSL8jU9yW/tkT+PoJ1ozm2Wle+SoFVlsBuKOMAfZ1V9DsnwCB1N7wXThaUtOHZRuFgakTS+yWiV2Ino0EdqclooOOhSIL6ZtKE0IZao2WAnnxXoUMFkcJDMVjICtZyoTp9DrF9EoKKrrwJhhFgFnirCFwZxVvd4JVIjyGkKFYroTYMikuxhfatrfhGpQ7iD/PkJAlEAdah5uL2oYPDcJcMXSsT29GpGmo0u3euXJgaWDLPwaPttlyVyt418Bk5FxLSunn9NczRMNnuPsGF9a9tdv2Uj1IC/giuYFZ6yLpsvMOBm5W6LSfihzfqhyQ5ChXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=jaguarmicro.com; dmarc=pass action=none header.from=jaguarmicro.com; dkim=pass header.d=jaguarmicro.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jaguarmicro.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RQv1L+RBNQt8+hrbXKWNTeDvJxEbq7RIlr6MP0sXW8A=; b=jRYsCVgE3TTm96D4rEc56b0dpFQsYo3efy+kygSohnl/erBSO9zxDt3Mx3ymSvfRxiw1xBfhngAyGhZsLNQxbT8brJWrc4kA/fu7gwvYbYtDEchqCTQe5CMkHoWXJUNCNnoY0/tdETMeOO5AqTkYnQzh8tJQm551Y/mqwfdhaweh8JAxbnYRloBO7t36AGdd2X6RlBOvffn7IOC1tHDIanc7dQuKAR+S9I8f6TLXBevcjlJ5Sl53+LZPqCjp80dzvlEMvn4y3H2lyx5fzIg6lFnoina5hY8li6zTtVqFdOOdP3WslutAYUekIjwedyhzaZO+b9rYDgdUUB/WBRVCSQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=jaguarmicro.com; Received: from KL1PR0601MB5567.apcprd06.prod.outlook.com (2603:1096:820:c5::14) by SEZPR06MB6331.apcprd06.prod.outlook.com (2603:1096:101:12c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36; Tue, 9 Jul 2024 12:14:16 +0000 Received: from KL1PR0601MB5567.apcprd06.prod.outlook.com ([fe80::3ad3:b4d9:7e69:85cb]) by KL1PR0601MB5567.apcprd06.prod.outlook.com ([fe80::3ad3:b4d9:7e69:85cb%3]) with mapi id 15.20.7741.033; Tue, 9 Jul 2024 12:14:15 +0000 From: Sunyang Wu To: dev@dpdk.org Cc: i.maximets@ovn.org, horms@ovn.org Subject: [PATCH v4] netdev-offload-dpdk: Support offload of set dscp action Date: Tue, 9 Jul 2024 20:14:18 +0800 Message-Id: <20240709121418.9732-1-sunyang.wu@jaguarmicro.com> X-Mailer: git-send-email 2.19.0.rc0.windows.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: TYCP301CA0029.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::15) To KL1PR0601MB5567.apcprd06.prod.outlook.com (2603:1096:820:c5::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR0601MB5567:EE_|SEZPR06MB6331:EE_ X-MS-Office365-Filtering-Correlation-Id: ee0fe008-b4d6-4b55-d639-08dca010a69b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|366016|1800799024|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?C6SWBzFtREjjDir6McAS37WMbAaND3slIXCK7Ad61VOGzrLRyvbk3DzdvYi8?= =?us-ascii?Q?4XKYmJb1QvnCs7/MjqYo2RgkgSpryQNd3CHwRQ/Hct9mB+uuP0Ws1UUBNQox?= =?us-ascii?Q?sQ0lrN4J+oA3gJ8VLahUBLk4tMyZsyWuSJl+47wOTyP3vJ5FPgm9LM3fXVFK?= =?us-ascii?Q?HJ9NTq3e1sGL2TWhxHljqm5o2aPc/6LlBcl4WFRW0jbLY11C0C6ZE7gYROBo?= =?us-ascii?Q?FZtffHwYaA5D3swm0Z+XSk1pA1EZbcxnVD8lnoz5QV+UYgdoPU5EaMO1QsGI?= =?us-ascii?Q?eMAuCHujpSrhWzRyeCH8hKLReYB0p9+IKCgmYADxEO1Su0Kgo9RieOlMMmCu?= =?us-ascii?Q?TwkuNdMVJhbjWKb9kcFCGMRJdr3+YP/5SyLc8lpICuITbDkdUogZsbxp/O9d?= =?us-ascii?Q?8jX5Q0euu3b1MX4wnbANWkhvwwQN8Z1I6jeLFLXvn1WYF45d896pZuZlC3HG?= =?us-ascii?Q?WUXRKHDJA2QgyBnWVjztN/LgDpwt7DMayvWmHsePA+TeqH61a5Vus3qDtCQe?= =?us-ascii?Q?Trq5SIE9zNMSDU3ykvjrCZ4wtRHpZhsbBemL0BnhK/y5aYq0Mw2vIj/0CdDz?= =?us-ascii?Q?1WpEGG5fy5thE3RgICTPU3zUT2F9jzouZKC8M8+dM6ehOouJySGKd2PZ+6eq?= =?us-ascii?Q?SCL8x03NJSkkpAR7RSg8ELBs2bu3Hl6/Sf4nseGUO1a7BIoQubWOMGwPu1tm?= =?us-ascii?Q?Ey9Y9J6CwcZBkLzKcfLE3tcIT8SeF6gnZHjipckFPmTiiOYJnLw1LxDJssUT?= =?us-ascii?Q?fg2N6mHIdibzVT81KawTnsAnc6HYlGSZH7jRU+LVCIpp+Oxf2OCUZ3zSqd0d?= =?us-ascii?Q?S2ze6uQ9gGzFoo83m6tiz5os37MjOSZf31AzeGShzRgRHWvGegfJn4C23oVz?= =?us-ascii?Q?7fcbofTN6RkTqK488Wr4SmhFR23mRneS9qD+fMhQ58HyYMxxrcQ0APnd6KJ+?= =?us-ascii?Q?Iovb3F1aQC5xLy9oXQrkl6tHf76hlR+1Pc741xVq2Lhb3auo8wt5K8N7OuSr?= =?us-ascii?Q?zG7T3RTVtSco2hrX+d0sdUKiGlCAmYaZjunDzC66DcciG4ukqEOc5dS1Bihg?= =?us-ascii?Q?eBkDxpr6GwWP1essb0C0IEecWTQGFVgBeNGxcKvvEdZugLY3J/zEljcY7AIs?= =?us-ascii?Q?AoDPCtuBF1e8aBLrdddyXFE9HovF9rzkdTVrlM5JIzS1AO/Mvu2NgGPONY14?= =?us-ascii?Q?Z89i7+l6lHvAfvUTCJhp0MLzvzfc43Z0bH81qHTOfSprs4lCp4FxEPeZAJ/y?= =?us-ascii?Q?L8ke9o0sbe+9xJq1Cps5sS6zoafxaSoFWyl4qTv1lIfyCSqyVmz1NwW4z7KL?= =?us-ascii?Q?JL6+4fp+1Z0f2arq0eeG+vI4krluUtRj89/5EMRJWZWJ46fJltk92oA2wnTg?= =?us-ascii?Q?IK8zVmGp5HioLeKwwh0iWQC9ru6DD2kEl29BZR1t2QKqiLcBFQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR0601MB5567.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(52116014)(366016)(1800799024)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8N6n2hkjldPfmjFHTYnbJfKsB3+ExF4ijN2PHRWtOcK7JEcOc3+KyQui3pML?= =?us-ascii?Q?syjHnwWbUFnpg1ocawt5UjUzQbPUPBtfv/Yi0yQ4xvW89q6WAQgK6+GrsZRX?= =?us-ascii?Q?Lsdn/mmzHRhB5DbH6HuNWzUGxq7xl8bLFNlRNU12fp5NQ+2r4eJZl0SB1Ser?= =?us-ascii?Q?jfYfYaB26F2aI31PGqqxzwf/fXX0/vFYc4x4DHoYIi9hBbmZsXwaCuEBe64Y?= =?us-ascii?Q?Fp2xmLr0+pNrZB9JOG5ICvH5LcbrbhDl2eLRjJrZR6G5x0bhxJzxrmiEWSEt?= =?us-ascii?Q?N4SwJ8i1Jj/7cy5XmdXW+GldE2KN7QMm6DmsJfEfy7NpOQTLC5fl8iwP/+qM?= =?us-ascii?Q?r9d94o8VageYhD5xE24YobQQefsPfSIuXfS97rC6kZWgDrya+SVz/RcwI4R0?= =?us-ascii?Q?YtguJCIcTJlxC4dBpkmyS8Aql5Z7F/i4nsKvIFGaJukvhjjkaT3VN+llyTfJ?= =?us-ascii?Q?lse9XCh81zI2flDSSFn5QazYB2PAFeK1IwoEYSy2f6T7xoaSpQl+dxZfm/+0?= =?us-ascii?Q?gtDGxkp99qb4Wls9a1O+DOuKFF7Nz7/zvQFF4Zh9hY39WWfxiolloej4nEHA?= =?us-ascii?Q?ZyYznVk7zr9jf7gu608+aBNVgngmfwx2BWdVGegr9y5lkgldRmM31Meb9Mjd?= =?us-ascii?Q?YkhWZrVcY/Jfb7NBLYFg0B01J5xx/FvEsIg0jrpgpz/c+je+CE40TaJFADQI?= =?us-ascii?Q?Z9P7UfOazOpPWclDxP5Qm+mBCdqJKUttPe6Ydp/GElH2s5Xpz5l9deBXG8qW?= =?us-ascii?Q?44xx+FVrgFuBppne3caA1WR2X0t2QEuHGwHbQIULFxuosIXkRcXEii9leLlX?= =?us-ascii?Q?hUiaJZPSzFt0dbSVcEOxJHunpG2qUEbfUz15n5s422/S1GnsZ8m/y2HCL4CI?= =?us-ascii?Q?uREe9p1E6gBhhBzlCyvlRQog8bohPX5VMgEFiW34oSU6zhYO/LYL8ul7vS67?= =?us-ascii?Q?MY8cJeKdubnFUkraRvYuImOVUPV9FKknYH1J6KcMQwRGPVMQmBmzkPNxuL3x?= =?us-ascii?Q?kte/N365alg0JrnzvOBgyTRYPaAxBVBDwk6pCsYfLVr1dQxXUmPOc/I4UvFs?= =?us-ascii?Q?w972AEFthBGsJAOIF4IIoDrLzmqhyMcoaIrduF/3D4pBUI5Jj7P/cr8n5OFE?= =?us-ascii?Q?QidbLf1/OQ6LfAoXh9sAA67aIqG1IB+al2LxB0sn9TxKzsbrT6Srl1b9vvOS?= =?us-ascii?Q?05D7d4G5sPlXyZ5poERcC4BJy6+g6OTHIkisiImdBE04BSofkGNzXHShD2B3?= =?us-ascii?Q?X1cyOX8CVFaOgToF1mQfIxqBxbmpc7oTJqG6CoOvT77wpaD87HM4zDkXrlcz?= =?us-ascii?Q?ScgfmYcj1cjj8Y8MoiixBvLMMM+CP4WBSj9tCOqajYqGnHvpSn2NAf2aafle?= =?us-ascii?Q?oY+/iE8RGkgnLH/InZypSrA8DJcgyXlB27tdlgx2eb5JmdzngMY5C7PGyFf+?= =?us-ascii?Q?fUwYc42n3cYAK5+OUIyA/ccRJohWGTHih3fflvgHr1PfHOu5UYo+hblU1UyC?= =?us-ascii?Q?U1dLnfEQd4j5peU+ThcIRsIKxy7cxowjeCDKPCJyf45f7lwX37L/0xGfClcv?= =?us-ascii?Q?51V4ZupswSrt4GRlFUXQUEo/4PlTE/Gpx+VUbcJJVFiCuX8TGCERCjyO/RGd?= =?us-ascii?Q?wg=3D=3D?= X-OriginatorOrg: jaguarmicro.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee0fe008-b4d6-4b55-d639-08dca010a69b X-MS-Exchange-CrossTenant-AuthSource: KL1PR0601MB5567.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jul 2024 12:14:15.7616 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 1e45a5c2-d3e1-46b3-a0e6-c5ebf6d8ba7b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Whzm+twaiY7luZuyD7nxLdL284D5WRgT9ZVO4HR36L83TWCc+ZH8qqWRS7UuhFY+V6L3+a6ZTjor3KzwnB6sphvhA8uLw2SUvmKazn1iPZg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB6331 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the "set dscp action" parsing function, so that the "set dscp action" can be offloaded. Signed-off-by: Sunyang Wu --- Documentation/howto/dpdk.rst | 5 +++-- lib/netdev-offload-dpdk.c | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst index 04609b20b..f0e46c95b 100644 --- a/Documentation/howto/dpdk.rst +++ b/Documentation/howto/dpdk.rst @@ -395,10 +395,11 @@ Supported actions for hardware offload are: - Output. - Drop. - Modification of Ethernet (mod_dl_src/mod_dl_dst). -- Modification of IPv4 (mod_nw_src/mod_nw_dst/mod_nw_ttl). +- Modification of IPv4 (mod_nw_src/mod_nw_dst/mod_nw_ttl/mod_nw_tos). - Modification of TCP/UDP (mod_tp_src/mod_tp_dst). - VLAN Push/Pop (push_vlan/pop_vlan). -- Modification of IPv6 (set_field:->ipv6_src/ipv6_dst/mod_nw_ttl). +- Modification of IPv6 (set_field:->ipv6_src/ipv6_dst/ +mod_nw_ttl/mod_nw_tos). - Clone/output (tnl_push and output) for encapsulating over a tunnel. - Tunnel pop, for packets received on physical ports. diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index 623005b1c..5a48da963 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -791,6 +791,17 @@ dump_flow_action(struct ds *s, struct ds *s_extra, ds_put_format(s, "port %"PRIu16" ", ntohs(set_tp->port)); } ds_put_cstr(s, "/ "); + } else if (actions->type == RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP || + actions->type == RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP) { + const struct rte_flow_action_set_dscp *set_dscp = actions->conf; + char *dirstr = actions->type == RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP + ? "set_ipv4_dscp " : "set_ipv6_dscp "; + + ds_put_cstr(s, dirstr); + if (set_dscp) { + ds_put_format(s, "dscp_value %d ", set_dscp->dscp); + } + ds_put_cstr(s, "/ "); } else if (actions->type == RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN) { const struct rte_flow_action_of_push_vlan *of_push_vlan = actions->conf; @@ -1836,11 +1847,22 @@ add_set_flow_action__(struct flow_actions *actions, return 0; } if (!is_all_ones(mask, size)) { - VLOG_DBG_RL(&rl, "Partial mask is not supported"); + if (attr != RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP || + attr != RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP) { + if (mask & IP_ECN_MASK) { + VLOG_DBG_RL(&rl, "ECN hw offload is not supported!"); + } else { + goto add_action; + } + } else { + VLOG_DBG_RL(&rl, "Partial mask is not supported"); + } + return -1; } } +add_action: spec = xzalloc(size); memcpy(spec, value, size); add_flow_action(actions, attr, spec); @@ -1912,6 +1934,7 @@ parse_set_actions(struct flow_actions *actions, add_set_flow_action(ipv4_src, RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC); add_set_flow_action(ipv4_dst, RTE_FLOW_ACTION_TYPE_SET_IPV4_DST); add_set_flow_action(ipv4_ttl, RTE_FLOW_ACTION_TYPE_SET_TTL); + add_set_flow_action(ipv4_tos, RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP); if (mask && !is_all_zeros(mask, sizeof *mask)) { VLOG_DBG_RL(&rl, "Unsupported IPv4 set action"); @@ -1924,6 +1947,8 @@ parse_set_actions(struct flow_actions *actions, add_set_flow_action(ipv6_src, RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC); add_set_flow_action(ipv6_dst, RTE_FLOW_ACTION_TYPE_SET_IPV6_DST); add_set_flow_action(ipv6_hlimit, RTE_FLOW_ACTION_TYPE_SET_TTL); + add_set_flow_action(ipv6_tclass, + RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP); if (mask && !is_all_zeros(mask, sizeof *mask)) { VLOG_DBG_RL(&rl, "Unsupported IPv6 set action"); -- 2.19.0.rc0.windows.1