From 5c48e7a9f2489ce5189db406cba485c62f0f6a14 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 1 Jun 2011 10:53:53 -0700 Subject: [PATCH] learning-switch: Don't limit message queued by --with-flows. 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 --- AUTHORS | 1 + lib/learning-switch.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index ba30f5000..cdf31592f 100644 --- 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 diff --git a/lib/learning-switch.c b/lib/learning-switch.c index dc9af7739..9d3605ae9 100644 --- a/lib/learning-switch.c +++ b/lib/learning-switch.c @@ -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; + } } } -- 2.43.0