Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp1148670rwb; Fri, 18 Nov 2022 13:34:05 -0800 (PST) X-Google-Smtp-Source: AA0mqf6SVT/L3paS43XJHwWqs4JRPML4Td8hbpYGF6ss7fC4hzex3IzTWmCSWNyxAK3+swhx9HhP X-Received: by 2002:a17:903:3256:b0:188:5240:5142 with SMTP id ji22-20020a170903325600b0018852405142mr1127727plb.171.1668807244956; Fri, 18 Nov 2022 13:34:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668807244; cv=none; d=google.com; s=arc-20160816; b=fTVXW50MLsUq8UaVgLVXJ8dQ/ty7Kymr3sNkg1KmDfQaxnZrrxPosidecO981aZj1P kAw+MBdaohuJ2yab1luWxm2/QzO1NKp8/gbnXPpC86f098JndBCF7T5flzpZO7T2Sjou +cAxZUbcFX+4pAN4ouF1+218e9fit4c6QqRNLIGkD4swRaIRDjEQ/p69oPed7MI8r6Ha EmkT3RyBAnxCp0xTC2q0ntPYBzynC1dwkHpyUp+Tjr5U/dapr7r9hXShcaDCPOaHuZL2 RdJ8Uad/PwLz77OQBEhSYYSfCgsKUfCInQf14iqStLNm7uZPCNzDCoqTtJxk3rDDz43s BjzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=XNX9PG9IctWJjJf9clHPMrPEcd0dTkPsQmVfvpSx6A4=; b=UZpPRcyJYnu472iClYqkAggFmedxBMWVGsoPPKwpSw2Gg8Q32YIJN5bXyIG4FgRmht W8l2PbXXBF6/oSaSoiKQah9OY1/6VjOq0RaGhJmWy8YOvjJTeUKSGvgx7SyoNknjLFMb BD7JpXlM4k5G7xLqJzghISo3jHyB8noiLqRpA5DXltV4g/q2U7FqvHNYNY2+L5rBewQA 7Ok6QzG53OsV/nMLc3hmnce5vVxDgHFEHHy+2VJ1mMZUZAf1G8L/rMDrKajfP6EMpdtI WljbmqCKgNE9hv6/lYf3eF6g2VvrubdC3YdHZi4LuyR7dk43SnotAYNU8G6CS5D4jzTs 7nNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="dN/OM+fF"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u13-20020a056a00158d00b005718306bf3bsi4859507pfk.278.2022.11.18.13.33.53; Fri, 18 Nov 2022 13:34:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="dN/OM+fF"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231425AbiKRUbd (ORCPT + 90 others); Fri, 18 Nov 2022 15:31:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231202AbiKRUb3 (ORCPT ); Fri, 18 Nov 2022 15:31:29 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47F766304 for ; Fri, 18 Nov 2022 12:30:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1668803431; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XNX9PG9IctWJjJf9clHPMrPEcd0dTkPsQmVfvpSx6A4=; b=dN/OM+fFLJCgHXJrXLujT/vu5xCd6IffOEAD/sdRnrRMB3xEMKAvmWJAZV8tXHamg1fE4u uUM6qm/Nhht2VqyLFe78c/G8BE5kOkAUIaIiZIpLmVFRCucglgVvD/yv3PLVDPo/kdgd++ WgMONtPaWSxeZYE/N8zQKItijqGiesA= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-53-vQiax6awNCK70oeC74Zx4Q-1; Fri, 18 Nov 2022 15:30:26 -0500 X-MC-Unique: vQiax6awNCK70oeC74Zx4Q-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8E0C7185A794; Fri, 18 Nov 2022 20:30:25 +0000 (UTC) Received: from jtoppins.rdu.csb (unknown [10.22.10.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id AB4F4492B04; Fri, 18 Nov 2022 20:30:24 +0000 (UTC) From: Jonathan Toppins To: netdev@vger.kernel.org, Jay Vosburgh Cc: Veaceslav Falico , Andy Gospodarek , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/2] bonding: fix link recovery in mode 2 when updelay is nonzero Date: Fri, 18 Nov 2022 15:30:13 -0500 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before this change when a bond in mode 2 lost link, all of its slaves lost link, the bonding device would never recover even after the expiration of updelay. This change removes the updelay when the bond currently has no usable links. Conforming to bonding.txt section 13.1 paragraph 4. Signed-off-by: Jonathan Toppins --- drivers/net/bonding/bond_main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 1cd4e71916f8..6c4348245d1f 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2529,7 +2529,16 @@ static int bond_miimon_inspect(struct bonding *bond) struct slave *slave; bool ignore_updelay; - ignore_updelay = !rcu_dereference(bond->curr_active_slave); + if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) { + ignore_updelay = !rcu_dereference(bond->curr_active_slave); + } else { + struct bond_up_slave *usable_slaves; + + usable_slaves = rcu_dereference(bond->usable_slaves); + + if (usable_slaves && usable_slaves->count == 0) + ignore_updelay = true; + } bond_for_each_slave_rcu(bond, slave, iter) { bond_propose_link_state(slave, BOND_LINK_NOCHANGE); -- 2.31.1