From patchwork Mon May 9 13:59:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843634 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FDC3C433F5 for ; Mon, 9 May 2022 14:01:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236791AbiEIOFI (ORCPT ); Mon, 9 May 2022 10:05:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236790AbiEIOFH (ORCPT ); Mon, 9 May 2022 10:05:07 -0400 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2056.outbound.protection.outlook.com [40.107.223.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CE8310C for ; Mon, 9 May 2022 07:01:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lcdw61avKfI0s8IleHqz0hTgy9wMu8BDEpbg+G2pZdE6kLXViYoHjkepqznNd+He6IIvynIXFsgNIQGWsRDDk86EfIzpUZSYQnvfKJMCwJKBCFQf5NfBwkfJeQBmCJkymU4oGHkobLteg1Ll1aq9UrtzNFIsqCQ/0P3AWzQ4lyXLGmjz/COXkF4/oF/8I0cMTndmxVGZ/Xl/YX9ndqbtaVo8l6qzGi3p+UZZAmsKPhlUCPXeSvzKkdNfcMcLh5vqK90r8bS2meWZhRuTs0ic+8M84plQnxCKurNIZWFl+olt1pHdvvmme2WC6EG85wx+Dn6q/RyXBia2FYvsnENflg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MGc96EnJNXVzw28qzy6TsyF6buO9li/EhmtanjECt9Y=; b=PI0aZ2Lv8fIQ7eI/E+hyGOg8/oPlZVUD2gkrHwaBJIdPddO63lphCpkx1YNCzy4HlhfeUhgkpVCOURLfLh/yzoh9be78rBprXmx7gEOejcyXc60aCHxBJlS7o8bukM3oozkMhjb1H1BSak9IdgUdlFvP1l2uZH6FFCmlDkVZrqnwY/cfPSAvVuLCIBfDWCy8w3OVnjDkI26SDLolwVVXuQu+5fs3gEvYffDxcLk4VRQEUxARDP//L/2bLnimzWOeVusaddqu7qaQQYyXiFfhOzISXjwW5YT1nuPc8YczhBR3zalvAABdSoIVUP513mhA3Pacpahg5NH9IqKOxuBIDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MGc96EnJNXVzw28qzy6TsyF6buO9li/EhmtanjECt9Y=; b=G+TLw+q6xQrbG0pQLnk8egQnzX88H0ynCQ8XNYKh7TReEbE5AcQAMv7kHnbviqIC+UlM3TxpqdBeRmelwQn8imkrMcOYQDMXycfoo1JfYmujOFGEQQ90rQ6qdXdzT/F+MxsrdQcZhI7FPhHn6IvfescZV/mSpyNZnodEiAFeExYS5H8v3lhYMhFcZ5OYHfRyZae1cA2QXXzsLFS3ULATMGXpy5TLoAud8qUwx5uNZCgR8fy5wZL0if/TnlkwvHE4sj6zOI5KyWQ1mrzoIt4Zd0I8A+NY0RWFmnHVuFQgeXxdeAz39PJsSEdQkSDArYxYtfH1W5NozIC2Dz7gwOZGGg== Received: from MWH0EPF00056D12.namprd21.prod.outlook.com (2603:10b6:30f:fff2:0:1:0:15) by MN2PR12MB4520.namprd12.prod.outlook.com (2603:10b6:208:26f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Mon, 9 May 2022 14:01:10 +0000 Received: from CO1NAM11FT014.eop-nam11.prod.protection.outlook.com (2a01:111:f400:7eab::207) by MWH0EPF00056D12.outlook.office365.com (2603:1036:d20::b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.4 via Frontend Transport; Mon, 9 May 2022 14:01:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.234) by CO1NAM11FT014.mail.protection.outlook.com (10.13.175.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:10 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:09 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:07 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 01/10] iplink: Fix formatting of MPLS stats Date: Mon, 9 May 2022 15:59:54 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 794f290e-a25d-416a-8644-08da31c45ef6 X-MS-TrafficTypeDiagnostic: MN2PR12MB4520:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VIemWb3bj/J43uzgxQnKIKl/mrqbx7bf/HgiPmdxZNMTAPHn1+dpC/lbrLOg2BrMbEtB4fLUBRGGKLHNCL6Vz3cflquZMNhPKhU6ube+IYr0g8NBdQMBo5g5JWVhnhmEzkdkz9BJpxUaEItxauHM7ExgVkPjz63HGlys2B/N9kx4vColmpg00Qh/oTFAWZIbKA8oFnah4OxECX6Vhp+hv/rJS8UoJRco6V2A66/+uIARfH02UKfxfyVr9zRT0AeAwR6TzryjXdwxvxggyeHNDA78lC3MMpytA+DadJ6gs2xTzqVakLw1NwZNk8ivztYCVINrW2P3ITZKHq62C/vPWTDs5xTWiT3h1LQ68zlEquQM8ucq0ueN7aduDsD74gZbjAyzQuNSgy97qbHSnpi98mbtA7pXINn6pRRGNQ1Igt4tWVrLshTSzxitUHr0nwBsJi58SxnVfIcgF9tzVRd7mj3+LEes7IFA+RLxGf3LEEiHb0t9Wd7UATpVajfMoGbm7+juwS5JPu5jXhj7c9POC305qrKixV3xzPKsBfjV6rEo0DT5x8Ug+9poiuKCUKPUE0dVrT/Pa6uEx8d5hFN6Scil5tIfz/3sNjqhyBDP9uvNYPSwJLLnuYx1eSZMR6ouM3XZJUw6uw+UVhqUnZiNtYCsucz/anPx79GoYPMO8Sk9QI0uR9ouEScOrihGdYwzVfVODd1axURy7OAX40QWMQ== X-Forefront-Antispam-Report: CIP:12.22.5.234;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(86362001)(81166007)(4326008)(8676002)(2616005)(36860700001)(26005)(2906002)(6666004)(356005)(83380400001)(8936002)(316002)(40460700003)(5660300002)(6916009)(508600001)(186003)(36756003)(16526019)(82310400005)(70586007)(70206006)(54906003)(426003)(107886003)(47076005)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:10.1974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 794f290e-a25d-416a-8644-08da31c45ef6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.234];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT014.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4520 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Currently, MPLS stats are formatted this way: # ip -n ns0-DBZpxj8I link afstats dev veth01 3: veth01 mpls: RX: bytes packets errors dropped noroute 0 0 0 0 0 TX: bytes packets errors dropped 216 2 0 0 Note how most numbers are not aligned properly under their column headers. Fix by converting the code to use size_columns() to dynamically determine the necessary width of individual columns, which also takes care of formatting the table properly in case the counter values are high. After the fix, the formatting looks as follows: # ip -n ns0-Y1PyEc55 link afstats dev veth01 3: veth01 mpls: RX: bytes packets errors dropped noroute 0 0 0 0 0 TX: bytes packets errors dropped 108 1 0 0 Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/iplink.c | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/ip/iplink.c b/ip/iplink.c index 23eb6c6e..b87d9bcd 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1521,6 +1521,13 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) { struct rtattr *mrtb[MPLS_STATS_MAX+1]; struct mpls_link_stats *stats; + unsigned int cols[] = { + strlen("*X: bytes"), + strlen("packets"), + strlen("errors"), + strlen("dropped"), + strlen("noroute"), + }; parse_rtattr(mrtb, MPLS_STATS_MAX, RTA_DATA(attr), RTA_PAYLOAD(attr)); @@ -1528,22 +1535,35 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) return; stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); - fprintf(fp, " mpls:\n"); - fprintf(fp, " RX: bytes packets errors dropped noroute\n"); + + size_columns(cols, ARRAY_SIZE(cols), + stats->rx_bytes, stats->rx_packets, stats->rx_errors, + stats->rx_dropped, stats->rx_noroute); + size_columns(cols, ARRAY_SIZE(cols), + stats->tx_bytes, stats->tx_packets, stats->tx_errors, + stats->tx_dropped, 0); + + fprintf(fp, " RX: %*s %*s %*s %*s %*s%s", + cols[0] - 4, "bytes", cols[1], "packets", + cols[2], "errors", cols[3], "dropped", + cols[4], "noroute", _SL_); fprintf(fp, " "); - print_num(fp, 10, stats->rx_bytes); - print_num(fp, 8, stats->rx_packets); - print_num(fp, 7, stats->rx_errors); - print_num(fp, 8, stats->rx_dropped); - print_num(fp, 7, stats->rx_noroute); + print_num(fp, cols[0], stats->rx_bytes); + print_num(fp, cols[1], stats->rx_packets); + print_num(fp, cols[2], stats->rx_errors); + print_num(fp, cols[3], stats->rx_dropped); + print_num(fp, cols[4], stats->rx_noroute); fprintf(fp, "\n"); - fprintf(fp, " TX: bytes packets errors dropped\n"); + + fprintf(fp, " TX: %*s %*s %*s %*s%s", + cols[0] - 4, "bytes", cols[1], "packets", + cols[2], "errors", cols[3], "dropped", _SL_); fprintf(fp, " "); - print_num(fp, 10, stats->tx_bytes); - print_num(fp, 8, stats->tx_packets); - print_num(fp, 7, stats->tx_errors); - print_num(fp, 7, stats->tx_dropped); + print_num(fp, cols[0], stats->tx_bytes); + print_num(fp, cols[1], stats->tx_packets); + print_num(fp, cols[2], stats->tx_errors); + print_num(fp, cols[3], stats->tx_dropped); fprintf(fp, "\n"); } From patchwork Mon May 9 13:59:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843642 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67F9CC433FE for ; Mon, 9 May 2022 14:01:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236814AbiEIOFk (ORCPT ); Mon, 9 May 2022 10:05:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236816AbiEIOF3 (ORCPT ); Mon, 9 May 2022 10:05:29 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2079.outbound.protection.outlook.com [40.107.93.79]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCDDC26ADD for ; Mon, 9 May 2022 07:01:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SryRbJBhiAr/SmTdWqiyoJoc+oZ0WlTsBvfv72ibzlKejGmOBIuGgaNo1GCEpxEhGU4iJz0gbwT84/m42ibnXUEOhDneELuTTqIH70k0Bf453X7vhuHVcjsO5Wklh70yaZpiLNu40scwzzzYGKCM74Fe3lcL8XLKwOjuc/5T23Y3H5si9OtoUItPRIpVVSK6eI76JTbtn7fm1KiL+80aE+HAyjjsnNhBifepv1KiWywtMTvSzLDoNP2z6aKLdefvzF5vztH3Ryi+btC5whH0WbJSYSD8EOTZsxzH9mVdidYAW9Nw82Ko3BS/wSer65ZyK23RsQdQmL0bSYPzssnEQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mrbAFJ2ABCvJOnDoGrXzdJ+UQUJPcc2obILRvVdo6Jw=; b=DSCdOrZyfUgkkPre71eLhUMmSjTHqcILn+5TpMZRfxH9iASgk1D415wPsb2F4vrIr80la48lh9PrNwzlXtLFjpeMnj8srVYhyACk34IfYwD+OZur8jyt2hzjA99epvsgnTWEJ+uT3uLTPE4kfJ0ozCHUQU3pkD0lTEHFtf+Ohku5QS+66x5iWsyp8poOkMHuJJkX7ylpZ0kbASy76T7ti9hCsVl3rKMl41zXlSg0tEVrKgb59kWNDVIi8T4oh70emaTACFs9yThVl9qebxetdUFNGDltEsod58xY5MjUVyiOpYa/wg4oOVe54giimBnsqMYkkGpiNwzlnXts9uUxeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrbAFJ2ABCvJOnDoGrXzdJ+UQUJPcc2obILRvVdo6Jw=; b=jnIbvP89dbjEqPHoUHDYMMyc94J9OfTktj93dOqA399YADDOsgFECYW2SO6ozTrpcsi0rQ62xrwj1/krJzbFNi/rEM48diBvwaNVIsh9NUwZT2UW2QoiLqtQ8qth0bY/z7QhgGOTbicLaVODO9K/joiRUevJzoQlE8IZwQZjlfj4Ot8S+yBYfYoRilbFAff1Wiz1N8gFYZ2SlkL/0kCbVrCgJ7MYFJUXLk3+7eWSLIGVnfeGtWPxIq0h3R719qViQ4BhWujs79pjtsHO9Uc/tYBfINLoK1DASRVFwY4pl2R3L2aiQTg6SAJkJBPfxkTC6sjP3ZSKn/1QfWC8XvIPhQ== Received: from DM6PR02CA0139.namprd02.prod.outlook.com (2603:10b6:5:332::6) by MN2PR12MB3136.namprd12.prod.outlook.com (2603:10b6:208:d1::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20; Mon, 9 May 2022 14:01:34 +0000 Received: from DM6NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:5:332:cafe::d5) by DM6PR02CA0139.outlook.office365.com (2603:10b6:5:332::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.23 via Frontend Transport; Mon, 9 May 2022 14:01:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by DM6NAM11FT050.mail.protection.outlook.com (10.13.173.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:34 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:11 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:09 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 02/10] iplink: Publish a function to format MPLS stats Date: Mon, 9 May 2022 15:59:55 +0200 Message-ID: <8c523ff76968b72df235c76a27fa9c3d96cf3b2b.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6357841-0312-48c3-3fc1-08da31c46d56 X-MS-TrafficTypeDiagnostic: MN2PR12MB3136:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MRCfFRVcWIEZ3/IAZ3SDTygMd5Y6XTlBKRghTZ659qoOx2WpKJ/asT6kUxMgqysfMEGb+xQvxH3GfuleTVhzZ4R91XNuO0IBrQgRGojLwuH8IKmvTiHqnseu6Wd/57tQ4Q/TKX7wnYlXgAy/A8HO591Q32FnKCIHNt2cE7IQhvB4P4ASuLuWDeGVcxYN9XYVdF9TWjm5V6FugBneN8KDRM479aqSJ4P8h6tWSJddFjrCRQvo8YWbvNcaLB0Mt015pqUOe/VVjmY6il5gzCDaRk/zGcxqpWbQQePqVggfP8ZyA9eocSk/fWC4A+c6gepjyCviHZsPxjhjT9WIa4yhhUZ45uFfbZD5WXQmi0aE/H/khwDFE6z386Sr16RhlBPgdXNJuaJylUI/4H3WXCJAmD3ZlF0lpzbyfgfX6Gkmejwg8brVyZd6wXW5oIisGBPHQcgjeqYUzwmzcPiDq8Cw0+gtwccPlRf1xeDTRoxnEE3JadAfWh1oUSzM97L90/ImuSN1R7NUQzjhDgFgsWz7ZcH3lVgRHw8utCNDcfpmsCbVQubDLKx4+PUz93vyWQnKyASiq3p9In1/DnrHWkGI6kEXCta1uL5VHW/oHjB1x48FvJk2w0oFkyD5mHNL62uSvyxhlYHq1oOVmRThr2nWhy7T3+yjZpWXgnpPD80QHC4dzXaP5BwchB6AEXGOebhREMEVcTzAWyOAwu3qTTqhJQ== X-Forefront-Antispam-Report: CIP:12.22.5.236;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(6666004)(86362001)(2906002)(8936002)(5660300002)(356005)(81166007)(83380400001)(508600001)(26005)(107886003)(2616005)(36860700001)(40460700003)(186003)(47076005)(426003)(16526019)(336012)(70206006)(54906003)(316002)(70586007)(4326008)(6916009)(36756003)(8676002)(82310400005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:34.2660 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6357841-0312-48c3-3fc1-08da31c46d56 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.236];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3136 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Extract from print_mpls_stats() a new function, print_mpls_link_stats(), make it non-static and publish in the header file. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/ip_common.h | 3 +++ ip/iplink.c | 36 +++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ip/ip_common.h b/ip/ip_common.h index 9eeeb387..63618f0f 100644 --- a/ip/ip_common.h +++ b/ip/ip_common.h @@ -3,6 +3,7 @@ #define _IP_COMMON_H_ #include +#include #include "json_print.h" @@ -202,4 +203,6 @@ void print_rta_gateway(FILE *fp, unsigned char family, void size_columns(unsigned int cols[], unsigned int n, ...); void print_stats64(FILE *fp, struct rtnl_link_stats64 *s, const struct rtattr *carrier_changes, const char *what); +void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, + const char *indent); #endif /* _IP_COMMON_H_ */ diff --git a/ip/iplink.c b/ip/iplink.c index b87d9bcd..c3ff8a5a 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1517,10 +1517,9 @@ static int do_set(int argc, char **argv) } #endif /* IPLINK_IOCTL_COMPAT */ -static void print_mpls_stats(FILE *fp, struct rtattr *attr) +void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, + const char *indent) { - struct rtattr *mrtb[MPLS_STATS_MAX+1]; - struct mpls_link_stats *stats; unsigned int cols[] = { strlen("*X: bytes"), strlen("packets"), @@ -1529,14 +1528,6 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) strlen("noroute"), }; - parse_rtattr(mrtb, MPLS_STATS_MAX, RTA_DATA(attr), - RTA_PAYLOAD(attr)); - if (!mrtb[MPLS_STATS_LINK]) - return; - - stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); - fprintf(fp, " mpls:\n"); - size_columns(cols, ARRAY_SIZE(cols), stats->rx_bytes, stats->rx_packets, stats->rx_errors, stats->rx_dropped, stats->rx_noroute); @@ -1544,11 +1535,11 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) stats->tx_bytes, stats->tx_packets, stats->tx_errors, stats->tx_dropped, 0); - fprintf(fp, " RX: %*s %*s %*s %*s %*s%s", + fprintf(fp, "%sRX: %*s %*s %*s %*s %*s%s", indent, cols[0] - 4, "bytes", cols[1], "packets", cols[2], "errors", cols[3], "dropped", cols[4], "noroute", _SL_); - fprintf(fp, " "); + fprintf(fp, "%s", indent); print_num(fp, cols[0], stats->rx_bytes); print_num(fp, cols[1], stats->rx_packets); print_num(fp, cols[2], stats->rx_errors); @@ -1556,10 +1547,10 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) print_num(fp, cols[4], stats->rx_noroute); fprintf(fp, "\n"); - fprintf(fp, " TX: %*s %*s %*s %*s%s", + fprintf(fp, "%sTX: %*s %*s %*s %*s%s", indent, cols[0] - 4, "bytes", cols[1], "packets", cols[2], "errors", cols[3], "dropped", _SL_); - fprintf(fp, " "); + fprintf(fp, "%s", indent); print_num(fp, cols[0], stats->tx_bytes); print_num(fp, cols[1], stats->tx_packets); print_num(fp, cols[2], stats->tx_errors); @@ -1567,6 +1558,21 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) fprintf(fp, "\n"); } +static void print_mpls_stats(FILE *fp, struct rtattr *attr) +{ + struct rtattr *mrtb[MPLS_STATS_MAX+1]; + struct mpls_link_stats *stats; + + parse_rtattr(mrtb, MPLS_STATS_MAX, RTA_DATA(attr), + RTA_PAYLOAD(attr)); + if (!mrtb[MPLS_STATS_LINK]) + return; + + stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); + fprintf(fp, " mpls:\n"); + print_mpls_link_stats(fp, stats, " "); +} + static void print_af_stats_attr(FILE *fp, int ifindex, struct rtattr *attr) { bool if_printed = false; From patchwork Mon May 9 13:59:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843636 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07C5BC433FE for ; Mon, 9 May 2022 14:01:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236790AbiEIOFR (ORCPT ); Mon, 9 May 2022 10:05:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236796AbiEIOFJ (ORCPT ); Mon, 9 May 2022 10:05:09 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2059.outbound.protection.outlook.com [40.107.94.59]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 150922AE8 for ; Mon, 9 May 2022 07:01:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ICtl5QnnQEbyXqf2K2bh0BqzROcLSc6rHeIJlpzZPHLeH68q6OJBhhtXkOyQtwso7AogXU+CpvXyBjPgwWENDKMm/UUI08YZgE+P/hbCGDkwTHNuTXxfHS5QiJ7BS1IGieu3E0J6irm5xmcXyyCGi4whIVQv9jWDqWry/0GIBkgk88ksQ1UvEtInzZ/DzsFe1U6wGKbMWtTInHRAY1X2PUMNflVOtYCb/+peCvChU55+HCK3TRnvr2rpYfBIU0NcUyd92dbTnKdhdJDNOH/KJKO0qrOoswH6pdD4Ro/qkMB41haHqpMzXYHbdlt/iQPNJJRPOAeH3cBWThzD5SUnlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GFvrfBGy1WdLlIBul8/wohn13mk8UoHDtjsDDSts2lA=; b=U9gEu2ZopTvsmLyvZxAmerrS0I3KAiyj/6gSxD5QuBlu8LP3iLFCo7Werg0wEfr+Aqn9epoiTczDa00thHVEnrJt860ax7tP/llvygG2/Lclh5qZymf3VpKQ6eIob0w2yxET/LQU/CP/xmkNlv6xrk3zCUaLC1mcrdo09cUWArcq2NgKCnWRtelJSjxrFM0hk/74zOlGfvVwgvrfGGhl+znrK8nJt0k3dnszkoil3CsFKRB7YfiLBPIb/PmZRc0KDZfwYdlmWfpqJoZ9MhN19+0FkWJptGmYAQ/8hUr5CUv4LHDEHOs96yYPsn1noBiPxEQs7ad/PkJuvgSaJzKo7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GFvrfBGy1WdLlIBul8/wohn13mk8UoHDtjsDDSts2lA=; b=GbtM5FAvSW819K31CmTBgXOiaBioA1yqrFlvqBVQXYOayM9er/yHh5hQ5OGony32eQ7uSs6r7Tb6eaSrFuWtDz3kejtYX8TSa52m8qEDwznKcUkXe5hC9/TIaZKKMAJBaYTOF3c3KzfrTJ+N22dPNQkemGP2Cy/wmxCvz8frc02jFg93xOUK363mVvmvrPi8+SxeRNLbCZgEWooM6tZM124aQPf7bMLz65zd/CymCiawK2VAF26Jd5pEYTQkhDTi0a0Q/QE+XrIpoRY9Q6A0ptMcbMKk+P8+salnCKR1lQCZlYR0Iks070njfUw58tCaaGYvp8AtfAJO6uINZ8FJpw== Received: from DS7PR03CA0040.namprd03.prod.outlook.com (2603:10b6:5:3b5::15) by DM4PR12MB5311.namprd12.prod.outlook.com (2603:10b6:5:39f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Mon, 9 May 2022 14:01:13 +0000 Received: from DM6NAM11FT056.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3b5:cafe::3e) by DS7PR03CA0040.outlook.office365.com (2603:10b6:5:3b5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24 via Frontend Transport; Mon, 9 May 2022 14:01:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.235) by DM6NAM11FT056.mail.protection.outlook.com (10.13.173.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:13 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:12 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:11 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 03/10] ipstats: Add a group "afstats", subgroup "mpls" Date: Mon, 9 May 2022 15:59:56 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 51c5b734-e978-42db-ceba-08da31c460f2 X-MS-TrafficTypeDiagnostic: DM4PR12MB5311:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ApggOswXBkcVEYl7MXrVFHqvGq0V9nOiFkEFU/a8iPYWKzrEYbfhLgkf9knF5pm3oJlZdecBrc0CTHzJ0UEGGg0G2xVAs93/XvloogRInCJd9739dPBi4gtDgJGYYJzZ2oUDNeezPXy296GsbC4JBKo9gMnjgSv7bJpkZpW/VHyBQ6l0GKE3mTlYe6g/2KfXWUZdrd+TqAhEUAsq3wW61FWUnia8w60K51pAJWkMkjMoeNyGt870VFgjv7y1a40uuic3Ttjc36KhwrCTFqIdCZfcgtPnUCjFZup6L3ox4usW8zeFFHRVs8y705CxJgjzEwOOYMo2LtAMz7a2YcP4L0nWa7QT/2YMywIfQ5HbfoRfTuUJasAnQvUgOjBZDS9rF8P57h/Zj5v7vqswzFnrCKWuxN9OkcgxWlhJ7KRmC5XBuHBTUdmh0bce5Xb+0NFt8O7je+ERk0epNG1Ltm5CLm3W35rvgPyfM+qyivV25fY+ACrN5Y9G0j4hmeaska9e/nJkTmvajiE+4fAhFPxh8DotR696QR02Kq7ilyseaLqd2XwMO8zphqsPowu2sPqPveDiWeJIm3+p92LnHksZ1K9H8dJ3YfpSxdfltgAbBMQ8aLlq5L4OGsx0MxHPivqLKCfdj2oLuJEIK/x7RPJ9brAhU8uG/AtcjhMuTPrpLcMtEYDN6KOPKDX3eUuuogZ8CJ1rNBesqbsGlcQStK9zDw== X-Forefront-Antispam-Report: CIP:12.22.5.235;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(81166007)(82310400005)(36756003)(316002)(83380400001)(356005)(2616005)(8936002)(6916009)(8676002)(4326008)(70206006)(70586007)(54906003)(36860700001)(426003)(47076005)(336012)(26005)(107886003)(40460700003)(508600001)(2906002)(5660300002)(16526019)(186003)(6666004)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:13.5129 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 51c5b734-e978-42db-ceba-08da31c460f2 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.235];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT056.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5311 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Add a new group, "afstats", for showing counters from the IFLA_STATS_AF_SPEC nest, and a subgroup "mpls" for the AF_MPLS specifically. For example: # ip -n ns0-NrdgY9sx stats show dev veth01 group afstats 3: veth01: group afstats subgroup mpls RX: bytes packets errors dropped noroute 0 0 0 0 0 TX: bytes packets errors dropped 108 1 0 0 Signed-off-by: Petr Machata --- ip/iplink.c | 2 +- ip/ipstats.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/ip/iplink.c b/ip/iplink.c index c3ff8a5a..d6662343 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1555,7 +1555,6 @@ void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, print_num(fp, cols[1], stats->tx_packets); print_num(fp, cols[2], stats->tx_errors); print_num(fp, cols[3], stats->tx_dropped); - fprintf(fp, "\n"); } static void print_mpls_stats(FILE *fp, struct rtattr *attr) @@ -1571,6 +1570,7 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); fprintf(fp, " mpls:\n"); print_mpls_link_stats(fp, stats, " "); + fprintf(fp, "\n"); } static void print_af_stats_attr(FILE *fp, int ifindex, struct rtattr *attr) diff --git a/ip/ipstats.c b/ip/ipstats.c index 5b9689f4..5b9333e3 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -589,9 +589,63 @@ static const struct ipstats_stat_desc ipstats_stat_desc_toplev_link = { .show = &ipstats_stat_desc_show_link, }; +static const struct ipstats_stat_desc ipstats_stat_desc_afstats_group; + +static void +ipstats_stat_desc_pack_afstats(struct ipstats_stat_dump_filters *filters, + const struct ipstats_stat_desc *desc) +{ + ipstats_stat_desc_enable_bit(filters, IFLA_STATS_AF_SPEC, 0); +} + +static int +ipstats_stat_desc_show_afstats_mpls(struct ipstats_stat_show_attrs *attrs, + const struct ipstats_stat_desc *desc) +{ + struct rtattr *mrtb[MPLS_STATS_MAX+1]; + struct mpls_link_stats stats; + const struct rtattr *at; + int err; + + at = ipstats_stat_show_get_attr(attrs, IFLA_STATS_AF_SPEC, + AF_MPLS, &err); + if (at == NULL) + return err; + + parse_rtattr_nested(mrtb, MPLS_STATS_MAX, at); + if (mrtb[MPLS_STATS_LINK] == NULL) + return -ENOENT; + + IPSTATS_RTA_PAYLOAD(stats, mrtb[MPLS_STATS_LINK]); + + print_nl(); + open_json_object("mpls_stats"); + print_mpls_link_stats(stdout, &stats, " "); + close_json_object(); + return 0; +} + +static const struct ipstats_stat_desc ipstats_stat_desc_afstats_mpls = { + .name = "mpls", + .kind = IPSTATS_STAT_DESC_KIND_LEAF, + .pack = &ipstats_stat_desc_pack_afstats, + .show = &ipstats_stat_desc_show_afstats_mpls, +}; + +static const struct ipstats_stat_desc *ipstats_stat_desc_afstats_subs[] = { + &ipstats_stat_desc_afstats_mpls, +}; + +static const struct ipstats_stat_desc ipstats_stat_desc_afstats_group = { + .name = "afstats", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_afstats_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_afstats_subs), +}; static const struct ipstats_stat_desc *ipstats_stat_desc_toplev_subs[] = { &ipstats_stat_desc_toplev_link, &ipstats_stat_desc_offload_group, + &ipstats_stat_desc_afstats_group, }; static const struct ipstats_stat_desc ipstats_stat_desc_toplev_group = { From patchwork Mon May 9 13:59:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843637 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 039ACC433F5 for ; Mon, 9 May 2022 14:01:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236806AbiEIOF2 (ORCPT ); Mon, 9 May 2022 10:05:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236807AbiEIOF0 (ORCPT ); Mon, 9 May 2022 10:05:26 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2073.outbound.protection.outlook.com [40.107.92.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9176226137 for ; Mon, 9 May 2022 07:01:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=axZdRgzr8IA9JVjDxHBFILfqZVULqV7aluwVeMRIY0WLu2Pw53g5wp2xUzjSls1ITaBbWQOsGTrLCBvPT4aULgDV+UZ3yGjxHVnh+ooOwKDrNv7VnBZeCSXeudFPpMIKuGAwMz9+DoISaRIK4HTMwCD6IPPj4/zTMM5liLYagqoCI8Ur/b4KY2ZS2XbrURrATi7qEXo10MGFID7e98QftmbEBk0UskEUTwT23q6ngeGN1F43J8aqAbayxCZkgSVrY6l/Nj0x1SZ6zzzyBTnF/YDnQ4JJYDccO8jZHGzRymWwGhSAYsBA/oDTJ5oJvNvzzNyZVt98ZE3uXKci9nVbug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IsLdGiMnO/zo26p3FeKpyEit06ffVklBF7BsEc1+Xk8=; b=ob6PPRlvwjDhbwa08Y/IO1UMxwEo/oybIPHGEkEbUpol7MDRW/yfb46pcvbNHF8hyb5DxWIMqSu1B79mcZoa4mLPlvK8FOCLeaEAIk59LorosoADG8XU4Yn2ee09sNVk7PRaAOpfe9vhO/FW/2nJSylZpyfJIvSKYPGbp8DIZNDxpNJXFt2bzkWpLwfy3eoiGlGOHyNmFdycDr2nEY6/KbNooQusRl+32AXXxdkTsXtMNMrhxh2+ILVIpxU/n9cCpEZFtWzTLx7N42s6h8EP1SnI0G/DFt2vQYQUufj0YGW5ib17Rcr0UKQOAK3tTJNOjsSveNLNL3UoXwHHkbMRQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IsLdGiMnO/zo26p3FeKpyEit06ffVklBF7BsEc1+Xk8=; b=FpG53LzQv7TJcYTATwCiazjjL5JbinnVPnDxMKwUPQX0SYGidCV1lBuCjJCio1/jQ8uXKopGRLSUMXeZeWXTwlO5a/DtlVzPjYBWKOCdwqpUQKoWzzJ89BzuP2Zua910hg6XeQfdNYF4vmYS3LxgjFYTfgn8WkWAnCEi84dbet/bAG4WSQP665dptDWXO1Rw8F6LnX5n0zLGuXM6hI9tLT3g3KPYPwZCQbD7G+tg89LR7LO+Jz2r8NyoQKpKdMHb+gFC0vU2JK3lgRaX6waHJRT6LjZSbNOFJDo/Idu9/qsh/5QqL/lTRDnwgtKASNvH07iweYHpJVheVmbL4exa3Q== Received: from MW4PR03CA0041.namprd03.prod.outlook.com (2603:10b6:303:8e::16) by SN6PR12MB4765.namprd12.prod.outlook.com (2603:10b6:805:e4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22; Mon, 9 May 2022 14:01:24 +0000 Received: from CO1NAM11FT022.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8e:cafe::eb) by MW4PR03CA0041.outlook.office365.com (2603:10b6:303:8e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22 via Frontend Transport; Mon, 9 May 2022 14:01:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT022.mail.protection.outlook.com (10.13.175.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:24 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:14 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:12 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 04/10] iplink: Add JSON support to MPLS stats formatter Date: Mon, 9 May 2022 15:59:57 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: baa4eec7-b181-46d8-f2ad-08da31c4679e X-MS-TrafficTypeDiagnostic: SN6PR12MB4765:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4RIIyqzomlMy+cTO0WuPZbWipu1TO1wECd1jlMF7B3fybUzK/ZAxiMMGSPiDA2kQOhX0IE3DBIY/b0Kyvzw0NtqDAu3dGKkIwdr0h3zDy51Wd3A+udR0aygSsI0six3PPH7BSbfle6bDqqd8CDflg8baXA2ptjseRsGDOFkRFWOmvwi3dcyFXKDCoyxPmEngX6sVq8nbqYz4swOcQBzqfFl9eEIXZmLYmnfcoOo+2OMuBDIzCMeO1CCURM/R4+htG+LSPMNcSvAuVg8yU1qY9rp/Nh/wxOIsoJBIWUK+immgSOtkzQ8EJXLn7UYgcLcfF3q2mo3OVQZJqCNt2dlqmmqVZYO0IfaGSpM8pwzW+eVTXLTQYSg+rc93G1gTOQO61ZGrdmwzhKKQrET7mcBnZPN6eNkc1q5F1k0XOHWgQd9eomBoPQNDZE9S35zpjZT8jxVCvxPCW9koUcwAjy7RaTflCr/MYOxdlHOJ5dE+sy4hqXRCPJNenPfiDxzgrHB3qZ/6L+46OtZCF/AXjHRyzEFDvkiY4Myo87SFWuoSjwoKlrCKuU1tl1RZBNnNsRjUu2wcQJAb1Bc3MMUtyRTHdpv8pgWpUjUR2wX1NOJUU6qPMS8ODyYOy/7hLquFh2dX7wjoC0/Il+aKom8VN1Exi2ZkKqb6Y71eCJbZeEqNz/1NUMDLr0DM/PK4nxlfbglCB+n+YnsvIbXJyNAZ6CVwCg== X-Forefront-Antispam-Report: CIP:12.22.5.238;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(186003)(40460700003)(83380400001)(2616005)(6916009)(54906003)(107886003)(86362001)(16526019)(356005)(508600001)(336012)(26005)(426003)(47076005)(81166007)(6666004)(316002)(36860700001)(8936002)(2906002)(36756003)(82310400005)(70206006)(8676002)(70586007)(4326008)(5660300002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:24.7073 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: baa4eec7-b181-46d8-f2ad-08da31c4679e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.238];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT022.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB4765 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com MPLS stats currently do not support dumping in JSON format. Recognize when JSON is requested and dump in an obvious manner: # ip -n ns0-2G8Ozd9z -j stats show dev veth01 group afstats | jq [ { "ifindex": 3, "ifname": "veth01", "group": "afstats", "subgroup": "mpls", "mpls_stats": { "rx": { "bytes": 0, "packets": 0, "errors": 0, "dropped": 0, "noroute": 0 }, "tx": { "bytes": 216, "packets": 2, "errors": 0, "dropped": 0 } } } ] Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/iplink.c | 69 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/ip/iplink.c b/ip/iplink.c index d6662343..fbdf542a 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1528,33 +1528,52 @@ void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, strlen("noroute"), }; - size_columns(cols, ARRAY_SIZE(cols), - stats->rx_bytes, stats->rx_packets, stats->rx_errors, - stats->rx_dropped, stats->rx_noroute); - size_columns(cols, ARRAY_SIZE(cols), - stats->tx_bytes, stats->tx_packets, stats->tx_errors, - stats->tx_dropped, 0); + if (is_json_context()) { + /* RX stats */ + open_json_object("rx"); + print_u64(PRINT_JSON, "bytes", NULL, stats->rx_bytes); + print_u64(PRINT_JSON, "packets", NULL, stats->rx_packets); + print_u64(PRINT_JSON, "errors", NULL, stats->rx_errors); + print_u64(PRINT_JSON, "dropped", NULL, stats->rx_dropped); + print_u64(PRINT_JSON, "noroute", NULL, stats->rx_noroute); + close_json_object(); - fprintf(fp, "%sRX: %*s %*s %*s %*s %*s%s", indent, - cols[0] - 4, "bytes", cols[1], "packets", - cols[2], "errors", cols[3], "dropped", - cols[4], "noroute", _SL_); - fprintf(fp, "%s", indent); - print_num(fp, cols[0], stats->rx_bytes); - print_num(fp, cols[1], stats->rx_packets); - print_num(fp, cols[2], stats->rx_errors); - print_num(fp, cols[3], stats->rx_dropped); - print_num(fp, cols[4], stats->rx_noroute); - fprintf(fp, "\n"); + /* TX stats */ + open_json_object("tx"); + print_u64(PRINT_JSON, "bytes", NULL, stats->tx_bytes); + print_u64(PRINT_JSON, "packets", NULL, stats->tx_packets); + print_u64(PRINT_JSON, "errors", NULL, stats->tx_errors); + print_u64(PRINT_JSON, "dropped", NULL, stats->tx_dropped); + close_json_object(); + } else { + size_columns(cols, ARRAY_SIZE(cols), stats->rx_bytes, + stats->rx_packets, stats->rx_errors, + stats->rx_dropped, stats->rx_noroute); + size_columns(cols, ARRAY_SIZE(cols), stats->tx_bytes, + stats->tx_packets, stats->tx_errors, + stats->tx_dropped, 0); - fprintf(fp, "%sTX: %*s %*s %*s %*s%s", indent, - cols[0] - 4, "bytes", cols[1], "packets", - cols[2], "errors", cols[3], "dropped", _SL_); - fprintf(fp, "%s", indent); - print_num(fp, cols[0], stats->tx_bytes); - print_num(fp, cols[1], stats->tx_packets); - print_num(fp, cols[2], stats->tx_errors); - print_num(fp, cols[3], stats->tx_dropped); + fprintf(fp, "%sRX: %*s %*s %*s %*s %*s%s", indent, + cols[0] - 4, "bytes", cols[1], "packets", + cols[2], "errors", cols[3], "dropped", + cols[4], "noroute", _SL_); + fprintf(fp, "%s", indent); + print_num(fp, cols[0], stats->rx_bytes); + print_num(fp, cols[1], stats->rx_packets); + print_num(fp, cols[2], stats->rx_errors); + print_num(fp, cols[3], stats->rx_dropped); + print_num(fp, cols[4], stats->rx_noroute); + fprintf(fp, "\n"); + + fprintf(fp, "%sTX: %*s %*s %*s %*s%s", indent, + cols[0] - 4, "bytes", cols[1], "packets", + cols[2], "errors", cols[3], "dropped", _SL_); + fprintf(fp, "%s", indent); + print_num(fp, cols[0], stats->tx_bytes); + print_num(fp, cols[1], stats->tx_packets); + print_num(fp, cols[2], stats->tx_errors); + print_num(fp, cols[3], stats->tx_dropped); + } } static void print_mpls_stats(FILE *fp, struct rtattr *attr) From patchwork Mon May 9 13:59:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843635 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 620B3C433F5 for ; Mon, 9 May 2022 14:01:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236787AbiEIOFQ (ORCPT ); Mon, 9 May 2022 10:05:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34462 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236800AbiEIOFP (ORCPT ); Mon, 9 May 2022 10:05:15 -0400 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2050.outbound.protection.outlook.com [40.107.212.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3542725C7C for ; Mon, 9 May 2022 07:01:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gPz1oIvE/Ue7XR5bCfYZo0D72qu1lTc74Awqde3KoSyfUaEeiaduKgWz+k4RdtjPbwuw0ab7UW/TK6hr5EfKTiVibFgf24FxTxfhbvXVuJdxxBWKpVVtLgaLsuiom2yTwvI6dDhwqBOX6WcA+cn9+wUhWx+qazlrvADVDAiXcI3f37ZP1KUi1G7OMiB+/YiyrKcQibm8p5ab8O69Us9QzYK510Iv22OOnNA1PR0i9y9/7yEmvK1pH9wo5ApNQiKlpxLqvIuWjj346ux/LDaddpY5x/s7sjk5X76/bQB502mi17fg8yR6iEPs5Sl5R64ykuyQ6ZqwPhyH54qa7Gyhdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=M7r2lDArsV5Yts/h9Bhzf4ak3GJZ7R65XInyN3Q8WdI=; b=BdeeYowmBDEjvlBhe4uMAYd3Zbe87NimtBnLG5vlTl+sNdFTsmVZHZsAGSVs/si6IkbriF3Ptw+YcFN7ZjSLwjmKuVkQ/px2sapszZW1RH0hq2KjvQ0ahr9AyV1zLGPMbyH6sLDWQkwWWvMegtvrOoUJjReysmOACvKyD/Wfouqj6vjwnfz+DRDEKJ0NcDNXweTC+5QpvAWV4QaE5Q8Y+/GUSh/U5JrqRmhdn/tBMpAKU6THVWqVKeEzOqNHzRoyFnITQDzItz00lOckyuHop8WyZ5I6gtShfWtES3+DN7Ek7rzaMpmiz40IO4l//HYq4iFiMJ5nOFSr3LqEcaqs+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M7r2lDArsV5Yts/h9Bhzf4ak3GJZ7R65XInyN3Q8WdI=; b=oeSwXc4usf4UlVddO7PScSiS/gK/FKK10djrjkvTvhC9DmddoW8RZAWjJ28fTdjKUuiintNvy1FSt3zKO/sLofz4dPjsu98qfb3vwoSHwsifRmN5xxZfdahIFyKAsk1XeZyINuvyilSbUKYVhX2B4+asA4BV/SkgDMLE+/kS6I2iP8dGmumWhSwxp8gPpxIof7Ws+VDX1baAMig5y/29kJMXMv1WOoIy+CcoAajlgRLaUK9Izdoenja/wIaYmAbjT4DGWiL5cfG0zq4Ko4keOOkAIPMdv3uzLNuSmDLRZIDC2mQc8M9gDnBNPTpEJxxIqukvHgq9rZZsvkO8ue8R4w== Received: from MW4P221CA0024.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::29) by MN2PR12MB3056.namprd12.prod.outlook.com (2603:10b6:208:ca::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.23; Mon, 9 May 2022 14:01:17 +0000 Received: from CO1NAM11FT032.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::bd) by MW4P221CA0024.outlook.office365.com (2603:10b6:303:8b::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18 via Frontend Transport; Mon, 9 May 2022 14:01:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.234) by CO1NAM11FT032.mail.protection.outlook.com (10.13.174.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:16 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:16 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:14 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 05/10] ipstats: Add a third level of stats hierarchy, a "suite" Date: Mon, 9 May 2022 15:59:58 +0200 Message-ID: <11d977863011c6bb3d764ce59d9f5863f4f042f9.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7bcc55ac-015c-437b-045c-08da31c462ce X-MS-TrafficTypeDiagnostic: MN2PR12MB3056:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ejx1vszU3eSe/Z8SWtSlwodmIsc4jHNr/Hcy5wS8QD0j2rpNpJpx5QGr8yI69lksoX7lAUsHeQOp1aJZcDNjr/gQPcibPqcrPdT/6yVI6ZtJnwN0NbruxF+POcvCzgn3XSZcQV4frH0zFjB7tjmHA/3eMMwzDJJiBgtfJhbXU+bwJrUs0F56Um1r2+WQmwqIl2I+yM13gWZ3BsbN6LH2xczJ/QKmxUwNoclbTxtVlO75nYj0iTHOZgI/UtsNI+0uIM9+R+ERfSg7oW09H7wTiY3PV3VEXyGB09Zh+6eky85oHlgYz6Kl6myQT7+6f9R+5iBv5/JGwSL6TDjXPsyQjIlGh/+gOHO7JHbcxmdzya2fcuJpHseMpKnWIaoCboQ+10jKD1FAl0STrVD2At08unv9bDaB8P5MNXSnPVnLG/qhNh9RsmyDZlPW5yUHwSy8viMhpZmyZBFqPxopl0tp1F5wnIKXsOzX0Bc9j7D54bLSWLt+VhpBQ1r/RbaLKlAYfAs2eWuBoZryPCLJYpnc1d8LJctnFyRx8rqinYNK28OkTzZBjHGRW/v2O9GuKgAeiSeohfWl0nhDYE5SspjKN8TtbazXwPMDyHQ49iQ4uEYZLEfPaPckNiw63/bXCY6Yv91gJ+ikHFvoSs8gYOOwAgCkhLuLOyXnJ16soDO2J1nXEewpjeptdcalnXmMuuW9gT5xiZI8NmMDyQsLu44fcw== X-Forefront-Antispam-Report: CIP:12.22.5.234;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(36756003)(2906002)(356005)(40460700003)(36860700001)(5660300002)(16526019)(508600001)(81166007)(8936002)(107886003)(186003)(70206006)(47076005)(4326008)(426003)(83380400001)(336012)(70586007)(2616005)(8676002)(82310400005)(54906003)(316002)(6916009)(26005)(86362001)(6666004)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:16.6272 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7bcc55ac-015c-437b-045c-08da31c462ce X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.234];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT032.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3056 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com To show statistics nested under IFLA_STATS_LINK_XSTATS_SLAVE or IFLA_STATS_LINK_XSTATS, one would use "group" to select the top-level attribute, then "subgroup" to select the link type, which is itself a nest, and then would lack a way to denote which attribute to select out of the link-type nest. To that end, add the selector level "suite", which is filtered in the userspace. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/ipstats.c | 9 ++++++++- man/man8/ip-stats.8 | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ip/ipstats.c b/ip/ipstats.c index 5b9333e3..0e7f2b3c 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -34,6 +34,7 @@ struct ipstats_stat_show_attrs { static const char *const ipstats_levels[] = { "group", "subgroup", + "suite", }; enum { @@ -1024,7 +1025,7 @@ static int do_help(void) fprintf(stderr, "Usage: ip stats help\n" - " ip stats show [ dev DEV ] [ group GROUP [ subgroup SUBGROUP ] ... ] ...\n" + " ip stats show [ dev DEV ] [ group GROUP [ subgroup SUBGROUP [ suite SUITE ] ... ] ... ] ...\n" " ip stats set dev DEV l3_stats { on | off }\n" ); @@ -1048,6 +1049,8 @@ static int do_help(void) continue; for (j = 0; j < desc->nsubs; j++) { + size_t k; + if (j == 0) fprintf(stderr, "%s SUBGROUP := {", desc->name); else @@ -1057,6 +1060,10 @@ static int do_help(void) if (desc->subs[j]->kind != IPSTATS_STAT_DESC_KIND_GROUP) continue; + + for (k = 0; k < desc->subs[j]->nsubs; k++) + fprintf(stderr, " [ suite %s ]", + desc->subs[j]->subs[k]->name); } if (opened) fprintf(stderr, " }\n"); diff --git a/man/man8/ip-stats.8 b/man/man8/ip-stats.8 index 7eaaf122..a82fe9f7 100644 --- a/man/man8/ip-stats.8 +++ b/man/man8/ip-stats.8 @@ -19,7 +19,8 @@ ip-stats \- manage and show interface statistics .RB "[ " group .IR GROUP " [ " .BI subgroup " SUBGROUP" -.R " ] ... ] ..." +.RB " [ " suite +.IR " SUITE" " ] ... ] ... ] ..." .ti -8 .BR "ip stats set" From patchwork Mon May 9 13:59:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843643 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9EF64C433EF for ; Mon, 9 May 2022 14:01:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236846AbiEIOFm (ORCPT ); Mon, 9 May 2022 10:05:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236824AbiEIOFa (ORCPT ); Mon, 9 May 2022 10:05:30 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2041.outbound.protection.outlook.com [40.107.220.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84766F68A2 for ; Mon, 9 May 2022 07:01:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=efRfBxJItIaMS6xjZuwPpd1adksgLcAhVsuug84/34j9WmtSsp2hxLQw5pFpRLMgA1eNlHxNvolxuwbOs8oJt8wc1encyPFfDIfvIAuec13S3EOCtSS5Qiv+P60BPh+VXWV4460DK3WB2HHN5ssNhL5CbCHCS48tAxBWVyhmxz8FfN2KNUjqm1+GhnLU/l+V5LY3C2dpRfbUzrxMFprmWZAGUHYSwndf/QeS5W6lQGUhnce7x9ligFZPSPLaC0pcL3PrQKMmQviCtVQnJYYfpp6WRQhSw0JEy3rWn3pFx7O6goWk3S9D4RAIkC2iAm7/U38JsyNHxZ9DlCHHGkZpHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PexPSRjSIn6wPPlriQ+Kf46mjdzWglUeVcCh6j04L5Q=; b=Nm0l5T7cSLn84Hy+xsTP+DNLTy0tFFuvug3i2SAOvanw11mcCo046CFn3x3v13rlv8kQDdvKBUdGTkrHOHfagrw/nrIPkdHyJimFZFLRubIkUeGSB1u5VKA0URpc3jN/7SVVAv2Z1jyHhTjE8Tk4e7+5Qwyj9/j3jGq/Q95L7pnhS1DYTOQMZb1BtMlmpla1QvRae0P6aeggE9MvaDRN2qcLB1OR5W7KiUrojx2yZNpc0Ehl3vRwBMdCoS4PBIyjsiVlX/gkJjz5/U1Gs6Od/No+3MjKhYFzcy5DEtGJZYO07JnaZ078hj1BI6ZVL1TVCI3tfFIM5aRU1g3Xu6wwTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PexPSRjSIn6wPPlriQ+Kf46mjdzWglUeVcCh6j04L5Q=; b=PDigMFBk2GmRWovuQJXR1bAffH1T4G24J5eja5mpGwgMiGVpzdGczON1MuS62sRcIQnjjkBi89ZbqfGGjPQX2yf+P2JoDteRygpzNqWq5qxSCWldDeC8q4omWoBGMN1UD8MvDfpP6VU81mxzg7jHHzc7mPPZ+05A+dLEL5VhUxD9C/RlZjSnwaCnGuXFcnBtyEssmBWbPmMPNsREmzZ2+g2Yb2Q0W3955jrbB+YomzTnjR/spkzLvW8H1b6r/l7lnqn7n4AxpRd+1H5F1hR43NalpqLeGyETZLTwx1QuTlbp421RryMOgSi4lH4KNlqXosGAf9xnVEcU/cSZC61nsw== Received: from DS7PR05CA0063.namprd05.prod.outlook.com (2603:10b6:8:57::19) by SA1PR12MB5615.namprd12.prod.outlook.com (2603:10b6:806:229::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22; Mon, 9 May 2022 14:01:35 +0000 Received: from DM6NAM11FT040.eop-nam11.prod.protection.outlook.com (2603:10b6:8:57:cafe::45) by DS7PR05CA0063.outlook.office365.com (2603:10b6:8:57::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13 via Frontend Transport; Mon, 9 May 2022 14:01:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by DM6NAM11FT040.mail.protection.outlook.com (10.13.173.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:34 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:17 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:15 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 06/10] ipstats: Add groups "xstats", "xstats_slave" Date: Mon, 9 May 2022 15:59:59 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b5cb4da1-da26-4485-f949-08da31c46db5 X-MS-TrafficTypeDiagnostic: SA1PR12MB5615:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FVqxZpIauOsG8rvuDcl2yMkWe3QvOtLtSg/9S53sAJSNpDXpTCY/PSpMKTK3pW0KnrRx6IJ6EjkmxEJGsI+IsxQ4KGeGFAAvnZoMXK6F+6D4d799+fxff0OaPEQJBE2h3LmIh92NYNfx0QPX52/Qvv7XIB9FAP51aFdp1wWeeBYJWe76X6LCPRHTwMvagSG1okRoSp87xA7CRtTmj334cZ82AQeS5TNW0vyP14zQ1jTnyhfX6Objwb42wgYcJdftiuDVyGZtvo3Sqe7MhnAnzk18q6L3Y1YegqDo22TeP6YmKJGAKbOSvVFuDkuMs6U6kYEVPcb4+dfiyZQvirTVRjP7WDmKMooNxg6zow1TmDZdxisUB5vkViXL1+PNKM1takCSCz6wrPTyNA14/5UWIORbbRqKj+44tJRpIlSdLvVM82AEAnHPmDgvoojYI0hsjBZJU8C0Sn+WPUEn36udgYhjzeA1YjHyG1PHZ9i2QsskFDLPU32LDLhmtEFQ25aiWk6M33G7dWps8jID9hSSvCUAr50tGFZFG/LkQ7ZTLBz/sOmdmF8rcP3/4hlC5eYCm5MYlq8JXeX36bNe4u3ssDDWX2orMszU1oxpy+HHXgW6eUlFOZ8Y/BwcVp9Z/CIJmvqGYIIXfJIKB57ELOjBF6oSk0vSU315OwpFZ3mCCgML9UhpNrsMet5pyLlrGEMLXO1fguns8HcVRrNX6SMHiA== X-Forefront-Antispam-Report: CIP:12.22.5.236;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(6666004)(356005)(2616005)(47076005)(426003)(336012)(16526019)(107886003)(186003)(36756003)(70206006)(81166007)(8676002)(4326008)(70586007)(36860700001)(5660300002)(40460700003)(82310400005)(26005)(86362001)(316002)(54906003)(2906002)(8936002)(508600001)(6916009)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:34.9090 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b5cb4da1-da26-4485-f949-08da31c46db5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.236];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT040.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5615 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com The RTM_GETSTATS response attributes IFLA_STATS_LINK_XSTATS and IFLA_STATS_LINK_XSTATS_SLAVE are used to carry statistics related to, respectively, netdevices of a certain type, and netdevices enslaved to netdevices of a certain type. Inside the nest is then link-type specific attribute (e.g. LINK_XSTATS_TYPE_BRIDGE), and inside that nest further attributes for individual type-specific statistical suites. Under the "ip stats" model, that corresponds to groups "xstats" and "xstats_slave", link-type specific subgroup, e.g. "bridge", and one or more link-type specific suites, such as "stp". Link-type specific stats are currently supported through struct link_util and in particular the callbacks parse_ifla_xstats and print_ifla_xstats. The role of parse_ifla_xstats is to establish which statistical suite to display, and on which device. "ip stats" has framework for both of these tasks, which obviates the need for custom parsing. Therefore the module should instead provide a subgroup descriptor, which "ip stats" will then use as any other. The second link_util callback, print_ifla_xstats, is for response dissection. In "ip stats" model, this belongs to leaf descriptors. Eventually, the link-specific leaf descriptors will be similar to each other: either master or slave top-level nest needs to be parsed, and link-type attribute underneath that, and suite attribute underneath that. To support this commonality, add struct ipstats_stat_desc_xstats to describe the xstats suites. Further, expose ipstats_stat_desc_pack_xstats() and ipstats_stat_desc_show_xstats(), which can be used at leaf descriptors and do the appropriate thing according to the configuration in ipstats_stat_desc_xstats. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/ip_common.h | 14 ++++++++++++ ip/ipstats.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/ip/ip_common.h b/ip/ip_common.h index 63618f0f..8b7ec645 100644 --- a/ip/ip_common.h +++ b/ip/ip_common.h @@ -186,6 +186,20 @@ struct ipstats_stat_desc { }; }; +struct ipstats_stat_desc_xstats { + const struct ipstats_stat_desc desc; + int xstats_at; + int link_type_at; + int inner_max; + int inner_at; + void (*show_cb)(const struct rtattr *at); +}; + +void ipstats_stat_desc_pack_xstats(struct ipstats_stat_dump_filters *filters, + const struct ipstats_stat_desc *desc); +int ipstats_stat_desc_show_xstats(struct ipstats_stat_show_attrs *attrs, + const struct ipstats_stat_desc *desc); + #ifndef INFINITY_LIFE_TIME #define INFINITY_LIFE_TIME 0xFFFFFFFFU #endif diff --git a/ip/ipstats.c b/ip/ipstats.c index 0e7f2b3c..0691a3f0 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -2,6 +2,7 @@ #include #include +#include "list.h" #include "utils.h" #include "ip_common.h" @@ -567,6 +568,62 @@ static const struct ipstats_stat_desc ipstats_stat_desc_offload_group = { .nsubs = ARRAY_SIZE(ipstats_stat_desc_offload_subs), }; +void ipstats_stat_desc_pack_xstats(struct ipstats_stat_dump_filters *filters, + const struct ipstats_stat_desc *desc) +{ + struct ipstats_stat_desc_xstats *xdesc; + + xdesc = container_of(desc, struct ipstats_stat_desc_xstats, desc); + ipstats_stat_desc_enable_bit(filters, xdesc->xstats_at, 0); +} + +int ipstats_stat_desc_show_xstats(struct ipstats_stat_show_attrs *attrs, + const struct ipstats_stat_desc *desc) +{ + struct ipstats_stat_desc_xstats *xdesc; + const struct rtattr *at; + struct rtattr **tb; + int err; + + xdesc = container_of(desc, struct ipstats_stat_desc_xstats, desc); + at = ipstats_stat_show_get_attr(attrs, + xdesc->xstats_at, + xdesc->link_type_at, &err); + if (at == NULL) + return err; + + tb = alloca(sizeof(*tb) * (xdesc->inner_max + 1)); + err = parse_rtattr_nested(tb, xdesc->inner_max, at); + if (err != 0) + return err; + + if (tb[xdesc->inner_at] != NULL) { + print_nl(); + xdesc->show_cb(tb[xdesc->inner_at]); + } + return 0; +} + +static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_subs[] = { +}; + +static const struct ipstats_stat_desc ipstats_stat_desc_xstats_group = { + .name = "xstats", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_subs), +}; + +static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_slave_subs[] = { +}; + +static const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_group = { + .name = "xstats_slave", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_slave_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_slave_subs), +}; + static void ipstats_stat_desc_pack_link(struct ipstats_stat_dump_filters *filters, const struct ipstats_stat_desc *desc) @@ -645,6 +702,8 @@ static const struct ipstats_stat_desc ipstats_stat_desc_afstats_group = { }; static const struct ipstats_stat_desc *ipstats_stat_desc_toplev_subs[] = { &ipstats_stat_desc_toplev_link, + &ipstats_stat_desc_xstats_group, + &ipstats_stat_desc_xstats_slave_group, &ipstats_stat_desc_offload_group, &ipstats_stat_desc_afstats_group, }; From patchwork Mon May 9 14:00:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843639 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D08A6C433FE for ; Mon, 9 May 2022 14:01:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236835AbiEIOFb (ORCPT ); Mon, 9 May 2022 10:05:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34596 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236805AbiEIOFS (ORCPT ); Mon, 9 May 2022 10:05:18 -0400 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2071.outbound.protection.outlook.com [40.107.95.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B74FD10D9 for ; Mon, 9 May 2022 07:01:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KH7ZUvfqfPnBIEg9VFI+dWtx5tyltwd/WoPMSQ2+8QSrXQv2Lk/jlEBGNOrsxPLF5s0DLDiOYi/j8ghWauvjUUUfvxiO/f2Hc2Z68e1DFkEX3lHmPU/90EVSQKtNsStge5OXrykbw4DqAtJQl3Gshf9HORVLu59p93yMFK2ci9eWrblPEZPhq0AmjetMXbkzEResBb4xkoxc7cppNFnpNGLtNPvzYn0lgqsHgXLEafYhMJlpV2raqw/NGjJrEYvF66NN1WjAU1d+Hkq0cAbjW4sQj5nZNY4W4IPkLKrbsW48/axN5rIq0joK18AnLVVLI+2Iy/VuR79U/nsAxZMLfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XH7ajTe6LAk/nu5tK9rGnRiBeyV8VN07dUCrz451cI8=; b=fJqfJxzarL8NapzrILUSkyVss0WPSsVccB0YrK0jWXFOCHlNZuX9wr/v51FGq1HniNC7fQ1T+LSJmujBVGlxNvakpat1jM3eQGrDNhHN/BMHBILH09mz7tOQyyriE8qUDyyku8yHgQqsbiR1raBw8ZlolO7juChls4heCuFK7E1rWUbTLdAPMTEDVBUI3cfnDPoBlUjDOnfobsUofxURmKxIcJbnwUS5XYhfmSzkp78j5B/6/pGzjInmlnv171dd5TbtxaTbohwxF69PU+QiulSweezqVK9Zw+jgXr3fkeVZca0sl0I8hnSAh1tW2WZoSnLEinlgMfrcanjjCYw+jA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XH7ajTe6LAk/nu5tK9rGnRiBeyV8VN07dUCrz451cI8=; b=f5swuhVVo3UTsK/oYU2whSFeElw5wynXrUh5gstHaw1BdvH6hiJsU45BCZbJb1fpg/a3+2OH9NUiONboPjYhTiBK2w/8XEA8BUZBIkTpmFcCa37Phk596VC4usOM0VhMJolbBeRHy2iYeYbILzXTEdhazDA8DjqoEKWgjxOa2fdi5/8nEofoTGDDKdTEXGc+wTNynh7BR8OP7kiEjpmgmRRfJ+boFaTze882cD7H2bUJShYcPvwtEue/GEKNIIEc1cmiggELxh/bd4zE2sXnPoMlI8iIV9Ke5MEV54tPL9zRlFwx1xijWFk8+vTO+Yeh5jygGPt99H8nDl2lVAAwJQ== Received: from DS7PR03CA0281.namprd03.prod.outlook.com (2603:10b6:5:3ad::16) by MW3PR12MB4571.namprd12.prod.outlook.com (2603:10b6:303:5c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Mon, 9 May 2022 14:01:21 +0000 Received: from DM6NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3ad:cafe::b) by DS7PR03CA0281.outlook.office365.com (2603:10b6:5:3ad::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.14 via Frontend Transport; Mon, 9 May 2022 14:01:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.235) by DM6NAM11FT012.mail.protection.outlook.com (10.13.173.109) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:19 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:19 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:17 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 07/10] iplink_bridge: Split bridge_print_stats_attr() Date: Mon, 9 May 2022 16:00:00 +0200 Message-ID: <8f0e48fde7949992f88a2be277143308728bceba.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 49ba2c33-f120-4edc-2317-08da31c464bd X-MS-TrafficTypeDiagnostic: MW3PR12MB4571:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UybOccefA84FeEPp0OevGWkUR68Ep+N7tkzKzO7IUg8AxtLvJDSpKHb2QuexNTZIdq9xIfIzlqyKuCGoFsCBjYC9KukzsBRYlN2aaJCACqcCy5aamKIlhTl/yhESd/ARljZ4r76jKOKj8LAUVNPZl6ZrqplAM4nExrfE0obyKPgy0WdKJICF8Dd8ndWOBpLHGs7pPGzh6pJBcifMZXyqzLezgTm5oOUHBCjLMDIQAwo2usVuqRUSFD2Uj3JEfgVgnHlWKzSAgcv5z25Ruuec4NVqgpDhAa8R+8Dpou4I30U5FVVpt3Q+QqAdwNnrH0IkKA5CmDzfTqOrvHd2B+Q68X0OCQtQ8zKGr+W7D9VDt2sk5oheCsJhGEddzr+gir1GX0el9b+wuuEONHUG/GXN3TNy4d5I7wEoDaux7TtaKsgdIV917GdDoPV2+wdiFviFMjlHBmFWy0BiFHyNVr8lPi+7BcfCkMJUpesSRcPLGcVE95TIgf8TNvhCOB1F3UGJGrokv4CjvnxpmAKoj0Im1R4b02UCH+Ulx96OrdwVIYUpjwkBJrZRo8vjWguEhnfFN0P3ixiHKmYL4nVhMSPqvjK5on9wQY+rJhFTDJ87rEftlNetCW3wlPVLXtIGd61qy0S7Jwi2G0ogLts7i1dRarJTN2yAcSxxs/9fdhes7T1ZSxgTYrS70QDfsNAjY06ch79/3Gk6UeIL5OMqH1LzLg== X-Forefront-Antispam-Report: CIP:12.22.5.235;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(2616005)(107886003)(54906003)(86362001)(6916009)(8936002)(316002)(4326008)(70206006)(356005)(6666004)(81166007)(26005)(8676002)(70586007)(2906002)(508600001)(426003)(336012)(40460700003)(82310400005)(83380400001)(47076005)(16526019)(5660300002)(36756003)(36860700001)(186003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:19.8251 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 49ba2c33-f120-4edc-2317-08da31c464bd X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.235];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4571 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Extract from bridge_print_stats_attr() two helpers, one for dumping the multicast attribute, one for dumping the STP attribute. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/iplink_bridge.c | 254 ++++++++++++++++++++++++--------------------- 1 file changed, 133 insertions(+), 121 deletions(-) diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c index c2e63f6e..493be6fe 100644 --- a/ip/iplink_bridge.c +++ b/ip/iplink_bridge.c @@ -714,11 +714,140 @@ static void bridge_print_xstats_help(struct link_util *lu, FILE *f) fprintf(f, "Usage: ... %s [ igmp ] [ dev DEVICE ]\n", lu->id); } +static void bridge_print_stats_mcast(const struct rtattr *attr) +{ + struct br_mcast_stats *mstats; + + mstats = RTA_DATA(attr); + open_json_object("multicast"); + open_json_object("igmp_queries"); + print_string(PRINT_FP, NULL, + "%-16s IGMP queries:\n", ""); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", + mstats->igmp_v1queries[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v2", "v2 %llu ", + mstats->igmp_v2queries[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v3", "v3 %llu\n", + mstats->igmp_v3queries[BR_MCAST_DIR_RX]); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", + mstats->igmp_v1queries[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v2", "v2 %llu ", + mstats->igmp_v2queries[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v3", "v3 %llu\n", + mstats->igmp_v3queries[BR_MCAST_DIR_TX]); + close_json_object(); + + open_json_object("igmp_reports"); + print_string(PRINT_FP, NULL, + "%-16s IGMP reports:\n", ""); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", + mstats->igmp_v1reports[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v2", "v2 %llu ", + mstats->igmp_v2reports[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v3", "v3 %llu\n", + mstats->igmp_v3reports[BR_MCAST_DIR_RX]); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", + mstats->igmp_v1reports[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v2", "v2 %llu ", + mstats->igmp_v2reports[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v3", "v3 %llu\n", + mstats->igmp_v3reports[BR_MCAST_DIR_TX]); + close_json_object(); + + open_json_object("igmp_leaves"); + print_string(PRINT_FP, NULL, + "%-16s IGMP leaves: ", ""); + print_u64(PRINT_ANY, "rx", "RX: %llu ", + mstats->igmp_leaves[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "tx", "TX: %llu\n", + mstats->igmp_leaves[BR_MCAST_DIR_TX]); + close_json_object(); + + print_string(PRINT_FP, NULL, + "%-16s IGMP parse errors: ", ""); + print_u64(PRINT_ANY, "igmp_parse_errors", "%llu\n", + mstats->igmp_parse_errors); + + open_json_object("mld_queries"); + print_string(PRINT_FP, NULL, + "%-16s MLD queries:\n", ""); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", + mstats->mld_v1queries[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v2", "v2 %llu\n", + mstats->mld_v2queries[BR_MCAST_DIR_RX]); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", + mstats->mld_v1queries[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v2", "v2 %llu\n", + mstats->mld_v2queries[BR_MCAST_DIR_TX]); + close_json_object(); + + open_json_object("mld_reports"); + print_string(PRINT_FP, NULL, + "%-16s MLD reports:\n", ""); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", + mstats->mld_v1reports[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "rx_v2", "v2 %llu\n", + mstats->mld_v2reports[BR_MCAST_DIR_RX]); + print_string(PRINT_FP, NULL, "%-16s ", ""); + print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", + mstats->mld_v1reports[BR_MCAST_DIR_TX]); + print_u64(PRINT_ANY, "tx_v2", "v2 %llu\n", + mstats->mld_v2reports[BR_MCAST_DIR_TX]); + close_json_object(); + + open_json_object("mld_leaves"); + print_string(PRINT_FP, NULL, + "%-16s MLD leaves: ", ""); + print_u64(PRINT_ANY, "rx", "RX: %llu ", + mstats->mld_leaves[BR_MCAST_DIR_RX]); + print_u64(PRINT_ANY, "tx", "TX: %llu\n", + mstats->mld_leaves[BR_MCAST_DIR_TX]); + close_json_object(); + + print_string(PRINT_FP, NULL, + "%-16s MLD parse errors: ", ""); + print_u64(PRINT_ANY, "mld_parse_errors", "%llu\n", + mstats->mld_parse_errors); + close_json_object(); +} + +static void bridge_print_stats_stp(const struct rtattr *attr) +{ + struct bridge_stp_xstats *sstats; + + sstats = RTA_DATA(attr); + open_json_object("stp"); + print_string(PRINT_FP, NULL, + "%-16s STP BPDU: ", ""); + print_u64(PRINT_ANY, "rx_bpdu", "RX: %llu ", + sstats->rx_bpdu); + print_u64(PRINT_ANY, "tx_bpdu", "TX: %llu\n", + sstats->tx_bpdu); + print_string(PRINT_FP, NULL, + "%-16s STP TCN: ", ""); + print_u64(PRINT_ANY, "rx_tcn", "RX: %llu ", + sstats->rx_tcn); + print_u64(PRINT_ANY, "tx_tcn", "TX: %llu\n", + sstats->tx_tcn); + print_string(PRINT_FP, NULL, + "%-16s STP Transitions: ", ""); + print_u64(PRINT_ANY, "transition_blk", "Blocked: %llu ", + sstats->transition_blk); + print_u64(PRINT_ANY, "transition_fwd", "Forwarding: %llu\n", + sstats->transition_fwd); + close_json_object(); +} + static void bridge_print_stats_attr(struct rtattr *attr, int ifindex) { struct rtattr *brtb[LINK_XSTATS_TYPE_MAX+1]; - struct bridge_stp_xstats *sstats; - struct br_mcast_stats *mstats; struct rtattr *i, *list; const char *ifname = ""; int rem; @@ -738,127 +867,10 @@ static void bridge_print_stats_attr(struct rtattr *attr, int ifindex) continue; switch (i->rta_type) { case BRIDGE_XSTATS_MCAST: - mstats = RTA_DATA(i); - open_json_object("multicast"); - open_json_object("igmp_queries"); - print_string(PRINT_FP, NULL, - "%-16s IGMP queries:\n", ""); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", - mstats->igmp_v1queries[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v2", "v2 %llu ", - mstats->igmp_v2queries[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v3", "v3 %llu\n", - mstats->igmp_v3queries[BR_MCAST_DIR_RX]); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", - mstats->igmp_v1queries[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v2", "v2 %llu ", - mstats->igmp_v2queries[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v3", "v3 %llu\n", - mstats->igmp_v3queries[BR_MCAST_DIR_TX]); - close_json_object(); - - open_json_object("igmp_reports"); - print_string(PRINT_FP, NULL, - "%-16s IGMP reports:\n", ""); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", - mstats->igmp_v1reports[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v2", "v2 %llu ", - mstats->igmp_v2reports[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v3", "v3 %llu\n", - mstats->igmp_v3reports[BR_MCAST_DIR_RX]); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", - mstats->igmp_v1reports[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v2", "v2 %llu ", - mstats->igmp_v2reports[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v3", "v3 %llu\n", - mstats->igmp_v3reports[BR_MCAST_DIR_TX]); - close_json_object(); - - open_json_object("igmp_leaves"); - print_string(PRINT_FP, NULL, - "%-16s IGMP leaves: ", ""); - print_u64(PRINT_ANY, "rx", "RX: %llu ", - mstats->igmp_leaves[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "tx", "TX: %llu\n", - mstats->igmp_leaves[BR_MCAST_DIR_TX]); - close_json_object(); - - print_string(PRINT_FP, NULL, - "%-16s IGMP parse errors: ", ""); - print_u64(PRINT_ANY, "igmp_parse_errors", "%llu\n", - mstats->igmp_parse_errors); - - open_json_object("mld_queries"); - print_string(PRINT_FP, NULL, - "%-16s MLD queries:\n", ""); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", - mstats->mld_v1queries[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v2", "v2 %llu\n", - mstats->mld_v2queries[BR_MCAST_DIR_RX]); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", - mstats->mld_v1queries[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v2", "v2 %llu\n", - mstats->mld_v2queries[BR_MCAST_DIR_TX]); - close_json_object(); - - open_json_object("mld_reports"); - print_string(PRINT_FP, NULL, - "%-16s MLD reports:\n", ""); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "rx_v1", "RX: v1 %llu ", - mstats->mld_v1reports[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "rx_v2", "v2 %llu\n", - mstats->mld_v2reports[BR_MCAST_DIR_RX]); - print_string(PRINT_FP, NULL, "%-16s ", ""); - print_u64(PRINT_ANY, "tx_v1", "TX: v1 %llu ", - mstats->mld_v1reports[BR_MCAST_DIR_TX]); - print_u64(PRINT_ANY, "tx_v2", "v2 %llu\n", - mstats->mld_v2reports[BR_MCAST_DIR_TX]); - close_json_object(); - - open_json_object("mld_leaves"); - print_string(PRINT_FP, NULL, - "%-16s MLD leaves: ", ""); - print_u64(PRINT_ANY, "rx", "RX: %llu ", - mstats->mld_leaves[BR_MCAST_DIR_RX]); - print_u64(PRINT_ANY, "tx", "TX: %llu\n", - mstats->mld_leaves[BR_MCAST_DIR_TX]); - close_json_object(); - - print_string(PRINT_FP, NULL, - "%-16s MLD parse errors: ", ""); - print_u64(PRINT_ANY, "mld_parse_errors", "%llu\n", - mstats->mld_parse_errors); - close_json_object(); + bridge_print_stats_mcast(i); break; case BRIDGE_XSTATS_STP: - sstats = RTA_DATA(i); - open_json_object("stp"); - print_string(PRINT_FP, NULL, - "%-16s STP BPDU: ", ""); - print_u64(PRINT_ANY, "rx_bpdu", "RX: %llu ", - sstats->rx_bpdu); - print_u64(PRINT_ANY, "tx_bpdu", "TX: %llu\n", - sstats->tx_bpdu); - print_string(PRINT_FP, NULL, - "%-16s STP TCN: ", ""); - print_u64(PRINT_ANY, "rx_tcn", "RX: %llu ", - sstats->rx_tcn); - print_u64(PRINT_ANY, "tx_tcn", "TX: %llu\n", - sstats->tx_tcn); - print_string(PRINT_FP, NULL, - "%-16s STP Transitions: ", ""); - print_u64(PRINT_ANY, "transition_blk", "Blocked: %llu ", - sstats->transition_blk); - print_u64(PRINT_ANY, "transition_fwd", "Forwarding: %llu\n", - sstats->transition_fwd); - close_json_object(); + bridge_print_stats_stp(i); break; } } From patchwork Mon May 9 14:00:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843641 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8572DC433F5 for ; Mon, 9 May 2022 14:01:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236856AbiEIOFi (ORCPT ); Mon, 9 May 2022 10:05:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236815AbiEIOF0 (ORCPT ); Mon, 9 May 2022 10:05:26 -0400 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2082.outbound.protection.outlook.com [40.107.212.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D570831234 for ; Mon, 9 May 2022 07:01:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=flXwTQc8+PcSbOfdbopIAQcBZplr3/Q32dpNpq5/nn79DlMTY28EDqajxdCnDMlqZOYjsGJK2PAOilonTYCif8lJ3t/Ctplus7afZhToYSDhxo7ZvRuxlEDhFUcPZHRLkksK2OpBnoqfdPzqrdHSvy4j6ffk9Y1drPpNzhELJp9H5AuCqDTHdEllByt7NTiaoWkksvRArB8nXE5gLxdJX9AuQKeHE93O3pWsBEZCGA+PHjEK7XH2x3WXCWSCyhNKMklPBMfzd/ZrFlbVek+6jyeL/pGGBWlBNpp6Vyl6GqcmrDKIeSt9w5Sk6ext5g3bgI5sbhoWuLKVZIPaP9EqMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Fma9NAmGZocXH40kOe1xPxHsgdtefIcKNESgKfCIwao=; b=Kd5DoF8X2Z4NJL4dZjcd7qemT+mAOL5+0KXfzo0qXWMyAer/YyJNBVNWd2xd6oEEhHVLg/clf2j470oaj10UhTWzJvUt8Abtcg8WVXunBfTXzn8ohNZgiukUvxgf4uDn+QCr/cNVFwZxz0CWDEzJXJnTRca86caHPX5Ba2Z/7ZowGaq74wKkLr2NrIA2f2yl9BMTTrySr+BrYX1lIMrBRMwwFv6ASOZ7Pzs1M6lsoLdwqtxbwzyt4yozMuKWp5HaDZf01xOXDBZUk+w0M9OXIV2iBehXVuFw7mR5XASp075z76Wxw86MvaMCyuEx6+QS/BvPahkj41pZCfuCXUGKsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fma9NAmGZocXH40kOe1xPxHsgdtefIcKNESgKfCIwao=; b=F3zAvmQLvBrDQ+nqZw/IwG08voEV7oV8WbvCksxCyT6hEvksgcoDYZ7lXavs6CNoGjiSJCInCXUDLSTnB7Gs5kKKOdi8w8Hkw4DW8O8ptMLvL4p47E5wRtoBlr8viF8ectZixF7fEpN2wS8Y/eGMloLOz7Cngo7obsjzv9U2eCkTPPD1lnx45uLNZP8HMC4UpT2dLM1faxLeTLMOC5xFd7m0yQeoQxzBjaM/emU+8B1UynxY7h1+Pcg4H9S930IthREscNbU3exC1vWwoZGo9ZL9u3IgGrdzOLGdZorCX6P9Qmzqc7ep2qc9a6mnaOn0ulHbyAu9wIKsH5KPSlnCJA== Received: from MW4PR03CA0046.namprd03.prod.outlook.com (2603:10b6:303:8e::21) by LV2PR12MB5822.namprd12.prod.outlook.com (2603:10b6:408:179::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.23; Mon, 9 May 2022 14:01:28 +0000 Received: from CO1NAM11FT022.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8e:cafe::b7) by MW4PR03CA0046.outlook.office365.com (2603:10b6:303:8e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20 via Frontend Transport; Mon, 9 May 2022 14:01:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT022.mail.protection.outlook.com (10.13.175.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:27 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:20 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:19 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 08/10] ipstats: Expose bridge stats in ipstats Date: Mon, 9 May 2022 16:00:01 +0200 Message-ID: <538c811d36953b024e4da1f8bd937cedd8d918b3.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01171cf8-adf3-489b-10c9-08da31c4696b X-MS-TrafficTypeDiagnostic: LV2PR12MB5822:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xK69ja37Q8Ks6xScIDk+4flcBh1whfMLJ3NFVWgVaHUFYqKi6MXL0H4+cDeNhaN+Y8KmyLOTbEK4cCWr0Qa4uIBrGK/syBqUh4E4JRhDz535TX5aNTKUdBm83lYeAq5mBNryIUy8U555TbNLni08aoKYlhAj/dh0SpO1t846v8EpQIFZyoXK/5kT0RagJJXbcN8wsEk1fdfE8h3Gwyr2GzLff1t6hWVegqkB9vJB9DjUI1K5WZBBrMIp6sO6AkuUaD1vl7hKjlhnXHtAm/9iSWk/+sVmskONqlCAulV6k/iIFj9imw4TZ5OtyEzd/eo9c4GmiI9AwItDmtR7/MOWJGvtY5UTG+NEmIia3kGfh70MAXNxXAWT5jJpvINlNew1Ifq4gOSTRMpXzx0S8GQg7ckEcitIMzXe2EFyy1QJqRLEL6EyS+IOLwAsM/+szRJTUZJ4qf9sCuLHQ01YNuelUEat/B304wnc0LwGch97lJ9W2aJdVFp1Muij8sHRbzMnXYPGDMLmSN3CPPnDHjpOP4b/PX0zU4JODIHDwaJd4SaEbtOi/fYqniVa1xqd+nBbmHBbyD6NiVT57sIrbNNLftU2cSgapB+Gu+9qTtuxF1ORg4QRiWFr0mZC3U5Zt/aIkWVpGOIRsuyzPsvdY3Ky818s6yiCmVRHQVpT/GqViPE/cqtGV/QnmgKDrYdGVSARs3M4P17Ynb3F3/fkc32/EA== X-Forefront-Antispam-Report: CIP:12.22.5.238;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(81166007)(82310400005)(26005)(83380400001)(356005)(36756003)(8936002)(4326008)(6916009)(70206006)(54906003)(70586007)(8676002)(2616005)(47076005)(426003)(40460700003)(316002)(107886003)(36860700001)(336012)(508600001)(2906002)(5660300002)(16526019)(186003)(6666004)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:27.7228 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 01171cf8-adf3-489b-10c9-08da31c4696b X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.238];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT022.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5822 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Bridge supports two suites, STP and IGMP, carried by attributes BRIDGE_XSTATS_STP and BRIDGE_XSTATS_MCAST. Expose them as suites "stp" and "mcast" (to correspond to the attribute name). For example: # ip stats show dev swp1 group xstats_slave subgroup bridge 56: swp1: group xstats_slave subgroup bridge suite mcast IGMP queries: RX: v1 0 v2 0 v3 0 TX: v1 0 v2 0 v3 0 IGMP reports: RX: v1 0 v2 0 v3 0 TX: v1 0 v2 0 v3 0 IGMP leaves: RX: 0 TX: 0 IGMP parse errors: 0 MLD queries: RX: v1 0 v2 0 TX: v1 0 v2 0 MLD reports: RX: v1 0 v2 0 TX: v1 0 v2 0 MLD leaves: RX: 0 TX: 0 MLD parse errors: 0 56: swp1: group xstats_slave subgroup bridge suite stp STP BPDU: RX: 0 TX: 0 STP TCN: RX: 0 TX: 0 STP Transitions: Blocked: 1 Forwarding: 0 # ip -j stats show dev swp1 group xstats_slave subgroup bridge | jq [ { "ifindex": 56, "ifname": "swp1", "group": "xstats_slave", "subgroup": "bridge", "suite": "mcast", "multicast": { "igmp_queries": { "rx_v1": 0, "rx_v2": 0, "rx_v3": 0, "tx_v1": 0, "tx_v2": 0, "tx_v3": 0 }, "igmp_reports": { "rx_v1": 0, "rx_v2": 0, "rx_v3": 0, "tx_v1": 0, "tx_v2": 0, "tx_v3": 0 }, "igmp_leaves": { "rx": 0, "tx": 0 }, "igmp_parse_errors": 0, "mld_queries": { "rx_v1": 0, "rx_v2": 0, "tx_v1": 0, "tx_v2": 0 }, "mld_reports": { "rx_v1": 0, "rx_v2": 0, "tx_v1": 0, "tx_v2": 0 }, "mld_leaves": { "rx": 0, "tx": 0 }, "mld_parse_errors": 0 } }, { "ifindex": 56, "ifname": "swp1", "group": "xstats_slave", "subgroup": "bridge", "suite": "stp", "stp": { "rx_bpdu": 0, "tx_bpdu": 0, "rx_tcn": 0, "tx_tcn": 0, "transition_blk": 1, "transition_fwd": 0 } } ] Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/ip_common.h | 2 ++ ip/iplink_bridge.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ ip/ipstats.c | 2 ++ 3 files changed, 84 insertions(+) diff --git a/ip/ip_common.h b/ip/ip_common.h index 8b7ec645..c58f2090 100644 --- a/ip/ip_common.h +++ b/ip/ip_common.h @@ -142,6 +142,8 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, char **type); void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf, size_t len); int bridge_parse_xstats(struct link_util *lu, int argc, char **argv); int bridge_print_xstats(struct nlmsghdr *n, void *arg); +extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_bridge_group; +extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_bridge_group; int bond_parse_xstats(struct link_util *lu, int argc, char **argv); int bond_print_xstats(struct nlmsghdr *n, void *arg); diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c index 493be6fe..3feb6109 100644 --- a/ip/iplink_bridge.c +++ b/ip/iplink_bridge.c @@ -936,3 +936,83 @@ struct link_util bridge_link_util = { .parse_ifla_xstats = bridge_parse_xstats, .print_ifla_xstats = bridge_print_xstats, }; + +static const struct ipstats_stat_desc ipstats_stat_desc_bridge_tmpl_stp = { + .name = "stp", + .kind = IPSTATS_STAT_DESC_KIND_LEAF, + .show = &ipstats_stat_desc_show_xstats, + .pack = &ipstats_stat_desc_pack_xstats, +}; + +static const struct ipstats_stat_desc ipstats_stat_desc_bridge_tmpl_mcast = { + .name = "mcast", + .kind = IPSTATS_STAT_DESC_KIND_LEAF, + .show = &ipstats_stat_desc_show_xstats, + .pack = &ipstats_stat_desc_pack_xstats, +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_bridge_stp = { + .desc = ipstats_stat_desc_bridge_tmpl_stp, + .xstats_at = IFLA_STATS_LINK_XSTATS, + .link_type_at = LINK_XSTATS_TYPE_BRIDGE, + .inner_max = BRIDGE_XSTATS_MAX, + .inner_at = BRIDGE_XSTATS_STP, + .show_cb = &bridge_print_stats_stp, +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_bridge_mcast = { + .desc = ipstats_stat_desc_bridge_tmpl_mcast, + .xstats_at = IFLA_STATS_LINK_XSTATS, + .link_type_at = LINK_XSTATS_TYPE_BRIDGE, + .inner_max = BRIDGE_XSTATS_MAX, + .inner_at = BRIDGE_XSTATS_MCAST, + .show_cb = &bridge_print_stats_mcast, +}; + +static const struct ipstats_stat_desc * +ipstats_stat_desc_xstats_bridge_subs[] = { + &ipstats_stat_desc_xstats_bridge_stp.desc, + &ipstats_stat_desc_xstats_bridge_mcast.desc, +}; + +const struct ipstats_stat_desc ipstats_stat_desc_xstats_bridge_group = { + .name = "bridge", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_bridge_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_bridge_subs), +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_slave_bridge_stp = { + .desc = ipstats_stat_desc_bridge_tmpl_stp, + .xstats_at = IFLA_STATS_LINK_XSTATS_SLAVE, + .link_type_at = LINK_XSTATS_TYPE_BRIDGE, + .inner_max = BRIDGE_XSTATS_MAX, + .inner_at = BRIDGE_XSTATS_STP, + .show_cb = &bridge_print_stats_stp, +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_slave_bridge_mcast = { + .desc = ipstats_stat_desc_bridge_tmpl_mcast, + .xstats_at = IFLA_STATS_LINK_XSTATS_SLAVE, + .link_type_at = LINK_XSTATS_TYPE_BRIDGE, + .inner_max = BRIDGE_XSTATS_MAX, + .inner_at = BRIDGE_XSTATS_MCAST, + .show_cb = &bridge_print_stats_mcast, +}; + +static const struct ipstats_stat_desc * +ipstats_stat_desc_xstats_slave_bridge_subs[] = { + &ipstats_stat_desc_xstats_slave_bridge_stp.desc, + &ipstats_stat_desc_xstats_slave_bridge_mcast.desc, +}; + +const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_bridge_group = { + .name = "bridge", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_slave_bridge_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_slave_bridge_subs), +}; diff --git a/ip/ipstats.c b/ip/ipstats.c index 0691a3f0..1051976d 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -605,6 +605,7 @@ int ipstats_stat_desc_show_xstats(struct ipstats_stat_show_attrs *attrs, } static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_subs[] = { + &ipstats_stat_desc_xstats_bridge_group, }; static const struct ipstats_stat_desc ipstats_stat_desc_xstats_group = { @@ -615,6 +616,7 @@ static const struct ipstats_stat_desc ipstats_stat_desc_xstats_group = { }; static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_slave_subs[] = { + &ipstats_stat_desc_xstats_slave_bridge_group, }; static const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_group = { From patchwork Mon May 9 14:00:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843638 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8499C433EF for ; Mon, 9 May 2022 14:01:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236807AbiEIOF3 (ORCPT ); Mon, 9 May 2022 10:05:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236800AbiEIOFS (ORCPT ); Mon, 9 May 2022 10:05:18 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2066.outbound.protection.outlook.com [40.107.220.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD5C72AE8 for ; Mon, 9 May 2022 07:01:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pk+gzAoSC/PhNUAIEgsY+t/4tryB2E5wRwCpxthiqOZ8YX8ZEu5a6JDrxJNIHB1xdCSBonFCqcRZGnQW+W/UP7bd9yEFCsykctbSbF/C+YQ60dDzdZuppWZ3yIRYRf53ktr82QqUwY9JZR9lN+JnqpHpQE5uCUYV7XrqX9RHQurzJLbOSSWPwEeTsOvfsu2VG6vRv5N/2zCvD26CoZK/Cv+dcpJOklBIxpWjc02YN7AdSCYo/mJvOQHtuOYiCB6k7btOkYmpS8Mog7a9fOkNq4rwwljhYr1u27+ZQPBrBkjqtWsciDT9bRs874pBozQ5i8vI6U64XBk805lQDUn33w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/bBTkgHRKwg/LlcxFjTLsCH9SzPWG6ICo4ML+E1IPL8=; b=lkHMmIJxs2zOVF8IU0dDNchFhhX/LM/kme8XlwF+xjMo4VZRZraFhHWm9qN9GGBoWQF7loZAeQKcecW1k1um5GujJEOQmrBwoXonIIOi5EfHr9aU/2qZ/XSDisZLxcBRXxKpsejDGIZ2NRrhCZW/87NLLGfEMIUuuHjjRbNWoDy3B5r8ltVkfM9fHgl212JRCVsXADiAmKTe2QYdg/J+toH8BEXqP2Edva8hDmrm2cWTlVjonbZ1ZJRB4pYsdFQvs4jo4R68i9wyZl5edhSYelFRlMIxmP5kU29l2lZ464IstjoISQV3JOxkeui1pXL3HcoIQN3UQB4t4WRi+e4kHg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/bBTkgHRKwg/LlcxFjTLsCH9SzPWG6ICo4ML+E1IPL8=; b=sVQY+cRo9V8GGBD3Sp9hI+yKsDj0gKcPIIHSOirF1FufgofJM0t7teYDYSE/PA7tbhn5j+pWIFF4FgTw+hp3bbeHz6hRKzArRDXROjszse4zfe7qk6Cygyq+td7Lvcuj+rGnRnmwff8EHAvt8ZgkUsT+KPb6lRgQroJhO9cNor7J57/fujZYUS2wR4GW0Y0YvX6shfODM7KG/8anVmKaByD5lxOTb5MOSQ/A+g4WYrdYPi9tCeog142QyfV7Jyw4TZdZ9IMqZskQZCowhn4j1BgDLzx2/M+KkCMm9Ip1zwIdSqzi/9EoOXz60qbb8CYkwGd3DY3+8Yaj3go0zfiLEA== Received: from MW4PR04CA0109.namprd04.prod.outlook.com (2603:10b6:303:83::24) by SA0PR12MB4479.namprd12.prod.outlook.com (2603:10b6:806:95::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20; Mon, 9 May 2022 14:01:23 +0000 Received: from CO1NAM11FT023.eop-nam11.prod.protection.outlook.com (2603:10b6:303:83:cafe::e1) by MW4PR04CA0109.outlook.office365.com (2603:10b6:303:83::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.23 via Frontend Transport; Mon, 9 May 2022 14:01:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.234) by CO1NAM11FT023.mail.protection.outlook.com (10.13.175.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:22 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:22 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:20 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 09/10] ipstats: Expose bond stats in ipstats Date: Mon, 9 May 2022 16:00:02 +0200 Message-ID: <5c0de4f4844bd23a3c7035826ec93d6bf71ae666.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c1e14ce9-67c9-4e28-ea87-08da31c46671 X-MS-TrafficTypeDiagnostic: SA0PR12MB4479:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YOsd/2uEnYkPkjCsRmONzJq0b7vqWut6AtVO4lguaRzp2BShmvgHQdVb408HVwoghGP9XwPtWpNqMlKE8weVuiJ1/+1LZIFbgqu7skzRUzG5mAcN6+T9uMpYz90+IQ/hXwS7WfMte47oC6fXVgeEpqkMx2HYbNtreAEodbd9rM0t+KG9qgqHcU/0AT5z77wFtUVcikPmaG1oZCz4HnSeVufaipTIuiLlbf0aW79qk2WIjAdm9rKfhP/1yWinFeP1My87tOBmNQINQlCGI93dnU2jYLtA8aQnSL/L3TVmfGNXRRC7gz+s1Mh4Q/yjUL0seRZrN7wmyDYoCSfDOcqTiutTTv11JTBrFxOjSo8qVl/4pme0ZocIuVK6iZPwKaIvfAPOJ70xlfQ6Uf0Vn9b95IvYZ6hmTnlymmFueNlV6nME97fUtioXM6rUaTszTu2k79Swry2S7Uar0XQeWbxhGx/+EtOIgL82HkBhdi629lFf/4Qyg3ZUd6t8iXL98GrEsVkzdUMD6n3FsRRDU5hRHmoYJBivWoxeridMKtaGX9UT8tUtsXACGH4f4FK69sAgaiZUsARbULmWuohY7BCbjjZF2ziRRxjHQFoOyIsyVEwiZqhFjiYTgeGh58NKUj9Iv6BAOzuaqiks9QVn79Fy4I1lZi3pchd0V1ONqpwFVjgp7cPrdJ2R1dEpIwnFrXOylfla6Ca9Za2M+kXU8g+THQ== X-Forefront-Antispam-Report: CIP:12.22.5.234;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(5660300002)(6666004)(26005)(54906003)(6916009)(36756003)(8936002)(16526019)(186003)(2906002)(47076005)(426003)(107886003)(336012)(82310400005)(83380400001)(36860700001)(508600001)(356005)(86362001)(4326008)(70206006)(70586007)(2616005)(316002)(8676002)(81166007)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:22.7345 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c1e14ce9-67c9-4e28-ea87-08da31c46671 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.234];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT023.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4479 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Describe xstats and xstats_slave subgroups for bond netdevices. For example: # ip stats show dev swp1 group xstats_slave subgroup bond 56: swp1: group xstats_slave subgroup bond suite 802.3ad LACPDU Rx 0 LACPDU Tx 0 LACPDU Unknown type Rx 0 LACPDU Illegal Rx 0 Marker Rx 0 Marker Tx 0 Marker response Rx 0 Marker response Tx 0 Marker unknown type Rx 0 # ip -j stats show dev swp1 group xstats_slave subgroup bond | jq [ { "ifindex": 56, "ifname": "swp1", "group": "xstats_slave", "subgroup": "bond", "suite": "802.3ad", "802.3ad": { "lacpdu_rx": 0, "lacpdu_tx": 0, "lacpdu_unknown_rx": 0, "lacpdu_illegal_rx": 0, "marker_rx": 0, "marker_tx": 0, "marker_response_rx": 0, "marker_response_tx": 0, "marker_unknown_rx": 0 } } ] Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- ip/ip_common.h | 3 +++ ip/iplink_bond.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++-- ip/ipstats.c | 2 ++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/ip/ip_common.h b/ip/ip_common.h index c58f2090..ffa633e0 100644 --- a/ip/ip_common.h +++ b/ip/ip_common.h @@ -145,8 +145,11 @@ int bridge_print_xstats(struct nlmsghdr *n, void *arg); extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_bridge_group; extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_bridge_group; +/* iplink_bond.c */ int bond_parse_xstats(struct link_util *lu, int argc, char **argv); int bond_print_xstats(struct nlmsghdr *n, void *arg); +extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_bond_group; +extern const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_bond_group; /* iproute_lwtunnel.c */ int lwt_parse_encap(struct rtattr *rta, size_t len, int *argcp, char ***argvp, diff --git a/ip/iplink_bond.c b/ip/iplink_bond.c index 650411fc..15db19a3 100644 --- a/ip/iplink_bond.c +++ b/ip/iplink_bond.c @@ -15,6 +15,7 @@ #include #include +#include "list.h" #include "rt_names.h" #include "utils.h" #include "ip_common.h" @@ -761,7 +762,7 @@ static void bond_print_xstats_help(struct link_util *lu, FILE *f) fprintf(f, "Usage: ... %s [ 802.3ad ] [ dev DEVICE ]\n", lu->id); } -static void bond_print_3ad_stats(struct rtattr *lacpattr) +static void bond_print_3ad_stats(const struct rtattr *lacpattr) { struct rtattr *lacptb[BOND_3AD_STAT_MAX+1]; __u64 val; @@ -912,7 +913,6 @@ int bond_parse_xstats(struct link_util *lu, int argc, char **argv) return 0; } - struct link_util bond_link_util = { .id = "bond", .maxattr = IFLA_BOND_MAX, @@ -922,3 +922,54 @@ struct link_util bond_link_util = { .parse_ifla_xstats = bond_parse_xstats, .print_ifla_xstats = bond_print_xstats, }; + +static const struct ipstats_stat_desc ipstats_stat_desc_bond_tmpl_lacp = { + .name = "802.3ad", + .kind = IPSTATS_STAT_DESC_KIND_LEAF, + .show = &ipstats_stat_desc_show_xstats, + .pack = &ipstats_stat_desc_pack_xstats, +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_bond_lacp = { + .desc = ipstats_stat_desc_bond_tmpl_lacp, + .xstats_at = IFLA_STATS_LINK_XSTATS, + .link_type_at = LINK_XSTATS_TYPE_BOND, + .inner_max = BOND_XSTATS_MAX, + .inner_at = BOND_XSTATS_3AD, + .show_cb = &bond_print_3ad_stats, +}; + +static const struct ipstats_stat_desc * +ipstats_stat_desc_xstats_bond_subs[] = { + &ipstats_stat_desc_xstats_bond_lacp.desc, +}; + +const struct ipstats_stat_desc ipstats_stat_desc_xstats_bond_group = { + .name = "bond", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_bond_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_bond_subs), +}; + +static const struct ipstats_stat_desc_xstats +ipstats_stat_desc_xstats_slave_bond_lacp = { + .desc = ipstats_stat_desc_bond_tmpl_lacp, + .xstats_at = IFLA_STATS_LINK_XSTATS_SLAVE, + .link_type_at = LINK_XSTATS_TYPE_BOND, + .inner_max = BOND_XSTATS_MAX, + .inner_at = BOND_XSTATS_3AD, + .show_cb = &bond_print_3ad_stats, +}; + +static const struct ipstats_stat_desc * +ipstats_stat_desc_xstats_slave_bond_subs[] = { + &ipstats_stat_desc_xstats_slave_bond_lacp.desc, +}; + +const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_bond_group = { + .name = "bond", + .kind = IPSTATS_STAT_DESC_KIND_GROUP, + .subs = ipstats_stat_desc_xstats_slave_bond_subs, + .nsubs = ARRAY_SIZE(ipstats_stat_desc_xstats_slave_bond_subs), +}; diff --git a/ip/ipstats.c b/ip/ipstats.c index 1051976d..5cdd15ae 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -606,6 +606,7 @@ int ipstats_stat_desc_show_xstats(struct ipstats_stat_show_attrs *attrs, static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_subs[] = { &ipstats_stat_desc_xstats_bridge_group, + &ipstats_stat_desc_xstats_bond_group, }; static const struct ipstats_stat_desc ipstats_stat_desc_xstats_group = { @@ -617,6 +618,7 @@ static const struct ipstats_stat_desc ipstats_stat_desc_xstats_group = { static const struct ipstats_stat_desc *ipstats_stat_desc_xstats_slave_subs[] = { &ipstats_stat_desc_xstats_slave_bridge_group, + &ipstats_stat_desc_xstats_slave_bond_group, }; static const struct ipstats_stat_desc ipstats_stat_desc_xstats_slave_group = { From patchwork Mon May 9 14:00:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 12843644 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A079C4332F for ; Mon, 9 May 2022 14:01:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236863AbiEIOFn (ORCPT ); Mon, 9 May 2022 10:05:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236826AbiEIOFb (ORCPT ); Mon, 9 May 2022 10:05:31 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2089.outbound.protection.outlook.com [40.107.220.89]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 218BC106369 for ; Mon, 9 May 2022 07:01:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VZoN0MAwsd7eVdfHb6wjOoM+1//9LQw5C7BKa4B6GJ3v/3ckqXybC2bQXedS/iiGkgORI26b1ZrXX+8TGoBut+CMUgI4i77L6NBNW3l3rflLeJ4mf3vX4Nb5xuQMtSftdhY8MRPJfBtWCPLJ7pTMJBEcJRk2iVKj0y6RVqHogaN20jcISGRGhHh/ZNC+2BC6KA96fRzjIuS1jRSD56YQ7yeTMK/SUHEDYcNiE4fas53kMNa1emMlQCAwsZKpXs+RNH/jjot6zr/tivKzS6MEZlq0eDDjronkBvncLjg3EsqD45dpTjz7gTJXkKnVeRLg7CSGTVkhBzppib/jNyOZHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PVabmntvvWxAdolbhoSb3iWR+Rt2fYGWRunTaTrFQgA=; b=CZPGOnuSpKYnLpdEbMcvpJDYi0Jf93Lfl9efyzpgeyOWEB1g1Eu+gkftFUo5182K+7TtKQl+ijxZEoD+Gq8Xil/AGTVP6DzXnoRPvNPr8zPPGx/TnzzblWIqfc08bYxAIpbo3Uu6rApevlB7hZoA/nIzNHZy320xP5bgySy/gZVJCu0KmNJmy+rrme/u0rV/nTQLAUBNCdoiQFSyIW/52YH0mVcUqOj9ZTSiGbGZVkEuzp8nqe1Jtl8n02V+NhSImiuwVOkYgFkTvxmap0d8/F557y6FJBzCvQiz0ngYtmQCENY88J32LvUAd2CFpko9vPbil1CAu4VFa/z5j3Qrvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PVabmntvvWxAdolbhoSb3iWR+Rt2fYGWRunTaTrFQgA=; b=Rh3Vhfo7t9923VWnMvNOg454ICy9QvzjEthaNLY2xDLC7u0yvGe1sI6RZxyVPo44VEYmOj8W+EXtUlxA2ONUQ6q0BWYQDvP/QoPd1VfcX44gmpzB2WpdL2XQzwqtbdxR0B6FcMQvQQCzHGaHccvyN83RLqkMc0yyD5uIXfDqwdxyx2aYjCsEGCjQrQ3TsVN0J4XyQgpbHjEUIGIixXIiNhdagHnguXh12/exlH7dcc7ZJ1KY4G+UQE+CnPHrS9+4sfcmfit6VhRZ6KpcG59p/pIPcrohFyyPCHvyuD6TQJWndELzVMhwvP89M1qS3HXzhpXu1k6lO9ZgCnC101/ouQ== Received: from DM6PR02CA0164.namprd02.prod.outlook.com (2603:10b6:5:332::31) by DM6PR12MB4140.namprd12.prod.outlook.com (2603:10b6:5:221::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Mon, 9 May 2022 14:01:35 +0000 Received: from DM6NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:5:332:cafe::24) by DM6PR02CA0164.outlook.office365.com (2603:10b6:5:332::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22 via Frontend Transport; Mon, 9 May 2022 14:01:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by DM6NAM11FT050.mail.protection.outlook.com (10.13.173.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:01:35 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Mon, 9 May 2022 14:01:23 +0000 Received: from localhost.localdomain (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 9 May 2022 07:01:22 -0700 From: Petr Machata To: CC: David Ahern , Ido Schimmel , "Petr Machata" Subject: [PATCH iproute2-next 10/10] man: ip-stats.8: Describe groups xstats, xstats_slave and afstats Date: Mon, 9 May 2022 16:00:03 +0200 Message-ID: <57a3cc7e722151ad66c84291f292eeb13328c5a3.1652104101.git.petrm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eba3c087-8072-494a-59f7-08da31c46e17 X-MS-TrafficTypeDiagnostic: DM6PR12MB4140:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7ZIMNPj81penukmzewS5TTyOmv7m03762ApZXquYAGXpBo9g7gfEsA3PPMh0+mLpQCSRpT8nBmqMuQfqbnbZAYF0qNLY7gltDhrMWIhgZh3Bl5FsGKljHoZH9tRl5aNiuUYbItW58TwO95nX/6VKedgPJLxb5eoUXHlqTBFh7ApMabWMuOLoiON8v6o9UlotX4gQDT6dvsCKfXgZQuUHHWK2wvFf1lQBTXikN0c9rT2YJ1Z6vF6a9uR4d+7hYYhfWkBrgcnf9x+djpfSz4iMMzL74pwB29oAVAzH5KH6gAhDdLoPaQvyHcLJCK76HpU56RCdK8sLSy7LZUGtSGfWaqTblgWuilCopY9ZKpS+WcGSvETasdlV1UPf6WkhYrlhNjrruBZiKUOrbmlYnvagbdMk3Kefenb9laVcUSHcYmOq+1kSOEfxQuIvDTEKQmQLs3wuDRRfyjIJpE0eJpWgvCOkwOnuH34jWMsppZV6wBDBuyESnQ9g+XqJRqjGSH778S97+jlmk1qy7N9Qo6vuhut781CaiWR3roUlEvucA3KfHzwzSpN6XU8VfNaaMR56imymmpcHmtoOiU/iMbn/+nWgQGzQp7Dk0lHesw+55XzYzt7NWqD9PqTtO3KzOMA8ktYO0NV8fLSDCuKbiIkDqCu1m+XccbGA9y3kCSyM5pkCB5tJmE1KTgZa4/jxiY/7QKLWp5Zx9POkPQYfsaMZTQ== X-Forefront-Antispam-Report: CIP:12.22.5.236;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(36860700001)(54906003)(316002)(6666004)(36756003)(86362001)(2616005)(6916009)(107886003)(16526019)(47076005)(356005)(186003)(426003)(40460700003)(336012)(82310400005)(8936002)(8676002)(70586007)(81166007)(4326008)(26005)(70206006)(508600001)(2906002)(5660300002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:01:35.5471 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eba3c087-8072-494a-59f7-08da31c46e17 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.236];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4140 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: dsahern@gmail.com Add description of the newly-added statistics groups. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- man/man8/ip-stats.8 | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/man/man8/ip-stats.8 b/man/man8/ip-stats.8 index a82fe9f7..26336454 100644 --- a/man/man8/ip-stats.8 +++ b/man/man8/ip-stats.8 @@ -68,6 +68,20 @@ The following groups are recognized: - A group that contains a number of HW-oriented statistics. See below for individual subgroups within this group. +.ti 14 +.B group xstats +- Extended statistics. A subgroup identifies the type of netdevice to show the +statistics for. + +.ti 14 +.B group xstats_slave +- Extended statistics for the slave of a netdevice of a given type. A subgroup +identifies the type of master netdevice. + +.ti 14 +.B group afstats +- A group for address-family specific netdevice statistics. + .TQ .BR "group offload " subgroups: .in 21 @@ -133,6 +147,39 @@ For example: Note how the l3_stats_info for the selected group is also part of the dump. +.TQ +.BR "group xstats " and " group xstats_slave " subgroups: +.in 21 + +.ti 14 +.B subgroup bridge \fR[\fB suite stp \fR] [\fB suite mcast \fR] +- Statistics for STP and, respectively, IGMP / MLD (under the keyword +\fBmcast\fR) traffic on bridges and their slaves. + +.ti 14 +.B subgroup bond \fR[\fB suite 802.3ad \fR] +- Statistics for LACP traffic on bond devices and their slaves. + +.TQ +.BR "group afstats " subgroups: +.in 21 + +.ti 14 +.B subgroup mpls +- Statistics for MPLS traffic seen on the netdevice. For example: + +# ip stats show dev veth01 group afstats subgroup mpls +.br +3: veth01: group afstats subgroup mpls +.br + RX: bytes packets errors dropped noroute +.br + 0 0 0 0 0 +.br + TX: bytes packets errors dropped +.br + 216 2 0 0 + .SH EXAMPLES .PP # ip stats set dev swp1 l3_stats on