netdev-pltap: Make access to AF_INET socket thread-safe.
[sliver-openvswitch.git] / datapath / vport-internal_dev.c
index b425d76..9ee1c42 100644 (file)
@@ -94,7 +94,7 @@ static int internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev)
        vlan_copy_skb_tci(skb);
 
        rcu_read_lock();
-       ovs_vport_receive(internal_dev_priv(netdev)->vport, skb);
+       ovs_vport_receive(internal_dev_priv(netdev)->vport, skb, NULL);
        rcu_read_unlock();
        return 0;
 }
@@ -173,7 +173,7 @@ static void do_setup(struct net_device *netdev)
        netdev->hard_start_xmit = internal_dev_xmit;
        netdev->open = internal_dev_open;
        netdev->stop = internal_dev_stop;
-       netdev->set_mac_address = internal_dev_mac_addr;
+       netdev->set_mac_address = eth_mac_addr;
        netdev->change_mtu = internal_dev_change_mtu;
 #endif
 
@@ -281,6 +281,7 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb)
        skb->dev = netdev;
        skb->pkt_type = PACKET_HOST;
        skb->protocol = eth_type_trans(skb, netdev);
+       skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
        forward_ip_summed(skb, false);
 
        netif_rx(skb);
@@ -294,11 +295,9 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb)
 
 const struct vport_ops ovs_internal_vport_ops = {
        .type           = OVS_VPORT_TYPE_INTERNAL,
-       .flags          = VPORT_F_REQUIRED,
        .create         = internal_dev_create,
        .destroy        = internal_dev_destroy,
        .get_name       = ovs_netdev_get_name,
-       .get_ifindex    = ovs_netdev_get_ifindex,
        .send           = internal_dev_recv,
 };