From patchwork Sat Jul 2 03:18:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jianbo Liu X-Patchwork-Id: 1651418 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=kcjzZgVD; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4LZcjX0DKhz9ryY for ; Sat, 2 Jul 2022 13:18:55 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id BB47260E74; Sat, 2 Jul 2022 03:18:53 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org BB47260E74 Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=kcjzZgVD X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0_AlTdWN3mPY; Sat, 2 Jul 2022 03:18:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 6C72560B5B; Sat, 2 Jul 2022 03:18:51 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 6C72560B5B Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 35247C0035; Sat, 2 Jul 2022 03:18:51 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 92F7FC0035 for ; Sat, 2 Jul 2022 03:18:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 5E0D760DFD for ; Sat, 2 Jul 2022 03:18:49 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 5E0D760DFD X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x5w92RL8t6XO for ; Sat, 2 Jul 2022 03:18:48 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 6B81860B5B Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2047.outbound.protection.outlook.com [40.107.100.47]) by smtp3.osuosl.org (Postfix) with ESMTPS id 6B81860B5B for ; Sat, 2 Jul 2022 03:18:48 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gb75zM2fomcXUarW+0oM+rNcg3IYtYaE4wBWAXJKCzyZtTaJt+fdXXNEtovxj/UM8GkkBFWFd4OaqVM/voDkJ5jGF2KSb84ss/thWrkKr+Gggy/kbzsuawy8VM/X0Gk/Nkb2gzJnZpcwRCBjc1WdQEu6IAInB6koB+Vl6CO+/xo8z2g0BBCdSP3/0QYYd586Uc7+5PZCtpfJP1e0QRz2/vnmiEGHfkhSfZyMujUJp3CQ04kKTOJcClg3r0yF60Quhhca5zLWnQOjK6ocCPQ/EnxIpdAkWdzF9VDkHLSshyw8MyeyTBkNue3w+TFyTN+I18H70A3sDTzvin4o0V27iw== 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=7OOPJROqpQqzpVdDjNu09Bwoi81G+I5/o3c1IxwyEiU=; b=Skk+mW0q0TFoCehAqzRJaJq70YdiyoceF7vlx5Gd1IEC8pYfy3kP6o4HMSB+ohEr2Coi10UyTMiLH1nfXvlnqqWp998rN6SqYnccDko3oO2TAKkgxBXrz33c0fh1iG0c+lrpM5f2jxHG9o/lHr8rsMLgnYS8dNBfZeZyPABJy0c1Tx6Om75rZRseA21Xyz2xCrAoHPwN+xCYZQYbGax+s3Msk40IxOrKeKkeCAwwlw76u2+CEQiqM/jPhS9Wv2cYFMiSok1d94LZV3ubGMB7gO5J7eitkqiQhuDFbq5c0eMxDTDzY/ZcTMsuXmiuHgJWecBdReCy/B9bL4Yb37YHJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=corigine.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7OOPJROqpQqzpVdDjNu09Bwoi81G+I5/o3c1IxwyEiU=; b=kcjzZgVDh1fjx6Q/3Ig+Sw/gpdiLEz07m3XvuzhEgV5Il77QDtlhSdzGDvNyhR9INvzkVy0jJpi3diuhyaOSu3LNoT4p07KRxy6trkvPIBzfroHoNc0iLneKT3Pu1sOrktOy7m9S3DZ+LsCtdLFKmWVmqncO41O4nkUbgJjwu4uJhFywnY7Z0AQefh6nQ8ZlL5FCQkD4+RGNN69UaLuRy6N9mRGy1Z01CDwPFUstAAQim+hkuWb1YGBp07dYazLRD5vFlC+wDrdY+lEZgbJwc4PLzpdVd8DeTI8YruOsDTEv0/ujirO5tsBklh4OSDmvSlWYKVECWfVzkoLamGkIrg== Received: from DM6PR08CA0023.namprd08.prod.outlook.com (2603:10b6:5:80::36) by MWHPR12MB1855.namprd12.prod.outlook.com (2603:10b6:300:10e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 03:18:44 +0000 Received: from DM6NAM11FT011.eop-nam11.prod.protection.outlook.com (2603:10b6:5:80:cafe::cb) by DM6PR08CA0023.outlook.office365.com (2603:10b6:5:80::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.18 via Frontend Transport; Sat, 2 Jul 2022 03:18:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (12.22.5.238) by DM6NAM11FT011.mail.protection.outlook.com (10.13.172.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5395.17 via Frontend Transport; Sat, 2 Jul 2022 03:18:43 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Sat, 2 Jul 2022 03:18:43 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Fri, 1 Jul 2022 20:18:42 -0700 Received: from vdi.nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.986.26 via Frontend Transport; Fri, 1 Jul 2022 20:18:40 -0700 To: , , , , , Date: Sat, 2 Jul 2022 03:18:25 +0000 Message-ID: <20220702031832.13282-3-jianbol@nvidia.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220702031832.13282-1-jianbol@nvidia.com> References: <20220702031832.13282-1-jianbol@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f03d40a5-ad84-4d13-ffd0-08da5bd991c7 X-MS-TrafficTypeDiagnostic: MWHPR12MB1855:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XrvkxbNSvezwXmG4jttBpp8gg1Z2u4iK1fBsGAPVdg/ELCQZZeXhPOfaYwxEaV1JgWRW7esPJLdUzbcFNxGHgAM68h/lqAT12zC3tpbLIuTIbn01VP45s1GBb76Jjt/mGh8dnHtNREN0n+zVKIP3ZCjAXDN4MYCz+h1723HwnNVXhUdIlLctLAjCBWqrUU6bRRgC5lHofdFOwHSS0zxw8lEI6YR6GdN7nIzl9tdul50iUuZSgCfLEEvJ8xyVl2zDqfYWrbJGRcJN6RNy50w/QhvoQMgEyw4lYDFBhJABN2D5dqClKcupNuVc0ZHV7g29Lnz0QCcxKQbJnNJPAd+lv+jpfTSOXV7Kku6g1esngSWOrNCa9fw7dCDtRA3QXWcxyNJw7f0AazcxUbQtnYCeNsEHBm++g1LnRRaTiwhHBQSigpeHxp8aa6dQCrINOoqx9e/AdApFR/rS3t2EFay9Gsmd9reWcojxdGLyR2YZawFZmzxdcBRqeREufWBBm1RymmUSloWWNBIImQp7V19bvifXeQVeMsbIozZgGpDbswxsEfmBFYEJ7P8b2bAdbCrnluVqrXq684VqbRC35PNJQCBks6K4M8pZte7BS3AOGEI3fLlY+76nPfvSECAVfYUSu4r+lSTqO7zyFay6zMKVrFiCD0nQzEk0PHapOhfu2Vb3pspCF2P0aBI5P1EZ1VrRZWTIdM80I/1MFOKInYRwQDtL3mX0DbeBJbIb16p+Gnn6kNgu7cH/wwA1AVZxFQXYTE+qT/QuILg+leyEPo9rDmlyly1rcjqKvk+l0w0xQbiUnKPmIS5eMSPMM/jhkWISgoazIjPC2fPvfm/d/pCQ+8mcf4nR9V9iz2ELSpa7MiQ= X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230016)(4636009)(396003)(39860400002)(376002)(346002)(136003)(40470700004)(46966006)(36840700001)(1076003)(2906002)(86362001)(478600001)(316002)(7696005)(26005)(36860700001)(110136005)(8936002)(36756003)(2616005)(107886003)(4326008)(5660300002)(70586007)(70206006)(8676002)(336012)(426003)(356005)(81166007)(83380400001)(47076005)(82310400005)(186003)(41300700001)(6666004)(82740400003)(40460700003)(40480700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 03:18:43.7087 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f03d40a5-ad84-4d13-ffd0-08da5bd991c7 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT011.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1855 Cc: Jianbo Liu Subject: [ovs-dev] [v6 2/9] tc: Add support parsing tc police action X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jianbo Liu via dev From: Jianbo Liu Reply-To: Jianbo Liu Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Add function to parse police action from netlink message. Signed-off-by: Jianbo Liu Acked-by: Eelco Chaudron Acked-by: Eelco Chaudron --- lib/netdev-offload-tc.c | 4 +++ lib/tc.c | 54 +++++++++++++++++++++++++++++++++++++++++ lib/tc.h | 5 ++++ 3 files changed, 63 insertions(+) diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c index 262faf3c6..4d42d27b4 100644 --- a/lib/netdev-offload-tc.c +++ b/lib/netdev-offload-tc.c @@ -1017,6 +1017,10 @@ parse_tc_flower_to_match(struct tc_flower *flower, nl_msg_put_u32(buf, OVS_ACTION_ATTR_RECIRC, action->chain); } break; + case TC_ACT_POLICE: { + /* Not supported yet */ + } + break; } } } diff --git a/lib/tc.c b/lib/tc.c index bbb8c86f7..bfd6512a1 100644 --- a/lib/tc.c +++ b/lib/tc.c @@ -1340,6 +1340,54 @@ nl_parse_act_gact(struct nlattr *options, struct tc_flower *flower) return 0; } +static const struct nl_policy police_policy[] = { + [TCA_POLICE_TBF] = { .type = NL_A_UNSPEC, + .min_len = sizeof(struct tc_police), + .optional = false, }, + [TCA_POLICE_RATE] = { .type = NL_A_UNSPEC, + .min_len = 1024, + .optional = true, }, + [TCA_POLICE_PEAKRATE] = { .type = NL_A_UNSPEC, + .min_len = 1024, + .optional = true, }, + [TCA_POLICE_AVRATE] = { .type = NL_A_U32, + .optional = true, }, + [TCA_POLICE_RESULT] = { .type = NL_A_U32, + .optional = true, }, + [TCA_POLICE_TM] = { .type = NL_A_UNSPEC, + .min_len = sizeof(struct tcf_t), + .optional = true, }, +}; + +static int +nl_parse_act_police(const struct nlattr *options, struct tc_flower *flower) +{ + struct nlattr *police_attrs[ARRAY_SIZE(police_policy)] = {}; + const struct tc_police *police; + struct tc_action *action; + struct nlattr *police_tm; + const struct tcf_t *tm; + + if (!nl_parse_nested(options, police_policy, police_attrs, + ARRAY_SIZE(police_policy))) { + VLOG_ERR_RL(&error_rl, "Failed to parse police action options"); + return EPROTO; + } + + police = nl_attr_get_unspec(police_attrs[TCA_POLICE_TBF], sizeof *police); + action = &flower->actions[flower->action_count++]; + action->type = TC_ACT_POLICE; + action->police.index = police->index; + + police_tm = police_attrs[TCA_POLICE_TM]; + if (police_tm) { + tm = nl_attr_get_unspec(police_tm, sizeof *tm); + nl_parse_tcf(tm, flower); + } + + return 0; +} + static const struct nl_policy mirred_policy[] = { [TCA_MIRRED_PARMS] = { .type = NL_A_UNSPEC, .min_len = sizeof(struct tc_mirred), @@ -1760,6 +1808,8 @@ nl_parse_single_action(struct nlattr *action, struct tc_flower *flower, /* Added for TC rule only (not in OvS rule) so ignore. */ } else if (!strcmp(act_kind, "ct")) { nl_parse_act_ct(act_options, flower); + } else if (!strcmp(act_kind, "police")) { + nl_parse_act_police(act_options, flower); } else { VLOG_ERR_RL(&error_rl, "unknown tc action kind: %s", act_kind); err = EINVAL; @@ -2776,6 +2826,10 @@ nl_msg_put_flower_acts(struct ofpbuf *request, struct tc_flower *flower) nl_msg_end_nested(request, act_offset); } break; + case TC_ACT_POLICE: { + /* Not supported yet */ + } + break; } } } diff --git a/lib/tc.h b/lib/tc.h index d6cdddd16..751bec891 100644 --- a/lib/tc.h +++ b/lib/tc.h @@ -174,6 +174,7 @@ enum tc_action_type { TC_ACT_MPLS_SET, TC_ACT_GOTO, TC_ACT_CT, + TC_ACT_POLICE, }; enum nat_type { @@ -261,6 +262,10 @@ struct tc_action { struct tc_flower_key key; struct tc_flower_key mask; } rewrite; + + struct { + uint32_t index; + } police; }; enum tc_action_type type;