From patchwork Tue Mar 24 19:36:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1260947 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=idosch.org Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.a=rsa-sha256 header.s=fm2 header.b=yxLx7Uf+; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48n1hq1gxGz9sPR for ; Wed, 25 Mar 2020 06:36:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727040AbgCXTgm (ORCPT ); Tue, 24 Mar 2020 15:36:42 -0400 Received: from new4-smtp.messagingengine.com ([66.111.4.230]:37555 "EHLO new4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725835AbgCXTgl (ORCPT ); Tue, 24 Mar 2020 15:36:41 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 6C1025800EB; Tue, 24 Mar 2020 15:36:40 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 24 Mar 2020 15:36:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=i3dVnUb16UOnqhSvwXG1T0HoFeUB/vhBKcKUBKI+oDM=; b=yxLx7Uf+ WZi6z/EjNypm1WB312NLSfJFe5qz/APCQ1LHdxMwxEjggJjbVh5ZHxfThoa4SmBA u91WnjfBebAoJI7T1AB2s3NuLC3Pgg0DianFahmnpCcZOkp8G1+VUmDB0uXsfSJs Ghfo++8ZqIQNrXAK2QH2Fs5pWOaKjoiCdYyAfVhuCAKeG04FJLzFaENEtxqUtUOS Mn4s/EmwU4LuZWfN6Jx4tyPIhYDku48gKG6v5qQE1HjeVDBVrroaV3YARI2JYRQQ hf3kAnD7H8/o0WjYcGLGPSFP3L0t5leOYewZOZOiIIUgcXe5PieVzQbnm1eqb3jj BdsiAUUntqE6uQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudehuddgleeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvffufffkofgjfhgggfestdekre dtredttdenucfhrhhomhepkfguohcuufgthhhimhhmvghluceoihguohhstghhsehiugho shgthhdrohhrgheqnecukfhppeejledrudektddrleegrddvvdehnecuvehluhhsthgvrh fuihiivgepjeenucfrrghrrghmpehmrghilhhfrhhomhepihguohhstghhsehiughoshgt hhdrohhrgh X-ME-Proxy: Received: from splinter.mtl.com (bzq-79-180-94-225.red.bezeqint.net [79.180.94.225]) by mail.messagingengine.com (Postfix) with ESMTPA id 8AD443280063; Tue, 24 Mar 2020 15:36:36 -0400 (EDT) From: Ido Schimmel To: netdev@vger.kernel.org Cc: dsahern@gmail.com, jiri@mellanox.com, kuba@kernel.org, andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, roopa@cumulusnetworks.com, nikolay@cumulusnetworks.com, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH iproute2-next 2/2] devlink: Add ability to bind policer to trap group Date: Tue, 24 Mar 2020 21:36:01 +0200 Message-Id: <20200324193601.1322252-3-idosch@idosch.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200324193601.1322252-1-idosch@idosch.org> References: <20200324193601.1322252-1-idosch@idosch.org> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Ido Schimmel Add ability to associate a policer with a trap group. The policer can be unbound by using the 'nopolicer' keyword. In which case, the value encoded in the 'DEVLINK_ATTR_TRAP_POLICER_ID' attribute will be '0'. This is consistent with ip-link 'nomaster' keyword and the 'IFLA_MASTER' attribute. Example: # devlink trap group set netdevsim/netdevsim10 group l3_drops policer 2 # devlink -jp trap group show netdevsim/netdevsim10 group l3_drops { "trap_group": { "netdevsim/netdevsim10": [ { "name": "l3_drops", "generic": true, "policer": 2 } ] } } # devlink trap group set netdevsim/netdevsim10 group l3_drops nopolicer # devlink -jp trap group show netdevsim/netdevsim10 group l3_drops { "trap_group": { "netdevsim/netdevsim10": [ { "name": "l3_drops", "generic": true } ] } } Signed-off-by: Ido Schimmel Reviewed-by: Jiri Pirko --- devlink/devlink.c | 11 ++++++++++- man/man8/devlink-trap.8 | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/devlink/devlink.c b/devlink/devlink.c index 9380792ad423..6405d4be760f 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1507,6 +1507,11 @@ static int dl_argv_parse(struct dl *dl, uint64_t o_required, if (err) return err; o_found |= DL_OPT_TRAP_POLICER_ID; + } else if (dl_argv_match(dl, "nopolicer") && + (o_all & DL_OPT_TRAP_POLICER_ID)) { + dl_arg_inc(dl); + opts->trap_policer_id = 0; + o_found |= DL_OPT_TRAP_POLICER_ID; } else if (dl_argv_match(dl, "rate") && (o_all & DL_OPT_TRAP_POLICER_RATE)) { dl_arg_inc(dl); @@ -7068,6 +7073,7 @@ static void cmd_trap_help(void) pr_err("Usage: devlink trap set DEV trap TRAP [ action { trap | drop } ]\n"); pr_err(" devlink trap show [ DEV trap TRAP ]\n"); pr_err(" devlink trap group set DEV group GROUP [ action { trap | drop } ]\n"); + pr_err(" [ policer POLICER ] [ nopolicer ]\n"); pr_err(" devlink trap group show [ DEV group GROUP ]\n"); pr_err(" devlink trap policer set DEV policer POLICER [ rate RATE ] [ burst BURST ]\n"); pr_err(" devlink trap policer show DEV policer POLICER\n"); @@ -7125,6 +7131,9 @@ static void pr_out_trap_group(struct dl *dl, struct nlattr **tb, bool array) print_string(PRINT_ANY, "name", "name %s", mnl_attr_get_str(tb[DEVLINK_ATTR_TRAP_GROUP_NAME])); print_bool(PRINT_ANY, "generic", " generic %s", !!tb[DEVLINK_ATTR_TRAP_GENERIC]); + if (tb[DEVLINK_ATTR_TRAP_POLICER_ID]) + print_uint(PRINT_ANY, "policer", " policer %u", + mnl_attr_get_u32(tb[DEVLINK_ATTR_TRAP_POLICER_ID])); pr_out_stats(dl, tb[DEVLINK_ATTR_STATS]); pr_out_handle_end(dl); } @@ -7181,7 +7190,7 @@ static int cmd_trap_group_set(struct dl *dl) err = dl_argv_parse_put(nlh, dl, DL_OPT_HANDLE | DL_OPT_TRAP_GROUP_NAME, - DL_OPT_TRAP_ACTION); + DL_OPT_TRAP_ACTION | DL_OPT_TRAP_POLICER_ID); if (err) return err; diff --git a/man/man8/devlink-trap.8 b/man/man8/devlink-trap.8 index 113eda4ac790..f01f831759c4 100644 --- a/man/man8/devlink-trap.8 +++ b/man/man8/devlink-trap.8 @@ -37,6 +37,10 @@ devlink-trap \- devlink trap configuration .ti -8 .BI "devlink trap group set " DEV " group " GROUP .RB "[ " action " { " trap " | " drop " } ]" +.br +.RB "[ " policer +.IB "POLICER " ] +.RB "[ " nopolicer " ]" .ti -8 .BI "devlink trap policer set " DEV " policer " POLICER @@ -109,6 +113,14 @@ packet trap action. The action is set for all the packet traps member in the trap group. The actions of non-drop traps cannot be changed and are thus skipped. +.TP +.BI policer " POLICER" +packet trap policer. The policer to bind to the packet trap group. + +.TP +.B nopolicer +Unbind packet trap policer from the packet trap group. + .SS devlink trap policer set - set attributes of packet trap policer .PP