openvswitch: Remove Linux bridge compatibility.
[sliver-openvswitch.git] / datapath / vport.c
index d81f686..a78ebfa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007-2012 Nicira Networks.
+ * Copyright (c) 2007-2012 Nicira, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 2 of the GNU General Public
@@ -41,8 +41,11 @@ static const struct vport_ops *base_vport_ops_list[] = {
        &ovs_internal_vport_ops,
        &ovs_patch_vport_ops,
        &ovs_gre_vport_ops,
+       &ovs_gre_ft_vport_ops,
+       &ovs_gre64_vport_ops,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
        &ovs_capwap_vport_ops,
+       &ovs_vxlan_vport_ops,
 #endif
 };
 
@@ -148,19 +151,6 @@ struct vport *ovs_vport_locate(struct net *net, const char *name)
        return NULL;
 }
 
-static void release_vport(struct kobject *kobj)
-{
-       struct vport *p = container_of(kobj, struct vport, kobj);
-       kfree(p);
-}
-
-static struct kobj_type brport_ktype = {
-#ifdef CONFIG_SYSFS
-       .sysfs_ops = &ovs_brport_sysfs_ops,
-#endif
-       .release = release_vport
-};
-
 /**
  *     ovs_vport_alloc - allocate and initialize new vport
  *
@@ -190,13 +180,9 @@ struct vport *ovs_vport_alloc(int priv_size, const struct vport_ops *ops,
 
        vport->dp = parms->dp;
        vport->port_no = parms->port_no;
-       vport->upcall_pid = parms->upcall_pid;
+       vport->upcall_portid = parms->upcall_portid;
        vport->ops = ops;
-
-       /* Initialize kobject for bridge.  This will be added as
-        * /sys/class/net/<devname>/brport later, if sysfs is enabled. */
-       vport->kobj.kset = NULL;
-       kobject_init(&vport->kobj, &brport_ktype);
+       INIT_HLIST_NODE(&vport->dp_hash_node);
 
        vport->percpu_stats = alloc_percpu(struct vport_percpu_stats);
        if (!vport->percpu_stats) {
@@ -222,8 +208,7 @@ struct vport *ovs_vport_alloc(int priv_size, const struct vport_ops *ops,
 void ovs_vport_free(struct vport *vport)
 {
        free_percpu(vport->percpu_stats);
-
-       kobject_put(&vport->kobj);
+       kfree(vport);
 }
 
 /**
@@ -450,8 +435,7 @@ void ovs_vport_receive(struct vport *vport, struct sk_buff *skb)
 {
        struct vport_percpu_stats *stats;
 
-       stats = per_cpu_ptr(vport->percpu_stats, smp_processor_id());
-
+       stats = this_cpu_ptr(vport->percpu_stats);
        u64_stats_update_begin(&stats->sync);
        stats->rx_packets++;
        stats->rx_bytes += skb->len;
@@ -461,7 +445,7 @@ void ovs_vport_receive(struct vport *vport, struct sk_buff *skb)
                OVS_CB(skb)->flow = NULL;
 
        if (!(vport->ops->flags & VPORT_F_TUN_ID))
-               OVS_CB(skb)->tun_id = 0;
+               OVS_CB(skb)->tun_key = NULL;
 
        ovs_dp_process_received_packet(vport, skb);
 }
@@ -482,7 +466,7 @@ int ovs_vport_send(struct vport *vport, struct sk_buff *skb)
        if (likely(sent)) {
                struct vport_percpu_stats *stats;
 
-               stats = per_cpu_ptr(vport->percpu_stats, smp_processor_id());
+               stats = this_cpu_ptr(vport->percpu_stats);
 
                u64_stats_update_begin(&stats->sync);
                stats->tx_packets++;
@@ -521,7 +505,7 @@ void ovs_vport_record_error(struct vport *vport, enum vport_err_type err_type)
        case VPORT_E_TX_ERROR:
                vport->err_stats.tx_errors++;
                break;
-       };
+       }
 
        spin_unlock(&vport->stats_lock);
 }