> On Wed, Aug 28, 2013 at 02:58:02PM +0900, YAMAMOTO Takashi wrote: >> > On Wed, Aug 28, 2013 at 10:38:06AM +0900, YAMAMOTO Takashi wrote: >> >> > On Tue, Aug 27, 2013 at 04:10:03PM +0900, YAMAMOTO Takashi wrote: >> >> >> this fixes ofp_port_status delivery on a patch port removal. >> >> > >> >> > Can you explain further? I don't see any problems with patch port >> >> > removal. Example: >> >> > >> >> > blp@sigsegv:~/ovs/_clang$ make sandbox >> >> > ... >> >> > ---------------------------------------------------------------------- >> >> > You are running in a dummy Open vSwitch environment. You can use >> >> > ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the >> >> > dummy switch. >> >> > >> >> > Log files, pidfiles, and the configuration database are in the >> >> > "sandbox" subdirectory. >> >> > >> >> > Exit the shell to kill the running daemons. >> >> > blp@sigsegv:~/ovs/tutorial$ ovs-vsctl add-br br0 >> >> >> >> i'm using datapath_type=netdev. >> >> >> >> kuma% ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev >> >> kuma% ovs-ofctl monitor br0 128& >> >> [1] 17027 >> >> kuma% ovs-vsctl add-port br0 patch1 -- set interface patch1 type=patch >> >> options:peer=patch1 -- add-port br0 patch2 -- set interface patch2 >> >> type=patch options:peer=patch2 >> >> OFPT_PORT_STATUS (xid=0x0): ADD: 1(patch1): addr:aa:55:aa:55:00:02 >> >> config: PORT_DOWN >> >> state: LINK_DOWN >> >> speed: 0 Mbps now, 0 Mbps max >> >> OFPT_PORT_STATUS (xid=0x0): ADD: 2(patch2): addr:aa:55:aa:55:00:03 >> >> config: PORT_DOWN >> >> state: LINK_DOWN >> >> speed: 0 Mbps now, 0 Mbps max >> >> kuma% >> > >> > I don't understand yet. If it is important to show me the output here, >> > then I guess your patch must change the output. What change does your >> > patch make in the output? >> >> sorry for confusing. >> >> it seems that the problem doesn't happen on "make sandbox" environment. >> (i don't know why. i'm not aware of how sandbox works) >> >> i'm seeing the following message on "ovs-vsctl del-port patch1" >> and my controller doesn't receive ofp_port_status. >> >> 2013-08-04T21:42:03Z|00016|dpif|WARN|netdev@ovs-netdev: port_del failed >> (Invalid argument) > > I applied your other patch that stops overriding patch ports in the > sandbox. That made the output of the above commands change (the port > updates disappeared), as shown below, but this patch didn't fix that. > > ---------------------------------------------------------------------- > You are running in a dummy Open vSwitch environment. You can use > ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the > dummy switch. > > Log files, pidfiles, and the configuration database are in the > "sandbox" subdirectory. > > Exit the shell to kill the running daemons. > blp@blp:~/nicira/ovs/tutorial(0)$ ovs-vsctl add-br > br0blp@blp:~/nicira/ovs/tutorial(0)$ ovs-ofctl monitor br0 128& > [1] 24807 > blp@blp:~/nicira/ovs/tutorial(0)$ ovs-vsctl add-port br0 patch1 -- set > interface patch1 type=patch options:peer=patch1 -- add-port br0 patch2 -- set > interface patch2 type=patch options:peer=patch2
this command seems wrong. patch1's peer should be patch2, not patch1. ditto for patch2. as it fails to add ports, you didn't even get PORT_STATUS for ADD. the following is today's master with my patch applied. kuma% gmake sandbox <..snip..> kuma% ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev kuma% ovs-ofctl monitor br0 128 & [1] 49 kuma% ovs-vsctl add-port br0 patch1 -- set interface patch1 type=patch options:peer=patch2 -- add-port br0 patch2 -- set interface patch2 type=patch options:peer=patch1 OFPT_PORT_STATUS (xid=0x0): ADD: 1(patch1): addr:ae:fd:f4:fe:8c:ec config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max OFPT_PORT_STATUS (xid=0x0): ADD: 2(patch2): addr:da:1c:2a:58:42:71 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max kuma% ovs-vsctl del-port patch1 OFPT_PORT_STATUS (xid=0x0): DEL: 1(patch1): addr:ae:fd:f4:fe:8c:ec config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max kuma% ovs-vsctl del-port patch2 OFPT_PORT_STATUS (xid=0x0): DEL: 2(patch2): addr:da:1c:2a:58:42:71 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max kuma% > blp@blp:~/nicira/ovs/tutorial(0)$ ovs-vsctl del-port patch1 > blp@blp:~/nicira/ovs/tutorial(0)$ ovs-vsctl del-port patch2 > blp@blp:~/nicira/ovs/tutorial(0)$ ovs-vsctl del-br br0 > ovs-ofctl: vconn_recv (End of file) > [1]+ Exit 1 ovs-ofctl monitor br0 128 > blp@blp:~/nicira/ovs/tutorial(0)$ gitk& > [1] 24815 > blp@blp:~/nicira/ovs/tutorial(0)$ exit > ---------------------------------------------------------------------- > > I suspect that the real problem here is that port_add() doesn't call > dpif_port_add() for patch ports so port_del() should not try to call > dpif_port_del() for them either, something like this. Will you try the > following patch as an alternative? (However, even with this patch I > don't get OpenFlow notifications for patch ports in the sandbox, so > something else is going on.) it would fix the problem, yes. i don't know if the following bundle_remove call can be necessary for patch ports or not, though. YAMAMOTO Takashi > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index d4c8f73..b62aa81 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -3109,7 +3109,7 @@ port_del(struct ofproto *ofproto_, ofp_port_t ofp_port) > sset_find_and_delete(&ofproto->ghost_ports, > netdev_get_name(ofport->up.netdev)); > ofproto->backer->need_revalidate = REV_RECONFIGURE; > - if (!ofport->is_tunnel) { > + if (!ofport->is_tunnel && !netdev_vport_is_patch(ofport->up.netdev)) { > error = dpif_port_del(ofproto->backer->dpif, ofport->odp_port); > if (!error) { > /* The caller is going to close ofport->up.netdev. If this is a > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev