[ovs-dev] [PATCH] v2 openvswitch: Remove Linux bridge compatibility.
Jesse Gross
jesse at nicira.com
Tue Dec 4 19:11:28 UTC 2012
On Mon, Dec 3, 2012 at 10:53 AM, Pravin B Shelar <pshelar at nicira.com> wrote:
> Currently brcompat does not on master due to recent
> datapath changes. We have decided to remove it as it is
> not used very widely.
I think you missing a word in the first sentence.
> diff --git a/NEWS b/NEWS
> index bb80beb..ac56e3e 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -67,6 +67,7 @@ v1.9.0 - xx xxx xxxx
> - CAPWAP tunnel support.
> - The data in the RARP packets can now be matched in the same way as the
> data in ARP packets.
> + - Bridge compatibility is removed.
This patch should just be targeted master (i.e. post-1.9). For the
upcoming release it should continue to work as is.
> diff --git a/datapath/vport-netdev.c b/datapath/vport-netdev.c
> index 5f437d3..6701838 100644
> --- a/datapath/vport-netdev.c
> +++ b/datapath/vport-netdev.c
> @@ -426,10 +426,21 @@ const struct vport_ops ovs_netdev_vport_ops = {
>
> #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
> /*
> - * In kernels earlier than 2.6.36, Open vSwitch cannot safely coexist with the
> - * Linux bridge module, because there is only a single bridge hook function and
> - * only a single br_port member in struct net_device, so this prevents loading
> - * both bridge and openvswitch at the same time.
> + * Enforces, mutual exclusion with the Linux bridge module, by declaring and
> + * exporting br_should_route_hook. Because the bridge module also exports the
> + * same symbol, the module loader will refuse to load both modules at the same
> + * time (e.g. "bridge: exports duplicate symbol br_should_route_hook (owned by
> + * openvswitch)").
> + *
> + * Before Linux 2.6.36, Open vSwitch cannot safely coexist with the Linux
> + * bridge module, so openvswitch uses this macro in those versions. In
> + * Linux 2.6.36 and later, Open vSwitch can coexist with the bridge module,
> + * but it makes no sense to load both bridge and brcompat, so brcompat uses
> + * this macro in those versions.
We can remove mentions of brcompat here.
> diff --git a/datapath/vport.h b/datapath/vport.h
> index 5a7caf5..852b2b0 100644
> --- a/datapath/vport.h
> +++ b/datapath/vport.h
> @@ -76,7 +76,6 @@ struct vport_err_stats {
> * @rcu: RCU callback head for deferred destruction.
> * @port_no: Index into @dp's @ports array.
> * @dp: Datapath to which this port belongs.
> - * @kobj: Represents /sys/class/net/<devname>/brport.
> * @linkname: The name of the link from /sys/class/net/<datapath>/brif to this
> * &struct vport. (We keep this around so that we can delete it if the
> * device gets renamed.) Set to the null string when no link exists.
> @@ -95,7 +94,6 @@ struct vport {
> struct rcu_head rcu;
> u16 port_no;
> struct datapath *dp;
> - struct kobject kobj;
> char linkname[IFNAMSIZ];
> u32 upcall_pid;
There are some vport ops that are now unused and can be removed:
* @get_kobj: Get the kobj associated with the device (may return null).
* @get_dev_flags: Get the device's flags.
* @is_running: Checks whether the device is running.
* @get_operstate: Get the device's operating state.
* @get_mtu: Get the device's MTU. May be %NULL if the device does not have an
* MTU (as e.g. some tunnels do not). Must be implemented if @get_ifindex is
* implemented.
More information about the dev
mailing list