vswitchd: Avoid netdev_nodev_set_policing().
authorBen Pfaff <blp@nicira.com>
Thu, 23 Jul 2009 23:49:19 +0000 (16:49 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 30 Jul 2009 23:07:14 +0000 (16:07 -0700)
The netdev_nodev_*() functions have always been a bit of a kluge.  It's
better to keep a network device open than to open it every time that it is
needed.

vswitchd/automake.mk
vswitchd/bridge.c
vswitchd/ovs-vswitchd.c
vswitchd/port.c [deleted file]
vswitchd/port.h [deleted file]

index e3e6ea3a8b5f3a87afa737898a8c30557e618547..8e27fc2fed9a626726d17774aeb8a5de66350796 100644 (file)
@@ -13,8 +13,6 @@ vswitchd_ovs_vswitchd_SOURCES = \
        vswitchd/bridge.h \
        vswitchd/mgmt.c \
        vswitchd/mgmt.h \
-       vswitchd/port.c \
-       vswitchd/port.h \
        vswitchd/proc-net-compat.c \
        vswitchd/proc-net-compat.h \
        vswitchd/ovs-vswitchd.c \
index c41c132c123ec7a31fdb15b401a861d6d8048ff7..cd683c0e2afa2bd96ccca13d429e12970ce14d61 100644 (file)
@@ -399,6 +399,16 @@ check_iface_dp_ifidx(struct bridge *br, struct iface *iface,
     }
 }
 
+static bool
+set_iface_policing(struct bridge *br UNUSED, struct iface *iface,
+                   void *aux UNUSED)
+{
+    int rate = cfg_get_int(0, "port.%s.ingress.policing-rate", iface->name);
+    int burst = cfg_get_int(0, "port.%s.ingress.policing-burst", iface->name);
+    netdev_set_policing(iface->netdev, rate, burst);
+    return true;
+}
+
 /* Calls 'cb' for each interfaces in 'br', passing along the 'aux' argument.
  * Deletes from 'br' all the interfaces for which 'cb' returns false, and then
  * deletes from 'br' any ports that no longer have any interfaces. */
@@ -617,6 +627,7 @@ bridge_reconfigure(void)
     }
     LIST_FOR_EACH (br, struct bridge, node, &all_bridges) {
         brstp_reconfigure(br);
+        iterate_and_prune_ifaces(br, set_iface_policing, NULL);
     }
 }
 
index 4352f5f743af394d3324af99c6a619e2b44c9fd9..3ee29c77194659936479cd0167e42248db60f0e6 100644 (file)
@@ -34,7 +34,6 @@
 #include "mgmt.h"
 #include "ovs-vswitchd.h"
 #include "poll-loop.h"
-#include "port.h"
 #include "proc-net-compat.h"
 #include "process.h"
 #include "signals.h"
@@ -84,7 +83,6 @@ main(int argc, char *argv[])
     cfg_read();
     mgmt_init();
     bridge_init();
-    port_init();
     mgmt_reconfigure();
 
     need_reconfigure = false;
@@ -133,7 +131,6 @@ reconfigure(void)
     cfg_read();
     bridge_reconfigure();
     mgmt_reconfigure();
-    port_reconfigure();
 
     for (i = 0; i < n_conns; i++) {
         unixctl_command_reply(conns[i], 202, NULL);
diff --git a/vswitchd/port.c b/vswitchd/port.c
deleted file mode 100644 (file)
index 147b9d4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (c) 2009 Nicira Networks
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <config.h>
-
-#include "bridge.h"
-#include "cfg.h"
-#include "netdev.h"
-#include "ovs-vswitchd.h"
-#include "port.h"
-#include "svec.h"
-
-#define THIS_MODULE VLM_port
-#include "vlog.h"
-
-static int
-set_ingress_policing(const char *port_name) 
-{
-    int kbits_rate = cfg_get_int(0, "port.%s.ingress.policing-rate", 
-            port_name);
-    int kbits_burst = cfg_get_int(0, "port.%s.ingress.policing-burst", 
-            port_name);
-
-    return netdev_nodev_set_policing(port_name, kbits_rate, kbits_burst);
-}
-
-void
-port_init(void)
-{
-    port_reconfigure();
-}
-
-void
-port_reconfigure(void)
-{
-    struct svec ports;
-    int i;
-
-    svec_init(&ports);
-    bridge_get_ifaces(&ports);
-    for (i=0; i<ports.n; i++) {
-        set_ingress_policing(ports.names[i]);
-    }
-}
diff --git a/vswitchd/port.h b/vswitchd/port.h
deleted file mode 100644 (file)
index 2055912..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (c) 2009 Nicira Networks
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VSWITCHD_PORT_H
-#define VSWITCHD_PORT_H 1
-
-void port_init(void);
-void port_reconfigure(void);
-
-#endif /* port.h */