ofproto: Only dump queue statistics if the queue really exists.
authorBen Pfaff <blp@nicira.com>
Thu, 16 Sep 2010 22:41:14 +0000 (15:41 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 1 Oct 2010 17:40:01 +0000 (10:40 -0700)
Without this commit, "ovs-ofctl queue-stats br0 ALL 1" will print something
like the following if port 3 has queue 1 but none of the other ports do:

    stats_reply (xid=0x7b378): flags=none type=5(queue)
     4 queues
      port 0 queue 1: bytes=?, pkts=?, errors=?
      port 1 queue 1: bytes=?, pkts=?, errors=?
      port 2 queue 1: bytes=?, pkts=?, errors=?
      port 3 queue 1: bytes=0, pkts=0, errors=0

With this commit, it will print the following instead, which seems more
useful:

   stats_reply (xid=0x3ada1): flags=none type=5(queue)
    1 queues
     port 3 queue 1: bytes=0, pkts=0, errors=0

ofproto/ofproto.c

index c683e3b..00cac6e 100644 (file)
@@ -3433,8 +3433,9 @@ handle_queue_stats_for_port(struct ofport *port, uint32_t queue_id,
     } else {
         struct netdev_queue_stats stats;
 
-        netdev_get_queue_stats(port->netdev, queue_id, &stats);
-        put_queue_stats(cbdata, queue_id, &stats);
+        if (!netdev_get_queue_stats(port->netdev, queue_id, &stats)) {
+            put_queue_stats(cbdata, queue_id, &stats);
+        }
     }
 }