From patchwork Wed Jun 9 15:15:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457396 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9269DC48BD1 for ; Wed, 9 Jun 2021 15:16:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6FB35611CC for ; Wed, 9 Jun 2021 15:16:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234936AbhFIPSU (ORCPT ); Wed, 9 Jun 2021 11:18:20 -0400 Received: from mail-eopbgr80093.outbound.protection.outlook.com ([40.107.8.93]:47918 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S231462AbhFIPSO (ORCPT ); Wed, 9 Jun 2021 11:18:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UzLbMtcDDYetwDei4OAUOCF+UolpijLISC+fSBRLsDYrQhCNoXniagWV/tt8x1PJk30h0rF8MvKvGnFUHMcCeGdCzw+JlKTVJhXFZb8auYg/2IvYYBWlsMVmBps+wtnjbvb0dGQ0aYTFEWM5CtZNvC+f+cQK84BQEnF0tOWgr5EJjglWpBG0b9JDqO9PFTBCv7o29RgGlrtYHpb2c9pgqRBmf4eeKbiP6XytF0XeAFoEYXa9Q18o5b7AaSpK1YiQpsBtbXyVsmCmiXrN6yYHKdEKFuUeGx3pIuuSJFEfmKS10h51IL7PMb9ghlJmM5+MY+xbNgrhwVPfV3liSwc5hA== 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-SenderADCheck; bh=o+qg66OwWzrIdWEEIrfhMXzl+KEFQbAiQOehmW0xEX0=; b=iKXVII5sr8bvPtbKXODeZ730gAG5iRMPo7mJJRwm88VMi8WEw6kf8HqyeUS5al+mroWSEWKaAl21dPuAhpdRrHjhsDwlpoUBCtS3DEAw0tg5WF2UyLpTbI5cYNg6jM0gSjo99NXUPp4RyxFNMwTPckl/5mus8UNvwWucEKYfk0CoNUnfHCik13+3BC1hRr3jumFCnjCUD1u3ZtqycFAwO0/jHlVwRn7AD/7c4YK/CQ8mJnOldcjfT9TUT5KgOE4MVyjKEmn5+2VbSZUWYJ97keOANZQzBtcXu5+Cxy6+Yc0mkHni8u3RH36I8o4IV4uBsi/o/2OGN+zDV0u8TeRTew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o+qg66OwWzrIdWEEIrfhMXzl+KEFQbAiQOehmW0xEX0=; b=ng1mOcebFc3PQPr6D9b+6vhqTYP7hp/Mn7nkutUiMSnFF7YBz3XJe3cb1PGY8lLG1jj4rkh9ZHce5O8HOeWl6+Nxh6AKNLqzLqo6fLtFuNQeJLo9CNgr16LfF7BOQL9I3Wi2jOz093DvDbC4aXMV40J7cFwKuFoSeJKujquIypM= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:17 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:17 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Sudarsana Reddy Kalluru , Ariel Elior Subject: [PATCH net-next 01/11] net: core: devlink: add apis to publish/unpublish port params Date: Wed, 9 Jun 2021 18:15:51 +0300 Message-Id: <20210609151602.29004-2-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:16 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0c79d80a-d3e8-4819-2fb8-08d92b59873a X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: neTyJqUWh24hZdv2l4EvlRxd8nAbxGaVycg2pL+61v+A8yCZ7Y0tdTYcAWUMRgwA/bwdJTDIivgOEPjmXDw+5YAnXBZOjEao6JRtj/rYTcPxZPpl5TSX2my4p/802s+f708H3n4ivV8ztmXdnoaNQCW8EF2e74+tJKEgfjTXddKb252GYlPN9lQoAOB8Yp+SrkbJqWGphxHbhTZEtHRO9ueXUWQg5urPtNw/c3KDKDpRDWMlgpQEVFUCQPO7eTKYGCMY7XzyUN+le3ptPUeHQvONcvqiwcMhZClWlv1ihhglAYSI/TuvbQ03ewsW9P47MOvJlWjGe3XSYJce6DytvCq6JYDECFoV9KQXrAT2nxGol5q3Nx5ExIXSxdBss7nCcMXKD//E5/o8xDziogisT+y9Qv9SESU8LkhaimYBa/oAd2UMtgI4MTNYfrDIq6aT/6p8vHhcwV/iieYJa9aq8i/hjrVq+m/i/B604ns592UrvUol1HqBivoMXzTbnP9Iq4swPaLM2rhKdGbYNHs6O2303VobbiklWrgjTgNQSmk/4pgC+Zna1fCUdeCpExrYG5Y5jW8gG2CqwWO73LoC2VlfVMTXPcPxP7LutirFGnjAvoB46YYKr56gOfU6osncGehtDaV4xfb5wiCFykrTRJ3CE0+lloFr8dnd+r+qfuU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(54906003)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: b9REdH+TqGyygOofNkoO3U0FXnAKPZL04zL00WnEK4x15xvPa7Kg+cXFHTDkmo+FuWOD09DgymF4GagODRlnomuZpxM7G/mVgcVjvBh89ItW7Cn2E02f/n6yOdP3AYMe7V4edLe957qUAtRUDGo+dKAvOnW6vwqJV+OTqKfbCdwdDSOkQwQau1p2d+iik/5W6fT2mLv6ZXfWSG2s7ifuqPCIH7Oq5eQ4X2SqRcWA9qWpU2jBrLNZTGsL4UzoMscgtJ4UxXCKs1Fl1+IoOyOTMAj498mkib1ZWP4YmIsuYXIZBBNcm0s/dORLbKBDFwwouniBSo56nL0gaugJNaRFS2mHVvHKJ/2YSfdVaivG5UEcV6WR/SeGpVAeV/cDfu5HaIwKTeQyRo83c9Auasc4ea20FQappxI9RCvICD9T916ok6tnTd1LPy6ktK5Th+C2nKF3pd3BMDuauxVXTXbDEGruaa3V7fkuuz+qsZGEEZCpjR08QQbXq0WZFbBO07MRaYMkfCeuBJFg1iHIbIZ84ahBsGn+wRvkMWzZ6GO59bTUUwzMC4CW9V5cbPq4/fHtZiLdgLMdoCN1vIowqqxaG9AXLrr4bajvaqTA/9cXYs8Eu4t7ekUaSTwqqTOPGz+lawVyYNBOpcTnxcliebOAoI4RM87oaL6ViufjtMt7/3cVUEVwRA5/xCsHVDoJ/sPDPo3NS87Zpz/4yMYwmZ4XYK1HmFsK3++mFA3WT9DziT3qWKqz9N+fbWPhifavfrwRw2qzNohYbVAE0f9kEV1rOoA4hXzx2/VyV04vqZwa85tQ7QAtFuPokIe2+XWxBd0O0nNGaNGU6suC6O7WHjwoCBTkk1L3Yx+ogXXwxBZSz4Pd2HNYS9gL9j69sYeOhq7JyIkp9mOjwM+XZXcDypZKh7mgYfYaCEJRE0NWdsNG1KOcxgBLPwHiChDIV4fd4xF3Oef9TNEO2NFqwif3j3e1vTk1meu2rEgCvWEhtOqLV2B5BSnNhKx+eyBisU+JzDZhywc76AwokZrxYlEt92UIF4jDJ2ZU/X2UMxeT2yHsNxHTqQh8X17FB0c6H99sKzfiMTyHcW8ZadHgdyQhSGlj6ypeFv2pabIx62Y+9mp+Pv2vaqSxng2bLyEnH5+dtGBRVddleyr2+xJc4iINTTVhdA1bpgjgV4Ah7Kp9qFBzCJ1F1dhR8rt/ZTJL+dQ1OmrI5YjgpaqEMHX48pZq1Cq4OrxbrElnP/qq/+As5bAALhxrNwtuT/YCbR/MU8/t1TUFTyKovfkSOu6zul91o/roVz7pHLOBO1H3DwPiyebWsXFNy2J6sWHHLabIcCxtt9/C X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 0c79d80a-d3e8-4819-2fb8-08d92b59873a X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:17.1542 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hgIHg7mLK++/jpDwOaTIviBrOrvZT4CIRUtDGlxP56CudhGDjrvDmnaI4gBtqntJkC6L7ZGn9VD94Zjlj3+xUjxCfyU85zZv+Ecaw6LO8eU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Sudarsana Reddy Kalluru Kernel has no interface to publish the devlink port parameters. This is required for exporting the port params to the user space, so that user can read or update the port params. This patch adds devlink interfaces (for drivers) to publish/unpublish the devlink port parameters. Co-developed-by: Ariel Elior Signed-off-by: Ariel Elior Signed-off-by: Sudarsana Reddy Kalluru Signed-off-by: Oleksandr Mazur --- include/net/devlink.h | 2 ++ net/core/devlink.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/include/net/devlink.h b/include/net/devlink.h index 7c984cadfec4..8def0f7365da 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1575,6 +1575,8 @@ int devlink_port_params_register(struct devlink_port *devlink_port, void devlink_port_params_unregister(struct devlink_port *devlink_port, const struct devlink_param *params, size_t params_count); +void devlink_port_params_publish(struct devlink_port *devlink_port); +void devlink_port_params_unpublish(struct devlink_port *ddevlink_port); int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id, union devlink_param_value *init_val); int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id, diff --git a/net/core/devlink.c b/net/core/devlink.c index 69681f19388e..e43ffc1891a4 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -9265,6 +9265,48 @@ void devlink_port_params_unregister(struct devlink_port *devlink_port, } EXPORT_SYMBOL_GPL(devlink_port_params_unregister); +/** + * devlink_port_params_publish - publish port configuration parameters + * + * @devlink_port: devlink port + * + * Publish previously registered port configuration parameters. + */ +void devlink_port_params_publish(struct devlink_port *devlink_port) +{ + struct devlink_param_item *param_item; + + list_for_each_entry(param_item, &devlink_port->param_list, list) { + if (param_item->published) + continue; + param_item->published = true; + devlink_param_notify(devlink_port->devlink, devlink_port->index, + param_item, DEVLINK_CMD_PORT_PARAM_NEW); + } +} +EXPORT_SYMBOL_GPL(devlink_port_params_publish); + +/** + * devlink_port_params_unpublish - unpublish port configuration parameters + * + * @devlink_port: devlink port + * + * Unpublish previously registered port configuration parameters. + */ +void devlink_port_params_unpublish(struct devlink_port *devlink_port) +{ + struct devlink_param_item *param_item; + + list_for_each_entry(param_item, &devlink_port->param_list, list) { + if (!param_item->published) + continue; + param_item->published = false; + devlink_param_notify(devlink_port->devlink, devlink_port->index, + param_item, DEVLINK_CMD_PORT_PARAM_DEL); + } +} +EXPORT_SYMBOL_GPL(devlink_port_params_unpublish); + static int __devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id, union devlink_param_value *init_val) From patchwork Wed Jun 9 15:15:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 458425 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00818C48BCF for ; Wed, 9 Jun 2021 15:16:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D0D4B61246 for ; Wed, 9 Jun 2021 15:16:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235397AbhFIPS2 (ORCPT ); Wed, 9 Jun 2021 11:18:28 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S232675AbhFIPSU (ORCPT ); Wed, 9 Jun 2021 11:18:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SR2WGTHVcUncGwV3STlWX0N/ldHI3HyDy8MEzp7GUoM7JrSH9j4vmZuMf9U92hVM+EMwisa22ADxcQQlyJ2zzhvBvAQuUBoTXb7WTe94DJe3TNWRpDR0sWWdYzObqLberhWN2uI/WylCRaMCAQUd/9p+49UtsyHKMuh/YNEyUfS5SBKjmFYEa49Q1zga9UVW6MvtqeDcG4TcrHjoC2s+SfTeTY+nhbhWPOW3+ZXcFLBfPIegMk3ned2I9NpfFoDczjx9nLLWFvEHnU+Q4IWHFPn66Wq82SslO99ZVwDP4y1Tw6gK0iFxFRSQU5FEcG9PXXtHLEFOhXq+TlSxyTn0LQ== 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-SenderADCheck; bh=Xz4cOmQjWmISz+mSyas4RCVzgLuV4pdl108ZTtK7Nkw=; b=IooNIaZL+Yywdft3w4iyzlQ6BTT6HE9FiLs5CGM4ZXWrlken+OYd37BLblAcciZYWuGqWcVKni+5gFfIna02eUAXJyrsnfF7OcppG4UoTI6ylwGmOxocoC0agIdjliXYcgIIhQ/LTaOOkzQfv+VGeRAZTxf7nWSaAT70u8IeoXkegR4ump078Us06HVwk9BG1krNqIL9at1U6XyAFFtT2qvB92ZXbw9CpRIbb2wFW443xmBqPkgdKeV/gz9UUTDl+g4qJUSAmgfAHs99g9sNVRtum3gXylUKDWVWlnPE6mmDeu4ZpSr3+Kvr6GQmN9tqbof5WTUHWQkzA88WJEtwKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xz4cOmQjWmISz+mSyas4RCVzgLuV4pdl108ZTtK7Nkw=; b=kNuwnhUQ+inSe6t+iesnUhKZyrWL8F+B/XWJI497WXwqY+3YhN3DUPGI8/JJ9aBYd+5XAxQcOkCc3aUP9/OxcDy0zHr2Ml8E/ekK/iQWN9oi62STfVPcHfyWJq+P+pziKUqtgVRVyWPjPQt7sykdokF0xy2pGC/GaVOKDu3xiLA= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:22 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:22 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 02/11] net: core: devlink: add dropped stats traps field Date: Wed, 9 Jun 2021 18:15:52 +0300 Message-Id: <20210609151602.29004-3-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:21 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4ac541c5-be9f-4f00-78d1-08d92b598a14 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IWf8cNA4e4l2YSg7o7Ss34l4ngSAwvN2Dha91/Usxp/m7EGHzHGSRNs7G2IeTuM/lfAhC0f/+08SXVGyiYE7Yd6xirIKmNnbhpr6u91SC6b5qR1O6s3TFz+H6Ac60b+5gZFtqx0nFceehSu/Pp3HZ+g6NEWl+XR2R4nCuTVfNSYWCu2u7/G6gX0kkPofh6ZFCv1v1Rp/41gjbR3W7KdF57OyFAYT3jwtcbPT0TZFIE1Ht7d08CfLwb/5IgePwQObwDksNVOU66tv7zRfja9SxnaG9aUo2r23jWB+BLEcTqXZBgPC0PNlyCOoXgus6ZL/Bg/0nFduneLly4JOm47zron2G1m4ng5sV4iKlceAeC+ZZlyHvxcWkce3VwSBcn9z4QKsKEt3364c6fKzhn1SngcFREmNN2HSgBYyXenSs52dwnt3BhFsqDyZ3T+9SElk7QaAUSYZcRu1hdsNu6qkJA08W1DnTBEMVFWstQ62+kI0uSnIwgmPs44YdKlNJxGOWoPmMYGRnXFuL80pKtRFMZo6YXw2olUqKyrzYC/0muxA+t4D8KLaCOlNBjQq0uGat6ypAfSUDk4iil1GtrYTBxnAD+GoQqprvW/SnfHA5h247T9GAPl24mPoXhPqBiyXGabRXnAxp4s0ZirZdt636xTy8DQYHeq7KVrCBjrZQ1I= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: IP9GkVbFswhugKw6GRid0qIKt95fBVB2FClzwlzsw87l4TOCVkH9uZSZn7gso6B7gFyLG0mPs+SH6ofmnmwcAHf3CrXIR6YWbZrGYSyoKN1cUR3s/HuspqDzq0G1FOiKLVHBIVRTfwMSw2vHyc1igOM/CAIis+z6krA6SyUj6x9TX9H8R0QUSvczb72+BepZegfwaIZsWGCdybIQisfsj7+EH2/Odwc0bRQjwpnXXUO+BL434MFb48tBiofQ1htZjBCsOBiMdHQ7kkGNquJjJAigUpvBjRQOqDLkQy2JnrT4U7o37s2PUWFIQUfm0QH0X7csg+TiFU0ZaZe4bueRHF2V1rDaLm3EVrsjAhuMi3NMzKgegJGcTQDmDFbucHONFzd4Lh6cX8e3DbLTzLyAIuPXQ2Q46FZQ8VLlWf5RiHpLXQQWMy4riz1LHGaoH+LTnP63ZtepZLPuGQHwKqr3z/LSSYAzbEqbKyPThfAd9Te7pxP6cisaGq8X3PVcrsqiD0+61i86GK++E8wbUzV5HxMUoCy568en4xlyvOhBOxYGmwr3nBeThShTXJtkwlvrYT2+fdFmYdw/vNB/8Ecg83kpuY8Uxr7j8iOhQVjoQo8vXrwTffd/RALqpw1UmO0W3Zpr5TPJOBslC3oaVwU4BBQbztncAhiRtp81txNeXaQsEXNzbtuzDdNxC6z2wT/DJleUODHaIclgXyZfmLeRmXMyeVTeK6BeK1iAaMy+kT/AahqXq/QEUbA1/dFwQ1lUU/lvapzr9KYHy1dd3NrPNqHwRIi6y5m/0r8dDqdTHfe9CPYrHfnlsx5yCKtPmsKGsebc3pzEtHNEb4rQLDWdZ6H4kw+FxlbnuSJzXu8PbjK6W5j1E+foj+CM6gkjn4t8DuaDhxHXyoplwZn7wcNpv++enf+XgEqx18YLaKSpruPZ7qXpdKO+K/JmN3CZr/d9f3iOs0xJ51tcMOoig1IopGpFRcLaNyDPd5GVNzzdtmVaeMTAs0/pBmGjTzXZxp44D9ufTunK3qHQlZXD2ts7v8fX9R4xJDPkgoVra6BpXLVKGtlRAN5oBmWKV8RdewFvZZbDn3yPaSvdjqsDJwKdNk6XinXG8aIh/65EVSHkDXXZHNkISp2LMiRp9MQdQqD2EL3P/HfyZ8XfqJjex1B5fSmuDq/t6X57gmHKTTz6hFLPiA0xO0SfM+4PSFzl1u3Ma6d6kxPg9Cjh3/Ouv0DJKOBznkbfW5jqsWSoRkgbbNCQBW/qTtqI6NAAlENFraS4V/8+nx8ZbxEHMuBGRY6UHnbsK5UXWn1329fqfiSBaNamIIZuh9CyLrdpQQtTk9vG X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 4ac541c5-be9f-4f00-78d1-08d92b598a14 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:21.9382 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: p+DDstqZZ5W+I3mnky1+PoxLizl3H61NUK3Rq5DCPKdQk7wCT34F8Crxc9OPbXvAJefYG43SInTBWnQqx9GgZAaomeNnFwcBdqtKxT3Ha2g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Whenever query statistics is issued for trap, devlink subsystem would also fill-in statistics 'dropped' field. This field indicates the number of packets HW dropped and failed to report to the device driver, and thus - to the devlink subsystem itself. In case if device driver didn't register callback for hard drop statistics querying, 'dropped' field will be omitted and not filled. Signed-off-by: Oleksandr Mazur --- include/net/devlink.h | 10 ++++++++ net/core/devlink.c | 53 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index 8def0f7365da..b8c6bac067a6 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1326,6 +1326,16 @@ struct devlink_ops { const struct devlink_trap_group *group, enum devlink_trap_action action, struct netlink_ext_ack *extack); + /** + * @trap_drop_counter_get: Trap drop counter get function. + * + * Should be used by device drivers to report number of packets + * that have been dropped, and cannot be passed to the devlink + * subsystem by the underlying device. + */ + int (*trap_drop_counter_get)(struct devlink *devlink, + const struct devlink_trap *trap, + u64 *p_drops); /** * @trap_policer_init: Trap policer initialization function. * diff --git a/net/core/devlink.c b/net/core/devlink.c index e43ffc1891a4..2baf8720bb48 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -6995,8 +6995,9 @@ static void devlink_trap_stats_read(struct devlink_stats __percpu *trap_stats, } } -static int devlink_trap_stats_put(struct sk_buff *msg, - struct devlink_stats __percpu *trap_stats) +static int +devlink_trap_group_stats_put(struct sk_buff *msg, + struct devlink_stats __percpu *trap_stats) { struct devlink_stats stats; struct nlattr *attr; @@ -7024,6 +7025,50 @@ static int devlink_trap_stats_put(struct sk_buff *msg, return -EMSGSIZE; } +static int devlink_trap_stats_put(struct sk_buff *msg, struct devlink *devlink, + const struct devlink_trap_item *trap_item) +{ + struct devlink_stats stats; + struct nlattr *attr; + u64 drops = 0; + int err; + + if (devlink->ops->trap_drop_counter_get) { + err = devlink->ops->trap_drop_counter_get(devlink, + trap_item->trap, + &drops); + if (err) + return err; + } + + devlink_trap_stats_read(trap_item->stats, &stats); + + attr = nla_nest_start(msg, DEVLINK_ATTR_STATS); + if (!attr) + return -EMSGSIZE; + + if (devlink->ops->trap_drop_counter_get && + nla_put_u64_64bit(msg, DEVLINK_ATTR_STATS_RX_DROPPED, drops, + DEVLINK_ATTR_PAD)) + goto nla_put_failure; + + if (nla_put_u64_64bit(msg, DEVLINK_ATTR_STATS_RX_PACKETS, + stats.rx_packets, DEVLINK_ATTR_PAD)) + goto nla_put_failure; + + if (nla_put_u64_64bit(msg, DEVLINK_ATTR_STATS_RX_BYTES, + stats.rx_bytes, DEVLINK_ATTR_PAD)) + goto nla_put_failure; + + nla_nest_end(msg, attr); + + return 0; + +nla_put_failure: + nla_nest_cancel(msg, attr); + return -EMSGSIZE; +} + static int devlink_nl_trap_fill(struct sk_buff *msg, struct devlink *devlink, const struct devlink_trap_item *trap_item, enum devlink_command cmd, u32 portid, u32 seq, @@ -7061,7 +7106,7 @@ static int devlink_nl_trap_fill(struct sk_buff *msg, struct devlink *devlink, if (err) goto nla_put_failure; - err = devlink_trap_stats_put(msg, trap_item->stats); + err = devlink_trap_stats_put(msg, devlink, trap_item); if (err) goto nla_put_failure; @@ -7278,7 +7323,7 @@ devlink_nl_trap_group_fill(struct sk_buff *msg, struct devlink *devlink, group_item->policer_item->policer->id)) goto nla_put_failure; - err = devlink_trap_stats_put(msg, group_item->stats); + err = devlink_trap_group_stats_put(msg, group_item->stats); if (err) goto nla_put_failure; From patchwork Wed Jun 9 15:15:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457395 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6116CC48BCF for ; Wed, 9 Jun 2021 15:16:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 43AF3611CC for ; Wed, 9 Jun 2021 15:16:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231462AbhFIPSa (ORCPT ); Wed, 9 Jun 2021 11:18:30 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S231925AbhFIPS1 (ORCPT ); Wed, 9 Jun 2021 11:18:27 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nJ4I9+eFjvi8GO2GNhC3Yjo6dQp83qiPBB9ST/4829VM18kyJKCmqeSNukEj4q4le3dM1/AEGMqhh9XSu5/W8HcHczLSOz/pZPqe8FMT7eJVmT9tkpv+qV/QAJcGc1l5be9i0KrDAJTGrIQW262I+0k/B9RiMkcB0O7FSiuMV5brguREG8uneTAmgXIxadWTZHQNG3+r1DV7uwYRidGfYo2FEnqpScmI2hxfo8eZWlEF10Q9TJibXRO0QovwKP5F51GtZDp0ciQIbECqIHaWlPNjM9l3oCNUdLcnc3Bft14YfzRjeBHogMs+/6RAQ2I/6UVhFkpUNKV6F59sCmn06g== 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-SenderADCheck; bh=pL45qvyhpnYGrfVEUwWAdXtMGQuRZxauRWQG/2USTrE=; b=IzfpdMP+ljojl46eM6YcvMqbIrPmVXYIpsvlL38dd5Sq1WxjzimUi/n5s1IBF/0aHpfGhfFWOQH8yBV6f9eST6jgGkrRnAsQGtmzWLaMAC0SjMRZo4dYGwXWmMRjbLuhwjJPsJ/jEA9w0Ie0xkiIV+co33QKwwbGNvgsL72iaycaZs7f4mzMWH8tWyLS1ps4DCGrZmuOOt+Xm+6NIMP2N+iB/4peDLySAfAWLHo/MZqahC0upl1d7OG2uQTyUVVySmGd9ZYr4FJHY0Nhh6YIiTrvUk9+Ex3PQaofGdYqD86IC6kBVfyfyFul+aFdB2iuVbALUgoKpcgSXVImGpzaFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pL45qvyhpnYGrfVEUwWAdXtMGQuRZxauRWQG/2USTrE=; b=IMO3aMj/vgSGT0SWWFd7Bdvu63MzcHXm8mXgyhy0XEgSbyn+JAlkoU0jN6Wzw7vWVEoyWQdi4EdsdeSHdFZcYzWn6+fZDee2KlDDImGykThSXSd54kESg55C4chEaUURtEyjCztnQEPrqAdBdSZQbtAErb4x+GWb8knIJ/tN7i8= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:26 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:26 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 03/11] net: core: devlink: add port_params_ops for devlink port parameters altering Date: Wed, 9 Jun 2021 18:15:53 +0300 Message-Id: <20210609151602.29004-4-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:26 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4e1febde-f3c0-4ccf-4bdb-08d92b598cca X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f45uFTTjhdtLUhDzhvMzKzKQWyN1EE4hcMQtEeDTVfKdz/6J8p31Uu5+rYFUi1NNJctN+cMl3o8vybIF+pKcV8jF5fjBNFAtPaChHTGwOvmjV6Ygr3OPd402U84+t51pcd082bZFkepOpXdSSj5310f+YjIToDp1Zp7mJYsLfu6sBZcufdisqKK5HF5uk3+26IA5vA05IAC/ypolTnux0ea9WHTQ2yR53eJ6PQ/un7dvE9j1937MkMINxORnHZnTJ+SzhZWvNLhMJpa5cn6SnOnEsb/FRjrXGVdREQMBE8yAOR/OhgxezbieOdgcCfxhvOFicj0J2gIAVNfDwXaRA7L/lFMdDINbyZIi1SRCRPwLolz2KojVpNl6xBHMaNmnbsycfl/ezrAW5wi16DH0KX5u6X9e9EU8j1Zc9I2kaFkacGBEkd/u68aQFZgXUFYcbL0Dzpbiglc9y50R6et20CRaMQq5nsMTXbAoPu0RkhR5ivkER/1zcnjz4VYYlU7pXOQ07acghJLUE9CA8HeulwfERlRsY6Hn9yo8pEM+EXM55KBq3c2n15kwvMYAXQ7eBOHF5cbEy0fkmJjKIlvagQhzPf462FPyMktKSQKimMtv6Ab00tvj5Yx5NX6DdwzH755S9SNfPn4OtDpRrUpFKa8gWrn7MDBqFDRnqN2WbZE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: WTDXG6+qEhdQsANj+byumv9LtZGeRa0hFFWkXvSE2z8IdXyu1qKEPs5u4STyd4gHr6fR6Ruzuv2RpwLASDP4zNALddT5+LrrnqRRC8TpnRkoms2zaF12oWSGM0f3n5YeI72msvAO17X42xWPfHHEC/nqCWO76g5Iz3/Gsd8+6D9mQS5U7H73yt8vqow9xoERkJEzyyTLYsL7NZ0P8zwJuwJJr6pdEYXXsDs0Z/1Ie99m7wOOE6qAYZ7sSpezxCRw3Me1xOteC8CV1lwCi5RePhDRvEkuG9QkFkSQ0+/VmB4xPkc5OhIHWZK8yCQnMEfFD0mh984K9CgXXl/bJ2UAVY8yoZ0nxdym2ahv1Lvkg1q2r5/A08gSZs1zsF1n7lXfsca9x2jlOlbkd5bbj0NwG7xlIAVyWJ15QA+wKRAcBP9QwiZ3IEeXsTquKbHqIaZws9Y5ea/cVcweJSUJoFHEypEZVl/EqK9FSX29/RFfChFcAHgTz8mVaLv20CnxG5eq5m5Uh/hXHONaYL2vbpAhvdozaFkro6x+LdLTqa3+sRyiV5cnptX6cVMNXYDuS10KK0HNKacS/SV6z3dbb37m60VmKp5W3HLLYMPbgmX0hwNh1PprfHMYuh8B2jswUMi9Y3n584Za/0J2mAvQ6jSOAGt0Wo/MAsV298qjisJHStlyZ+CwsnVd80AFjukfvtB3X+8D8k2EGmkaXAntjC9kLT7R1WxIujOhFaGrVi8zmxDbkOxkm7Tf9Xw0o9Dhm4kNbgi7dE0BOvlsPQ9iw0zb41i0AoyAPc6IqbPrlhrLR3JTFRZQiEaYW2r8nMG6k29NliPh1/0ZDv3pcy3IcWJQ9ZbJoZyz53Xi6Y4GGqpY69mVbJ7UQiZb1kgPf7CqnNEUjf1D8m9AS4SMXEaDlsk82y+m3zZQEcd9g4sL3Il6MhOEoXknsjokPW4CKN1eGshU01eFkMZaep03TSdmfp/E8qZJSZf8FQs+vvKLQq7h7F8ZUJEvy9eASOogPlO4v0WfmaEPnPufLWkcmyy4Xa+kVYwTVSbnhzxM1I1LEH45G+i2YhTvmq/v9JRnoSWNiCVZgdkL96bzOlUtDEpVxlhEKe8/acbE3htPJtuR3j4q/wEuWF5Skbsaf2mP6z0ehYYuqUBhu/TZfPdqRtYep6jjvmhtY4OqHCGImIwjJ/Y99K/DjDceLq2nYYzkfwOtyXv/eHy6GkDt5mfKGwRRwV0IfbWzqF+EYm/ehPW8Qf6xYu6MhC0pX55CzyPjKbSYPeyP7IaDLYkql5Tv7uiKRsutBr0gYh4EvMCqqK3HzYdnSUjK0XREQCa4xOuyZLej2B+J X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 4e1febde-f3c0-4ccf-4bdb-08d92b598cca X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:26.4982 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jG+5s41Apwhc/xM96+O+1586nKmKda4EkZ1JVGZAdsxZCZZwQz6d5thL3IZXz8ZJHUu/3SwQ14aNn36FqduFf3OmSbNF97LBlQQ/0z0Qcmc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Current design makes it impossible to distinguish which port's parameter should get altered (set) or retrieved (get) whenever there's a single parameter registered within a few ports. Change this by adding new devlink port parameter ops structure: - introduce structure port_params_ops that has callbacks for get/set/validate; - if devlink has registered port_params_ops, then upon every devlink port parameter get/set call invoke port parameters callback Suggested-by: Vadym Kochan Signed-off-by: Oleksandr Mazur --- include/net/devlink.h | 23 ++++++++++++++++++++++ net/core/devlink.c | 44 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index b8c6bac067a6..1d687651260c 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1191,6 +1191,28 @@ enum devlink_trap_group_generic_id { .min_burst = _min_burst, \ } +/** + * struct devlink_port_param_ops - devlink port parameters-specific ops + * @get: get port parameter value, used for runtime and permanent + * configuration modes + * @set: set port parameter value, used for runtime and permanent + * configuration modes + * @validate: validate input value is applicable (within value range, etc.) + * + * This struct should be used by the driver register port parameters ops, + * that would be used by the devlink subsystem to fetch (get) or alter (set) + * devlink port parameter. + */ +struct devlink_port_param_ops { + int (*get)(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx); + int (*set)(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx); + int (*validate)(struct devlink_port *port, u32 id, + union devlink_param_value val, + struct netlink_ext_ack *extack); +}; + struct devlink_ops { /** * @supported_flash_update_params: @@ -1463,6 +1485,7 @@ struct devlink_ops { struct devlink_port *port, enum devlink_port_fn_state state, struct netlink_ext_ack *extack); + const struct devlink_port_param_ops *port_param_ops; }; static inline void *devlink_priv(struct devlink *devlink) diff --git a/net/core/devlink.c b/net/core/devlink.c index 2baf8720bb48..79566a04083b 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3923,6 +3923,7 @@ static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink, const struct devlink_param *param = param_item->param; struct devlink_param_gset_ctx ctx; struct nlattr *param_values_list; + struct devlink_port *dl_port; struct nlattr *param_attr; int nla_type; void *hdr; @@ -3941,7 +3942,20 @@ static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink, if (!param_item->published) continue; ctx.cmode = i; - err = devlink_param_get(devlink, param, &ctx); + if ((cmd == DEVLINK_CMD_PORT_PARAM_GET || + cmd == DEVLINK_CMD_PORT_PARAM_NEW || + cmd == DEVLINK_CMD_PORT_PARAM_DEL) && + devlink->ops->port_param_ops && + devlink->ops->port_param_ops->get) { + dl_port = devlink_port_get_by_index(devlink, + port_index); + err = devlink->ops->port_param_ops->get(dl_port, + param->id, + &ctx); + } else { + err = devlink_param_get(devlink, param, &ctx); + } + if (err) return err; param_value[i] = ctx.val; @@ -4201,6 +4215,7 @@ static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink, struct devlink_param_item *param_item; const struct devlink_param *param; union devlink_param_value value; + struct devlink_port *dl_port; int err = 0; param_item = devlink_param_get_from_info(param_list, info); @@ -4234,13 +4249,28 @@ static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink, param_item->driverinit_value = value; param_item->driverinit_value_valid = true; } else { - if (!param->set) - return -EOPNOTSUPP; ctx.val = value; ctx.cmode = cmode; - err = devlink_param_set(devlink, param, &ctx); - if (err) - return err; + + if ((cmd == DEVLINK_CMD_PORT_PARAM_SET || + cmd == DEVLINK_CMD_PORT_PARAM_NEW) && + devlink->ops->port_param_ops && + devlink->ops->port_param_ops->set) { + dl_port = devlink_port_get_by_index(devlink, + port_index); + err = devlink->ops->port_param_ops->set(dl_port, + param->id, + &ctx); + if (err) + return err; + } else { + if (!param->set) + return -EOPNOTSUPP; + + err = devlink_param_set(devlink, param, &ctx); + if (err) + return err; + } } devlink_param_notify(devlink, port_index, param_item, cmd); @@ -4269,8 +4299,6 @@ static int devlink_param_register_one(struct devlink *devlink, if (param->supported_cmodes == BIT(DEVLINK_PARAM_CMODE_DRIVERINIT)) WARN_ON(param->get || param->set); - else - WARN_ON(!param->get || !param->set); param_item = kzalloc(sizeof(*param_item), GFP_KERNEL); if (!param_item) From patchwork Wed Jun 9 15:15:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 458424 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E505C48BCD for ; Wed, 9 Jun 2021 15:16:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 57CB36128A for ; Wed, 9 Jun 2021 15:16:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238998AbhFIPSf (ORCPT ); Wed, 9 Jun 2021 11:18:35 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S233624AbhFIPS3 (ORCPT ); Wed, 9 Jun 2021 11:18:29 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OqIUcTgc3mcQjB/QfsGt9BsZHA3cJbYkrx4kSamtycD+bHlHdSf2m1PMDlGfc+hQlLM/Gy6UHMYu1U7S08dgn+6kDHnacvvagUDt8Gsrerq3/ZFZ6jLv0JDTNFYbe3Slu4Lie2NAi0x14KthV9z/m0MLaLPa+g5DKdi/2RUS/e1e/5vrSF2MSSTfXW1idTgjsjQKZhwK1qpsowKgzb3FY5EHe0dbPUIO6fwnPQE93lzkxFvCrAUNMKPLtE6OxPPrudpt/DeTg/XM4zpP8OHt39mwrAdk2hAEj2uEwCMoaxnbz5y4sOAbfurgHj7dZEXa8SPvWRSkoynFPlpGUNNVUw== 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-SenderADCheck; bh=VmbGEzBxatlasqDW5owM4tDfPSTDw4I7Yow5rSO0m1s=; b=WtEE16JRWG94+XMvaqIqUsrkP12BQwywKtQFG05MhDocVuUUtG4nDLXpbU8GRRWgSlREC4VITGueeTEX6i1Ipbq9y/nz3SZVC1pmhGl4IdmCQcO+n2jPW5SLe520Bz7Pz5eFhjPvkBj2owsFolhxsFSbR7y3dvIWrxuwHAcKT4t4J3y76jatEKK3/JiomLJX++AUTBgO3mpypg6dJJWYIm9JV8pZq5E4ov9r7CxzaDUuli0PET14HFkaY0DGV2QxrbCLUhIhr/UchAxXD2/xRQeV18y7bq0aH0a7WQAAUXywzPvGov5S0rzFxtdqkinHC0m4DKvZdlBUOySN+m11cQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VmbGEzBxatlasqDW5owM4tDfPSTDw4I7Yow5rSO0m1s=; b=oUnzZTi42qL+XPg/3N7gtlmAxcgKf3Us7XGvqTVlNQCRC6lFPks6sF/t+/4T5wq3LLj3YVG1bPUoghYsxqjeM4dS5v7DEVffvkSTipabHZGreAFLYL5dkTeYAYwE7v09+GSBB5jAPbCA9brGnxeZYbtjfJqgB1HFB/GY9UJSv+Y= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:29 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:29 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH net-next 04/11] testing: selftests: net: forwarding: add devlink-required functionality to test (hard) dropped stats field Date: Wed, 9 Jun 2021 18:15:54 +0300 Message-Id: <20210609151602.29004-5-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:28 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92106e35-3649-4ddb-3dbe-08d92b598e59 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:431; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vxX9xZGtS0xCafhFp7n0ECOJdYMsqphsJLUrpUgkAAsW6O/Xf585FWi0MKLuLi1K9x/73chQC+5dtF/JL3K/dHJxIbUl+H0y5UB/deogWOQmCVMk+riOtNyqt4cm3d9ZQFKDRsIFLhSz5jjjJnJI7LeEFjVxCfn+f4qIAILZ16CHsIF185+nrf8uWACjotM51Qnavb+Jr2l0h66VD2xneItgBAkYC1f6k6b1wNEmn9sE8r2avgmcsPyz93BwnRPohxnMISASoQZhpscmNlYosnFvUtJMm9Q9pNf1d9T5jSlggFPpLjl37Za0I2Y4TM17lPj8CXyQwQlBZadC2z9IFZfSWugHVyYnOB/ZQ7pGZzCglVJt6fDszjeFWy96CuXEnQjE3JR4vJxGDtAkoroarUv1yScF2KLh6xKtSvGmiNefiBQkY7fdd0Wzb1KKNaBAfrUmlhvZWQxkMjBU/zCMmoniUy2djunkzsnrylpBBHQn50JxA0b0OmTOs8dbEBR6WwK8pS/pP7tX+vBYx/B33Skp2yBjJhCsqyY2GQj1ACxRzDXbvsppHbnbnnH5DCCA+5a9uKwwkUn/YG4Q8HG8chiLwsIdq9U2+JittwUyaK0iocpvK0JhKVWfLSEZ2zLhovdK9DOdAW7OAkX3RoDEFRdsqidTRbzPV5RVN8CK2yo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(6916009)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: zHpvveKkWxNzgz/zD1pXMKFumLdWRilktgdnqTFCiXZeFT8LCl/yjWXjTWGXEimhiL7w0BSCS7GX/3wuF/7vCJGqbkwNbSCkID5NngveTvwpJnNli3gWt+P1kSGVpxoRC1taL8Dbh9upwczlbJqhOzr55oMTtBOnUHTwQIPbyxeJD5UpeKWoBjB3wkOvlKuLsLvU12jcX6PszswW/QxfFCg2r6IbJvLW6oleg5cVjTZ8+pI//Q/R7Y/upbTFlrq9ZgfxIbr2Gzp43YrJOZ9MP3X1GsatFbzEA5T/d+Sc4yCUs8ExZt5UBCe5uwB+rU6snk7VXebgX6mC8w56EZI1SBnqbgmX5bvRgMAfoCX0y9RPdKIthypKX7bQP5b2CE2UGvjzOE6oDzdBGwxUlB4+ruqeGMU1kqvds1uQDUL3aBl1V09LsujJWP09SM6Pwrus9OejWo8158nKCowTqtjt61E0TeulCfw7+nishcyGZsh9Qre9GQh0NGGPUqH5ls+pjVjWuoouGYcwUsMnRBH1sktmDNT7BU/tY2qqsinaDSh06UDU9+Z0YVj10pXLut04nYGx8EC/QZk4/VJ0OMcHsLyeG39jWyM/RhRJrmM8d5vrUSPlCfcO7PCbQK0VeFDM/UMW8s2j2mQiMlsBdWLMPyX1VwCKGiCLQ57XYRYtW0TAQsB9sdGQT3u+zB8wBvzzg2PA5/bB2WaRy8lt1eFCEqi2YNuXwRhCk+kCNQbnEmxlRp2+zlXRKtoW8f+y6gGm0XsSAA3fnIDhY4FbqcojEhtMRD7nL5Up5HPJC6P2rqAEfKdCfiP/CkpqRAt/QwQAnOE/eBx5o7RnixSfbqG2QQu8XWfyt9IHuLm95lHvY8pwODv0Yb3keS6p9Oqtq810MUMwnb6Ckh5Ozm/2+DmMCvLeAuzVb75QU2SYKQXai7+luSqfvC/aRQ3jRJA34KxSsjNwgFybUKw6TbxjvLfF8N8REOHW0Z5URjgpYi33/FMkCocMBg4jWBjYGj/+nq1Tvq043jQV0A5p/Rz36kVay3g0G8QAHpLwxg/cyd2fBseGJmC9VO5LCqGUcut/DF69WZoFw6omxErLHEfsdxkKMFb3uhYfCdZSfMyJ60yAqNqizlEV3BPGQFDuVhSewuxHi27elVhKvS0eyZQR41kJcYPRDRoNpGxnMDgR7EyF2tYBXjChDvo0e7eLZSI2nWBJkO3/3pWnn/lFpdWgjrJ0ezR3INwWPG2gdG7hznZ+QVk3Y6ySHxsIQu5oYpnhLHdjiEQ1uBN8iIou6UiyNuJVMR6Rn0z2hKWiWVg9g9NAwvyry/1pAO16WYI0bISD85X8 X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 92106e35-3649-4ddb-3dbe-08d92b598e59 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:29.1008 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nUdJi1c1iIkuHyxzBzSGCW+Z/MBKYo4iMxHB0i7dJv2OXtyrimN/lpbDFK4kS2x8WuiILnfkaLPDPkkSo5uPrBcQMrrQO/nDm9eKfaA4rR4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add devlink_trap_drop_packets_get function, as well as test that are used to verify devlink (hard) dropped stats functionality works. Signed-off-by: Oleksandr Mazur --- .../selftests/net/forwarding/devlink_lib.sh | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/testing/selftests/net/forwarding/devlink_lib.sh b/tools/testing/selftests/net/forwarding/devlink_lib.sh index c19e001f138b..22931dcfa182 100644 --- a/tools/testing/selftests/net/forwarding/devlink_lib.sh +++ b/tools/testing/selftests/net/forwarding/devlink_lib.sh @@ -324,6 +324,14 @@ devlink_trap_rx_bytes_get() | jq '.[][][]["stats"]["rx"]["bytes"]' } +devlink_trap_drop_packets_get() +{ + local trap_name=$1; shift + + devlink -js trap show $DEVLINK_DEV trap $trap_name \ + | jq '.[][][]["stats"]["rx"]["dropped"]' +} + devlink_trap_stats_idle_test() { local trap_name=$1; shift @@ -345,6 +353,24 @@ devlink_trap_stats_idle_test() fi } +devlink_trap_drop_stats_idle_test() +{ + local trap_name=$1; shift + local t0_packets t0_bytes + + t0_packets=$(devlink_trap_drop_packets_get $trap_name) + + sleep 1 + + t1_packets=$(devlink_trap_drop_packets_get $trap_name) + + if [[ $t0_packets -eq $t1_packets ]]; then + return 0 + else + return 1 + fi +} + devlink_traps_enable_all() { local trap_name From patchwork Wed Jun 9 15:15:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457394 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA079C48BCD for ; Wed, 9 Jun 2021 15:16:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A3BD961246 for ; Wed, 9 Jun 2021 15:16:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239054AbhFIPSh (ORCPT ); Wed, 9 Jun 2021 11:18:37 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S238357AbhFIPSa (ORCPT ); Wed, 9 Jun 2021 11:18:30 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MK4b0bBTYJbJxYRdRG1q1SNMMyc6oHcMeY7iaDGk2j/vTrlSUT+1d9TNR3w2XU005No/Lcz84uFxH9yr/3UaCCFjeli7eZJOEOTZFSpsu/gju0kYFmnaGy6Eri9Y2F5WnlRYmYppAAKUuphWLbFkqaGV2IMhKZjPN+Irzuq3iKemkpHNq80KOYPjZtKLNmvDN/fmBX0gbCX+IbAsJXvXXrypKeDMvCBWOuiAxMuHh/iNn/sPttIdPgZA8gzijDw6EH7EzTOsTbAQ4vDEra5cOzMTADe6FR88KNXrNDZkNgJ0O9wwv4g/eZNuS/l9kCd0VMLfjYbLrJOmc8u/rqBRuA== 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-SenderADCheck; bh=A4enmdNU+t/tQghyp5y49qgpLNc+GCyqWWfDRf3tpc8=; b=EN+qCBK4+nLzx6S1oezgAvCMpyHtnabK3CYnEOpH3fis1ADXEIRL5SQH0NNOMAxGI9gdyicOjkE2/5gwYlqxm/vtwQXfIfUkkzupWQpiS/2QBsA4QGXDXkzao2UIlNW3LEoYEi63otIjUX6uaIg8desOzxUD3COSCsa27Lh53EQddaIR/6fTn7p1pubUEov6vJga3WA74nU//9/fBXw1p7ZQfyoSq72K9YUuD0kDWqzuPNgrBagXHibnp7lSSR2fk4nQzVEbFrQUqVYtAu4mMzL8eQiDoqYwQ/6/cygnsQqHBlZkwIqzyzTy7QzSgrjrZqZ53siUwvjN3PBuvGUd5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A4enmdNU+t/tQghyp5y49qgpLNc+GCyqWWfDRf3tpc8=; b=kfccq7dG5s5FN1V1xr45M3LynD72RL1rxDhKpW4BEzLAG3jssae128qUKnZp5JXaMi1bpc8OeKPX22UbcZyPLEVKmYLazz+6zMTPddC59sN6VAB2fQGTKXmb2MaVZNMlyo3leoHwDLqARB1IrLQCVfmzl5aTWYVoDKbc41hFz9E= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:30 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:30 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 05/11] drivers: net: netdevsim: add devlink trap_drop_counter_get implementation Date: Wed, 9 Jun 2021 18:15:55 +0300 Message-Id: <20210609151602.29004-6-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 652e4925-9bcd-4c1e-7b74-08d92b598f5d X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yoS2tmb9hxvW+ZwzLj3aaUJ63nXASUmFgZHMzrK2/kVmSLmQIhsylw5ibhlVBF0GaqscJW7Kf0C+7IY9rwzeOJxzeI2fs74v7wA28vWLoCFu7aoDJx/Fj82cTLDkJtdJJQZ0ShkmVbiT9cEe2Hm/KHhSuY5rbl5wcyPPGDQ0kOHkNuWS0xRKINXE+4OuNYGqvwYdjOVBilW9qxGd9QRkprTHSMI6cbI7/vL2AaEOYrghEC1Ft7QeavNyLHKMV8xaqny0Fwj601LUNn5v1Nc4CXKGzp1/IPR9aVFGIYkR1TyrjygjD7YQ7Gm1ws/RFSrUC9uA4gxinT+LkF7zcpnNbl3ZADJdNUwcRhuKLqrrxiZFriHamCtPNb8rW1xsWv7I6trpu9rjMoZRbFd9L5vGRPM4amziW5sstj6GC+QSbguOG4KwHzZMGKSBwqstTr0WnVYREGiB9+V0PMkgIw2eg/zM3LuGnFI4ckBZjnzYvgNiacVh34IuUkfiAwTvhkWEyml4dta5jaEGgO6kp5rvYHTZMNAWBQ5t89YGLTTgIC2vn5FiV6RmRN8xWWPBkIlJQvmgqvJ2Su/fLTusKtvipkEjs66JtIWhRW9JoWIkuX+wklHMu+yEI2NdUiSn07z8x91jsSAl9ZtpHTV6kyY7xvkl70pBdlO5ypu+Fq4X7qY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: Smrf5pglYX9lkcRm+l8V0Sqq83uojl+/7K8os55W8mNsUdJkpYzEGZVyA6NneY05ezCQL1Fjh++oKjHrduWN07eZ0u4P3vJJmpetya5G9n9WHbXUsyO/xseMCC/+9xwdaIp4e8izvHpBHX4kdq2qZJ2//ghWgQMYFnH3RYrCwSiHF4FaO8y2tutsUulYGahS29PBXvE6QyiDdEGy+WZ1RwYui3182Nzx5NwTh5pQnsPFjn5rCyQw7wWIsmJtYoOQho10E2M1JwTGkMO5Hrf2sMILivEpWn/dvdIqyc++IFbAD9T6voGm4iw3xBA3JH5yH+LyG1LV6alY096fnSQ8p/kQEYPCJF6207KC7e+OHwqJYSw1BdfzUQ49+3jNDGVQwomBwY6PpLiswcSnitYp/gljTw3kr588CfnyaFtBG1fXYeswaCExz0kvO2sqg4rRsWnNCAbWsYWQfaVN9yFK5Pvu4QLwUnDUFwNMQYvqRcuUr4TVCXxryTBOg/WJxZrU0XWTTBGFkJGFvjmwUm/fmmANaLx1j9qwTFh1tYewaEEmuqvFRk4ydbiOuhzzKSr4cZODbRwOkp/plQQ2uhPLZXPHQCUiW9Uq9Fg80NsSl8sL2T8N6d84upl0g+LyNVlo2Gyzp+VvDPg+rQVLhnLD9Jtix8iPP+djj16szxjyCRO0weM5YGZUGwwNONiopaGVCmjfy58cnTG2iHkjDHLikDbCuy7QfKA5DiAyPOsD4R6CltO2/d/arL4EIIAk2QsDmrHRpk55ItsdRJ56pJNUuiz7Kt2ewJHPfPpxuTyqfT7a9TDrd8xbE5BhGHqAo1uDVOy7Hn6cA8I/1E2gKSCfXOpWCb0PTD+Jw3yyYeeMn8ROXQo4CPjHNMB0BBsx1Ez0oFHkdW4kaKExQ+AwAj80RU/zJ2hVgn3yEEHKDfErknleb0FLQa06R8pBu6WWvmYSn7Iiju3zs8ufIlECVbCR1l2onHC4Xwr7yCY0noVALsZ0CKcYw3HHEG3/ba2/cRWAmVMZFG1bWU73x7XkbmAknQw4rhA0KBLIIHwO9Dm+Smnyj07NsVYZQeVXWa9jbsGpAUnXPYfq+WGYcjwUgyKaVRb2ODlE5cT4NWu16OnZTGkLea1r/U5L1q1R5b30fQPN42x14HGQFg0pf7JlkO2qV2a6+FBYF/+z+lDOKl0hTM/UW9PTmzue/3xecCJ37F/1+ZMzSvOt5DuadYLZh/K+HYs/ohkd13K1B4bj/2Bdf31rvK5GU5a5lW0TnQYFIrxSL0t5Ajv9EjzbPKYPXuvJQO/3TUB/UbxzAURiVMzriHiDmEZGZOUgWvWlXfjivKAk X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 652e4925-9bcd-4c1e-7b74-08d92b598f5d X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:30.7963 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZBqxjFPBAQi5S5xeBAzJnl80A8ZNkB3n3s5dPC3Mq4iHcFc1xhMe5M74W8b2J8r5JqZNVHY65VjiWNRb1yLOHuR4LVQ8EFKbGU/GtIdNi0g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Whenever query statistics is issued for trap with DROP action, devlink subsystem would also fill-in statistics 'dropped' field. In case if device driver did't register callback for hard drop statistics querying, 'dropped' field will be omitted and not filled. Add trap_drop_counter_get callback implementation to the netdevsim. Add new test cases for netdevsim, to test both the callback functionality, as well as drop statistics alteration check. Signed-off-by: Oleksandr Mazur --- drivers/net/netdevsim/dev.c | 22 ++++++++++++++++++++++ drivers/net/netdevsim/netdevsim.h | 1 + 2 files changed, 23 insertions(+) diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c index 6189a4c0d39e..87e039433312 100644 --- a/drivers/net/netdevsim/dev.c +++ b/drivers/net/netdevsim/dev.c @@ -231,6 +231,9 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev) debugfs_create_bool("fail_trap_policer_counter_get", 0600, nsim_dev->ddir, &nsim_dev->fail_trap_policer_counter_get); + debugfs_create_bool("fail_trap_counter_get", 0600, + nsim_dev->ddir, + &nsim_dev->fail_trap_counter_get); nsim_udp_tunnels_debugfs_create(nsim_dev); return 0; } @@ -416,6 +419,7 @@ struct nsim_trap_data { struct delayed_work trap_report_dw; struct nsim_trap_item *trap_items_arr; u64 *trap_policers_cnt_arr; + u64 trap_pkt_cnt; struct nsim_dev *nsim_dev; spinlock_t trap_lock; /* Protects trap_items_arr */ }; @@ -892,6 +896,23 @@ nsim_dev_devlink_trap_policer_counter_get(struct devlink *devlink, return 0; } +static int +nsim_dev_devlink_trap_hw_counter_get(struct devlink *devlink, + const struct devlink_trap *trap, + u64 *p_drops) +{ + struct nsim_dev *nsim_dev = devlink_priv(devlink); + u64 *cnt; + + if (nsim_dev->fail_trap_counter_get) + return -EINVAL; + + cnt = &nsim_dev->trap_data->trap_pkt_cnt; + *p_drops = (*cnt)++; + + return 0; +} + static const struct devlink_ops nsim_dev_devlink_ops = { .supported_flash_update_params = DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT | DEVLINK_SUPPORT_FLASH_UPDATE_OVERWRITE_MASK, @@ -905,6 +926,7 @@ static const struct devlink_ops nsim_dev_devlink_ops = { .trap_group_set = nsim_dev_devlink_trap_group_set, .trap_policer_set = nsim_dev_devlink_trap_policer_set, .trap_policer_counter_get = nsim_dev_devlink_trap_policer_counter_get, + .trap_drop_counter_get = nsim_dev_devlink_trap_hw_counter_get, }; #define NSIM_DEV_MAX_MACS_DEFAULT 32 diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h index 7ff24e03577b..db66a0e58792 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -236,6 +236,7 @@ struct nsim_dev { bool fail_trap_group_set; bool fail_trap_policer_set; bool fail_trap_policer_counter_get; + bool fail_trap_counter_get; struct { struct udp_tunnel_nic_shared utn_shared; u32 __ports[2][NSIM_UDP_TUNNEL_N_PORTS]; From patchwork Wed Jun 9 15:15:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 458423 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 867B8C48BE0 for ; Wed, 9 Jun 2021 15:16:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 75505611CC for ; Wed, 9 Jun 2021 15:16:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239068AbhFIPSk (ORCPT ); Wed, 9 Jun 2021 11:18:40 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S238718AbhFIPSf (ORCPT ); Wed, 9 Jun 2021 11:18:35 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cSaCK9iEsNiorNa1OeOI0rW4bwooLnBa3wAObN5OKe6uDAYGecwp/mLlGNnQz1S7Rl2nXa9BjzX71TABOtwsyaJxSSXda0oar1nNmNAa7zm2pKrSdk8y9G7dU86hhZqamKAKm0AQh65rdGHL1Jmnz9nZml6xd0Ey8seO2wbOFl7vKFT/vh0rg/6G+NmKUvfkenryLZBBoQiBZkaDeB6R/vhsjtPJLX0YixZeQlPf8cfVXuOgBWmwDhNK5Q3maKKxw1xjA6vFaHdA37C08Ko3b580+YL7/WjIrCYP7MuWY+YYI4AWOp+ZX/ASNLOhu4B7gSwL8ckE89mPEwsJpv4nWg== 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-SenderADCheck; bh=/NL5xHPP8oUVtKKhuyfJpdfKBegW/I2DabixcS4QNAI=; b=nhI75kgStRMAUJf5EAk6t+9n5ddq6J7Pkd4EXm+cq+kXDXMNuIenCTJLzpp8I9wd6bMWvHV9bhcVPqdFKeyMNPtrKmq1Wu32fZG29Lpm3okTLwODIB0uSABQkV5ftXoYnM5tm821G+Fxe1cjEqqQsgTb6ljdR+xanJSdPBvatYhe9G+VZWLAIm3b+MZ3a02FGud+KxWzHOfjmkOuc6tb0jzfYRZtZAQ/3ctOl8ZPo2284n9n4by3dyjZwSxiZau62N3H+uJvpsr/n7GCZss/zAMwebGJGjv6eL0F3V2DRxiBn1suhMD0P6wzplhuYuoqm0iIUsNbSSfSF8ZKQpEKqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/NL5xHPP8oUVtKKhuyfJpdfKBegW/I2DabixcS4QNAI=; b=eM/05q11b8dbSqT7jPwNAsguXaHWCg/HNBoTWbWuu5/ateUDLoAo3HI7xh6UJZ+tjz7GcxqEi5bHViX9L2F2VB3LGwbvYLbCf4elvf/MTJaLIp/CFMXgBb+BdQsV9vyj+ps2isOe3uVwHrQPuQfC4yYtrVxnWiss8jmPcPZaJ5U= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:36 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:36 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH net-next 06/11] testing: selftests: drivers: net: netdevsim: devlink: add test case for hard drop statistics Date: Wed, 9 Jun 2021 18:15:56 +0300 Message-Id: <20210609151602.29004-7-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cd1a5531-f9ce-4ff9-ea70-08d92b5992c9 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:179; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tBqiF1B0M0meJ8XNz4EfhyDkjsQK2yMfiVpzljGQvjKavw5dtV8gE1C5Q4KaAf/9HJ4JpGExwEp2N3Cg4+3gfu3O3ADZ1P9+49Bc1NcYTFnAtg+JNHkTBlEvx9epILuhnqOFJE5tZ07i6L34CUQvuAPYB/RSk9ehBAAMFGbGG3O0uw4gL/hdtQqnW78GCX89x8p3EAlnKtcSQwWzInP4EudhGrUZh/nZ+i+ewNCwvzgS9HLkiDq6ml8f4TgxBo8QgNjb6GwbrMUjcoez0uE/x9JkSyR3ndxUBQbvcfG5eq4rTaWmbC5krEqzK0ot+TwDrO4OzU4mRinU80qjwse9J3YMJm+URpspREbtDuIDnGwKgcD0d8Dvm46Qvbj2qAgB3b+1nw+VEeEKf+GthLDw9FSaEe10BX49VB1pz4a/audYDIvOg9YnNtNtIM78R1ft0Gzpy0bFSuVUvtHSe5g+070M9k+zyTHfTjYv1DDPgUGL8vbpkXdI+rgUHjEvW2UKmdoC0klA3QLZUjnGUi0ZNDS6J6MBhO70ngxP5qe0dYRskz1Sri3QeurIh+VUtdoCNFbs2GzEtgasiWmx7o9KexeIJl4Hv+DcavWGd5rzUaAet+5e64vZZ1MEfL13q/9Z1sUABnoyOEHQl19g08gnA1LeNrxHZQUaR35oqNhWdis= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(6916009)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: OS+V0PbbXliviTonxVWkXn2NYEQVMf3QRklJZa8Fz76mLzbbixtPz+7KWo1u13qhcC9WTkmUV+HXqKo+dYTySnUigdAPL4OC8EBWT2DhhzO3pqt2ESAAFunAZs8d5N+lOgavw6/oQD0wFl97ip2LpMBUwz94qN4htPIKwvsJLAb/W8yblzgdb2wPU8C8bZ8aBZhzShib+Uz/N2B0qG0HM8hziKOp+FRp/Ae9Jy/I7wDyHpQ21uXMYJVjDaxQ84ZnwvSeNnpafOPBC0hLPYSfxfkiEyLmw/HFRy54U+eITxbGl2X5AqbrstX7j8uKtRR5toyhN9iiEnktO0ZFsfAJOD/3OLU6CJtt1eTHbwNVkSI2uvdT9MFZDDz0rzM9Bzse8yhAeXkI2dR+OwCpSwMRO4Sr2abCZIgDw1fjVX6jUEhG0fIfDo5QJ1IsMypZpGsAnU5rggPiHpaiBaSEhfdpLy3YiBBKwb1OkdcQVcT0bOWuEzcqUI6Wl5NiURhmPb9anQZ60Psvw5xEv+5zNqjv9t1wnmY63HMVCMYl8FY1T0rmiWl4jFnG731cOqtpyOOhvmQihf8ojz8cAZQTZQXslpYkSwk/QdsXAoIT90bLsSErh9ET5HeuU0wu+2JhOZ8Upic8InFYr72FlymhbtZhWP2f37wnqVr6EUPCvjtw2JpWO6Lkdmp6oD8cLAOh8zTdw3iE6cbIZTvuHMygtenZCYBBylECAHqvXYWnFtl1V2F4nGPUX9CP1hqu61/sV0/R++lQHU9kEg+VGM5h1u7NfYS0j7CT/S6g4uT/B5+5k74trDLnilIIMkGNGb1AnkxgeXgH2lKde6N/k0LB30KL6L6s51rmNhqppYv0Rvqis8nmtizgYGF1mBkzWWGfYvrgUm3pIIR/tNTWMepdDwecABeKBg86ce8CgrZ4Q9h7YLTDgGdDpBuKqUbRIUlPKmS1f0Tj+GXAE+ZxLNf2FIcH8yuY4XbmK/0UOLFk8Y9pq7DmhhIXni0cXo251kcKJncQG6Ngd9YKtruwUUBAz65WwmT3H8HMztoemUZntgZdMpWRFOs2HEW1gKirECVSCdG2AjK+Ob2oqK+TIhYrXWuBbwqgfE7v713XS/zpYX70B2xbxflefhhnPvF3MJ0H+lM1BW3lLjBG4d0ySr9JIb1rFRSY+uwJPZsRTV64OrVT8tGCmFgiFu8dMoBATWukAgZfz4hkGbMrEoxkKbruJyRGTHhRyTDdXkcGqmiIZynzQBclKE98G4aWvalx8TuN9PqsQDJomQQ/LKKsee56Wnd/DMokpKWV4XF6PURE/pWUSq/3+sjVBN5g3kYG9h8nXmXZ X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: cd1a5531-f9ce-4ff9-ea70-08d92b5992c9 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:36.5421 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SUbu1SQ3rgfOAyClVksaP0r1U985Ldk32Q2OnE9rKjNKq2AUrQcdKaPgas8cW96A0FB8fISAmg+RkR9mfvcwJohBBi5VwooGxjboilvTbJE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add hard drop counter check testcase, to make sure netdevsim driver properly handles the devlink hard drop counters get/set callbacks. Signed-off-by: Oleksandr Mazur --- .../selftests/drivers/net/netdevsim/devlink_trap.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/testing/selftests/drivers/net/netdevsim/devlink_trap.sh b/tools/testing/selftests/drivers/net/netdevsim/devlink_trap.sh index da49ad2761b5..ff4f3617e0c5 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/devlink_trap.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/devlink_trap.sh @@ -163,6 +163,16 @@ trap_stats_test() devlink_trap_action_set $trap_name "drop" devlink_trap_stats_idle_test $trap_name check_err $? "Stats of trap $trap_name not idle when action is drop" + + echo "y"> $DEBUGFS_DIR/fail_trap_drop_counter_get + devlink -s trap show $DEVLINK_DEV trap $trap_name &> /dev/null + check_fail $? "Managed to read trap (hard dropped) statistics when should not" + echo "n"> $DEBUGFS_DIR/fail_trap_drop_counter_get + devlink -s trap show $DEVLINK_DEV trap $trap_name &> /dev/null + check_err $? "Did not manage to read trap (hard dropped) statistics when should" + + devlink_trap_drop_stats_idle_test $trap_name + check_fail $? "Drop stats of trap $trap_name idle when should not" else devlink_trap_stats_idle_test $trap_name check_fail $? "Stats of non-drop trap $trap_name idle when should not" From patchwork Wed Jun 9 15:15:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457393 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9AB74C48BCD for ; Wed, 9 Jun 2021 15:16:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 85485601FC for ; Wed, 9 Jun 2021 15:16:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239118AbhFIPSn (ORCPT ); Wed, 9 Jun 2021 11:18:43 -0400 Received: from mail-am6eur05on2097.outbound.protection.outlook.com ([40.107.22.97]:56865 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239058AbhFIPSk (ORCPT ); Wed, 9 Jun 2021 11:18:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nLdJUUpXcb6tjm36QnZmxcXS+C5DFY0fN9LcZi9wsyhhrSYqcSpo0mx6+6qAWX9vvLsjtTESIVdFfN7Mo+lWzJe8mHs/jWf9sAwl20j0EayOVCO68yErhxeEdhD6JyPAD+hZdy7LeKDFu1TXr+/CHhcN2PlkL7RJUD3hHjUTTp+mB14rn2mnA9zyJ835+8ou2ZJKL+Esb9MFdQMCTeeIpQtqB0YIV/mVpWsUAEH8MNcTTcbtQfMUSJQe75vdvY8gKJ956WcyaqkAo5ddh7FCZX7y2D7tYbTnj9dx92YPsoYMH21hGD8a/UF03Fq2xRO8RXY/75wEaKIUigHMqCL6fQ== 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-SenderADCheck; bh=HcK4Qxd4NM4B24hUsxAcq5tVaCjmvwvP3MHHAXq9ryU=; b=jZQemISUJ5ojskOWYWO8yE9IRo4jg+PudnwaqXeFloDYaV5GzvGZjXHZVLbeaKPV68nEOD48yFLO7g4WYW+ZDplItngPPQNTfmdCrVJ86BSLu4ZkMUIhfuw0xoVhfxKAhvqK6OeN79d7bwyFXnjpGy9Ba0NQJX3lvPsEwx4Mxnrrvl0imqeEq4+8HBc/1Z4ynpz6xadKpKOCwSfUifeeIX/N2zdDX/tzKeTQn8CQ+wF6ZsqATzkHIFDGY81ELnrQ17XuvonHOb1bqtGzG26qLo3sGdHTlY+LpbgzDp09c7hpwOAbjNz/XYByIWccUu+icVkNS8BUbh6H4LsO5Xrf+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HcK4Qxd4NM4B24hUsxAcq5tVaCjmvwvP3MHHAXq9ryU=; b=NUxT8POBgDpxza+HjmfIymH0S3t+iTJ1cjKPGvAHAapFahbXMdGWVluEJh+kdMlQqH1xMPYgVMZGSTipGs5IN7kFZWsMY/ex2x7Csb8IiYbaChbfO/0COW1t9uJxP7vZZgYg4QXo3DQdISMV63LG0slCJHs1Em3v5FLgWFnHa8I= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:38 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:38 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 07/11] drivers: net: netdevsim: add devlink port params usage Date: Wed, 9 Jun 2021 18:15:57 +0300 Message-Id: <20210609151602.29004-8-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:38 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8a92472a-d448-4e6d-3b53-08d92b599417 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:381; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kNzBWq5VNoruVS82zJRleoNjafT8YNp2QbHP/keZ9PJn/mcFUrbZ4+Uu3KhzyL6f9j9/yD9qP8cnqxcGHudL8u3ujOQwKRJ+HT3X1rmOpe7myI2ido4QdCDhzGIhXDE+d64Q4OzZcQIV/L5hBn8oRvPGvM4tssXsDy3UXd4gtDSf0e/U+k1vO+9oiqGhaPJuUCNEOXPPv9/7PkstoOD+TWGHq90ylBS5uORtMZeZSHmYxe29e59YvQABXiwgCjvZp11Hm+3v2IUVQpQeQpDc8b+vNbrS5kRATvPy0y/yjJiomf+Uu8BaglORujwp90Dq7S/n3xNvLceOyzSD1C6U+/twg0xkRB0eljwBL7kgoNhIeErPtDSF6SDzM8Fd9GzweqM02LxDGc4ktLwqyRCq1MFcJai6pzrKahgm9+0S6rH5D3giY7k339OWvhYIojPN6eaz1ZHI5RI7Pu3Avuzs4EjEbCA1lHarcjf2PEe302+YP55vuvcG0+X2qpQ5xK4lB9/REYinxQbJ8z8I+qVprnxq/fCDHS71cJu36930UkE+z66oLynRV3k1g5OtVbzQ4b+Tuz1a1/PGZXp2byGDoQjF2Qr6CCuIDcrevj5VjfbLBy96TcpBzCFZw4xGhZKKs3ZYPp/zpDZ9YXVkR779gxd8XRfdzyHZp2CoaASNJWA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: bdgSIszsGRH8kny00uJV0ZV6nBREifjrUsIYytSwTTufH7UjFfEhJ7BCZ364+PIr/q/47rAyQ8OtazEkqET+Mz3VHagqHQVNGCA3w/mIywNe7fStQNS2WlHAJ4w2wET3W8W8gx9mft7e7nGZloraxT/LzVSl4lvX5OTvW0dwOsoQNunVaP6RUvO8/MIJWStW9MSa9HsKKvNYk2pGcXvBZiOduR2JvjB1qV7bVlAQuUEgy3Zr0ZV3CLVgfwP/fk3PZyDfLndMUnimAhHpdsAgYzcsnkN/F7xVMuQ2LcdJZBp3FMQlmOz5SphSlL2/p+4QDsL5tezq2/2WvqL5FTfA9MUkakHoY8FgG/TTz6TxFICjk6Wk+1xXmOY6cKF8SVLtdFzsHAVwppEVQziSNc9TtTS86+2o+nDc8WIBKYuXahIcynZdaP/dQulp4oAPZwGYUFLmScCKHyBEPuNmC8tdFZ+6aOixz8LHe+SbDt05joE0WX/4Pg/CIWWQFFBvVRM+9sCGyr5oyrEgppv4Lf64MzP06PAtYrPFUJV5BIdsWJznM6FD+ZVkrOqIiFxblRP4xZ/ncENxXD48dEpyPLWiDLZRXvj7ruNGrMN54bIuDVvkmmNcc8vt7O6Fx8SZAzYr71TLUflckOw3/WDyfG94ivIrruN2BLmtF2AWUCeufE7p73QyEHmQEbODUjD7iL1RiS/cZG1qPgHBELO6BvzzXKVNMpS5X5/u9ODvQJ2TLtYMwKdriU0g6S6SPzv3HTX8iPXNKOA9Bzuat3T9H50vck7gf8g7dOOxbrFUotZA+9ysdSGMRLwgf++4ZBWuxc3AryXROLz+Off2uLXRYCdcMSfL8nNY8lOYpo5AIEY9XyFUkampf0cAkBTggMeD9GScUYoa4TSspFX0uqLrHUpZAIsBF5YyYQlFaXZaKDOMOGcBcHtMkaPMTASJA+9kg31PIB9N0NtHLGcvcLq87cObgLHpLHhK1zFCQuS6z/DqyjYarXcCDdX+MvNmeDYQHByYS4snEX+mKiIkm+JFYEkUIHXTKV70S2oMC05Nl7o+4SDBQbPYVnqOFFhxoYpOU+ES5dP514f8ZAMekApg/IZOcToSI3FBdxzVHEsmMXr5+LJt+Q650nBQaECBlspnJL5PK32a+Ntr+cxzw07quOBh7eO0T0+ATwyeMOvR7qUAe/K/VF/MFT/DznWA2QenSkJ12qxRpWRSQ30xqMcaebVAYJKPR2dKP8h9DjkA4pMg3mL9LNBlkuz21gT0QK/wo9NUXegqWb89l+xnh0SKQDrJFE3Xj7tDBnTBhA4GCFsLWogWXuVoziFbG2BBaWyA6QdM X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 8a92472a-d448-4e6d-3b53-08d92b599417 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:38.7255 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZE0SYBGQam47a3GZU7RZy9H/vDwJinfdPSbQAnKyxVHoM2yvg8cfBstCSfR8Hyza3DToWCObB9L1jbHWQOSwFCaQXUCbqQvn7oXCju1rUcs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add registration of test parameters that could be altered (or retrieved) using the new port param ops callbacks list. Signed-off-by: Oleksandr Mazur --- drivers/net/netdevsim/dev.c | 86 ++++++++++++++++++++++++++++++- drivers/net/netdevsim/netdevsim.h | 2 + 2 files changed, 87 insertions(+), 1 deletion(-) diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c index 87e039433312..82ca69624b59 100644 --- a/drivers/net/netdevsim/dev.c +++ b/drivers/net/netdevsim/dev.c @@ -39,6 +39,11 @@ static struct dentry *nsim_dev_ddir; #define NSIM_DEV_DUMMY_REGION_SIZE (1024 * 32) +static int nsim_dev_devlink_port_param_set(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx); +static int nsim_dev_devlink_port_param_get(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx); + static int nsim_dev_take_snapshot(struct devlink *devlink, const struct devlink_region_ops *ops, @@ -342,6 +347,17 @@ static int nsim_dev_resources_register(struct devlink *devlink) enum nsim_devlink_param_id { NSIM_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, NSIM_DEVLINK_PARAM_ID_TEST1, + NSIM_DEVLINK_PARAM_ID_MAX, +}; + +#define NSIM_DEV_DEVLINK_PORT_PARAM_NUM \ + (NSIM_DEVLINK_PORT_PARAM_ID_MAX - NSIM_DEVLINK_PORT_PARAM_ID_BASE - 1) + +enum nsim_devlink_port_param_id { + NSIM_DEVLINK_PORT_PARAM_ID_BASE = NSIM_DEVLINK_PARAM_ID_MAX, + NSIM_DEVLINK_PORT_PARAM_ID_TEST_STR, + NSIM_DEVLINK_PORT_PARAM_ID_TEST_BOOL, + NSIM_DEVLINK_PORT_PARAM_ID_MAX, }; static const struct devlink_param nsim_devlink_params[] = { @@ -913,6 +929,11 @@ nsim_dev_devlink_trap_hw_counter_get(struct devlink *devlink, return 0; } +static const struct devlink_port_param_ops nsim_dev_port_param_ops = { + .get = nsim_dev_devlink_port_param_get, + .set = nsim_dev_devlink_port_param_set, +}; + static const struct devlink_ops nsim_dev_devlink_ops = { .supported_flash_update_params = DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT | DEVLINK_SUPPORT_FLASH_UPDATE_OVERWRITE_MASK, @@ -927,6 +948,25 @@ static const struct devlink_ops nsim_dev_devlink_ops = { .trap_policer_set = nsim_dev_devlink_trap_policer_set, .trap_policer_counter_get = nsim_dev_devlink_trap_policer_counter_get, .trap_drop_counter_get = nsim_dev_devlink_trap_hw_counter_get, + .port_param_ops = &nsim_dev_port_param_ops, +}; + + +static struct devlink_param nsim_dev_port_params[] = { + { + .id = NSIM_DEVLINK_PORT_PARAM_ID_TEST_STR, + .name = "port_param_test_str", + .generic = false, + .type = DEVLINK_PARAM_TYPE_STRING, + .supported_cmodes = BIT(DEVLINK_PARAM_CMODE_RUNTIME), + }, + { + .id = NSIM_DEVLINK_PORT_PARAM_ID_TEST_BOOL, + .name = "port_param_test_bool", + .generic = false, + .type = DEVLINK_PARAM_TYPE_BOOL, + .supported_cmodes = BIT(DEVLINK_PARAM_CMODE_RUNTIME), + }, }; #define NSIM_DEV_MAX_MACS_DEFAULT 32 @@ -956,10 +996,15 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, if (err) goto err_port_free; - err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port); + err = devlink_port_params_register(devlink_port, nsim_dev_port_params, + ARRAY_SIZE(nsim_dev_port_params)); if (err) goto err_dl_port_unregister; + err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port); + if (err) + goto err_port_params_unregister; + nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port); if (IS_ERR(nsim_dev_port->ns)) { err = PTR_ERR(nsim_dev_port->ns); @@ -973,6 +1018,9 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, err_port_debugfs_exit: nsim_dev_port_debugfs_exit(nsim_dev_port); +err_port_params_unregister: + devlink_port_params_unregister(devlink_port, nsim_dev_port_params, + ARRAY_SIZE(nsim_dev_port_params)); err_dl_port_unregister: devlink_port_unregister(devlink_port); err_port_free: @@ -1261,6 +1309,42 @@ int nsim_dev_port_del(struct nsim_bus_dev *nsim_bus_dev, return err; } +static int nsim_dev_devlink_port_param_get(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct nsim_dev *nsim_dev = devlink_priv(port->devlink); + struct nsim_dev_port *nsim_port = + __nsim_dev_port_lookup(nsim_dev, port->index); + + if (id == NSIM_DEVLINK_PORT_PARAM_ID_TEST_STR) { + strcpy(ctx->val.vstr, nsim_port->devlink_test_param_str); + return 0; + } else if (id == NSIM_DEVLINK_PORT_PARAM_ID_TEST_BOOL) { + ctx->val.vbool = nsim_port->devlink_test_param_bool; + return 0; + } + + return -EINVAL; +} + +static int nsim_dev_devlink_port_param_set(struct devlink_port *port, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct nsim_dev *nsim_dev = devlink_priv(port->devlink); + struct nsim_dev_port *nsim_port = + __nsim_dev_port_lookup(nsim_dev, port->index); + + if (id == NSIM_DEVLINK_PORT_PARAM_ID_TEST_STR) { + strcpy(nsim_port->devlink_test_param_str, ctx->val.vstr); + return 0; + } else if (id == NSIM_DEVLINK_PORT_PARAM_ID_TEST_BOOL) { + nsim_port->devlink_test_param_bool = ctx->val.vbool; + return 0; + } + + return -EINVAL; +} + int nsim_dev_init(void) { nsim_dev_ddir = debugfs_create_dir(DRV_NAME, NULL); diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h index db66a0e58792..6f12623191ca 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -203,6 +203,8 @@ struct nsim_dev_port { unsigned int port_index; struct dentry *ddir; struct netdevsim *ns; + char devlink_test_param_str[__DEVLINK_PARAM_MAX_STRING_VALUE]; + bool devlink_test_param_bool; }; struct nsim_dev { From patchwork Wed Jun 9 15:15:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 458422 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 752FFC48BCD for ; Wed, 9 Jun 2021 15:16:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 57EBD61246 for ; Wed, 9 Jun 2021 15:16:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239160AbhFIPSs (ORCPT ); Wed, 9 Jun 2021 11:18:48 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:23438 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239114AbhFIPSn (ORCPT ); Wed, 9 Jun 2021 11:18:43 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BDf1do3G/nHX+US5r2v1v80epJfWaf4G72yG9RmdtsfNppSxYyC6u9ZfqDnpfZDWZtvnIwwTaRe69H+yy6iNSqzeLsHfFg42TqD/xBPpAAE5XfT25DpJ8M2rmw/EOx5mNmsQbR7g01xQ73Aa0Cyp9U6zNvYgxpYvop//id+WQk9IXJq5AqkXm3TpJFWecrue4Da9sz2K3OzctvuL5Hi3monrFOo6YCYoGxY7mWxgmS1EQqb6brETLwomdJ8eV6oLINZRT0p6YUa5M3tbeDdvOUYAcxtzgJUh/90C2DwNbUIQ8BxG6O/c4R78c5RXa80jKeoHyHQOhtNo1RaTV5d8mQ== 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-SenderADCheck; bh=KXJTtDZeQJcovM5MFX8u5Vgl+7cFCe5AOUL9aSn96O4=; b=PmECzPfkXJyjGI1mU1PkYJ3YjC1pujRon08RBa4FRH4YrVOmoN+4PGFKvxUOKt4J8ysc4HH29us0DeAsvZOEJ8NQ3IFXDhWrq7s/Q+aZneznSRoumsrBi8fuaL/K/4YFVcySzSWOkzttaeoVCpEoAfad63MBM3XdukepqRjo8Gz3xYtuep76aGc9oVqPqjWQxpyNqMF8s9bJ0xH1TfDZ5tZhg6NrGQXhzzISn0DGnL1rKM/2SJpRIG8clM6CnrJqMvoqhFVj/cehWteURIpbgCs/1GIXD0teagBn08AVfOvVanwYRdT4V9mJXCLMP8rfXK20uSUQsZsTOJB5UOYCyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KXJTtDZeQJcovM5MFX8u5Vgl+7cFCe5AOUL9aSn96O4=; b=ay2W0SRMk6QSIsdmRc0skINbrs4oH8sWopbSN2Yvg8XrYDvMENFh7SIn4keQI7mSyXFnOacBWxd1S1t1XP02onl4XnkrqvrMfqKukGFK8FHIXHZoK8d1pOTJUoYiwP9urmyU//xfItCYpXfbh4mQgp8Kc7IRG+vkX0k7Wfbo8eo= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:46 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:46 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Vadym Kochan , Taras Chornyi Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 08/11] net: marvell: prestera: devlink: add traps/groups implementation Date: Wed, 9 Jun 2021 18:15:58 +0300 Message-Id: <20210609151602.29004-9-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:46 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3f0c4f1e-8f47-457f-65ea-08d92b5998da X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1284; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UinDwA+Q6ERtpoVv2dZP74kE79Pr/IteYjaTLAzJIN4S5L9B0zSNvuyKZr9ohNV7+4yj54vzuxIf4REqfyVX1Mv6uAXjsaq3tlMTiuUZmIGu8HbdYWtnysLXUFe2WV41Gyv9BZN+QGM9pDkQqdtc1d42zWKk9gaR93nMc4s17604EehBbu+NrXuqhVFKrykB1wsENHEmQzO1f6gqq5lpjJx70UehXXT5wEFT/ZEFqxdrn3p9rMJVY8/pXlP7ZdNjlxessjzUS+5XF7ws9Wb0OrlHmzW94F2hpkV0n3xL2CYKyRQtOXSfAnAUQnxt091peOi5liOgAq/4AVl7sZ0R60cA2b8iP/s36Bd2R9VQbO23bzZ9WMb0UJ7y8uo50ro686532yJ1a6kqWvDZ9oeXAa74/+8EF2/gaag/FBh3O2x93cike/ZMbASSLPpHYKihlGjpSQycvk8Je+vDPyFkhdZhOtc9dV8eMhteMzYyWyFnkOHKGkEjvcvaWKPIcQLck1zvaCdXm8bmMXz/uFHiqpITx8ynvvkrPnmeTpfkWFfwFpSFGehUxW6umEyga9Oi3ox6WEg7+2WAN0sx/S4ha6YvMbOBfAUCcHE1OYxDjRcPBsUpla86ba8mcT0oH7zFxaP9hTSd6ixrND0WKFryXQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(30864003)(66574015)(110136005)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 8twF1HtYNqJm2GDVBqrh6j7QEx6mWU8W5+6j+l67jQE6mP4PqBJ6ygX4mxGMWH/WVZNa9OaNXi7Y9BaXUf03I0um7NRNhExbrvu5rIIdZBvBcncl5sDPAczSutFeyQiHkE0U8z9sy3pLTyf+5l9KOQCiB0OC5ORKXm/80YMxEPOn67cZpNsptk1FmSqFGjqjfnPk/lYeWUl//oini375eRTDm3ljY3VxDi+kNH6a7A8aI8/L86ee0a6UBEC4zgjQcllyCcxfcNVh/xnzWdVT3xY1gDFthEQu20uIRiihZpe8asfYZ7DwlDqadXwanY1EXzyMZTU+Z3cLlRCMAH0WhFNyzBYpgZHTqRAT1wCg1Hf+cn+leWgPvN1zI7KZwuFQuju5pr+2Nuc8w6nghe/O0tiZH/5Ov6EWB2Zdw9lpUtwvG5KZBJvXR7YTLUEdgxGA6WFYw5AisnEvbsut8ZdaXPW3AnUtLWkbcAubjne7sdHkXhnts/aI7DNyfbdFULTN+uH6LAuQeB9jB9uVoFeO7GnF/qPREGsMTthKpEyCLcqfUme/1cr7Zf28zYQNSutHYbfYusnsuubMIp1jJD/qqCA6SwQ0L4Yu/E2CJxN9xfaHxv5xfxIsdDO68jhDVwqSwSn0Nqya0+IrWCTSEJUmXS/iIKGxi87NdvrVDk3HSl1E0cesOrV2dA/2ECm0StulFI1iYR7XOdR5llcs5hFLs3s82EpUHq7TqW9oGivvXo6EbTz2drGzci6PFIKSSBiKvJp+/Up2W01W8Lkwl2BwOwxT+tM7qt0a5eBv1vUUdiQmasGk3rh2t1z8I/Y6WbmNhm7RshzlpLAKfrV8WyxHJMga2To6JGfsOwh/c0PSCOwoLyqEBZwCkrAja4kwDZaArcnxoQFDPZc3LNtDp+dTtbn4eoCTzF3scki4Wd5wZXwG0in9/3Q1OlX7CuhSjHs7GrCqgqMuiSFokhjS898aGp5rSAo7K7oE2QLyOMSaDuSj7OB0/9G94BiNR0r2ZTaC1Z/wQrT9Vc8dFAbgNh90ujtUMS6m53Z9GWtAIP1cRSbQuHo0gavhYc4+tBF2+g80r+W37JqAe8g+9QC4lK1PYGB5RsFBsQOkgpeznMcxcbMORp8kwaTEbWH81ptULGYsH0mLln4/Sf+PJ+sqednShtJ8/Iv2wDJ4P8zSjVAVoUeuTcavkIH//9bYB8kk4vAdM45sThLercV7mvpPwW4LQnZPX5K7OS0BXIJ7pOeM6VtoVStIMWrnQvJdHn6JVcz1B1s4DTnoaroEz2awgBxFNiZrvToTmB+iFG8vA5CfL5BPMLyN3MGCxmMT9XrFfdES X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 3f0c4f1e-8f47-457f-65ea-08d92b5998da X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:46.7851 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EXypXZfVbNs7jIbcMfyX13s6Y4byZrF9jREwAQMhD+R3+oKuB/g0rQ772No47WLvCDR2U5aQ+EZLYAgrLyphn8rjSk429mhqq0ywBQBWo+k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add devlink traps registration (with corresponding groups) for all the traffic types that driver traps to the CPU; prestera_rxtx: report each packet trapped to the CPU (RX) to the prestera_devlink; Signed-off-by: Oleksandr Mazur --- .../net/ethernet/marvell/prestera/prestera.h | 2 + .../marvell/prestera/prestera_devlink.c | 439 +++++++++++++++++- .../marvell/prestera/prestera_devlink.h | 3 + .../ethernet/marvell/prestera/prestera_dsa.c | 3 + .../ethernet/marvell/prestera/prestera_dsa.h | 1 + .../ethernet/marvell/prestera/prestera_rxtx.c | 7 +- 6 files changed, 452 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/marvell/prestera/prestera.h b/drivers/net/ethernet/marvell/prestera/prestera.h index 55aa4bf8a27c..2c94bdec84b1 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera.h +++ b/drivers/net/ethernet/marvell/prestera/prestera.h @@ -151,6 +151,7 @@ struct prestera_event { struct prestera_switchdev; struct prestera_rxtx; +struct prestera_trap_data; struct prestera_switch { struct prestera_device *dev; @@ -158,6 +159,7 @@ struct prestera_switch { struct prestera_rxtx *rxtx; struct list_head event_handlers; struct notifier_block netdev_nb; + struct prestera_trap_data *trap_data; char base_mac[ETH_ALEN]; struct list_head port_list; rwlock_t port_list_lock; diff --git a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c index 94c185a0e2b8..f59727f050ba 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c @@ -5,6 +5,276 @@ #include "prestera_devlink.h" +/* All driver-specific traps must be documented in + * Documentation/networking/devlink/prestera.rst + */ +enum { + DEVLINK_PRESTERA_TRAP_ID_BASE = DEVLINK_TRAP_GENERIC_ID_MAX, + DEVLINK_PRESTERA_TRAP_ID_ARP_BC, + DEVLINK_PRESTERA_TRAP_ID_IS_IS, + DEVLINK_PRESTERA_TRAP_ID_OSPF, + DEVLINK_PRESTERA_TRAP_ID_IP_BC_MAC, + DEVLINK_PRESTERA_TRAP_ID_ROUTER_MC, + DEVLINK_PRESTERA_TRAP_ID_VRRP, + DEVLINK_PRESTERA_TRAP_ID_DHCP, + DEVLINK_PRESTERA_TRAP_ID_MAC_TO_ME, + DEVLINK_PRESTERA_TRAP_ID_IPV4_OPTIONS, + DEVLINK_PRESTERA_TRAP_ID_IP_DEFAULT_ROUTE, + DEVLINK_PRESTERA_TRAP_ID_IP_TO_ME, + DEVLINK_PRESTERA_TRAP_ID_IPV4_ICMP_REDIRECT, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_0, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_1, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_2, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_3, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_4, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_5, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_6, + DEVLINK_PRESTERA_TRAP_ID_ACL_CODE_7, + DEVLINK_PRESTERA_TRAP_ID_BGP, + DEVLINK_PRESTERA_TRAP_ID_SSH, + DEVLINK_PRESTERA_TRAP_ID_TELNET, + DEVLINK_PRESTERA_TRAP_ID_ICMP, +}; + +#define DEVLINK_PRESTERA_TRAP_NAME_ARP_BC \ + "arp_bc" +#define DEVLINK_PRESTERA_TRAP_NAME_IS_IS \ + "is_is" +#define DEVLINK_PRESTERA_TRAP_NAME_OSPF \ + "ospf" +#define DEVLINK_PRESTERA_TRAP_NAME_IP_BC_MAC \ + "ip_bc_mac" +#define DEVLINK_PRESTERA_TRAP_NAME_ROUTER_MC \ + "router_mc" +#define DEVLINK_PRESTERA_TRAP_NAME_VRRP \ + "vrrp" +#define DEVLINK_PRESTERA_TRAP_NAME_DHCP \ + "dhcp" +#define DEVLINK_PRESTERA_TRAP_NAME_MAC_TO_ME \ + "mac_to_me" +#define DEVLINK_PRESTERA_TRAP_NAME_IPV4_OPTIONS \ + "ipv4_options" +#define DEVLINK_PRESTERA_TRAP_NAME_IP_DEFAULT_ROUTE \ + "ip_default_route" +#define DEVLINK_PRESTERA_TRAP_NAME_IP_TO_ME \ + "ip_to_me" +#define DEVLINK_PRESTERA_TRAP_NAME_IPV4_ICMP_REDIRECT \ + "ipv4_icmp_redirect" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_0 \ + "acl_code_0" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_1 \ + "acl_code_1" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_2 \ + "acl_code_2" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_3 \ + "acl_code_3" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_4 \ + "acl_code_4" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_5 \ + "acl_code_5" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_6 \ + "acl_code_6" +#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_7 \ + "acl_code_7" +#define DEVLINK_PRESTERA_TRAP_NAME_BGP \ + "bgp" +#define DEVLINK_PRESTERA_TRAP_NAME_SSH \ + "ssh" +#define DEVLINK_PRESTERA_TRAP_NAME_TELNET \ + "telnet" +#define DEVLINK_PRESTERA_TRAP_NAME_ICMP \ + "icmp" + +struct prestera_trap { + struct devlink_trap trap; + u8 cpu_code; +}; + +struct prestera_trap_item { + enum devlink_trap_action action; + void *trap_ctx; +}; + +struct prestera_trap_data { + struct prestera_switch *sw; + struct prestera_trap_item *trap_items_arr; + u32 traps_count; +}; + +#define PRESTERA_TRAP_METADATA DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT + +#define PRESTERA_TRAP_CONTROL(_id, _group_id, _action) \ + DEVLINK_TRAP_GENERIC(CONTROL, _action, _id, \ + DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ + PRESTERA_TRAP_METADATA) + +#define PRESTERA_TRAP_DRIVER_CONTROL(_id, _group_id) \ + DEVLINK_TRAP_DRIVER(CONTROL, TRAP, DEVLINK_PRESTERA_TRAP_ID_##_id, \ + DEVLINK_PRESTERA_TRAP_NAME_##_id, \ + DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ + PRESTERA_TRAP_METADATA) + +#define PRESTERA_TRAP_EXCEPTION(_id, _group_id) \ + DEVLINK_TRAP_GENERIC(EXCEPTION, TRAP, _id, \ + DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ + PRESTERA_TRAP_METADATA) + +#define PRESTERA_TRAP_DRIVER_EXCEPTION(_id, _group_id) \ + DEVLINK_TRAP_DRIVER(EXCEPTION, TRAP, DEVLINK_PRESTERA_TRAP_ID_##_id, \ + DEVLINK_PRESTERA_TRAP_NAME_##_id, \ + DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ + PRESTERA_TRAP_METADATA) + +static const struct devlink_trap_group prestera_trap_groups_arr[] = { + /* No policer is associated with following groups (policerid == 0)*/ + DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS, 0), + DEVLINK_TRAP_GROUP_GENERIC(L3_DROPS, 0), + DEVLINK_TRAP_GROUP_GENERIC(L3_EXCEPTIONS, 0), + DEVLINK_TRAP_GROUP_GENERIC(NEIGH_DISCOVERY, 0), + DEVLINK_TRAP_GROUP_GENERIC(ACL_TRAP, 0), + DEVLINK_TRAP_GROUP_GENERIC(ACL_DROPS, 0), + DEVLINK_TRAP_GROUP_GENERIC(ACL_SAMPLE, 0), + DEVLINK_TRAP_GROUP_GENERIC(OSPF, 0), + DEVLINK_TRAP_GROUP_GENERIC(STP, 0), + DEVLINK_TRAP_GROUP_GENERIC(LACP, 0), + DEVLINK_TRAP_GROUP_GENERIC(LLDP, 0), + DEVLINK_TRAP_GROUP_GENERIC(VRRP, 0), + DEVLINK_TRAP_GROUP_GENERIC(DHCP, 0), + DEVLINK_TRAP_GROUP_GENERIC(BGP, 0), + DEVLINK_TRAP_GROUP_GENERIC(LOCAL_DELIVERY, 0), +}; + +/* Initialize trap list, as well as associate CPU code with them. */ +static struct prestera_trap prestera_trap_items_arr[] = { + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ARP_BC, NEIGH_DISCOVERY), + .cpu_code = 5, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(IS_IS, LOCAL_DELIVERY), + .cpu_code = 13, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(OSPF, OSPF), + .cpu_code = 16, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(IP_BC_MAC, LOCAL_DELIVERY), + .cpu_code = 19, + }, + { + .trap = PRESTERA_TRAP_CONTROL(STP, STP, TRAP), + .cpu_code = 26, + }, + { + .trap = PRESTERA_TRAP_CONTROL(LACP, LACP, TRAP), + .cpu_code = 27, + }, + { + .trap = PRESTERA_TRAP_CONTROL(LLDP, LLDP, TRAP), + .cpu_code = 28, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ROUTER_MC, LOCAL_DELIVERY), + .cpu_code = 29, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(VRRP, VRRP), + .cpu_code = 30, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(DHCP, DHCP), + .cpu_code = 33, + }, + { + .trap = PRESTERA_TRAP_EXCEPTION(MTU_ERROR, L3_EXCEPTIONS), + .cpu_code = 63, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(MAC_TO_ME, LOCAL_DELIVERY), + .cpu_code = 65, + }, + { + .trap = PRESTERA_TRAP_EXCEPTION(TTL_ERROR, L3_EXCEPTIONS), + .cpu_code = 133, + }, + { + .trap = PRESTERA_TRAP_DRIVER_EXCEPTION(IPV4_OPTIONS, + L3_EXCEPTIONS), + .cpu_code = 141, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(IP_DEFAULT_ROUTE, + LOCAL_DELIVERY), + .cpu_code = 160, + }, + { + .trap = PRESTERA_TRAP_CONTROL(LOCAL_ROUTE, LOCAL_DELIVERY, + TRAP), + .cpu_code = 161, + }, + { + .trap = PRESTERA_TRAP_DRIVER_EXCEPTION(IPV4_ICMP_REDIRECT, + L3_EXCEPTIONS), + .cpu_code = 180, + }, + { + .trap = PRESTERA_TRAP_CONTROL(ARP_RESPONSE, NEIGH_DISCOVERY, + TRAP), + .cpu_code = 188, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_0, ACL_TRAP), + .cpu_code = 192, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_1, ACL_TRAP), + .cpu_code = 193, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_2, ACL_TRAP), + .cpu_code = 194, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_3, ACL_TRAP), + .cpu_code = 195, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_4, ACL_TRAP), + .cpu_code = 196, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_5, ACL_TRAP), + .cpu_code = 197, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_6, ACL_TRAP), + .cpu_code = 198, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_7, ACL_TRAP), + .cpu_code = 199, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(BGP, BGP), + .cpu_code = 206, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(SSH, LOCAL_DELIVERY), + .cpu_code = 207, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(TELNET, LOCAL_DELIVERY), + .cpu_code = 208, + }, + { + .trap = PRESTERA_TRAP_DRIVER_CONTROL(ICMP, LOCAL_DELIVERY), + .cpu_code = 209, + }, +}; + +static void prestera_devlink_traps_fini(struct prestera_switch *sw); + static int prestera_dl_info_get(struct devlink *dl, struct devlink_info_req *req, struct netlink_ext_ack *extack) @@ -27,8 +297,20 @@ static int prestera_dl_info_get(struct devlink *dl, buf); } +static int prestera_trap_init(struct devlink *devlink, + const struct devlink_trap *trap, void *trap_ctx); + +static int prestera_trap_action_set(struct devlink *devlink, + const struct devlink_trap *trap, + enum devlink_trap_action action, + struct netlink_ext_ack *extack); + +static int prestera_devlink_traps_register(struct prestera_switch *sw); + static const struct devlink_ops prestera_dl_ops = { .info_get = prestera_dl_info_get, + .trap_init = prestera_trap_init, + .trap_action_set = prestera_trap_action_set, }; struct prestera_switch *prestera_devlink_alloc(void) @@ -53,17 +335,32 @@ int prestera_devlink_register(struct prestera_switch *sw) int err; err = devlink_register(dl, sw->dev->dev); - if (err) + if (err) { dev_err(prestera_dev(sw), "devlink_register failed: %d\n", err); + return err; + } - return err; + err = prestera_devlink_traps_register(sw); + if (err) { + devlink_unregister(dl); + dev_err(sw->dev->dev, "devlink_traps_register failed: %d\n", + err); + return err; + } + + return 0; } void prestera_devlink_unregister(struct prestera_switch *sw) { + struct prestera_trap_data *trap_data = sw->trap_data; struct devlink *dl = priv_to_devlink(sw); + prestera_devlink_traps_fini(sw); devlink_unregister(dl); + + kfree(trap_data->trap_items_arr); + kfree(trap_data); } int prestera_devlink_port_register(struct prestera_port *port) @@ -110,3 +407,141 @@ struct devlink_port *prestera_devlink_get_port(struct net_device *dev) return &port->dl_port; } + +static int prestera_devlink_traps_register(struct prestera_switch *sw) +{ + const u32 groups_count = ARRAY_SIZE(prestera_trap_groups_arr); + const u32 traps_count = ARRAY_SIZE(prestera_trap_items_arr); + struct devlink *devlink = priv_to_devlink(sw); + struct prestera_trap_data *trap_data; + struct prestera_trap *prestera_trap; + int err, i; + + trap_data = kzalloc(sizeof(*trap_data), GFP_KERNEL); + if (!trap_data) + return -ENOMEM; + + trap_data->trap_items_arr = kcalloc(traps_count, + sizeof(struct prestera_trap_item), + GFP_KERNEL); + if (!trap_data->trap_items_arr) { + err = -ENOMEM; + goto err_trap_items_alloc; + } + + trap_data->sw = sw; + trap_data->traps_count = traps_count; + sw->trap_data = trap_data; + + err = devlink_trap_groups_register(devlink, prestera_trap_groups_arr, + groups_count); + if (err) + goto err_groups_register; + + for (i = 0; i < traps_count; i++) { + prestera_trap = &prestera_trap_items_arr[i]; + err = devlink_traps_register(devlink, &prestera_trap->trap, 1, + sw); + if (err) + goto err_trap_register; + } + + return 0; + +err_trap_register: + for (i--; i >= 0; i--) { + prestera_trap = &prestera_trap_items_arr[i]; + devlink_traps_unregister(devlink, &prestera_trap->trap, 1); + } +err_groups_register: + kfree(trap_data->trap_items_arr); +err_trap_items_alloc: + kfree(trap_data); + return err; +} + +static struct prestera_trap_item * +prestera_get_trap_item_by_cpu_code(struct prestera_switch *sw, u8 cpu_code) +{ + struct prestera_trap_data *trap_data = sw->trap_data; + struct prestera_trap *prestera_trap; + int i; + + for (i = 0; i < trap_data->traps_count; i++) { + prestera_trap = &prestera_trap_items_arr[i]; + if (cpu_code == prestera_trap->cpu_code) + return &trap_data->trap_items_arr[i]; + } + + return NULL; +} + +void prestera_devlink_trap_report(struct prestera_port *port, + struct sk_buff *skb, u8 cpu_code) +{ + struct prestera_trap_item *trap_item; + struct devlink *devlink; + + devlink = port->dl_port.devlink; + + trap_item = prestera_get_trap_item_by_cpu_code(port->sw, cpu_code); + if (unlikely(!trap_item)) + return; + + devlink_trap_report(devlink, skb, trap_item->trap_ctx, + &port->dl_port, NULL); +} + +static struct prestera_trap_item * +prestera_devlink_trap_item_lookup(struct prestera_switch *sw, u16 trap_id) +{ + struct prestera_trap_data *trap_data = sw->trap_data; + int i; + + for (i = 0; i < ARRAY_SIZE(prestera_trap_items_arr); i++) { + if (prestera_trap_items_arr[i].trap.id == trap_id) + return &trap_data->trap_items_arr[i]; + } + + return NULL; +} + +static int prestera_trap_init(struct devlink *devlink, + const struct devlink_trap *trap, void *trap_ctx) +{ + struct prestera_switch *sw = devlink_priv(devlink); + struct prestera_trap_item *trap_item; + + trap_item = prestera_devlink_trap_item_lookup(sw, trap->id); + if (WARN_ON(!trap_item)) + return -EINVAL; + + trap_item->trap_ctx = trap_ctx; + trap_item->action = trap->init_action; + + return 0; +} + +static int prestera_trap_action_set(struct devlink *devlink, + const struct devlink_trap *trap, + enum devlink_trap_action action, + struct netlink_ext_ack *extack) +{ + /* Currently, driver does not support trap action altering */ + return -EOPNOTSUPP; +} + +static void prestera_devlink_traps_fini(struct prestera_switch *sw) +{ + struct devlink *dl = priv_to_devlink(sw); + const struct devlink_trap *trap; + int i; + + for (i = 0; i < ARRAY_SIZE(prestera_trap_items_arr); ++i) { + trap = &prestera_trap_items_arr[i].trap; + devlink_traps_unregister(dl, trap, 1); + } + + devlink_trap_groups_unregister(dl, prestera_trap_groups_arr, + ARRAY_SIZE(prestera_trap_groups_arr)); +} diff --git a/drivers/net/ethernet/marvell/prestera/prestera_devlink.h b/drivers/net/ethernet/marvell/prestera/prestera_devlink.h index 51bee9f75415..5d73aa9db897 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_devlink.h +++ b/drivers/net/ethernet/marvell/prestera/prestera_devlink.h @@ -20,4 +20,7 @@ void prestera_devlink_port_clear(struct prestera_port *port); struct devlink_port *prestera_devlink_get_port(struct net_device *dev); +void prestera_devlink_trap_report(struct prestera_port *port, + struct sk_buff *skb, u8 cpu_code); + #endif /* _PRESTERA_DEVLINK_H_ */ diff --git a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c index a5e01c7a307b..b7e89c0ca5c0 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c @@ -19,6 +19,7 @@ #define PRESTERA_DSA_W1_EXT_BIT BIT(31) #define PRESTERA_DSA_W1_CFI_BIT BIT(30) #define PRESTERA_DSA_W1_PORT_NUM GENMASK(11, 10) +#define PRESTERA_DSA_W1_MASK_CPU_CODE GENMASK(7, 0) #define PRESTERA_DSA_W2_EXT_BIT BIT(31) #define PRESTERA_DSA_W2_PORT_NUM BIT(20) @@ -74,6 +75,8 @@ int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf) (FIELD_GET(PRESTERA_DSA_W1_PORT_NUM, words[1]) << 5) | (FIELD_GET(PRESTERA_DSA_W2_PORT_NUM, words[2]) << 7); + dsa->cpu_code = FIELD_GET(PRESTERA_DSA_W1_MASK_CPU_CODE, words[1]); + return 0; } diff --git a/drivers/net/ethernet/marvell/prestera/prestera_dsa.h b/drivers/net/ethernet/marvell/prestera/prestera_dsa.h index 67018629bdd2..c99342f475cf 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_dsa.h +++ b/drivers/net/ethernet/marvell/prestera/prestera_dsa.h @@ -27,6 +27,7 @@ struct prestera_dsa { struct prestera_dsa_vlan vlan; u32 hw_dev_num; u32 port_num; + u8 cpu_code; }; int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf); diff --git a/drivers/net/ethernet/marvell/prestera/prestera_rxtx.c b/drivers/net/ethernet/marvell/prestera/prestera_rxtx.c index 2a13c318048c..73d2eba5262f 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_rxtx.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_rxtx.c @@ -14,6 +14,7 @@ #include "prestera.h" #include "prestera_hw.h" #include "prestera_rxtx.h" +#include "prestera_devlink.h" #define PRESTERA_SDMA_WAIT_MUL 10 @@ -214,9 +215,10 @@ static struct sk_buff *prestera_sdma_rx_skb_get(struct prestera_sdma *sdma, static int prestera_rxtx_process_skb(struct prestera_sdma *sdma, struct sk_buff *skb) { - const struct prestera_port *port; + struct prestera_port *port; struct prestera_dsa dsa; u32 hw_port, dev_id; + u8 cpu_code; int err; skb_pull(skb, ETH_HLEN); @@ -259,6 +261,9 @@ static int prestera_rxtx_process_skb(struct prestera_sdma *sdma, __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), tci); } + cpu_code = dsa.cpu_code; + prestera_devlink_trap_report(port, skb, cpu_code); + return 0; } From patchwork Wed Jun 9 15:15:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457392 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B8ADC48BDF for ; Wed, 9 Jun 2021 15:16:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E9367601FC for ; Wed, 9 Jun 2021 15:16:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239213AbhFIPSv (ORCPT ); Wed, 9 Jun 2021 11:18:51 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:23438 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235373AbhFIPSp (ORCPT ); Wed, 9 Jun 2021 11:18:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fn8N9kyY8SQu8O4vz7l2diTBdfZ+Q0rMxoepEWXsLkF+poMfDZF852J8FXnA3cEInjvj9HElxIaG+/P+0ltcz7sIJYSqj/+n/NgOSZWhenPoXfi+HSkk7QrMVtQSRNHLi8d5/582tdui1atIz4BfthBzJi7qXp5tXacp5tvsP/myUJQE/N7BYWAV1RoV8aQX9jVXeMd7HnS6tcfpwfPGqlyBfp8dYqgYN5XtyNGuYsVyM4wfRSROGQTCOPtdXmulDiCL1u8ddkDlsxbkwoo1IJhOuD7B6inrOF17LdihqIBTXm0zHEX8RwaNxS5+vZB5PTY+oLfYFlLo0P+gkkBDng== 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-SenderADCheck; bh=fKAkV/OPpzpSQKXKJfSfJxIoQpc+PhchYElk4pIUACk=; b=KgSW9SbNBATUXWMvMhpjBI0wa7Tj2SxSVfMzY2hKCytX4EFk56MAmPK1PgCgaBJ84Xs9g7V3nMl4G1VDMQFxK56WiJM6Zz4BSABU8FVwMiQH7p9yC5lLSyZRypE35xAQWmmE4GstBxrjKFSs0zn0sfarDS+HKKReiNs5+bTvSBmF98p+10FhapYKLmKR1JSBKeJkjamrjVQTtiN3Iizb4f4M1+sy7emW+z/8cORfvypmfjrOEiE95mWye42ZioGX2V2LQdfI8EGHzzy4qRP5j9SfvPqGhU2DphxO/I2er8FdXSu28QHs8LDUJiBofe/lRs8UqdeYk4frV7UASsyWQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fKAkV/OPpzpSQKXKJfSfJxIoQpc+PhchYElk4pIUACk=; b=vOUEYNjJ5otP2kVOxJjmA3prIJPOEmvlFD8SUXicsJn5QUpojOD3X9fIbgB5Cnn+gxHOIu7EV+tDQXv60YwkRzDRpsFJ+OeDZYsF2qS6J5/k+t9luv14PQTfzCBK9zgz88kmxAOeg+VzJI0VJmqkNE6sR4+pCKKdWiHUsEXlDEU= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:49 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:49 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Vadym Kochan , Taras Chornyi Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 09/11] net: marvell: prestera: devlink: add traps with DROP action Date: Wed, 9 Jun 2021 18:15:59 +0300 Message-Id: <20210609151602.29004-10-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:48 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: baa9b42f-edc4-400e-de5b-08d92b599a3f X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2958; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cHgD97P41tisIMoGCPokhd7h9TJv/XrMM7WYOaOlIFRJbvw39Dx92Ut0M1TqozO2DBELs9wDTkPkU48rgkdlff4lq/u1G8xF9mULKBqacjBlQwnT+gGYDieWpZcehKFKkZXN2YebsWShzlxn4dHq9bq22fNe8eZjZi8nOPCcUSSdtll95Ge/SYfvuJQR3I8wIRZLKmrHMwihuePEv8x0l0c+bqBjO8fjAsItR+yibZsCwE3Kc/r8uaFz+ZVa+xTHKFtzstFAQD8NTCIfPLwNhvSEjibB4Vfrwf2COrZdCeSdO64xwQIw1foRiz7EQy78pXU5o0XjiHa9Wjb67NDSKVcINVTpHl0we8/1vpI1OOeqkABjl4FEvvqli6S6wQKtChk+siX9naWYWSPk9y6xwcYJ+uVKzkK6U29/owBoshbL7hVKtvaT+6eS+YNG0JNfE5Rk3Tr4gOCWomHZH1L9uliJiE0nsKRfrBsH058Os/OX8G3XJbvFt+tfTf+D7zzcUZ/hZ2fR46JT9iwmWFGPrEXRQUbRnQgP/w2wdpe3U8wkilBhTJWoSJmsCWcHWTVvdAjx0ZBLmVBg44u3c8BA+DeUTXS29GwNAdr4yBHjm931ySh8JMbb40laxm9fq2ftuOLkGktmW931dZ2dR9ag0ruqSUVbjeIu6mSmHynmLCc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(110136005)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 4VB8/RDIjtZ4FKHzQ9AOeyu7idFzGXlodtuJq9jJ0VuF0TANQAXYyHsDdiNyC1QBBBslM3HpJH6Glum+IqwKmaarDP4kjLj6BPjoj2xc4XOfC9iusS3U/8PD3J5rmTMBqo4/CbwpQGfVhBrx6GyedhZwsRP1ARoCtQbX+p//w+UhJZDkeJCIOWsw3nOb9GG+vT1bkGQ73eyHvNFWgUMpLBSmdK2dY1HlE3UoNiWjJv2Zuw7pScQwRy4XkOVNP+lg7F9HUD5DThUClbeOT5dktQxy6SWxW6jzaCDkiu7uUbwAG9sxzubj265TGdlNd3GLJ8WhIke52o/GnzmWdVx4nWjtzrtILeqH0skokFmhok04nhi0qx7bsuWjJxS7WJqEVGdOs9VCQb1WIF2g53ySHCpIJ57sizbKG3SjSWuUKTl/8KrQquBX3zLLyI46oK+nh1NFHu7ViGCUOk+DSnBknggPs3nEKAeBYL93sCzaMZVxQT0AoIGm3PSMBrU6VIoskmAhGGSZ3WthoJ06zGz43mj0C+EbRQs47nUanLtXlE8zXjEahXe2p9UOB2EBKmr6/j0a73sHXuya90yLhFwg8Wq+zJaBgfthkV8U0xNhJc3gmwuFEEjzcTFICTmMmiUy67INNMS6Yqr6/HDvL8xA5w7D3QYvitjAF9iRkW7Jx0v9xgd/6+3Y3EbTjI6RASWqwLZksF6UaxIZoNYJ3eTLwLFwdkuCS3R4bo0ETk8GfUcwrF4hC6QED5SeDFOq+PW/DO+MdQGqxsuwENaUc1P6mLOdaC538hV9T8VofquV68TdXHPKuW+A+rEd0caBsMSbdGGOriul2h3Nk89svCRte0QnBqjATGJypg85FjmYxwr8XBiDNnib1MgTtHjLtcg3u/nD2o3r9cHDDZ6bJOj4kEIp9tTxpz89E8zNEQdGDlNYxoJ9bYDKqWFw5CZqAlPQsaCKM2wshyoSUEwrvwEl9WkME9v+QQ2zQ4dpUXPMlJz2ABxpsB9CGcyvqrG54uMz6QzZ13RVLiQ17Rgykk4dWWBA13soE1zck/T/v5juOrbISSr9DOD6SkIQFUF+VVW/O6LOV5qxaPDwKi6UW7ne3ui+TWLOHCJ1/AJHJegEe5xa94iWP0XwoXvq6Lf5ezErcIAxJhoqcLvKHwQrApliNvgz2rYFc+tg0EhaHoFlCT7SJE8eNY4YVSofLa5Hligj4hm+sYTF8l7jBy0sLurArGgMujJFdvp024vWkf8HreC8tl6AeeERqHq+y4S9MpuqSWp8rRXvbYHVW7AHve//tWoZDKPzGqTX/lhqj+i/X7M5zDp3h05vFZiX/cPlskcg X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: baa9b42f-edc4-400e-de5b-08d92b599a3f X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:49.1458 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9Xwv+2H8kHpfBSMRw7RBPSUGdYreMPf4Km1G1Mmn0XfuX53Os/4UEiqKk/HcqktvlGHdlPxYvroqPZbong4kMv7dq7jDZaPfKuSrJ06gR38= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add traps that have init_action being set to DROP. Add 'trap_drop_counter_get' (devlink API) callback implementation, that is used to get number of packets that have been dropped by the HW (traps with action 'DROP'). Add new FW command CPU_CODE_COUNTERS_GET. Signed-off-by: Oleksandr Mazur --- .../marvell/prestera/prestera_devlink.c | 91 +++++++++++++++++++ .../ethernet/marvell/prestera/prestera_hw.c | 35 +++++++ .../ethernet/marvell/prestera/prestera_hw.h | 11 +++ 3 files changed, 137 insertions(+) diff --git a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c index f59727f050ba..d12e21db9fd6 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c @@ -4,6 +4,7 @@ #include #include "prestera_devlink.h" +#include "prestera_hw.h" /* All driver-specific traps must be documented in * Documentation/networking/devlink/prestera.rst @@ -34,6 +35,15 @@ enum { DEVLINK_PRESTERA_TRAP_ID_SSH, DEVLINK_PRESTERA_TRAP_ID_TELNET, DEVLINK_PRESTERA_TRAP_ID_ICMP, + DEVLINK_PRESTERA_TRAP_ID_MET_RED, + DEVLINK_PRESTERA_TRAP_ID_IP_SIP_IS_ZERO, + DEVLINK_PRESTERA_TRAP_ID_IP_UC_DIP_DA_MISMATCH, + DEVLINK_PRESTERA_TRAP_ID_ILLEGAL_IPV4_HDR, + DEVLINK_PRESTERA_TRAP_ID_ILLEGAL_IP_ADDR, + DEVLINK_PRESTERA_TRAP_ID_INVALID_SA, + DEVLINK_PRESTERA_TRAP_ID_LOCAL_PORT, + DEVLINK_PRESTERA_TRAP_ID_PORT_NO_VLAN, + DEVLINK_PRESTERA_TRAP_ID_RXDMA_DROP, }; #define DEVLINK_PRESTERA_TRAP_NAME_ARP_BC \ @@ -84,6 +94,24 @@ enum { "telnet" #define DEVLINK_PRESTERA_TRAP_NAME_ICMP \ "icmp" +#define DEVLINK_PRESTERA_TRAP_NAME_RXDMA_DROP \ + "rxdma_drop" +#define DEVLINK_PRESTERA_TRAP_NAME_PORT_NO_VLAN \ + "port_no_vlan" +#define DEVLINK_PRESTERA_TRAP_NAME_LOCAL_PORT \ + "local_port" +#define DEVLINK_PRESTERA_TRAP_NAME_INVALID_SA \ + "invalid_sa" +#define DEVLINK_PRESTERA_TRAP_NAME_ILLEGAL_IP_ADDR \ + "illegal_ip_addr" +#define DEVLINK_PRESTERA_TRAP_NAME_ILLEGAL_IPV4_HDR \ + "illegal_ipv4_hdr" +#define DEVLINK_PRESTERA_TRAP_NAME_IP_UC_DIP_DA_MISMATCH \ + "ip_uc_dip_da_mismatch" +#define DEVLINK_PRESTERA_TRAP_NAME_IP_SIP_IS_ZERO \ + "ip_sip_is_zero" +#define DEVLINK_PRESTERA_TRAP_NAME_MET_RED \ + "met_red" struct prestera_trap { struct devlink_trap trap; @@ -125,6 +153,12 @@ struct prestera_trap_data { DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ PRESTERA_TRAP_METADATA) +#define PRESTERA_TRAP_DRIVER_DROP(_id, _group_id) \ + DEVLINK_TRAP_DRIVER(DROP, DROP, DEVLINK_PRESTERA_TRAP_ID_##_id, \ + DEVLINK_PRESTERA_TRAP_NAME_##_id, \ + DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ + PRESTERA_TRAP_METADATA) + static const struct devlink_trap_group prestera_trap_groups_arr[] = { /* No policer is associated with following groups (policerid == 0)*/ DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS, 0), @@ -142,6 +176,7 @@ static const struct devlink_trap_group prestera_trap_groups_arr[] = { DEVLINK_TRAP_GROUP_GENERIC(DHCP, 0), DEVLINK_TRAP_GROUP_GENERIC(BGP, 0), DEVLINK_TRAP_GROUP_GENERIC(LOCAL_DELIVERY, 0), + DEVLINK_TRAP_GROUP_GENERIC(BUFFER_DROPS, 0), }; /* Initialize trap list, as well as associate CPU code with them. */ @@ -271,10 +306,51 @@ static struct prestera_trap prestera_trap_items_arr[] = { .trap = PRESTERA_TRAP_DRIVER_CONTROL(ICMP, LOCAL_DELIVERY), .cpu_code = 209, }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(RXDMA_DROP, BUFFER_DROPS), + .cpu_code = 37, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(PORT_NO_VLAN, L2_DROPS), + .cpu_code = 39, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(LOCAL_PORT, L2_DROPS), + .cpu_code = 56, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(INVALID_SA, L2_DROPS), + .cpu_code = 60, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(ILLEGAL_IP_ADDR, L3_DROPS), + .cpu_code = 136, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(ILLEGAL_IPV4_HDR, L3_DROPS), + .cpu_code = 137, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(IP_UC_DIP_DA_MISMATCH, + L3_DROPS), + .cpu_code = 138, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(IP_SIP_IS_ZERO, L3_DROPS), + .cpu_code = 145, + }, + { + .trap = PRESTERA_TRAP_DRIVER_DROP(MET_RED, BUFFER_DROPS), + .cpu_code = 185, + }, }; static void prestera_devlink_traps_fini(struct prestera_switch *sw); +static int prestera_drop_counter_get(struct devlink *devlink, + const struct devlink_trap *trap, + u64 *p_drops); + static int prestera_dl_info_get(struct devlink *dl, struct devlink_info_req *req, struct netlink_ext_ack *extack) @@ -311,6 +387,7 @@ static const struct devlink_ops prestera_dl_ops = { .info_get = prestera_dl_info_get, .trap_init = prestera_trap_init, .trap_action_set = prestera_trap_action_set, + .trap_drop_counter_get = prestera_drop_counter_get, }; struct prestera_switch *prestera_devlink_alloc(void) @@ -531,6 +608,20 @@ static int prestera_trap_action_set(struct devlink *devlink, return -EOPNOTSUPP; } +static int prestera_drop_counter_get(struct devlink *devlink, + const struct devlink_trap *trap, + u64 *p_drops) +{ + struct prestera_switch *sw = devlink_priv(devlink); + enum prestera_hw_cpu_code_cnt_t cpu_code_type = + PRESTERA_HW_CPU_CODE_CNT_TYPE_DROP; + struct prestera_trap *prestera_trap = + container_of(trap, struct prestera_trap, trap); + + return prestera_hw_cpu_code_counters_get(sw, prestera_trap->cpu_code, + cpu_code_type, p_drops); +} + static void prestera_devlink_traps_fini(struct prestera_switch *sw) { struct devlink *dl = priv_to_devlink(sw); diff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.c b/drivers/net/ethernet/marvell/prestera/prestera_hw.c index 96ce73b50fec..0e5b3f8e7dc7 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_hw.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.c @@ -42,6 +42,8 @@ enum prestera_cmd_type_t { PRESTERA_CMD_TYPE_STP_PORT_SET = 0x1000, + PRESTERA_CMD_TYPE_CPU_CODE_COUNTERS_GET = 0x2000, + PRESTERA_CMD_TYPE_ACK = 0x10000, PRESTERA_CMD_TYPE_MAX }; @@ -305,6 +307,17 @@ struct prestera_msg_rxtx_port_req { u32 dev; }; +struct prestera_msg_cpu_code_counter_req { + struct prestera_msg_cmd cmd; + u8 counter_type; + u8 code; +}; + +struct mvsw_msg_cpu_code_counter_ret { + struct prestera_msg_ret ret; + u64 packet_count; +}; + struct prestera_msg_event { u16 type; u16 id; @@ -1295,6 +1308,28 @@ int prestera_hw_rxtx_port_init(struct prestera_port *port) &req.cmd, sizeof(req)); } +int +prestera_hw_cpu_code_counters_get(struct prestera_switch *sw, u8 code, + enum prestera_hw_cpu_code_cnt_t counter_type, + u64 *packet_count) +{ + struct prestera_msg_cpu_code_counter_req req = { + .counter_type = counter_type, + .code = code, + }; + struct mvsw_msg_cpu_code_counter_ret resp; + int err; + + err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_CPU_CODE_COUNTERS_GET, + &req.cmd, sizeof(req), &resp.ret, sizeof(resp)); + if (err) + return err; + + *packet_count = resp.packet_count; + + return 0; +} + int prestera_hw_event_handler_register(struct prestera_switch *sw, enum prestera_event_type type, prestera_event_cb_t fn, diff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.h b/drivers/net/ethernet/marvell/prestera/prestera_hw.h index e8dd0e2b81d2..aafecf0ecd16 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_hw.h +++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.h @@ -89,6 +89,11 @@ enum { PRESTERA_STP_FORWARD, }; +enum prestera_hw_cpu_code_cnt_t { + PRESTERA_HW_CPU_CODE_CNT_TYPE_DROP = 0, + PRESTERA_HW_CPU_CODE_CNT_TYPE_TRAP = 1, +}; + struct prestera_switch; struct prestera_port; struct prestera_port_stats; @@ -180,4 +185,10 @@ int prestera_hw_rxtx_init(struct prestera_switch *sw, struct prestera_rxtx_params *params); int prestera_hw_rxtx_port_init(struct prestera_port *port); +/* HW trap/drop counters API */ +int +prestera_hw_cpu_code_counters_get(struct prestera_switch *sw, u8 code, + enum prestera_hw_cpu_code_cnt_t counter_type, + u64 *packet_count); + #endif /* _PRESTERA_HW_H_ */ From patchwork Wed Jun 9 15:16:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 458421 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9C7EC48BCD for ; Wed, 9 Jun 2021 15:17:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D611B611CC for ; Wed, 9 Jun 2021 15:17:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238718AbhFIPSx (ORCPT ); Wed, 9 Jun 2021 11:18:53 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:23438 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239162AbhFIPSu (ORCPT ); Wed, 9 Jun 2021 11:18:50 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bir8F7cfSMK8VtvvkbivVHTLrVLt2LIKbZ5Q3ogtgq+TlmiP7dquFb1efUtweL6OybytgOssz3qk9KCUm0zzdAvaFyD6V4/C0HWgCmNyLfsmrvsrKVEKR6IauQb6DlrQcKvBAur6KhGmFmCAWf2OKUu1xV76YNFee7w8nGq6hAj2nVVI3n7gTVGnZZm/AA3cWLp1WnlyItBM03AhTF/3c1E+ARAeZzSlNeP19HIStCyY/6I8IIG/mKoAHyad0czJ/6xBmcufkLuU2fePZCoTWQNvWccinM9sHiQHqpbXUqw7EMQUtXHlShMqDQ/SkLeojKL9DfAUOwa18323ZeeyRg== 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-SenderADCheck; bh=2Qk3NsaokKMhNVfRwOlR1LecjFPqaGPOWYjvNfSa/9c=; b=J27RtnIyyQO/5Ou+2janFvm0IqDoMHH2zlpbyFMrY0xngTK6cRJrNV4lkZTtReoCeACfD5y6q3SrEzcAPF99dVQGwi6uwy9sifMn80+dYBDoDa9bdkqjQORdSlBKDgVLwcf6uF5J1rAI12nRtXsbl+qhglXaTGyQcLRoaPWiPDodljBZ732UegB0OoMq6Q32wqPzzVLPU2D2JeP+y+kq3Q/W/w7SmY7uP5GSA1FSiQChCWLCeAtSNNAQENlUveiroYCL8kyZ0tdItqSn9Ci0fJz2EmTNrcsFKD+n3jgjaBVt+71TF5HB4G1Mvwyz9e6kT6oYAhEEioicn8s9Mghehg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2Qk3NsaokKMhNVfRwOlR1LecjFPqaGPOWYjvNfSa/9c=; b=t/kddqTFi8sLnUSXeFBAFcvoMaJ5t/6TJKi4b+Z1Kx7Nkzt4xwUVkHnfiPj6utenr/pFISRLD59MJxbRpwo1rg9mV7BxRw7R5Dm5RALmbVGX9Q02jxoIfoVFGhciMoFMnC4P+K8txchRWSlupvV4K7z5MFW0dmqm8FOeytglx9c= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:52 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:52 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Vadym Kochan , Taras Chornyi Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 10/11] net: marvell: prestera: add storm control (rate limiter) implementation Date: Wed, 9 Jun 2021 18:16:00 +0300 Message-Id: <20210609151602.29004-11-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 526c133a-6ef5-4a9d-3fdf-08d92b599bf5 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1051; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZKx1SIIqnajHcJLqt4rKFydWo+496THIerDk4oXdzj65flO10KS5vxBAzFyUEjL7A7XC1SiG5sNTU7fEKMSb8zkAK1Qt7K3GUH98W+qWf370EMEYVoENaMqH4w0U0Z5Fs5FNOfK98psblL05k/YcjjNUoE8qgIbGomgSh4vA5kU/c9WRrhvXDmzmYz/bJqM+JxfljWs4dN8KrlaYPVnoQr6i6pFnDUTpw3CYV3dpsY4KaNKJCzAAR9xHdC8R1Wg7BPtwRCu73YLT6bUBBNbVzFqT8/ybtOLYHx3c01xs2D82y5SJHIqkoX2gFs3XllOrJEIY6mOwLUsYdBS8lyCBtlm5vmeLxxgYXB+11ztrm7qEwyhMGnwESVQgXuMTHuPeGfhcyqRoXwwHQHUS2CGNawyts4yCbN7/2hBRAXCGScuqG2sUqp4YmFP9PxmNTJal4I8+cBwMEOMI59ohr3DBY8uo5U1D2ODoVTajBuRDMujhteErDgSPPxmG3q21wqdZdFzB/fIHZBoAjvKYrAyD6O/GhsZyybn+V02QT7CD2avjIwyROwoRfVY8F8CZQ1WHKKm2bkyFYIVUCDblaB1IEr6suJbVIOKURL8frfBHrvTjsQIqCGfRgdsxAfCA5/20FNUJsOnTrdPFM+Z+QHQII6a8kA6U1EOus/W2Is9drgs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(30864003)(110136005)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: oy80KUBCI8n5Oii9r/XLknvyZ7K2HK2DGqjTgH6xTDWTNbcEAqCEd2nXhkuSJlNyNKGx22EGiThX1Zy13/crbDoO9ungdtHbuOXDomIgRX++f9N3GjcUDb3kycdTW8DRp4prowYhbaOYsYTUoiyOHFYGJ1J1sVzefBZbYxtMvkmopA9Sn94O9Hkia4mnatBRuqZAgTz0ZQI47gx8nhrqSz7HG7EUF84UU1kgiJBbX6aTh2hJuQ2uV3vevO2BLQzW49ZoVnU9Ju+sqX6HewVhD+bMYk763DL2Xlr7fjxwZUfG+UaRW8ukM946R1gJiX/6cGDE9OQ/yOoaeX5mf/ecWI7uUU24TT2BPpc6fjvK8L8PycPntB0p2LBf/f+8ArRjjVHL+B9cy6vX33mF6SqqDbq31xbsEpzEwqoYjILlCQUazOrX645S+n3g0OI0u1VFcsjzvpLn9p5cA/Ww4TAv37vZ5cy2TlJh2NPLG1aKvqPKSmMjxf756LNe9YToQaBobxPrHjZTwZSJxkVjJL1MVzscolQdhPacE5FwGYd75Hd3QAI3T2GUq4WAMabBuan9SFWRaZfZwhX4HzUmvjWmDOlep23oTWiTNJzcoejiQ5HZbLTgrk98RMVy6MmuTpHDn0lMpf89mifYWWC1BpPW2x2edQr86rieEI98qQKaCc603CweiFIGXlncuQMjWFK+OasW78vU8jvUwFgMCV7relv2b0C0v7/jKxf43zufrsfYCGI4XX/1oYYwewSJzJQ/FTaNibUr/zYjp6WzB8S3JEHw5cSM+KMB6SXr8f6kwFlukHONVtsbDm4u3C3Vi4ekpJSY2s1ioHLKFn+BayCwbZa1TtPBCyTFisWU/7eyjMQU3DBoUdbxR/9jkSCNpA2+22RP+JwakDQNAIJ/59ZsPMW/B8FEfHFI/wHupBhpj1e/jUdBYvXQsI/st5+vkVkZLLQEAXLIBTMKUdaUF2cL02rf1TWudu4bzvTfIE40bgg6o3jPxlO9qOGeazeqct7dpX9Zvm5e4hwAb74XjeFLIzrBSG7zEGJ+Wk9f2kjZfottlbwyeQcnOvOrboKSn8Yj34Nmz1lavBWUNS0Hgq8DiouiCaaPd/Tj2sob0vK9RDw9X4+B2kjoMpsiyR8Xh4oHVkANeT0EliNpK+V9kzbxOtWkatolZzTERSkecOTiB9/+u1z/ZyfW3mg5LaHxnIS3ozSCrWPxLQnbYcGjKHqPY7ni7d9/aejGL1CRd/+f1CoThakHpeKcr0LWpJPC5tdKJZlJSYEO/RO5Uc+tk2B6XmyGGR0n8WJFcjs2JFq0m/+uzCnYka3OC21+3FKvH7PS X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 526c133a-6ef5-4a9d-3fdf-08d92b599bf5 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:51.9306 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FC3zfmGdmapekZd2Mv+8Hb7ivgQA/DDu2zVtrx8APc21J5MfhoLZPUVc85FuklYP1ox6dshH080QFZuQfPLZ4Y6TV245V09YM8LQGzExucs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Storm control (BUM) provides a mechanism to limit rate of ingress port traffic (matched by type). Devlink port parameter API is used: driver registers a set of per-port parameters that can be accessed to both get/set per-port per-type rate limit. Add new FW command - RATE_LIMIT_MODE_SET. Signed-off-by: Oleksandr Mazur Reported-by: kernel test robot --- .../net/ethernet/marvell/prestera/prestera.h | 7 + .../marvell/prestera/prestera_devlink.c | 134 +++++++++++++++++- .../ethernet/marvell/prestera/prestera_hw.c | 25 ++++ .../ethernet/marvell/prestera/prestera_hw.h | 9 ++ 4 files changed, 174 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/marvell/prestera/prestera.h b/drivers/net/ethernet/marvell/prestera/prestera.h index 2c94bdec84b1..4b99a7421452 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera.h +++ b/drivers/net/ethernet/marvell/prestera/prestera.h @@ -60,6 +60,12 @@ struct prestera_port_caps { u8 transceiver; }; +struct prestera_strom_control_cfg { + u32 bc_kbyte_per_sec_rate; + u32 unk_uc_kbyte_per_sec_rate; + u32 unreg_mc_kbyte_per_sec_rate; +}; + struct prestera_port { struct net_device *dev; struct prestera_switch *sw; @@ -79,6 +85,7 @@ struct prestera_port { struct prestera_port_stats stats; struct delayed_work caching_dw; } cached_hw_stats; + struct prestera_strom_control_cfg storm_control; }; struct prestera_device { diff --git a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c index d12e21db9fd6..0786fbb09f71 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_devlink.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_devlink.c @@ -2,6 +2,8 @@ /* Copyright (c) 2019-2020 Marvell International Ltd. All rights reserved */ #include +#include +#include #include "prestera_devlink.h" #include "prestera_hw.h" @@ -159,6 +161,34 @@ struct prestera_trap_data { DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \ PRESTERA_TRAP_METADATA) +#define PRESTERA_PORT_PARAM_DRIVER_RUNTIME(_id, _name, _type) \ + DEVLINK_PARAM_DRIVER(PRESTERA_DEVLINK_PORT_PARAM_ID_##_id, _name, \ + _type, BIT(DEVLINK_PARAM_CMODE_RUNTIME), NULL, \ + NULL, NULL) + +struct prestera_storm_control { + struct prestera_switch *sw; + struct prestera_strom_control_cfg *cfg; +}; + +enum prestera_devlink_port_param_id { + PRESTERA_DEVLINK_PORT_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX + 1, + PRESTERA_DEVLINK_PORT_PARAM_ID_BC_RATE, + PRESTERA_DEVLINK_PORT_PARAM_ID_UC_UNK_RATE, + PRESTERA_DEVLINK_PORT_PARAM_ID_MC_RATE, +}; + +struct devlink_param prestera_devlink_port_params[] = { + PRESTERA_PORT_PARAM_DRIVER_RUNTIME(BC_RATE, "bc_kbyte_per_sec_rate", + DEVLINK_PARAM_TYPE_U32), + PRESTERA_PORT_PARAM_DRIVER_RUNTIME(UC_UNK_RATE, + "unk_uc_kbyte_per_sec_rate", + DEVLINK_PARAM_TYPE_U32), + PRESTERA_PORT_PARAM_DRIVER_RUNTIME(MC_RATE, + "unreg_mc_kbyte_per_sec_rate", + DEVLINK_PARAM_TYPE_U32), +}; + static const struct devlink_trap_group prestera_trap_groups_arr[] = { /* No policer is associated with following groups (policerid == 0)*/ DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS, 0), @@ -350,6 +380,10 @@ static void prestera_devlink_traps_fini(struct prestera_switch *sw); static int prestera_drop_counter_get(struct devlink *devlink, const struct devlink_trap *trap, u64 *p_drops); +static int prestera_devlink_port_param_set(struct devlink_port *dl_port, u32 id, + struct devlink_param_gset_ctx *ctx); +static int prestera_devlink_port_param_get(struct devlink_port *dl_port, u32 id, + struct devlink_param_gset_ctx *ctx); static int prestera_dl_info_get(struct devlink *dl, struct devlink_info_req *req, @@ -383,11 +417,17 @@ static int prestera_trap_action_set(struct devlink *devlink, static int prestera_devlink_traps_register(struct prestera_switch *sw); +static const struct devlink_port_param_ops prestera_devlink_port_param_ops = { + .get = prestera_devlink_port_param_get, + .set = prestera_devlink_port_param_set, +}; + static const struct devlink_ops prestera_dl_ops = { .info_get = prestera_dl_info_get, .trap_init = prestera_trap_init, .trap_action_set = prestera_trap_action_set, .trap_drop_counter_get = prestera_drop_counter_get, + .port_param_ops = &prestera_devlink_port_param_ops, }; struct prestera_switch *prestera_devlink_alloc(void) @@ -443,10 +483,12 @@ void prestera_devlink_unregister(struct prestera_switch *sw) int prestera_devlink_port_register(struct prestera_port *port) { struct prestera_switch *sw = port->sw; - struct devlink *dl = priv_to_devlink(sw); struct devlink_port_attrs attrs = {}; + struct devlink *dl; int err; + dl = priv_to_devlink(sw); + attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; attrs.phys.port_number = port->fp_id; attrs.switch_id.id_len = sizeof(sw->id); @@ -460,12 +502,32 @@ int prestera_devlink_port_register(struct prestera_port *port) return err; } + err = devlink_port_params_register( + &port->dl_port, + prestera_devlink_port_params, + ARRAY_SIZE(prestera_devlink_port_params)); + if (err) { + devlink_port_unregister(&port->dl_port); + dev_err(sw->dev->dev, "devlink_port_params_register failed\n"); + return err; + } + + devlink_port_params_publish(&port->dl_port); + return 0; } void prestera_devlink_port_unregister(struct prestera_port *port) { + devlink_port_params_unpublish(&port->dl_port); + + devlink_port_params_unregister( + &port->dl_port, + prestera_devlink_port_params, + ARRAY_SIZE(prestera_devlink_port_params)); + devlink_port_unregister(&port->dl_port); + } void prestera_devlink_port_set(struct prestera_port *port) @@ -622,6 +684,76 @@ static int prestera_drop_counter_get(struct devlink *devlink, cpu_code_type, p_drops); } +static int prestera_devlink_port_param_set(struct devlink_port *dl_port, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct prestera_strom_control_cfg *cfg; + u32 kbyte_per_sec_rate = ctx->val.vu32; + struct prestera_port *port; + struct prestera_switch *sw; + u32 *param_to_set; + u32 storm_type; + int ret; + + port = container_of(dl_port, struct prestera_port, dl_port); + sw = devlink_priv(dl_port->devlink); + cfg = &port->storm_control; + + switch (id) { + case PRESTERA_DEVLINK_PORT_PARAM_ID_BC_RATE: + param_to_set = &cfg->bc_kbyte_per_sec_rate; + storm_type = PRESTERA_PORT_STORM_CTL_TYPE_BC; + break; + case PRESTERA_DEVLINK_PORT_PARAM_ID_UC_UNK_RATE: + param_to_set = &cfg->unk_uc_kbyte_per_sec_rate; + storm_type = PRESTERA_PORT_STORM_CTL_TYPE_UC_UNK; + break; + case PRESTERA_DEVLINK_PORT_PARAM_ID_MC_RATE: + param_to_set = &cfg->unreg_mc_kbyte_per_sec_rate; + storm_type = PRESTERA_PORT_STORM_CTL_TYPE_MC; + break; + default: + return -EINVAL; + } + + if (kbyte_per_sec_rate != *param_to_set) { + ret = prestera_hw_port_storm_control_cfg_set(port, storm_type, + kbyte_per_sec_rate); + if (ret) + return ret; + + *param_to_set = kbyte_per_sec_rate; + } + + return 0; +} + +static int prestera_devlink_port_param_get(struct devlink_port *dl_port, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct prestera_strom_control_cfg *cfg; + struct prestera_port *port; + struct prestera_switch *sw; + + port = container_of(dl_port, struct prestera_port, dl_port); + sw = devlink_priv(dl_port->devlink); + cfg = &port->storm_control; + + switch (id) { + case PRESTERA_DEVLINK_PORT_PARAM_ID_BC_RATE: + ctx->val.vu32 = cfg->bc_kbyte_per_sec_rate; + return 0; + case PRESTERA_DEVLINK_PORT_PARAM_ID_UC_UNK_RATE: + ctx->val.vu32 = cfg->unk_uc_kbyte_per_sec_rate; + return 0; + case PRESTERA_DEVLINK_PORT_PARAM_ID_MC_RATE: + ctx->val.vu32 = cfg->unreg_mc_kbyte_per_sec_rate; + return 0; + default: + return -EINVAL; + } +} + static void prestera_devlink_traps_fini(struct prestera_switch *sw) { struct devlink *dl = priv_to_devlink(sw); diff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.c b/drivers/net/ethernet/marvell/prestera/prestera_hw.c index 0e5b3f8e7dc7..85a1a15717df 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_hw.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.c @@ -20,6 +20,7 @@ enum prestera_cmd_type_t { PRESTERA_CMD_TYPE_PORT_ATTR_SET = 0x100, PRESTERA_CMD_TYPE_PORT_ATTR_GET = 0x101, PRESTERA_CMD_TYPE_PORT_INFO_GET = 0x110, + PRESTERA_CMD_TYPE_PORT_RATE_LIMIT_MODE_SET = 0x111, PRESTERA_CMD_TYPE_VLAN_CREATE = 0x200, PRESTERA_CMD_TYPE_VLAN_DELETE = 0x201, @@ -251,6 +252,14 @@ struct prestera_msg_port_info_resp { u16 fp_id; }; +struct prestera_msg_port_storm_control_cfg_set_req { + struct prestera_msg_cmd cmd; + u32 port; + u32 dev; + u32 storm_type; + u32 kbyte_per_sec_rate; +}; + struct prestera_msg_vlan_req { struct prestera_msg_cmd cmd; u32 port; @@ -639,6 +648,22 @@ int prestera_hw_port_accept_frm_type(struct prestera_port *port, &req.cmd, sizeof(req)); } +int prestera_hw_port_storm_control_cfg_set(const struct prestera_port *port, + u32 storm_type, + u32 kbyte_per_sec_rate) +{ + struct prestera_msg_port_storm_control_cfg_set_req req = { + .port = port->hw_id, + .dev = port->dev_id, + .storm_type = storm_type, + .kbyte_per_sec_rate = kbyte_per_sec_rate + }; + + return prestera_cmd(port->sw, + PRESTERA_CMD_TYPE_PORT_RATE_LIMIT_MODE_SET, + &req.cmd, sizeof(req)); +} + int prestera_hw_port_cap_get(const struct prestera_port *port, struct prestera_port_caps *caps) { diff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.h b/drivers/net/ethernet/marvell/prestera/prestera_hw.h index aafecf0ecd16..85373f1d3971 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_hw.h +++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.h @@ -89,6 +89,12 @@ enum { PRESTERA_STP_FORWARD, }; +enum { + PRESTERA_PORT_STORM_CTL_TYPE_BC = 0, + PRESTERA_PORT_STORM_CTL_TYPE_UC_UNK = 1, + PRESTERA_PORT_STORM_CTL_TYPE_MC = 2 +}; + enum prestera_hw_cpu_code_cnt_t { PRESTERA_HW_CPU_CODE_CNT_TYPE_DROP = 0, PRESTERA_HW_CPU_CODE_CNT_TYPE_TRAP = 1, @@ -123,6 +129,9 @@ int prestera_hw_port_mac_set(const struct prestera_port *port, const char *mac); int prestera_hw_port_mac_get(const struct prestera_port *port, char *mac); int prestera_hw_port_cap_get(const struct prestera_port *port, struct prestera_port_caps *caps); +int prestera_hw_port_storm_control_cfg_set(const struct prestera_port *port, + u32 storm_type, + u32 kbyte_per_sec_rate); int prestera_hw_port_remote_cap_get(const struct prestera_port *port, u64 *link_mode_bitmap); int prestera_hw_port_remote_fc_get(const struct prestera_port *port, From patchwork Wed Jun 9 15:16:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Mazur X-Patchwork-Id: 457391 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9FB8C48BCD for ; Wed, 9 Jun 2021 15:17:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A5667613B6 for ; Wed, 9 Jun 2021 15:17:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239351AbhFIPTE (ORCPT ); Wed, 9 Jun 2021 11:19:04 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:23438 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239228AbhFIPSx (ORCPT ); Wed, 9 Jun 2021 11:18:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mIKmE0ghTetTUDgQCsUL0VhXgOmGR0FGF+iIO0De+kg7DG9kFAUjAiti8tlQ7OtDGCeIg41X+o0cpnQZ3gTGtu9tt0RzIIZ8ZBwmeuEoq9g+rt8b+bXvoMZI/hc/XDIrw0RJl1UpdI3dLE61rNKTjgTCMJWxMg6TmxjiNov2uKTP20vhJpKyNIjsBTd6r3lDD5BOkA+VXCxxAvIlEGqoByunQ/0u6Nq5e88hp8AeWzH19nAT9GplGy83eHcvHhWlQ5JUh20eOOe1poJwldEY0VU7Rx9NQLUf/G8H6/wva00VWdJU/qK+jS7fQxq5RrHInmYXwa+VP6gXJwZbL5fL7Q== 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-SenderADCheck; bh=dEB4xA52d2+ZwzXblV37zF8N4CPjkyGKhYIScADcpqs=; b=PQKRoFPQMTlVlzMmJW/WZmv2i5jUJmaxZX0xo3d2DWaBeDynBJo88RbyJ0Rg2x2y/3FMZAP3oBockTHTqVmNyCFb+cxG87xF/ioHOyjyKgigIzvt/UY4pmCPecwvYfzdPoig7AF9ktoevY8V4Jw/h44sRxPQDLq07vQyM+Qer/qxx8ITW73oWLFLdUvT6pCIOmpTUqXlNFsVl4iwcYYDl927jrgouYTwsL3bKwAAkVjYIffP8YuvbbFa2txdRuQU/iLfKKhIcGjlHoi2QLOtA4gqIcHZCKeOysdp+jowQKDH35eF+Z+ZPjjpnWmZDrfV6jxI03CVOWtz3ORXP621KA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=plvision.eu; dmarc=pass action=none header.from=plvision.eu; dkim=pass header.d=plvision.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plvision.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dEB4xA52d2+ZwzXblV37zF8N4CPjkyGKhYIScADcpqs=; b=p5HLMYMptwG1iR4w79QsYaMTjDjlXO7NJ415rFYAQTCP1PVRxxUDl1eVOiRQNz4SjVwm5YVoKWjDyymCyhaI+I0D5Qya/VLGohihMlNyn8TAftzcAA9F2ezEn6iVkH35lwpyDWP2GfBSq/ZslPytm0wiUiKPnjxM1wvG0RbL0hE= Authentication-Results: plvision.eu; dkim=none (message not signed) header.d=none; plvision.eu; dmarc=none action=none header.from=plvision.eu; Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) by AM9P190MB1427.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun 2021 15:16:54 +0000 Received: from AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe]) by AM0P190MB0738.EURP190.PROD.OUTLOOK.COM ([fe80::d018:6384:155:a2fe%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021 15:16:54 +0000 From: Oleksandr Mazur To: oleksandr.mazur@plvision.eu, jiri@nvidia.com, davem@davemloft.net, kuba@kernel.org, Jonathan Corbet Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Subject: [PATCH net-next 11/11] documentation: networking: devlink: add prestera switched driver Documentation Date: Wed, 9 Jun 2021 18:16:01 +0300 Message-Id: <20210609151602.29004-12-oleksandr.mazur@plvision.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> References: <20210609151602.29004-1-oleksandr.mazur@plvision.eu> X-Originating-IP: [217.20.186.93] X-ClientProxiedBy: AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) To AM0P190MB0738.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:19b::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from omazur.x.ow.s (217.20.186.93) by AM0PR06CA0092.eurprd06.prod.outlook.com (2603:10a6:208:fa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Wed, 9 Jun 2021 15:16:53 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3c04fb28-6ac5-4224-7bf2-08d92b599d24 X-MS-TrafficTypeDiagnostic: AM9P190MB1427: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uHdTlv4LkyiLr4UkE9FkYfsLPcX7zPHJgwT+PEsXj38rX4LIv0PZ/+S2KNjV1ptpIhzrIyAxNsU0iyRLpZtJ/TsdWBLmnK6R7t24HEmVmgt6KvAeMi2PaGCpbOpyXDRKk9razgS0+uFZDJvpkivk+f4LB6VEcF11eed1SL0PJGdpLrG3kxuX05tQ7SH4+vY2ogK5CUJTN7RSk0Srnnbx1cjy2SpMvWOxTj+jlvciBV7Sfw4jDv27iEyuDX3EEedoOGzCBjJt7F8fnoUexqCwoWHUxYDsmfX6LP3XCsw7bNjUm5XAWfWrQvXfXx9Pm8kzdfggDn/aV9X5uVjqUd3wPbFL2SiPfTSRaguSdNOflElgW/zwulq9maIazdqZvDHv98LB4loVlfcH78Km2s4eVdd2/doAwapb7MD7ZLOriIE/+JioLZkUSewdsMphf6UrfCUa/HYbYnYG/3qhmr8BOuuScqvDRNd+l1hT+1yNMeKKwTqtxR+sQNS7Q7Ja8V8ErzUHSZO/UTGFPCpfOZlrT+xRoJX6rNI07AKq7PfpIfVxYB8/+45vdYgIQmoFHSw4IqiX5YbXo2KpIPW78vhyozMmy6vKDLcn2yB04XEMjYYdNJwscjPljuI2vs5eVwbubj0z0QDB1zDnYTE5Ou6nH7ikLu0n0HjAyJtaJ6OsPaQ= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0P190MB0738.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(346002)(376002)(396003)(136003)(39830400003)(366004)(83380400001)(956004)(52116002)(2906002)(1076003)(186003)(66556008)(66946007)(16526019)(6506007)(2616005)(6486002)(6666004)(26005)(66476007)(38350700002)(8676002)(36756003)(86362001)(4326008)(6916009)(66574015)(5660300002)(478600001)(44832011)(6512007)(38100700002)(316002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 4UpGOH3kumlVdbH/zl6hsKtyP3oRStD3zruO/dd+xJM8HOsRetRQsHitveIYWi2bsw0BbywdaEKrQgu/UeTlmBtNBtK7MMncYMubVhyWuLuz/ob5CHbvEaheNsQXocSR3iVjAMDa/D2LZ94jLuVAgfeOq0IOe3m7rIB2EbhxUFzAWw1J+IG4E2H0gNkNugT8+lqieyHd9xwy8XGxYlRK2nwMY0LjNX8kp24k0PZFAZUyq9gF6uexiLKF+JJT7sC1E9pkS3UpCP6ioZvimpYm5CZxVxEAhSBLpEHYgrxx+DjUZ70v39Dt7Qmq/Cgq9G+2qB6id+tE5Wigo/s89WO4yqeCCSJyRw/ISrwvBkObmeE3oIJUdwPX0OqiLVIBrqKV0jD1s4fgbV2JzUWd/vgbHJf0UlAWxr/wUMhlX9+UpE5P/PgU3wGBdmiVD376HygWvIDasOaO+KZ10KJ7EZXObPuo9np5yolXL1WyvL1OCZa2XsInbEa/+2z32hNm5qC6t/D5geTF6suQP1O8shpqYiLW+QD2A1PhelbHMt0OPS5I9hN86iPcRWhMnggSTkwBH76cs5+dDgoXOvn4mh1vAoKfrgRM+k7inQcycQ5Wl9u2jt9LEGDJwI0hXZtXdiRYpX0PmBKO/0X11Im6AT5slKglSQ9lF4Q/pQ2a3jgBsYNN2L9qvmyeIeiyLGlG1NW0PB0MA3Td6Lk1uCYhSuFY72U0IB/JM8pNmCmaa3nwy5YsTCTwOkCFhJ5WPyeyQO03TzNTh1u0UZ5ywQm/SD8ZA8gqgLRrpQsUQ4/6mc0l3y6F9excXCuQ46DClyuPQ6qsNva0MjQvt/fshNIZ44XMIWGqOZSqiKuM36kWhcNX217CLydKivQGx7eennQbppimWkYV0otmKOoGzSdsLrzdDXhpu0wyy4COKLJr6p+nvcpsecZZIS0BHwH5cnw75ZZPn1WTZ8/3j2/OoPnGtyxMoHCi/sAgkp67BY/bzjwI0nzRte1ZGW3KFSQpxiVoDh+npKb+AyvPa/warmZAeuXfnVQ+qW/2zg94JavNT52yBb65aWq8AOTlYadArcfWyrAckdZLkVwk2MGe6g+W4S42B1iXGHfbcjVumt/mRJ/knA2uKMUd6EV8svI6sAL/i0kAOXY55ZO8CNKjV81hS+5gj1PRYzLMxhHM2fPlV5oK6JUvVdCdBmnEX+2Rgzt6J/W5MuAP6J5j11sjFoK3uErHe7JxKF83TCgL8jw+eFufCiQea2D3L+I8dfOnhszhV2ORt3UB7OoNQQP5fLWWwpbKwY4znidBW0Kwl05XbDWRKyg+jnzh2u9kVq1axWMvBulP X-OriginatorOrg: plvision.eu X-MS-Exchange-CrossTenant-Network-Message-Id: 3c04fb28-6ac5-4224-7bf2-08d92b599d24 X-MS-Exchange-CrossTenant-AuthSource: AM0P190MB0738.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:16:53.9149 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 03707b74-30f3-46b6-a0e0-ff0a7438c9c4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6owVsztwFTXqj01dbK47EQyoDs3SaFTgG4XtA1VEg5yeeJJnKAkTNkIZQVMRXHTBT158DBQJWsruK//JLoE9CCla1iAdT/pNgBDmGAQ5B+4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1427 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add documentation for the devlink feature prestera switchdev driver supports: add description for the support for the per-port devlink Parameters (used form storm control); add description for the support of the driver-specific devlink traps (include both traps with action TRAP and action DROP); Signed-off-by: Oleksandr Mazur --- Documentation/networking/devlink/prestera.rst | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 Documentation/networking/devlink/prestera.rst diff --git a/Documentation/networking/devlink/prestera.rst b/Documentation/networking/devlink/prestera.rst new file mode 100644 index 000000000000..b73d70319344 --- /dev/null +++ b/Documentation/networking/devlink/prestera.rst @@ -0,0 +1,167 @@ +.. SPDX-License-Identifier: GPL-2.0 + +===================== +prestera devlink support +===================== + +This document describes the devlink features implemented by the ``prestera`` +device driver. + +Parameters (per-port) +===================== + +.. list-table:: Driver-specific parameters (per-port) implemented + :widths: 5 5 5 85 + + * - Name + - Type + - Mode + - Description + * - ``bc_kbyte_per_sec_rate`` + - u32 + - runtime + - Sets the maximum ingress traffic rate, at which port can + receive broadcast traffic. + * - ``unk_uc_kbyte_per_sec_rate`` + - u32 + - runtime + - Sets the maximum ingress traffic rate, at which port can + receive unknown unicast traffic. + * - ``unreg_mc_kbyte_per_sec_rate`` + - u32 + - runtime + - Sets the maximum ingress traffic rate, at which port can + receive unregistered multicast traffic. + +Driver-specific Traps +===================== + +.. list-table:: List of Driver-specific Traps Registered by ``prestera`` + :widths: 5 5 90 + + * - Name + - Type + - Description +.. list-table:: List of Driver-specific Traps Registered by ``prestera`` + :widths: 5 5 90 + + * - Name + - Type + - Description + * - ``arp_bc`` + - ``trap`` + - Traps ARP broadcast packets (both requests/responses) + * - ``is_is`` + - ``trap`` + - Traps IS-IS packets + * - ``ospf`` + - ``trap`` + - Traps OSPF packets + * - ``ip_bc_mac`` + - ``trap`` + - Traps IPv4 packets with broadcast DA Mac address + * - ``stp`` + - ``trap`` + - Traps STP BPDU + * - ``lacp`` + - ``trap`` + - Traps LACP packets + * - ``lldp`` + - ``trap`` + - Traps LLDP packets + * - ``router_mc`` + - ``trap`` + - Traps multicast packets + * - ``vrrp`` + - ``trap`` + - Traps VRRP packets + * - ``dhcp`` + - ``trap`` + - Traps DHCP packets + * - ``mtu_error`` + - ``trap`` + - Traps (exception) packets that exceeded port's MTU + * - ``mac_to_me`` + - ``trap`` + - Traps packets with switch-port's DA Mac address + * - ``ttl_error`` + - ``trap`` + - Traps (exception) IPv4 packets whose TTL exceeded + * - ``ipv4_options`` + - ``trap`` + - Traps (exception) packets due to the malformed IPV4 header options + * - ``ip_default_route`` + - ``trap`` + - Traps packets that have no specific IP interface (IP to me) and no forwarding prefix + * - ``local_route`` + - ``trap`` + - Traps packets that have been send to one of switch IP interfaces addresses + * - ``ipv4_icmp_redirect`` + - ``trap`` + - Traps (exception) IPV4 ICMP redirect packets + * - ``arp_response`` + - ``trap`` + - Traps ARP replies packets that have switch-port's DA Mac address + * - ``acl_code_0`` + - ``trap`` + - Traps packets that have ACL priority set to 0 (tc pref 0) + * - ``acl_code_1`` + - ``trap`` + - Traps packets that have ACL priority set to 1 (tc pref 1) + * - ``acl_code_2`` + - ``trap`` + - Traps packets that have ACL priority set to 2 (tc pref 2) + * - ``acl_code_3`` + - ``trap`` + - Traps packets that have ACL priority set to 3 (tc pref 3) + * - ``acl_code_4`` + - ``trap`` + - Traps packets that have ACL priority set to 4 (tc pref 4) + * - ``acl_code_5`` + - ``trap`` + - Traps packets that have ACL priority set to 5 (tc pref 5) + * - ``acl_code_6`` + - ``trap`` + - Traps packets that have ACL priority set to 6 (tc pref 6) + * - ``acl_code_7`` + - ``trap`` + - Traps packets that have ACL priority set to 7 (tc pref 7) + * - ``ipv4_bgp`` + - ``trap`` + - Traps IPv4 BGP packets + * - ``ssh`` + - ``trap`` + - Traps SSH packets + * - ``telnet`` + - ``trap`` + - Traps Telnet packets + * - ``icmp`` + - ``trap`` + - Traps ICMP packets + * - ``rxdma_drop`` + - ``drop`` + - Drops packets (RxDMA) due to the lack of ingress buffers etc. + * - ``port_no_vlan`` + - ``drop`` + - Drops packets due to faulty-configured network or due to internal bug (config issue). + * - ``local_port`` + - ``drop`` + - Drops packets whose decision (FDB entry) is to bridge packet back to the incoming port/trunk. + * - ``invalid_sa`` + - ``drop`` + - Drops packets with multicast source MAC address. + * - ``illegal_ip_addr`` + - ``drop`` + - Drops packets with illegal SIP/DIP multicast/unicast addresses. + * - ``illegal_ipv4_hdr`` + - ``drop`` + - Drops packets with illegal IPV4 header. + * - ``ip_uc_dip_da_mismatch`` + - ``drop`` + - Drops packets with destination MAC being unicast, but destination IP address being multicast. + * - ``ip_sip_is_zero`` + - ``drop`` + - Drops packets with zero (0) IPV4 source address. + * - ``met_red`` + - ``drop`` + - Drops non-conforming packets (dropped by Ingress policer, metering drop), e.g. packet rate exceeded configured bandwith.