From patchwork Wed Apr 18 18:27:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nitin Katiyar X-Patchwork-Id: 900041 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=ericsson.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="hfY8t6AU"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="FLShirm4"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40QyvG5lN1z9s5H for ; Wed, 18 Apr 2018 20:26:02 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id BAC1EDB8; Wed, 18 Apr 2018 10:25:59 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id B290FDA1 for ; Wed, 18 Apr 2018 10:25:58 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 8A219573 for ; Wed, 18 Apr 2018 10:25:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/simple; q=dns/txt; i=@ericsson.com; t=1524047155; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=0FXZ97ablgQ5CVch6gWshXc5WcnvtYflpll96g3+QW8=; b=hfY8t6AUqo6mEvq0DNjzPHjOHDMal1fvBem83yKRowQWLS3/2J9OVWDcpwJAT6MU TDqbsrL5pyPiD7rDWO4fgAtICU4wtFS/xeIXuglN6j+Hx0aW6OfV5v6oRK7F+pJi /vFMCBuycb9Zvz2pyMchKvMtJCVxyZYywtNU0e/puk4=; X-AuditID: c1b4fb3a-eae319c00000795a-26-5ad71d339575 Received: from ESESSHC024.ericsson.se (Unknown_Domain [153.88.183.90]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 29.49.31066.33D17DA5; Wed, 18 Apr 2018 12:25:55 +0200 (CEST) Received: from ESESBMR503.ericsson.se (153.88.183.135) by ESESSHC024.ericsson.se (153.88.183.90) with Microsoft SMTP Server (TLS) id 14.3.382.0; Wed, 18 Apr 2018 12:25:48 +0200 Received: from ESESBMB505.ericsson.se (153.88.183.172) by ESESBMR503.ericsson.se (153.88.183.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26; Wed, 18 Apr 2018 12:25:47 +0200 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (153.88.183.157) by ESESBMB505.ericsson.se (153.88.183.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26 via Frontend Transport; Wed, 18 Apr 2018 12:25:47 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=My+K7vb26KuJLxvnWbh3e1LrP5mbpB+YWdhNS2k6N14=; b=FLShirm4X6jp2vXThPVxOtorFrw4aXwN1Dmf8Wgvs7jaxpHmdZAoThl2E35zMB6IVdb5DWHifvvif/PSipTAwdkdowOhlRmBPl92InDP4zMeqWvbmRf6caN5W+gpBKT9OsZukuE8ChNqedKIh7h1NVg8C7rgdnqvlEj/bafGwM0= Authentication-Results: openvswitch.org; dkim=none (message not signed) header.d=none;openvswitch.org; dmarc=none action=none header.from=ericsson.com; Received: from localhost.localdomain (125.16.128.122) by HE1PR0702MB3626.eurprd07.prod.outlook.com (2603:10a6:7:8c::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.696.8; Wed, 18 Apr 2018 10:25:45 +0000 From: Nitin Katiyar To: Date: Wed, 18 Apr 2018 23:57:43 +0530 Message-ID: <1524076063-12507-1-git-send-email-nitin.katiyar@ericsson.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-Originating-IP: [125.16.128.122] X-ClientProxiedBy: BM1PR0101CA0040.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::26) To HE1PR0702MB3626.eurprd07.prod.outlook.com (2603:10a6:7:8c::24) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0702MB3626; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0702MB3626; 3:xIjpgR41Y5sVfSx4rXIYRUwoFzCvADWvoh9/QNL8/TIPzQLsNemR2DENPuV+g2N0yozL2U0Sh+KUmkFOkJ2/I5jMQ8Kc8BWYpHhKvhkFBGMcxDHMrDRr1eQ+my+OzlowoNBnskT8ew9qBe79yXL5UWiJbhQ7k9GhtFJVJ0wk4AjB6ZgIE6NX0b10KSJFFXLoIxRLaLCox30QcQICGFpZZbMnDrO87mQUBqbWNHw4SWFS66LFn9S0/cxVNnKtJnDe; 25:0oovXpokUWNNWMZmaBjjJ9YakcPevIUIF7kEoUDuJaC6bC4dSgntr1VTQNIFvz0fYA+8b00MUT6QfROD2XLelRTog+4irKTtLhxI5mMmIoTlLcODGQecT6GRh73Fm2HF5Y9LBCXAFN1gaf06dRsnvusoyuNUo3O8bDGRwA+6BFDts1cnrJk2trpYB3J0qC4Pjmi+30K5fMeU8UEiqM3nHcEQEHGs6QH62mxPQguXutQBN4BBR33SbHYDDOjehM+dPSpfQFHNjMtFgj1TtdkNkjCV8F9ZYudAQvzO4eLhptNusOxmEq9rJakAc/bomuyi0pD9VYK06z7G0EtAXfrzPA==; 31:7jhdh9gVG0w9kEMDeznrkTb0Gje+bRTDfUxaBj67vw5KPmHjp/BgIQCv96konZaSNhiK7rNraLhweTOFUw15+6GG2G8hw6u0/yzBAGoekU8PdhDn5+6PqL4E8MnoaUuPV5EJNXTWUbub9WVOdfPWHlkiEYBLHGA/+bPNQAB/6djIfI/r4v7enBOFNNo5VVRPGaaKAiqIGiXJHLlm5JAXw0NKun4EC2PEB6xbn19hPsI= X-MS-TrafficTypeDiagnostic: HE1PR0702MB3626: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0702MB3626; 20:KKEotdGcZRtArstFflHABwqFO06QgiQYuNK8c6iPvoz9C2EnvhUIS0EePW+FTRHEBFgQJILRi+tAg3IcIo9eufYCaOPWLAc3YnNDRMrs55+ES7GmO3bltjPl9+E4SevQnryf8mnDNZSeoIJN4AobCjl4PRHwYV8qN4VNll7r0HeNzAV3d7NfAvLKBQ42UxC/j4RF+Bx6SCBx3IZzfkTDs9oTc6+L+JQ0YN07AklL7uy3GejtgLy2Z8nqFsRJZfkhdwLmGRQ8wounIVUJbyQjaROiUB2qbHHZt18hnYz5QfIiYWx3W+82BS8f4SAAVskGCv1KoF2G8EqqwZ+I+ku0De+P4DD8YFiO1RIsBqwJYuwuSgaG6k2pfZMmJs+ZDjPIugrPqh10CgpRVtR5UmHE/tInfyKb4YO6wf7zrY1FrdqOq1a5UQwOlTtckr6FTYrYxW4fVXW54HutFVHE6oHZigcBiUs0RFwMFWuX72e3+LQhfFleU3Pi0eGtJCKfCx9f; 4:2b0wZdGN8xKeo+qpC1biE5BK/tpo2S9ces0CvLK7lrCKT9hDc9JIYdGu1KiMnTPLoWtoZIfPz1hYVuospMb+6BZ7E/u8PhEjrUz7CiawYAIT7EWurM7H9OsgiCIppPSooieqDyg1OOkxC6/aJievECRJhOFfnTrc1JUo3G881f6KAyxui659kUzwApDnaA4ktLLOUsI/l6grmpjcJTQEoaet8REDQWiM9GEerkajAko4zG8BmUEOx/vI8uuY2zO00zvLrIZmYe00mmGv8j21ycQVieAE3DBaV/002C64DcPpkX8TB8REAS78w0sut4PK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(37575265505322); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231232)(944501327)(52105095)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0702MB3626; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0702MB3626; X-Forefront-PRVS: 06469BCC91 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(376002)(39380400002)(396003)(366004)(39860400002)(48376002)(36756003)(316002)(956004)(2616005)(476003)(16586007)(52116002)(3846002)(2351001)(2361001)(6116002)(16526019)(50466002)(51416003)(4326008)(86362001)(53936002)(59450400001)(97736004)(107886003)(6512007)(186003)(26005)(66066001)(55236004)(1857600001)(386003)(6506007)(5660300001)(6486002)(25786009)(478600001)(7736002)(305945005)(81166006)(47776003)(8676002)(44832011)(6916009)(5890100001)(2906002)(50226002)(8936002)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0702MB3626; H:localhost.localdomain; FPR:; SPF:None; LANG:en; MLV:nov; PTR:InfoNoRecords; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0702MB3626; 23:yHAEWjdxabXzpb2I6Cf6M89uyID6iMY87nAdqgp?= LhYC0R0/dKZXGG1cfa3XnnbXpKUaGmFJZmyugeN5nlEPEfRZEFF2c+jGfaG3NrrISP0Jtiwl/HSyOM5fYmFdByrbIR5ehb2RPn7VWFKfRSSiLYlPWGqCufqbNHQQDMoJVB+U6x6niWDYvBW/9Bi97c2YE7Truxii7W8NP92o07g7gNHVXsyFCD2PbNOkIRD+TVdIUQ/GqN7flSAyFctxTtIN4SmfmSQOhBkD6IvC7uCLuuAkWuYLVOEL7NSkqhZs/Nzo/oYaPPBdDb4aXypVn4osYVNmePZlXHlQQ2+clqA0uaUSduiQDH3rS/KWpSBM1z38QqccLS5Upaf9dUFU3thcu0c3rF46FsfofFmhZa3WyZOposkAusI4B3cTZAqj8WT2/kBsB+/Z71Txc6Lp9qsPmIlG+2tVwVPa+XC9BCrJrBwYEzUT5hu3tqHtJ537Tyo8SQy625Odgv8OK3C81gR6sxwMMipv/37nZBZGm5mTJUldk58+xpIJ0CEW6OtCFMMMOHiQvLz/HAM81GB5IZA3iZGfx97mpOmSZkhtfW1CrwhmOk3xZYa/4Sm9U7I8QyGU5bn21KGDiD9uRnYim1DuUYQ2+RRZzVAEuMxCTg3VXoFRNGCywRlxUoR8GL/RlrWIQrYfeF+FmRnF0G1JjXwQDC6TT9SGDQv+TD6VAPLIE8zpfrf8HfgHEk2D+AKTUvU3kxR9BSwsTnFOUHqomTHmiB0IdwIcHn77OgIk52WMTZ/VyuHdhCv5IDtDh6AuNhu/H4wr54NEkkQRi1OKw2B6y0WsfHV6iOLiz9khhqzvsKBt/Li5DYV5xJQm2bLFbb1UaBrKcMWthcg9IBMPWkNQxSwr+9T4vJjoD5+v5E0k0LO48ZXpvboHphyreJiyDlJp85QWEf6QeQhbDQuSulfs5EeuNNuTAbxRQv0IFZZ0vSZCKEvZPQhAtj3GUZ5xHYl8Abns7eE9PLmdRJ3xSMmEgmgUjrbP3PJjmoraSVSFT3LaAaks9ZuO711OwUKM97Rh55lgXcIY4P0ww4fVXL69g0UNZTZUBqDfqAoUKnIcPtIS9xCHiI0UUvebK0FiFC3VydRthV3FoEkT57+cl2/WS8RYe0vwgMr99IORY+ZASobg8djhgcRWT36RJqM6/fL0= X-Microsoft-Antispam-Message-Info: 4DgIB4evyVUa7sI71NtDjqxIeo1SHZ4hpGM+ZprCj2Hcs58lNXfTlhEMLAEMC/bC5jdKzLGgg/ypypA3i8nPPwfpbJi6FNLcF2jCl9zK1i2S72kNcTYo0c+Xf1Ih4md9a+FaAIx/Z7V4a+NjCq/hg7kBNr0BrrbRtQbGyigQNOx6jiNVIh6b3r7+barxde0d X-Microsoft-Exchange-Diagnostics: 1; HE1PR0702MB3626; 6:0BSNwf/msll+nyba7aW7SNsk4sjgldcMQ4eg1g+x77DMYVYB+iAGXbSX70bYBwzDIGW7dN5sNrLJz46UoF+yJdFiIe2S4myy7fJHJsoQAPgQOyviO2fTUOTpo0iGhoTqQ8eZRwmHJ+0IPzkxNAIbaw2kTsHo8/pnsz8bN7ZQP4rN9Vetw9DYEi4owR3WorxlbWN4H4UblAEkXVOp1uSxbfQGKSsN1+45ERilPeSe8aJmAyVGaEKy4m7SN2/uVaJO6zxa+MSgOo7sp8lcbGcRENQaPRjYJvTW3yMK05fgaQ9UXIQLO5Bit8vJDRV1RiyRifR5lddg65EXTpsOuL4yT55XB3OgVW58CQvdXTlWjsCRRfYrLWYJ7AiUYzt3jE1mqBuCByAVFtmOPvEQlbrQRdbnv1PIraNOZILs9Xf2EKkcvOg0C7ETykrKsw2YenbdDLU3oNUFVJmH5XCPRaxQMQ==; 5:IK1qxEHe834ek5SY+kuG/VGrslA7ypx925jjEtfdtrJFFtUy2fbjzkvn02kdcJNccpwXKHkYbYtJNojydnPIc+REWqjluSkRUOg42LlJ3uMX5bBOwm7zmJBqBNX1wp72Sczt18RwAi0qwGCvj3ERKMRHwCp0XWdAkXolUr4IKXw=; 24:z5GHHYDefx05C4eQzIUDG53q6tlJTwIRuQ7ezoAiTX45GRxbmtYw57bkCo8f96WFDBMB53rROuWoCdMsUEHlR/y3OsZRsWOAQRSFBesquRk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0702MB3626; 7:LWtrs9whHTaS4T4KNTNHjz60UP8BrCmFmCFiBtqeWWoPb009zdGrVhK5FcUiOX2kKDmJB1wCjZZOCK75xwkXFL0LyZjLkrDIocfeK//LSB5JwVxjq6kqvfnVyDsKdwngKCvTBpgAHFeiv6WuaynA1cjTwUcfhKaYZyA6VxlA/Ts6/lGENHzvCIqMYKOSr9vnjDImKgyDyhRQbYrlaMYUrHI4wjoBy+YPdjZeL/eCQP28TxkUR5bqUI2kjwnleP0j X-MS-Office365-Filtering-Correlation-Id: ee4288fe-a74b-4b98-020c-08d5a516bf84 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2018 10:25:45.7037 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ee4288fe-a74b-4b98-020c-08d5a516bf84 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0702MB3626 X-OriginatorOrg: ericsson.com X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsUyM2J7lK6x7PUog+7fRhZHT+9hdmD0eHbz P2MAYxSXTUpqTmZZapG+XQJXxsubm9gLJphXTDzfz9zA+EWji5GTQ0LARGL+wl9sXYxcHEIC Rxgl5qw8zwqSEBLYwijx/4QuROI7o0T/+ntQiaVMEqvW64EkWAQ+MUlM/TqNFcRhFJjNKLH+ 4g2oWe1MEmv/9TGBtLAJGEhsvziJHcQWEZCU+Ld4C1ARBwezgJ7Egr1gU4UFLCQ2rDrNCGKz CKhKdDw7xwZi8wp4SXTe/sIKcaucxMljk1kh4oISJ2c+YQGxmQUkJA6+eMEMUaMksWvzfWaQ GyQEZjJKzHhxlwXibHWJJ4+6mSCKZCWOnp3DAlF0kFFiS/snqI4mdonnq/ewQFTpSLS+3csK kfjFJjFnbSsbRCJfYvHFNqh9VhKvf31nhChaySwxe/UPRoiEjMTVY2+hdixilVi/ZT/UqDs8 Eq/XXYNqecwo8enEB+YJjNqzkLw1C8lbCxiZVjGKFqcWF+emGxnppRZlJhcX5+fp5aWWbGIE JoCDW35b7WA8+NzxEKMAB6MSD68l//UoIdbEsuLK3EOMEhzMSiK8Ox9fiRLiTUmsrEotyo8v Ks1JLT7EKM3BoiTO65RmESUkkJ5YkpqdmlqQWgSTZeLglGpgbDiZU6HT03Qz73HhhCy+D88s 049N9mhbeDjw8uJNsxT+mp+orNQXmneuWWJJt9dcTqEZ3svCzjBUxbGt6TcySlGcco3tqBpT w+SVOzfOvLhntvHHf0YrehlXcG0XOR7x7vMW8dX3nLOWVRw8dT84ZaPorjV3Lr5vM5fU1daM Up784L96yv3/nUosxRmJhlrMRcWJABAQ0Vz8AgAA X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00, DATE_IN_FUTURE_06_12, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Nitin Katiyar Subject: [ovs-dev] [PATCH] Adding cli for displaying LACP counters X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Currently OVS does not provide any command to display stats for LACP without which it is difficult to debug LACP issues. Here we propose to display various statistics about LACP PDUs and slave state change. Sample output: ovs_lacp # ovs-appctl lacp/stats-show ---- bond-prv statistics ---- slave: dpdk0: RX PDUs: 128 RX Bad PDUs: 0 TX PDUs: 5 Link Expired: 2 Link Defaulted: 1 Carrier Status Changed: 0 Signed-off-by: Nitin Katiyar --- NEWS | 2 ++ lib/lacp.c | 79 ++++++++++++++++++++++++++++++++++++++++++++-- vswitchd/ovs-vswitchd.8.in | 6 ++++ 3 files changed, 84 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 77c2b43..bdbe7e2 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,8 @@ Post-v2.9.0 default it always accepts names and in interactive use it displays them; use --names or --no-names to override. See ovs-ofctl(8) for details. - ovs-vsctl: New commands "add-bond-iface" and "del-bond-iface". + - ovs-appctl: + * New command "lacp/show-stats" - OpenFlow: * OFPT_ROLE_STATUS is now available in OpenFlow 1.3. - Linux kernel 4.14 diff --git a/lib/lacp.c b/lib/lacp.c index fdefeda..8353746 100644 --- a/lib/lacp.c +++ b/lib/lacp.c @@ -127,9 +127,12 @@ struct slave { struct timer tx; /* Next message transmission timer. */ struct timer rx; /* Expected message receive timer. */ - uint32_t count_rx_pdus; /* dot3adAggPortStatsLACPDUsRx */ - uint32_t count_rx_pdus_bad; /* dot3adAggPortStatsIllegalRx */ - uint32_t count_tx_pdus; /* dot3adAggPortStatsLACPDUsTx */ + uint32_t count_rx_pdus; /* dot3adAggPortStatsLACPDUsRx */ + uint32_t count_rx_pdus_bad; /* dot3adAggPortStatsIllegalRx */ + uint32_t count_tx_pdus; /* dot3adAggPortStatsLACPDUsTx */ + uint32_t count_link_expired; /* Num of times link expired */ + uint32_t count_link_defaulted; /* Num of times link defaulted */ + uint32_t count_carrier_changed; /* Num of times link status changed */ }; static struct ovs_mutex mutex; @@ -153,6 +156,7 @@ static bool info_tx_equal(struct lacp_info *, struct lacp_info *) OVS_REQUIRES(mutex); static unixctl_cb_func lacp_unixctl_show; +static unixctl_cb_func lacp_unixctl_show_stats; /* Populates 'pdu' with a LACP PDU comprised of 'actor' and 'partner'. */ static void @@ -206,6 +210,8 @@ lacp_init(void) { unixctl_command_register("lacp/show", "[port]", 0, 1, lacp_unixctl_show, NULL); + unixctl_command_register("lacp/show-stats", "[port]", 0, 1, + lacp_unixctl_show_stats, NULL); } static void @@ -459,6 +465,7 @@ lacp_slave_carrier_changed(const struct lacp *lacp, const void *slave_) if (slave->status == LACP_CURRENT || slave->lacp->active) { slave_set_expired(slave); } + slave->count_carrier_changed++; out: lacp_unlock(); @@ -525,8 +532,10 @@ lacp_run(struct lacp *lacp, lacp_send_pdu *send_pdu) OVS_EXCLUDED(mutex) if (slave->status == LACP_CURRENT) { slave_set_expired(slave); + slave->count_link_expired++; } else if (slave->status == LACP_EXPIRED) { slave_set_defaulted(slave); + slave->count_link_defaulted++; } if (slave->status != old_status) { seq_change(connectivity_seq_get()); @@ -994,6 +1003,40 @@ lacp_print_details(struct ds *ds, struct lacp *lacp) OVS_REQUIRES(mutex) } static void +lacp_print_stats(struct ds *ds, struct lacp *lacp) OVS_REQUIRES(mutex) +{ + struct shash slave_shash = SHASH_INITIALIZER(&slave_shash); + const struct shash_node **sorted_slaves = NULL; + + struct slave *slave; + int i; + + ds_put_format(ds, "---- %s statistics ----\n", lacp->name); + + HMAP_FOR_EACH (slave, node, &lacp->slaves) { + shash_add(&slave_shash, slave->name, slave); + } + sorted_slaves = shash_sort(&slave_shash); + + for (i = 0; i < shash_count(&slave_shash); i++) { + slave = sorted_slaves[i]->data; + ds_put_format(ds, "\nslave: %s:\n", slave->name); + ds_put_format(ds, "\tRX PDUs: %u\n", slave->count_rx_pdus); + ds_put_format(ds, "\tRX Bad PDUs: %u\n", slave->count_rx_pdus_bad); + ds_put_format(ds, "\tTX PDUs: %u\n", slave->count_tx_pdus); + ds_put_format(ds, "\tLink Expired: %u\n", + slave->count_link_expired); + ds_put_format(ds, "\tLink Defaulted: %u\n", + slave->count_link_defaulted); + ds_put_format(ds, "\tCarrier Status Changed: %u\n", + slave->count_carrier_changed); + } + + shash_destroy(&slave_shash); + free(sorted_slaves); +} + +static void lacp_unixctl_show(struct unixctl_conn *conn, int argc, const char *argv[], void *aux OVS_UNUSED) OVS_EXCLUDED(mutex) { @@ -1021,6 +1064,36 @@ out: lacp_unlock(); } +static void +lacp_unixctl_show_stats(struct unixctl_conn *conn, + int argc, + const char *argv[], + void *aux OVS_UNUSED) OVS_EXCLUDED(mutex) +{ + struct ds ds = DS_EMPTY_INITIALIZER; + struct lacp *lacp; + + lacp_lock(); + if (argc > 1) { + lacp = lacp_find(argv[1]); + if (!lacp) { + unixctl_command_reply_error(conn, "no such lacp object"); + goto out; + } + lacp_print_stats(&ds, lacp); + } else { + LIST_FOR_EACH (lacp, node, all_lacps) { + lacp_print_stats(&ds, lacp); + } + } + + unixctl_command_reply(conn, ds_cstr(&ds)); + ds_destroy(&ds); + +out: + lacp_unlock(); +} + /* Extract a snapshot of the current state and counters for a slave port. Return false if the slave is not active. */ bool diff --git a/vswitchd/ovs-vswitchd.8.in b/vswitchd/ovs-vswitchd.8.in index 80e5f53..b6f1929 100644 --- a/vswitchd/ovs-vswitchd.8.in +++ b/vswitchd/ovs-vswitchd.8.in @@ -240,6 +240,12 @@ whether it is attached or detached, port id and priority, actor information, and partner information. If \fIport\fR is not specified, then displays detailed information about all interfaces with CFM enabled. +. +.IP "\fBlacp/stats-show\fR [\fIport\fR]" +Lists various stats about LACP PDUs (number of RX/TX PDUs, bad PDUs received) +and slave state (number of time slave's state expired/defaulted and carrier +status changed) for the given \fIport\fR. If \fIport\fR is not specified, +then displays stats of all interfaces with LACP enabled. .SS "DPCTL DATAPATH DEBUGGING COMMANDS" The primary way to configure \fBovs\-vswitchd\fR is through the Open vSwitch database, e.g. using \fBovs\-vsctl\fR(8). These commands