X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fnet%2Fibmveth.c;h=5fa162f6c40afa22d1b92bf6f5f202404c443e62;hb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;hp=c3836f6de58c91f5330ca004e68238ab7bb278bc;hpb=c449269f45c2cdf53af08c8d0af37472f66539d9;p=linux-2.6.git diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index c3836f6de..5fa162f6c 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c @@ -55,7 +55,6 @@ #include #include #include -#include #include #include "ibmveth.h" @@ -874,14 +873,14 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ struct net_device *netdev; struct ibmveth_adapter *adapter; - unsigned int *mac_addr_p; + unsigned char *mac_addr_p; unsigned int *mcastFilterSize_p; ibmveth_debug_printk_no_adapter("entering ibmveth_probe for UA 0x%x\n", dev->unit_address); - mac_addr_p = (unsigned int *) vio_get_attribute(dev, VETH_MAC_ADDR, 0); + mac_addr_p = (unsigned char *) vio_get_attribute(dev, VETH_MAC_ADDR, 0); if(!mac_addr_p) { ibmveth_error_printk("Can't find VETH_MAC_ADDR attribute\n"); return 0; @@ -902,7 +901,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ adapter = netdev->priv; memset(adapter, 0, sizeof(adapter)); - dev->driver_data = netdev; + dev->dev.driver_data = netdev; adapter->vdev = dev; adapter->netdev = netdev; @@ -916,8 +915,8 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ The RPA doc specifies that the first byte must be 10b, so we'll just look for it to solve this 8 vs. 6 byte field issue */ - while (*((char*)mac_addr_p) != (char)(0x02)) - ((char*)mac_addr_p)++; + if ((*mac_addr_p & 0x3) != 0x02) + mac_addr_p += 2; adapter->mac_addr = 0; memcpy(&adapter->mac_addr, mac_addr_p, 6); @@ -935,6 +934,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ netdev->do_ioctl = ibmveth_ioctl; netdev->ethtool_ops = &netdev_ethtool_ops; netdev->change_mtu = ibmveth_change_mtu; + SET_NETDEV_DEV(netdev, &dev->dev); memcpy(&netdev->dev_addr, &adapter->mac_addr, netdev->addr_len); @@ -971,7 +971,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->driver_data; + struct net_device *netdev = dev->dev.driver_data; struct ibmveth_adapter *adapter = netdev->priv; unregister_netdev(netdev);