ofproto-dpif: More efficient implementation of get_odp_port().
authorJarno Rajahalme <jarno.rajahalme@nsn.com>
Wed, 9 Jan 2013 12:21:47 +0000 (14:21 +0200)
committerBen Pfaff <blp@nicira.com>
Wed, 9 Jan 2013 18:28:44 +0000 (10:28 -0800)
Avoids unnecessary hash bucket traversal (ofproto_get_port()), since we
have the ofport_dpif already after odp_port_to_ofport().

Signed-off-by: Jarno Rajahalme <jarno.rajahalme@nsn.com>
[blp@nicira.com simplified the test]
Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto/ofproto-dpif.c

index 186f0a7..5b86d46 100644 (file)
@@ -2792,7 +2792,8 @@ get_ofp_port(const struct ofproto_dpif *ofproto, uint16_t ofp_port)
 static struct ofport_dpif *
 get_odp_port(const struct ofproto_dpif *ofproto, uint32_t odp_port)
 {
-    return get_ofp_port(ofproto, odp_port_to_ofp_port(ofproto, odp_port));
+    struct ofport_dpif *port = odp_port_to_ofport(ofproto->backer, odp_port);
+    return port && &ofproto->up == port->up.ofproto ? port : NULL;
 }
 
 static void