From: Michael Brown Date: Mon, 19 Mar 2018 13:47:39 +0000 (+0200) Subject: [lacp] Check the partner's own state when checking for blocked links X-Git-Tag: v1.20.1~101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=342ff967cc109f8e21e743d841434b08737d9e6c;p=thirdparty%2Fipxe.git [lacp] Check the partner's own state when checking for blocked links The blocked link test in eth_slow_lacp_rx() is performed before the actor TLV is copied to the partner TLV, and so must test the actor state field rather than the partner state field. Signed-off-by: Michael Brown --- diff --git a/src/net/eth_slow.c b/src/net/eth_slow.c index cbc22aef4..baa51dbc1 100644 --- a/src/net/eth_slow.c +++ b/src/net/eth_slow.c @@ -157,11 +157,11 @@ static int eth_slow_lacp_rx ( struct io_buffer *iobuf, * then block the link until after the next expected LACP * packet. */ - if ( ~lacp->partner.state & ( LACP_STATE_IN_SYNC | - LACP_STATE_COLLECTING | - LACP_STATE_DISTRIBUTING ) ) { + if ( ~lacp->actor.state & ( LACP_STATE_IN_SYNC | + LACP_STATE_COLLECTING | + LACP_STATE_DISTRIBUTING ) ) { DBGC ( netdev, "SLOW %s LACP partner is down\n", netdev->name ); - interval = ( ( lacp->partner.state & LACP_STATE_FAST ) ? + interval = ( ( lacp->actor.state & LACP_STATE_FAST ) ? ( ( LACP_INTERVAL_FAST + 1 ) * TICKS_PER_SEC ) : ( ( LACP_INTERVAL_SLOW + 1 ) * TICKS_PER_SEC ) ); netdev_link_block ( netdev, interval );