From patchwork Tue Jul 9 00:52:02 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Yufen X-Patchwork-Id: 257625 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id CE3882C02A5 for ; Tue, 9 Jul 2013 10:52:51 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753452Ab3GIAwf (ORCPT ); Mon, 8 Jul 2013 20:52:35 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:9874 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753435Ab3GIAwd (ORCPT ); Mon, 8 Jul 2013 20:52:33 -0400 Received: from 172.24.2.119 (EHLO szxeml212-edg.china.huawei.com) ([172.24.2.119]) by szxrg03-dlp.huawei.com (MOS 4.4.2a-FCS FastPath queued) with ESMTP id ABT70192; Tue, 09 Jul 2013 08:52:11 +0800 (CST) Received: from SZXEML455-HUB.china.huawei.com (10.82.67.198) by szxeml212-edg.china.huawei.com (172.24.2.181) with Microsoft SMTP Server (TLS) id 14.1.323.7; Tue, 9 Jul 2013 08:52:10 +0800 Received: from localhost (10.135.70.116) by SZXEML455-HUB.china.huawei.com (10.82.67.198) with Microsoft SMTP Server id 14.1.323.7; Tue, 9 Jul 2013 08:52:04 +0800 From: Wangyufen To: , CC: Subject: [PATCH v2] bonding:fix speed unknown,lacp bonding failed Date: Tue, 9 Jul 2013 08:52:02 +0800 Message-ID: <1373331122-10052-1-git-send-email-wangyufen@huawei.com> X-Mailer: git-send-email 1.8.1.msysgit.1 MIME-Version: 1.0 X-Originating-IP: [10.135.70.116] X-CFilter-Loop: Reflected Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: "Wang Yufen" We bonded nic using LACP mode repeatedly, occasionally LACP bonding failed, because a slave nic port speed was unknown. But when we used ethtool to check the slave NIC status, the nic status was normal,speed was 10000Mb/s. Bonding get the NIC speed from NIC drivers,just when enslave nic and receive NETDEV_CHANGE event.We call bond_update_speed_duplex to update speed and duplex when miimon inspect slave link is OK and slave speed is unknown. Signed-off-by: Wang Yufen --- drivers/net/bonding/bond_main.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index f975696..4ccc173 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2301,8 +2301,22 @@ static int bond_miimon_inspect(struct bonding *bond) switch (slave->link) { case BOND_LINK_UP: - if (link_state) + if (link_state) { + if (slave->speed == SPEED_UNKNOWN) { + rtnl_lock(); + bond_update_speed_duplex(slave); + if (slave->speed != SPEED_UNKNOWN + && bond->params.mode + == BOND_MODE_8023AD) { + bond_3ad_adapter_speed_changed( + slave); + bond_3ad_adapter_duplex_changed( + slave); + } + rtnl_unlock(); + } continue; + } slave->link = BOND_LINK_FAIL; slave->delay = bond->params.downdelay;