summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-02-16 16:33:14 -0800
committerBen Pfaff <blp@nicira.com>2012-02-16 16:34:57 -0800
commit38720f42e892fe6cf58c43fb9fae6c45ee6c0a1d (patch)
tree281f5c887d90ba214b940e91799a9b017d539eda
parent54418a0f1722e5b8a464907895b29c736ded9f0f (diff)
downloadopenvswitch-38720f42e892fe6cf58c43fb9fae6c45ee6c0a1d.tar.gz
vswitchd: Always configure a default queue for QoS.
When an interface has QoS configured but no default queue (queue 0), OVS has until now installed that QoS configuration literally, which causes all packets destined for this default queue to be dropped. This behavior is usually both unexpected and undesirable. This commit changes behavior so that, when no default queue is configured, OVS uses a default "empty" configuration for the default queue. This behavior should be more acceptable when QoS is slightly misconfigured. I tested that, without this patch, configuring only queue 1 causes "tc class show" to show only queue 1 (handle 1:2) for linux-htb and linux-hfsc, and that with this patch it shows configurations for both queue 0 (handle 1:1) and queue 1. Bug #5583. Feature #7413. Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--vswitchd/bridge.c7
-rw-r--r--vswitchd/vswitch.xml13
2 files changed, 16 insertions, 4 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 72ddf15a5..784819614 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -3021,9 +3021,12 @@ iface_configure_qos(struct iface *iface, const struct ovsrec_qos *qos)
if (!queue_zero) {
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
VLOG_WARN_RL(&rl, "interface %s: QoS configured without a default "
- "queue (queue 0). Packets not directed to a "
- "correctly configured queue may be dropped.",
+ "queue (queue 0). Using default configuration.",
iface->name);
+
+ shash_init(&details);
+ netdev_set_queue(iface->netdev, 0, &details);
+ shash_destroy(&details);
}
}
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index e2e73cf94..79d85e1d5 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -1766,8 +1766,17 @@
supported range of queue numbers depend on <ref column="type"/>. The
queue numbers are the same as the <code>queue_id</code> used in
OpenFlow in <code>struct ofp_action_enqueue</code> and other
- structures. Queue 0 is used by OpenFlow output actions that do not
- specify a specific queue.</p>
+ structures.</p>
+
+ <p>
+ Queue 0 is the ``default queue.'' It is used by OpenFlow output
+ actions when no specific queue has been set. Ordinarily <ref
+ column="queues"/> should include a configuration for queue 0. When no
+ configuration for queue 0 is present, a default configuration is used.
+ (Before version 1.6, Open vSwitch would leave queue 0 unconfigured in
+ this case. With some queuing disciplines, this dropped all packets
+ destined for the default queue.)
+ </p>
</column>
<group title="Configuration for linux-htb and linux-hfsc">