From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6961D2D8DA8 for ; Thu, 26 Feb 2026 12:53:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772110430; cv=none; b=QgCFYx90Rksqund4WjkIBAlXj5I/Y6kP4jfJvXEs3Kq21DQWUpBlJhLRal2/mu4pPlplPc1H8dIzIotcKgI25tlx/c4hZ6rb+NBFuGalU+fz9wEU/JQ66mFwFGVAgUOu+LlDsihsAfUI+Cn9qfP0B9wd/Su2q7mMJndXGEm+4HQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772110430; c=relaxed/simple; bh=dwiStO/chK1OLFBK71wNHFWP6SlMqftxFvbc+vvnPhU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=ab8iRAVwQRzZSPKhTSDdkX8W4b8M1ryGg0TfG7yf8d4C0aZ+0l786i3STBj78WonVxFkn0YFkreFW/vdbJmI15k5kLSA0Ed8oBrBcwOQN3ix/aOQMVDc5u76v37W/r4GH/7MvD68eStyVDkAS0IO0YtqsTjDSfCORXliXCKcpOc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=d4Fy2gX+; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d4Fy2gX+" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2ad21f437eeso5691105ad.0 for ; Thu, 26 Feb 2026 04:53:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772110428; x=1772715228; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pU3Nlc8ltUu4dkb2Y0/KvgT3i+9qT+K1/h3U6dSw2Oc=; b=d4Fy2gX+XQ4X9Hnh9IH86jGWxpldlwGJQZwJgM/fyA2arJQcp3NSkJFUtHNbWSZjVY mqmgdovi+ztArNPF70hMQbuJpPcJ4nI5hsUJfx6oW0euYK9hY5qWRgtYN1vq04wfr59n pwpXxwmbc6Z/7qXDgKWhdaSf8ZL3V7X3UYdeZ+56t15UiRU4RxEzaZ73FeddH684RCwr K1vPmmEggsiKp+z+2XnpGlQJ4WNDi12zbUhzPLLbRfKJXthRRS7QZ11hMeZKlNNnXBa0 ivX7zkAYzrXHilb83NYqD+WNM0RQvX7ScuXPg/fcbpDAKdB38iXnSZZnXvxWe/KuWl4k 7VMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772110428; x=1772715228; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pU3Nlc8ltUu4dkb2Y0/KvgT3i+9qT+K1/h3U6dSw2Oc=; b=Of53VUCWdudVXujFtOulHbB/C3IDYRB0LWRsW5Bxtn/EjthDrEUWj70574Cf6qnUMx PyqJIm4mVU3aU2Z2m7IuyM/WGDzmJ4X5eLsVLkaAYNR2KRAd/WKmgnG2DFQiEamc//or 9fBS/VapKdTGl+79xwTN49bttRuhPM8Vl835/PhCgUfrhLFcNrusbPUzREalhsfSfcSZ Sc9E4qoyPyb5KTAF/AZ9YoQyjBXOr0oSp5YM1L+l7oaGZm6EPIyxhyPGNebxh+rwLoIY URI76aLQxkK9O+WB4+1gMfpU6Y1uwaJqrWvDJ2kPGHCsX5M82aiS+EickfJyUt/4wIl+ 8IKw== X-Forwarded-Encrypted: i=1; AJvYcCXAZJQVEYVnvZRuOIqwQhMwNpcr79VeGwiq3cIfc9iqZCBMWM2PHLK/9UX+5kO+3tILKPT5Tw9jaiUE3iY=@vger.kernel.org X-Gm-Message-State: AOJu0Yz56JPToempR2tx4oimxkTpX/4y8hKr0Q99B6BLGh3MzC/hzkOm 4TmAzdL10cu0PadiAyYhwFboHqYVaEg8MEgGfN3F3Rr3218Dq1drNt9y X-Gm-Gg: ATEYQzxQmsa4PS4lfp/aX8b6i38h2XZpW3JIsk2M0/kNsfP3Fq+j6bRO/czj62CzfxD 120N6NlYhG5UqwfhIGvtovVix2+T8ogcJNcj5dtwN4gJxMv9KNAEBsOGMqkum18avCGkDAR8B+5 6hCkyHU5eFh7koTziuJBr6IeXGvnnGIiO743ls1j0bir3YsC06BHIncZWTSBaSjScHd6uT2XC61 BdHATMiGMSVY3KC1VlshmYXL6O621IUzigf7oCAoKsnfb/oC4R9bLLIAVQ3UWpkv6TmDZGMEgqC kJg+tVErmHQ3rSCejkhbZkRFYZaAe/mvmZKxfHpho6KW3CgaVtbXy9aQdgVR74o0Oqt81RQSHnz 9CeqGqlHMSlc2jQ4vyh3KaZlscpIsgSjoMfhNzqMwI7I9b+aFWPrl1LJL4lK1sSLxE1I768US7o lzALQxoHOYMYH+XXz8HHo7IGrXCTY= X-Received: by 2002:a17:903:2307:b0:2a9:320d:285e with SMTP id d9443c01a7336-2adf79c86ecmr24944385ad.27.1772110427685; Thu, 26 Feb 2026 04:53:47 -0800 (PST) Received: from fedora ([209.132.188.88]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb705b53sm25276715ad.92.2026.02.26.04.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 04:53:46 -0800 (PST) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Jay Vosburgh , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Shuah Khan , Nikolay Aleksandrov , Mahesh Bandewar , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Hangbin Liu Subject: [PATCHv3 net 0/3] bonding: fix 802.3ad churn machine and port state issues Date: Thu, 26 Feb 2026 12:53:27 +0000 Message-ID: <20260226125331.28147-1-liuhangbin@gmail.com> X-Mailer: git-send-email 2.50.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This series fixes two issues in the bonding 802.3ad implementation related to port state management and churn detection: 1. When disabling a port, we need to set AD_RX_PORT_DISABLED to ensure proper state machine transitions, preventing ports from getting stuck in AD_RX_CURRENT state. 2. The ad_churn_machine implementation is restructured to follow IEEE 802.1AX-2014 specifications correctly. The current implementation has several issues: it doesn't transition to "none" state immediately when synchronization is achieved, and can get stuck in churned state in multi-aggregator scenarios. 3. Selftests are enhanced to validate both mux state machine and churn state logic under aggregator selection and failover scenarios. These changes ensure proper LACP state machine behavior and fix issues where ports could remain in incorrect states during aggregator failover. v3: re-post to net, no code change (Jakub) v2: * set AD_RX_PORT_DISABLED only in ad_agg_selection_logic to avoid side effect. (Paolo Abeni) * remove actor_churn as it can only be true when the state is ACTOR_CHURN (Paolo Abeni) * remove AD_PORT_CHURNED since we don't need it anywhere (Paolo Abeni) * I didn't add new helper for ad_churn_machine() as it looks not help much. * https://lore.kernel.org/netdev/20260114064921.57686-1-liuhangbin@gmail.com v1: https://lore.kernel.org/netdev/20251124043310.34073-1-liuhangbin@gmail.com Hangbin Liu (3): bonding: set AD_RX_PORT_DISABLED when disabling a port bonding: restructure ad_churn_machine selftests: bonding: add mux and churn state testing drivers/net/bonding/bond_3ad.c | 97 ++++++++++++++----- .../selftests/drivers/net/bonding/Makefile | 2 +- ...nd_lacp_prio.sh => bond_lacp_ad_select.sh} | 73 ++++++++++++++ 3 files changed, 146 insertions(+), 26 deletions(-) rename tools/testing/selftests/drivers/net/bonding/{bond_lacp_prio.sh => bond_lacp_ad_select.sh} (64%) -- 2.50.1