Module Name: src Committed By: yamaguchi Date: Tue Nov 16 04:01:11 UTC 2021
Modified Files: src/sys/net/lagg: if_lagg_lacp.c Log Message: Set SYNC bit of LACPDU when the interface is on STANDBY state To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/net/lagg/if_lagg_lacp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/lagg/if_lagg_lacp.c diff -u src/sys/net/lagg/if_lagg_lacp.c:1.6 src/sys/net/lagg/if_lagg_lacp.c:1.7 --- src/sys/net/lagg/if_lagg_lacp.c:1.6 Tue Oct 19 07:52:33 2021 +++ src/sys/net/lagg/if_lagg_lacp.c Tue Nov 16 04:01:11 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_lagg_lacp.c,v 1.6 2021/10/19 07:52:33 yamaguchi Exp $ */ +/* $NetBSD: if_lagg_lacp.c,v 1.7 2021/11/16 04:01:11 yamaguchi Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-NetBSD @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_lagg_lacp.c,v 1.6 2021/10/19 07:52:33 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_lagg_lacp.c,v 1.7 2021/11/16 04:01:11 yamaguchi Exp $"); #ifdef _KERNEL_OPT #include "opt_lagg.h" @@ -79,6 +79,7 @@ enum lacp_selected { enum lacp_mux_state { LACP_MUX_DETACHED, LACP_MUX_WAITING, + LACP_MUX_STANDBY, LACP_MUX_ATTACHED, LACP_MUX_COLLECTING, LACP_MUX_DISTRIBUTING, @@ -2118,6 +2119,7 @@ lacp_set_mux(struct lacp_softc *lsc, str LACP_AGGREGATE_WAIT_TIME); lacpp->lp_pending++; break; + case LACP_MUX_STANDBY: case LACP_MUX_ATTACHED: lacp_port_attached(lsc, lacpp); lacp_disable_collecting(lacpp); @@ -2173,10 +2175,22 @@ lacp_sm_mux(struct lacp_softc *lsc, stru "lp_pending=%d, timer=%d", lacpp->lp_pending, !LACP_TIMER_ISARMED(lacpp, LACP_TIMER_WAIT_WHILE)); - if (selected == LACP_SELECTED && - lacpp->lp_pending == 0) { + if (selected == LACP_UNSELECTED) { + next_state = LACP_MUX_DETACHED; + } else if (lacpp->lp_pending == 0) { + if (selected == LACP_SELECTED) { + next_state = LACP_MUX_ATTACHED; + } else if (selected == LACP_STANDBY) { + next_state = LACP_MUX_STANDBY; + } else { + next_state = LACP_MUX_DETACHED; + } + } + break; + case LACP_MUX_STANDBY: + if (selected == LACP_SELECTED) { next_state = LACP_MUX_ATTACHED; - } else if (selected == LACP_UNSELECTED) { + } else if (selected != LACP_STANDBY) { next_state = LACP_MUX_DETACHED; } break;