[ovs-discuss] [abstract-netdev v2 14/21] vswitchd: Avoid netdev_nodev_set_policing().
Ben Pfaff
blp at nicira.com
Tue Jul 28 21:13:40 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 5e77ec1..97ea7ad 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -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;
+}
+
static void
for_each_iface(struct bridge *br,
bool (*cb)(struct bridge *, struct iface *, void *aux),
@@ -613,6 +623,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