learning-switch: Don't limit message queued by --with-flows.
authorBen Pfaff <blp@nicira.com>
Wed, 1 Jun 2011 17:53:53 +0000 (10:53 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 1 Jun 2011 17:55:25 +0000 (10:55 -0700)
queue_tx() intentionally limits the number of outstanding OpenFlow messages
queued to the switch.  This was unintentionally being applied to the
messages queued to the switch at startup by ovs-ofctl's --with-flows
command.  This patch should fix the problem, by calling rconn_send()
directly instead of through queue_tx().

Ahmed reported that with this patch there was still a problem when 30,000
flows were specified in the file.

Reported-by: Ahmed Bilal <numan252@gmail.com>
AUTHORS
lib/learning-switch.c

diff --git a/AUTHORS b/AUTHORS
index ba30f50..cdf3159 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -42,6 +42,7 @@ provided helpful bug reports or suggestions.
 
 Aaron M. Ucko           ucko@debian.org
 Aaron Rosen             arosen@clemson.edu
+Ahmed Bilal             numan252@gmail.com
 Alex Yip                alex@nicira.com
 Alexey I. Froloff       raorn@altlinux.org
 Bob Ball                bob.ball@citrix.com
index dc9af77..9d3605a 100644 (file)
@@ -131,7 +131,14 @@ lswitch_create(struct rconn *rconn, const struct lswitch_config *cfg)
         const struct ofpbuf *b;
 
         LIST_FOR_EACH (b, list_node, cfg->default_flows) {
-            queue_tx(sw, rconn, ofpbuf_clone(b));
+            struct ofpbuf *copy = ofpbuf_clone(b);
+            int error = rconn_send(rconn, copy, NULL);
+            if (error) {
+                VLOG_INFO_RL(&rl, "%s: failed to queue default flows (%s)",
+                             rconn_get_name(rconn), strerror(error));
+                ofpbuf_delete(copy);
+                break;
+            }
         }
     }