omap: i2c: add a timeout to the busy waiting
[safe/jmp/linux-2.6] / drivers / net / ibmveth.c
index 7902e5e..cd508a8 100644 (file)
@@ -49,6 +49,7 @@
 #include <linux/proc_fs.h>
 #include <linux/in.h>
 #include <linux/ip.h>
+#include <linux/slab.h>
 #include <net/net_namespace.h>
 #include <asm/hvcall.h>
 #include <asm/atomic.h>
@@ -625,7 +626,7 @@ static int ibmveth_open(struct net_device *netdev)
        }
 
        ibmveth_debug_printk("registering irq 0x%x\n", netdev->irq);
-       if((rc = request_irq(netdev->irq, &ibmveth_interrupt, 0, netdev->name, netdev)) != 0) {
+       if((rc = request_irq(netdev->irq, ibmveth_interrupt, 0, netdev->name, netdev)) != 0) {
                ibmveth_error_printk("unable to request irq 0x%x, rc %d\n", netdev->irq, rc);
                do {
                        rc = h_free_logical_lan(adapter->vdev->unit_address);
@@ -887,7 +888,8 @@ static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 #define page_offset(v) ((unsigned long)(v) & ((1 << 12) - 1))
 
-static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t ibmveth_start_xmit(struct sk_buff *skb,
+                                     struct net_device *netdev)
 {
        struct ibmveth_adapter *adapter = netdev_priv(netdev);
        union ibmveth_buf_desc desc;
@@ -971,7 +973,7 @@ out:        spin_lock_irqsave(&adapter->stats_lock, flags);
        spin_unlock_irqrestore(&adapter->stats_lock, flags);
 
        dev_kfree_skb(skb);
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 static int ibmveth_poll(struct napi_struct *napi, int budget)
@@ -1061,7 +1063,8 @@ static void ibmveth_set_multicast_list(struct net_device *netdev)
        struct ibmveth_adapter *adapter = netdev_priv(netdev);
        unsigned long lpar_rc;
 
-       if((netdev->flags & IFF_PROMISC) || (netdev->mc_count > adapter->mcastFilterSize)) {
+       if ((netdev->flags & IFF_PROMISC) ||
+           (netdev_mc_count(netdev) > adapter->mcastFilterSize)) {
                lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address,
                                           IbmVethMcastEnableRecv |
                                           IbmVethMcastDisableFiltering,
@@ -1070,8 +1073,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev)
                        ibmveth_error_printk("h_multicast_ctrl rc=%ld when entering promisc mode\n", lpar_rc);
                }
        } else {
-               struct dev_mc_list *mclist = netdev->mc_list;
-               int i;
+               struct dev_mc_list *mclist;
                /* clear the filter table & disable filtering */
                lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address,
                                           IbmVethMcastEnableRecv |
@@ -1082,7 +1084,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev)
                        ibmveth_error_printk("h_multicast_ctrl rc=%ld when attempting to clear filter table\n", lpar_rc);
                }
                /* add the addresses to the filter table */
-               for(i = 0; i < netdev->mc_count; ++i, mclist = mclist->next) {
+               netdev_for_each_mc_addr(mclist, netdev) {
                        // add the multicast address to the filter table
                        unsigned long mcast_addr = 0;
                        memcpy(((char *)&mcast_addr)+2, mclist->dmi_addr, 6);
@@ -1285,7 +1287,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
        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;
@@ -1374,8 +1376,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);
 
@@ -1576,7 +1578,7 @@ static struct attribute * veth_pool_attrs[] = {
        NULL,
 };
 
-static struct sysfs_ops veth_pool_ops = {
+static const struct sysfs_ops veth_pool_ops = {
        .show   = veth_pool_show,
        .store  = veth_pool_store,
 };