You mentioned test failures before, but I didn't actually change anything in this version. Do you still get test failures?
Thanks, Ben. On Wed, Jun 27, 2012 at 02:26:13PM -0700, Pravin Shelar wrote: > Looks good. > > On Wed, Jun 27, 2012 at 10:05 AM, Ben Pfaff <b...@nicira.com> wrote: > > Until now, Open vSwitch has ignored missing ports and queues in most cases > > in queue stats requests, simply returning an empty set of statistics. > > It seems that it is better to report an error, so this commit does this. > > > > Reported-by: Prabina Pattnaik <prabina.pattn...@nechclst.in> > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > v1 was here: http://openvswitch.org/pipermail/dev/2012-June/017780.html > > v2: no change > > > > AUTHORS | 1 + > > NEWS | 4 ++++ > > ofproto/ofproto.c | 28 ++++++++++++++++++---------- > > tests/ofproto.at | 8 ++++++++ > > 4 files changed, 31 insertions(+), 10 deletions(-) > > > > diff --git a/AUTHORS b/AUTHORS > > index bdfcb33..dc98ebe 100644 > > --- a/AUTHORS > > +++ b/AUTHORS > > @@ -140,6 +140,7 @@ Paul Ingram p...@nicira.com > > Paulo Cravero pcrav...@as2594.net > > Peter Balland pe...@nicira.com > > Peter Phaal peter.ph...@inmon.com > > +Prabina Pattnaik prabina.pattn...@nechclst.in > > Ralf Heiringhoff r...@frosty-geek.net > > Ram Jothikumar rjothiku...@nicira.com > > Ramana Reddy gtvrre...@gmail.com > > diff --git a/NEWS b/NEWS > > index c2ec953..f0b2490 100644 > > --- a/NEWS > > +++ b/NEWS > > @@ -11,6 +11,10 @@ post-v1.7.0 > > the multicast bit in the destination address could be individually > > masked.) > > - New field OXM_OF_METADATA, to align with OpenFlow 1.1. > > + - The OFPST_QUEUE request now reports an error if a specified port or > > + queue does not exist, or for requests for a specific queue on all > > + ports, if the specified queue does not exist on any port. > > (Previous > > + versions generally reported an empty set of results.) > > - Additional protocols are not mirrored and dropped when forward-bpdu is > > false. For a full list, see the ovs-vswitchd.conf.db man page. > > - Open vSwitch now sends RARP packets in situations where it previously > > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c > > index 1a2f712..ce4da9d 100644 > > --- a/ofproto/ofproto.c > > +++ b/ofproto/ofproto.c > > @@ -2684,7 +2684,7 @@ handle_queue_stats_dump_cb(uint32_t queue_id, > > put_queue_stats(cbdata, queue_id, stats); > > } > > > > -static void > > +static enum ofperr > > handle_queue_stats_for_port(struct ofport *port, uint32_t queue_id, > > struct queue_stats_cbdata *cbdata) > > { > > @@ -2697,8 +2697,11 @@ handle_queue_stats_for_port(struct ofport *port, > > uint32_t queue_id, > > > > if (!netdev_get_queue_stats(port->netdev, queue_id, &stats)) { > > put_queue_stats(cbdata, queue_id, &stats); > > + } else { > > + return OFPERR_OFPQOFC_BAD_QUEUE; > > } > > } > > + return 0; > > } > > > > static enum ofperr > > @@ -2707,9 +2710,10 @@ handle_queue_stats_request(struct ofconn *ofconn, > > { > > struct ofproto *ofproto = ofconn_get_ofproto(ofconn); > > struct queue_stats_cbdata cbdata; > > - struct ofport *port; > > unsigned int port_no; > > + struct ofport *port; > > uint32_t queue_id; > > + enum ofperr error; > > > > COVERAGE_INC(ofproto_queue_req); > > > > @@ -2718,21 +2722,25 @@ handle_queue_stats_request(struct ofconn *ofconn, > > port_no = ntohs(qsr->port_no); > > queue_id = ntohl(qsr->queue_id); > > if (port_no == OFPP_ALL) { > > + error = OFPERR_OFPQOFC_BAD_QUEUE; > > HMAP_FOR_EACH (port, hmap_node, &ofproto->ports) { > > - handle_queue_stats_for_port(port, queue_id, &cbdata); > > + if (!handle_queue_stats_for_port(port, queue_id, &cbdata)) { > > + error = 0; > > + } > > } > > - } else if (port_no < OFPP_MAX) { > > + } else { > > port = ofproto_get_port(ofproto, port_no); > > - if (port) { > > - handle_queue_stats_for_port(port, queue_id, &cbdata); > > - } > > + error = (port > > + ? handle_queue_stats_for_port(port, queue_id, &cbdata) > > + : OFPERR_OFPQOFC_BAD_PORT); > > + } > > + if (!error) { > > + ofconn_send_replies(ofconn, &cbdata.replies); > > } else { > > ofpbuf_list_delete(&cbdata.replies); > > - return OFPERR_OFPQOFC_BAD_PORT; > > } > > - ofconn_send_replies(ofconn, &cbdata.replies); > > > > - return 0; > > + return error; > > } > > > > static bool > > diff --git a/tests/ofproto.at b/tests/ofproto.at > > index 28adf74..d703fa8 100644 > > --- a/tests/ofproto.at > > +++ b/tests/ofproto.at > > @@ -59,6 +59,14 @@ AT_CHECK([ovs-ofctl -vwarn queue-stats br0], [0], > > [stdout]) > > AT_CHECK([STRIP_XIDS stdout], [0], [dnl > > OFPST_QUEUE reply: 0 queues > > ]) > > +AT_CHECK([ovs-ofctl -vwarn queue-stats br0 ALL 5], [0], > > + [OFPT_ERROR (xid=0x1): OFPQOFC_BAD_QUEUE > > +OFPST_QUEUE request (xid=0x1):port=ALL queue=5 > > +]) > > +AT_CHECK([ovs-ofctl -vwarn queue-stats br0 10], [0], > > + [OFPT_ERROR (xid=0x1): OFPQOFC_BAD_PORT > > +OFPST_QUEUE request (xid=0x1):port=10 queue=ALL > > +]) > > OVS_VSWITCHD_STOP > > AT_CLEANUP > > > > -- > > 1.7.2.5 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev