net: Micrel KS8851 SPI network driver
[pandora-kernel.git] / drivers / net / ibmveth.c
index 5c6315d..0995c43 100644 (file)
@@ -1203,6 +1203,20 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev)
        return ret;
 }
 
+static const struct net_device_ops ibmveth_netdev_ops = {
+       .ndo_open               = ibmveth_open,
+       .ndo_stop               = ibmveth_close,
+       .ndo_start_xmit         = ibmveth_start_xmit,
+       .ndo_set_multicast_list = ibmveth_set_multicast_list,
+       .ndo_do_ioctl           = ibmveth_ioctl,
+       .ndo_change_mtu         = ibmveth_change_mtu,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_set_mac_address    = eth_mac_addr,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = ibmveth_poll_controller,
+#endif
+};
+
 static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id)
 {
        int rc, i;
@@ -1241,7 +1255,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
                return -ENOMEM;
 
        adapter = netdev_priv(netdev);
-       dev->dev.driver_data = netdev;
+       dev_set_drvdata(&dev->dev, netdev);
 
        adapter->vdev = dev;
        adapter->netdev = netdev;
@@ -1265,21 +1279,13 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
        memcpy(&adapter->mac_addr, mac_addr_p, 6);
 
        netdev->irq = dev->irq;
-       netdev->open               = ibmveth_open;
-       netdev->stop               = ibmveth_close;
-       netdev->hard_start_xmit    = ibmveth_start_xmit;
-       netdev->set_multicast_list = ibmveth_set_multicast_list;
-       netdev->do_ioctl           = ibmveth_ioctl;
-       netdev->ethtool_ops           = &netdev_ethtool_ops;
-       netdev->change_mtu         = ibmveth_change_mtu;
+       netdev->netdev_ops = &ibmveth_netdev_ops;
+       netdev->ethtool_ops = &netdev_ethtool_ops;
        SET_NETDEV_DEV(netdev, &dev->dev);
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       netdev->poll_controller = ibmveth_poll_controller;
-#endif
        netdev->features |= NETIF_F_LLTX;
        spin_lock_init(&adapter->stats_lock);
 
-       memcpy(&netdev->dev_addr, &adapter->mac_addr, netdev->addr_len);
+       memcpy(netdev->dev_addr, &adapter->mac_addr, netdev->addr_len);
 
        for(i = 0; i<IbmVethNumBufferPools; i++) {
                struct kobject *kobj = &adapter->rx_buff_pool[i].kobj;
@@ -1335,7 +1341,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
 
 static int __devexit ibmveth_remove(struct vio_dev *dev)
 {
-       struct net_device *netdev = dev->dev.driver_data;
+       struct net_device *netdev = dev_get_drvdata(&dev->dev);
        struct ibmveth_adapter *adapter = netdev_priv(netdev);
        int i;
 
@@ -1368,8 +1374,8 @@ static void ibmveth_proc_unregister_driver(void)
 static int ibmveth_show(struct seq_file *seq, void *v)
 {
        struct ibmveth_adapter *adapter = seq->private;
-       char *current_mac = ((char*) &adapter->netdev->dev_addr);
-       char *firmware_mac = ((char*) &adapter->mac_addr) ;
+       char *current_mac = (char *) adapter->netdev->dev_addr;
+       char *firmware_mac = (char *) &adapter->mac_addr;
 
        seq_printf(seq, "%s %s\n\n", ibmveth_driver_string, ibmveth_driver_version);
 
@@ -1468,8 +1474,8 @@ const char * buf, size_t count)
        struct ibmveth_buff_pool *pool = container_of(kobj,
                                                      struct ibmveth_buff_pool,
                                                      kobj);
-       struct net_device *netdev =
-           container_of(kobj->parent, struct device, kobj)->driver_data;
+       struct net_device *netdev = dev_get_drvdata(
+           container_of(kobj->parent, struct device, kobj));
        struct ibmveth_adapter *adapter = netdev_priv(netdev);
        long value = simple_strtol(buf, NULL, 10);
        long rc;