From: Ben Pfaff Date: Thu, 20 Feb 2014 20:13:26 +0000 (-0800) Subject: ofproto: Update only OFPUTIL_PS_LINK_DOWN (not STP) from netdev state. X-Git-Tag: v2.0.2~30 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=97eba824fca691f4c18a4e3eb08fb1b4b22e07ef ofproto: Update only OFPUTIL_PS_LINK_DOWN (not STP) from netdev state. 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 Reported-by: Vasu Dasari Tested-by: Vasu Dasari --- diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 790aa71e9..13c20b3e2 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -2103,7 +2103,8 @@ ofport_modified(struct ofport *port, struct ofputil_phy_port *pp) 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;