When a netdev indicates that its state or configuration has changed,
update_port() updates the OpenFlow port to match the changes. However,
this was being taken too far: a netdev does not have an STP state, and a
state change was resetting the STP state of the port. This fixes the
problem.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reported-by: Vasu Dasari <vdasari@gmail.com>
Tested-by: Vasu Dasari <vdasari@gmail.com>
memcpy(port->pp.hw_addr, pp->hw_addr, ETH_ADDR_LEN);
port->pp.config = ((port->pp.config & ~OFPUTIL_PC_PORT_DOWN)
| (pp->config & OFPUTIL_PC_PORT_DOWN));
- port->pp.state = pp->state;
+ port->pp.state = ((port->pp.state & ~OFPUTIL_PS_LINK_DOWN)
+ | (pp->state & OFPUTIL_PS_LINK_DOWN));
port->pp.curr = pp->curr;
port->pp.advertised = pp->advertised;
port->pp.supported = pp->supported;