summaryrefslogtreecommitdiffstats
path: root/src/net/eth_slow.c
diff options
context:
space:
mode:
authorSven Ulland2014-07-21 15:41:25 +0200
committerMichael Brown2014-07-23 12:56:04 +0200
commitde65a240b98b69e125fd8014ccff2c666d64361d (patch)
tree41b0f7c7bba8e6f2a52a208cf0fa718b735519eb /src/net/eth_slow.c
parent[x86_64] Add functions to read and write model-specific registers (diff)
downloadipxe-de65a240b98b69e125fd8014ccff2c666d64361d.tar.gz
ipxe-de65a240b98b69e125fd8014ccff2c666d64361d.tar.xz
ipxe-de65a240b98b69e125fd8014ccff2c666d64361d.zip
[lacp] Set "aggregatable" flag in response LACPDU
Some switches do not allow an individual link (as defined in IEEE Std 802.3ad-2000 section 43.3.5) to work alone in a link aggregation group as described in section 43.3.6. This is verified on Dell's PowerConnect M6220, based on the Broadcom Strata XGS-IV chipset. Set the LACP_STATE_AGGREGATABLE flag in the actor.state field to announce link aggregation in the response LACPDU, which will have the switch enable the link aggregation group and allow frames to pass. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/eth_slow.c')
-rw-r--r--src/net/eth_slow.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/net/eth_slow.c b/src/net/eth_slow.c
index 69c38f30..db54b55a 100644
--- a/src/net/eth_slow.c
+++ b/src/net/eth_slow.c
@@ -167,7 +167,8 @@ static int eth_slow_lacp_rx ( struct io_buffer *iobuf,
lacp->actor.key = htons ( 1 );
lacp->actor.port_priority = htons ( LACP_PORT_PRIORITY_MAX );
lacp->actor.port = htons ( 1 );
- lacp->actor.state = ( LACP_STATE_IN_SYNC |
+ lacp->actor.state = ( LACP_STATE_AGGREGATABLE |
+ LACP_STATE_IN_SYNC |
LACP_STATE_COLLECTING |
LACP_STATE_DISTRIBUTING |
( lacp->partner.state & LACP_STATE_FAST ) );