From 795fe1fba0ffd036bf68c237f4857ce7a4003068 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 23 Jul 2009 16:49:19 -0700 Subject: [PATCH] vswitchd: Avoid netdev_nodev_set_policing(). 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 e3e6ea3a..8e27fc2f 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 c41c132c..cd683c0e 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; +} + /* 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); } } diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c index 4352f5f7..3ee29c77 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 147b9d43..00000000 --- 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 - -#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