[ovs-dev] [PATCH v2] ofproto/ofproto.c: After port_mod + barrier, port config may not be updated

Isaku Yamahata yamahata at valinux.co.jp
Thu Oct 18 18:43:50 UTC 2012


On Thu, Oct 18, 2012 at 11:31:03AM -0700, Ben Pfaff wrote:
> On Thu, Oct 18, 2012 at 08:08:52AM +0900, Isaku Yamahata wrote:
> > The following OF packets may produce the wrong result as follows.
> > It depends on how ovs-vswitchd serves OF packets. Sending the OF packets
> > in single TCP packet will increase the possiblity.
> > 
> > OF request:
> >   feature request
> >   port_mod with config LINK DOWN
> >   barrier
> >   feature request
> > 
> > The replies:
> >   feature reply with port config UP
> >   barrier
> >   feature reply with port config UP (this should be DOWN because
> >                                      it's after barrier)
> >   port status with port config = DOWN and port status = DOWN
> > 
> > The direct cause is updte_port_config() @ ofproto/ofproto.c doesn't update
> > ofputil_phy_port::config. And later the config member is updated
> > by update_port() in main loop().
> > It seems that it tries to produce port_status event due to config change.
> > But changing other OFPC flags doesn't generate port_status event, so it's
> > consistent not to generate the event when OFPC_LINK_DOWN flag is changed.
> > 
> > Signed-off-by: Isaku Yamahata <yamahata at valinux.co.jp>
> 
> You did a good job preserving the existing properties of this code, but
> the existing properties are really confusing and I'm having a really
> hard time figuring out why they exist.  That's bad, because I'm almost
> certainly the original author of this code.
> 
> I think I need to take some time to figure out why this code is so odd,
> before we continue to hack on it more.  I'll try to do that tomorrow.

I see. FYI here's the related issues I'm seeing.
- Similar issue when setting advertise value.
- If setting advertise failed, the error is ignored.
  Should the error be propagated to port_mod request?
-- 
yamahata



More information about the dev mailing list