]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[lacp] Check the partner's own state when checking for blocked links
authorMichael Brown <mcb30@ipxe.org>
Mon, 19 Mar 2018 13:47:39 +0000 (15:47 +0200)
committerMichael Brown <mcb30@ipxe.org>
Mon, 19 Mar 2018 13:47:39 +0000 (15:47 +0200)
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 <mcb30@ipxe.org>
src/net/eth_slow.c

index cbc22aef437eb36a2d1326f3677704e3db26c52e..baa51dbc17176d143550c53da92585841e054f3b 100644 (file)
@@ -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 );