[ovs-discuss] [PATCH 14/20] vswitchd: Avoid netdev_nodev_set_policing().

Ben Pfaff blp at nicira.com
Fri Jul 24 21:19:57 UTC 2009


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    |    2 -
 vswitchd/bridge.c       |   11 +++++++++
 vswitchd/ovs-vswitchd.c |    3 --
 vswitchd/port.c         |   56 -----------------------------------------------
 vswitchd/port.h         |   22 ------------------
 5 files changed, 11 insertions(+), 83 deletions(-)
 delete mode 100644 vswitchd/port.c
 delete mode 100644 vswitchd/port.h

diff --git a/vswitchd/automake.mk b/vswitchd/automake.mk
index e3e6ea3..8e27fc2 100644
--- a/vswitchd/automake.mk
+++ b/vswitchd/automake.mk
@@ -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 \
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 22dc900..362643f 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -394,6 +394,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;
+}
+
 static void
 for_each_iface(struct bridge *br,
                bool (*cb)(struct bridge *, struct iface *, void *aux),
@@ -608,6 +618,7 @@ bridge_reconfigure(void)
     }
     LIST_FOR_EACH (br, struct bridge, node, &all_bridges) {
         brstp_reconfigure(br);
+        for_each_iface(br, set_iface_policing, NULL);
     }
 }
 
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 4352f5f..3ee29c7 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -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
index 147b9d4..0000000
--- a/vswitchd/port.c
+++ /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
index 2055912..0000000
--- a/vswitchd/port.h
+++ /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 */
-- 
1.6.3.3





More information about the discuss mailing list