The port_destruct() function checks if the port still exists in the
datapath to see if additional cleanup is necessary.  It used
dpif_port_query_by_number(), since the datapath port number is readily
available and cheap to use as a lookup handle.  Unfortunately, that
function logs a warning message if a port with that number doesn't exist
(because the datapath did remove it), which is confusing.  The
dpif_port_query_by_name() function doesn't log such an warning, so use
it instead.

Signed-off-by: Justin Pettit <jpet...@nicira.com>
---
 ofproto/ofproto-dpif.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 098a43e..283917c 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -1538,10 +1538,11 @@ port_destruct(struct ofport *port_)
 {
     struct ofport_dpif *port = ofport_dpif_cast(port_);
     struct ofproto_dpif *ofproto = ofproto_dpif_cast(port->up.ofproto);
+    const char *devname = netdev_get_name(port->up.netdev);
     struct dpif_port dpif_port;
 
-    if (!dpif_port_query_by_number(ofproto->backer->dpif,
-                                   port->odp_port, &dpif_port)) {
+    if (!dpif_port_query_by_name(ofproto->backer->dpif, devname,
+                                 &dpif_port)) {
         /* The underlying device is still there, so delete it.  This
          * happens when the ofproto is being destroyed, since the caller
          * assumes that removal of attached ports will happen as part of
@@ -1550,7 +1551,7 @@ port_destruct(struct ofport *port_)
         dpif_port_destroy(&dpif_port);
     }
 
-    sset_find_and_delete(&ofproto->ports, netdev_get_name(port->up.netdev));
+    sset_find_and_delete(&ofproto->ports, devname);
     hmap_remove(&ofproto->backer->odp_to_ofport_map, &port->odp_port_node);
     ofproto->need_revalidate = REV_RECONFIGURE;
     bundle_remove(port_);
-- 
1.7.5.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to