X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-internal_dev.c;h=74a7dfdb236d77b729b4fe0f64e8287637dc508f;hb=4faaba2b90979e1106b8c9b0430481f2cc62364d;hp=86171dbc9cb305db2ad1d84b72d9e599e56c84c2;hpb=dd8d6b8cd4d708553037e306d41d1c501d3cecad;p=openvswitch diff --git a/datapath/vport-internal_dev.c b/datapath/vport-internal_dev.c index 86171dbc..74a7dfdb 100644 --- a/datapath/vport-internal_dev.c +++ b/datapath/vport-internal_dev.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include @@ -72,13 +71,10 @@ static int internal_dev_mac_addr(struct net_device *dev, void *p) /* Called with rcu_read_lock and bottom-halves disabled. */ static int internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev) { - struct internal_dev *internal_dev = internal_dev_priv(netdev); - struct vport *vport = rcu_dereference(internal_dev->vport); - compute_ip_summed(skb, true); OVS_CB(skb)->flow = NULL; - vport_receive(vport, skb); + vport_receive(internal_dev_priv(netdev)->vport, skb); return 0; } @@ -197,7 +193,7 @@ static struct vport *internal_dev_create(const struct vport_parms *parms) } internal_dev = internal_dev_priv(netdev_vport->dev); - rcu_assign_pointer(internal_dev->vport, vport); + internal_dev->vport = vport; err = register_netdevice(netdev_vport->dev); if (err) @@ -223,8 +219,6 @@ static int internal_dev_destroy(struct vport *vport) netif_stop_queue(netdev_vport->dev); dev_set_promiscuity(netdev_vport->dev, -1); - synchronize_rcu(); - unregister_netdevice(netdev_vport->dev); vport_free(vport); @@ -288,11 +282,8 @@ int is_internal_vport(const struct vport *vport) struct vport *internal_dev_get_vport(struct net_device *netdev) { - struct internal_dev *internal_dev; - if (!is_internal_dev(netdev)) return NULL; - internal_dev = internal_dev_priv(netdev); - return rcu_dereference(internal_dev->vport); + return internal_dev_priv(netdev)->vport; }