[ovs-dev] [bug 7550 4/9] ofproto-dpif: Remove "clog" feature.

Ben Pfaff blp at nicira.com
Wed Dec 21 21:03:52 UTC 2011


It's not actually useful, since it's not used in the unit tests, but
it makes implementing an upcoming feature harder.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 ofproto/ofproto-dpif.c |   63 +-----------------------------------------------
 1 files changed, 1 insertions(+), 62 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index d727781..2840123 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -460,11 +460,6 @@ static void port_wait(struct ofport_dpif *);
 static int set_cfm(struct ofport *, const struct cfm_settings *);
 static void ofport_clear_priorities(struct ofport_dpif *);
 
-struct dpif_completion {
-    struct list list_node;
-    struct ofoperation *op;
-};
-
 /* Extra information about a classifier table.
  * Currently used just for optimized flow revalidation. */
 struct table_dpif {
@@ -506,8 +501,6 @@ struct ofproto_dpif {
     struct tag_set revalidate_set;
 
     /* Support for debugging async flow mods. */
-    struct list completions;
-
     bool has_bundle_action; /* True when the first bundle action appears. */
     struct netdev_stats stats; /* To account packets generated and consumed in
                                 * userspace. */
@@ -521,10 +514,6 @@ struct ofproto_dpif {
     struct hmap vlandev_map;     /* vlandev -> (realdev,vid). */
 };
 
-/* Defer flow mod completion until "ovs-appctl ofproto/unclog"?  (Useful only
- * for debugging the asynchronous flow_mod implementation.) */
-static bool clogged;
-
 /* All existing ofproto_dpif instances, indexed by ->up.name. */
 static struct hmap all_ofproto_dpifs = HMAP_INITIALIZER(&all_ofproto_dpifs);
 
@@ -664,8 +653,6 @@ construct(struct ofproto *ofproto_)
     ofproto->need_revalidate = false;
     tag_set_init(&ofproto->revalidate_set);
 
-    list_init(&ofproto->completions);
-
     ofproto_dpif_unixctl_init();
 
     ofproto->has_bundle_action = false;
@@ -683,18 +670,6 @@ construct(struct ofproto *ofproto_)
 }
 
 static void
-complete_operations(struct ofproto_dpif *ofproto)
-{
-    struct dpif_completion *c, *next;
-
-    LIST_FOR_EACH_SAFE (c, next, list_node, &ofproto->completions) {
-        ofoperation_complete(c->op, 0);
-        list_remove(&c->list_node);
-        free(c);
-    }
-}
-
-static void
 destruct(struct ofproto *ofproto_)
 {
     struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_);
@@ -703,7 +678,6 @@ destruct(struct ofproto *ofproto_)
     int i;
 
     hmap_remove(&all_ofproto_dpifs, &ofproto->all_ofproto_dpifs_node);
-    complete_operations(ofproto);
 
     OFPROTO_FOR_EACH_TABLE (table, &ofproto->up) {
         struct cls_cursor cursor;
@@ -766,9 +740,6 @@ run(struct ofproto *ofproto_)
     struct ofbundle *bundle;
     int error;
 
-    if (!clogged) {
-        complete_operations(ofproto);
-    }
     dpif_run(ofproto->dpif);
 
     error = run_fast(ofproto_);
@@ -829,10 +800,6 @@ wait(struct ofproto *ofproto_)
     struct ofport_dpif *ofport;
     struct ofbundle *bundle;
 
-    if (!clogged && !list_is_empty(&ofproto->completions)) {
-        poll_immediate_wake();
-    }
-
     dpif_wait(ofproto->dpif);
     dpif_recv_wait(ofproto->dpif);
     if (ofproto->sflow) {
@@ -3843,16 +3810,8 @@ rule_dpif_lookup(struct ofproto_dpif *ofproto, const struct flow *flow,
 static void
 complete_operation(struct rule_dpif *rule)
 {
-    struct ofproto_dpif *ofproto = ofproto_dpif_cast(rule->up.ofproto);
-
     rule_invalidate(rule);
-    if (clogged) {
-        struct dpif_completion *c = xmalloc(sizeof *c);
-        c->op = rule->up.pending;
-        list_push_back(&ofproto->completions, &c->list_node);
-    } else {
-        ofoperation_complete(rule->up.pending, 0);
-    }
+    ofoperation_complete(rule->up.pending, 0);
 }
 
 static struct rule *
@@ -5801,22 +5760,6 @@ exit:
 }
 
 static void
-ofproto_dpif_clog(struct unixctl_conn *conn OVS_UNUSED, int argc OVS_UNUSED,
-                  const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED)
-{
-    clogged = true;
-    unixctl_command_reply(conn, 200, NULL);
-}
-
-static void
-ofproto_dpif_unclog(struct unixctl_conn *conn OVS_UNUSED, int argc OVS_UNUSED,
-                    const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED)
-{
-    clogged = false;
-    unixctl_command_reply(conn, 200, NULL);
-}
-
-static void
 ofproto_dpif_unixctl_init(void)
 {
     static bool registered;
@@ -5833,10 +5776,6 @@ ofproto_dpif_unixctl_init(void)
                              ofproto_unixctl_fdb_flush, NULL);
     unixctl_command_register("fdb/show", "bridge", 1, 1,
                              ofproto_unixctl_fdb_show, NULL);
-    unixctl_command_register("ofproto/clog", "", 0, 0,
-                             ofproto_dpif_clog, NULL);
-    unixctl_command_register("ofproto/unclog", "", 0, 0,
-                             ofproto_dpif_unclog, NULL);
 }
 
 /* Linux VLAN device support (e.g. "eth0.10" for VLAN 10.)
-- 
1.7.2.5




More information about the dev mailing list