]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/tun.c
drivers/net: fix sparse warning: returning void-valued expression
[linux-2.6-omap-h63xx.git] / drivers / net / tun.c
index 5a6203072ce71f0694540210cf33a6ad44dc17e7..fd0b11ea5562fe12cd7b2e517470010bae77f0bd 100644 (file)
@@ -305,6 +305,23 @@ tun_net_change_mtu(struct net_device *dev, int new_mtu)
        return 0;
 }
 
+static const struct net_device_ops tun_netdev_ops = {
+       .ndo_open               = tun_net_open,
+       .ndo_stop               = tun_net_close,
+       .ndo_start_xmit         = tun_net_xmit,
+       .ndo_change_mtu         = tun_net_change_mtu,
+};
+
+static const struct net_device_ops tap_netdev_ops = {
+       .ndo_open               = tun_net_open,
+       .ndo_stop               = tun_net_close,
+       .ndo_start_xmit         = tun_net_xmit,
+       .ndo_change_mtu         = tun_net_change_mtu,
+       .ndo_set_multicast_list = tun_net_mclist,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
+};
+
 /* Initialize net device. */
 static void tun_net_init(struct net_device *dev)
 {
@@ -312,11 +329,12 @@ static void tun_net_init(struct net_device *dev)
 
        switch (tun->flags & TUN_TYPE_MASK) {
        case TUN_TUN_DEV:
+               dev->netdev_ops = &tun_netdev_ops;
+
                /* Point-to-Point TUN Device */
                dev->hard_header_len = 0;
                dev->addr_len = 0;
                dev->mtu = 1500;
-               dev->change_mtu = tun_net_change_mtu;
 
                /* Zero header length */
                dev->type = ARPHRD_NONE;
@@ -325,10 +343,9 @@ static void tun_net_init(struct net_device *dev)
                break;
 
        case TUN_TAP_DEV:
+               dev->netdev_ops = &tun_netdev_ops;
                /* Ethernet TAP Device */
                ether_setup(dev);
-               dev->change_mtu         = tun_net_change_mtu;
-               dev->set_multicast_list = tun_net_mclist;
 
                random_ether_addr(dev->dev_addr);
 
@@ -675,9 +692,6 @@ static void tun_setup(struct net_device *dev)
        tun->owner = -1;
        tun->group = -1;
 
-       dev->open = tun_net_open;
-       dev->hard_start_xmit = tun_net_xmit;
-       dev->stop = tun_net_close;
        dev->ethtool_ops = &tun_ethtool_ops;
        dev->destructor = free_netdev;
        dev->features |= NETIF_F_NETNS_LOCAL;
@@ -749,6 +763,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
                        return -ENOMEM;
 
                dev_net_set(dev, net);
+
                tun = netdev_priv(dev);
                tun->dev = dev;
                tun->flags = flags;