[stp] Add support for detecting Spanning Tree Protocol non-forwarding ports
authorMichael Brown <mcb30@ipxe.org>
Thu, 25 Jun 2015 09:04:42 +0000 (10:04 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 25 Jun 2015 15:58:38 +0000 (16:58 +0100)
commitfb28c4a97941c1ab21ee5eba725c69822f51aa1d
treebe39cd2b8412352e9dc7dbb2f831fef77a697a82
parentf3812395a261b80fe77d19ebb9045e790c434773
[stp] Add support for detecting Spanning Tree Protocol non-forwarding ports

A fairly common end-user problem is that the default configuration of
a switch may leave the port in a non-forwarding state for a
substantial length of time (tens of seconds) after link up.  This can
cause iPXE to time out and give up attempting to boot.

We cannot force the switch to start forwarding packets sooner, since
any attempt to send a Spanning Tree Protocol bridge PDU may cause the
switch to disable our port (if the switch happens to have the Bridge
PDU Guard feature enabled for the port).

For non-ancient versions of the Spanning Tree Protocol, we can detect
whether or not the port is currently forwarding and use this to inform
the network device core that the link is currently blocked.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/config/config_ethernet.c
src/config/general.h
src/include/ipxe/errfile.h
src/include/ipxe/stp.h [new file with mode: 0644]
src/net/stp.c [new file with mode: 0644]