From patchwork Tue Dec 9 19:21:20 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander 'lynxis' Couzens X-Patchwork-Id: 419228 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id D8E41140082 for ; Wed, 10 Dec 2014 06:22:34 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 253FA28C1A1; Tue, 9 Dec 2014 20:20:06 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id C26F828C005 for ; Tue, 9 Dec 2014 20:19:52 +0100 (CET) X-policyd-weight: using cached result; rate: -7.6 Received: from mail.base45.de (mail.base45.de [80.241.61.77]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Tue, 9 Dec 2014 20:19:52 +0100 (CET) Received: from ip5b422265.dynamic.kabel-deutschland.de ([91.66.34.101] helo=lazus.lan) by mail.base45.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA256:128) (Exim 4.82) (envelope-from ) id 1XyQLm-000163-MT; Tue, 09 Dec 2014 20:21:35 +0100 From: Alexander Couzens To: openwrt-devel@lists.openwrt.org Date: Tue, 9 Dec 2014 20:21:20 +0100 Message-Id: <1418152881-7354-2-git-send-email-lynxis@fe80.eu> X-Mailer: git-send-email 2.1.3 In-Reply-To: <1418152881-7354-1-git-send-email-lynxis@fe80.eu> References: <1418152881-7354-1-git-send-email-lynxis@fe80.eu> Subject: [OpenWrt-Devel] [PATCH 2/3][RFC] ar7240: report port link state changes to kernel log X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Like other network device report link change to kernel log. switch eth0 port 1: Link 100baseT Mbit duplex: full --- .../net/ethernet/atheros/ag71xx/ag71xx_ar7240.c | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c index d4ccc02..a94837a 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c @@ -300,6 +300,7 @@ struct ar7240sw { u8 vlan_tagged; u16 pvid[AR7240_NUM_PORTS]; char buf[80]; + u8 link; rwlock_t stats_lock; struct ar7240sw_port_stat port_stats[AR7240_NUM_PORTS]; @@ -1136,9 +1137,31 @@ static void link_function(struct work_struct *work) { continue; link = ar7240sw_phy_read(ag->mii_bus, i, MII_BMSR); - if (link & BMSR_LSTATUS) { + link &= BMSR_LSTATUS; + link = !!link; + + if (link && !status) status = 1; - break; + + if ((!!(as->link & BIT(i))) != link) { + struct switch_port_link swlink; + int port = i + 1; + memset(&swlink, '0', sizeof(swlink)); + /* link change */ + if (link) { + as->link |= BIT(i); + as->swdev.ops->get_port_link(&as->swdev, port, &swlink); + pr_info("switch %s port %d: link %s Mbit duplex: %s\n", + as->swdev.netdev ? as->swdev.netdev->name : as->swdev.alias, + port, + swconfig_speed_str(swlink.speed), + swlink.duplex ? "full" : "half"); + } else { + as->link &= ~BIT(i); + pr_info("switch %s port %d: link down\n", + as->swdev.netdev ? as->swdev.netdev->name : as->swdev.alias, + port); + } } }