parisc: invoke oom-killer from page fault
[safe/jmp/linux-2.6] / drivers / net / ewrk3.c
index 1e97232..91e59f3 100644 (file)
 
 #include <linux/module.h>
 #include <linux/kernel.h>
+#include <linux/sched.h>
 #include <linux/string.h>
 #include <linux/errno.h>
 #include <linux/ioport.h>
@@ -298,7 +299,7 @@ struct ewrk3_private {
    ** Public Functions
  */
 static int ewrk3_open(struct net_device *dev);
-static int ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev);
 static irqreturn_t ewrk3_interrupt(int irq, void *dev_id);
 static int ewrk3_close(struct net_device *dev);
 static void set_multicast_list(struct net_device *dev);
@@ -764,7 +765,7 @@ static void ewrk3_timeout(struct net_device *dev)
 /*
    ** Writes a socket buffer to the free page queue
  */
-static int ewrk3_queue_pkt (struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev)
 {
        struct ewrk3_private *lp = netdev_priv(dev);
        u_long iobase = dev->base_addr;
@@ -868,7 +869,7 @@ static int ewrk3_queue_pkt (struct sk_buff *skb, struct net_device *dev)
        if (inb (EWRK3_FMQC) == 0)
                netif_stop_queue (dev);
 
-       return 0;
+       return NETDEV_TX_OK;
 
 err_out:
        ENABLE_IRQs;
@@ -1168,7 +1169,7 @@ static void set_multicast_list(struct net_device *dev)
 static void SetMulticastFilter(struct net_device *dev)
 {
        struct ewrk3_private *lp = netdev_priv(dev);
-       struct dev_mc_list *dmi = dev->mc_list;
+       struct dev_mc_list *dmi;
        u_long iobase = dev->base_addr;
        int i;
        char *addrs, bit, byte;
@@ -1212,9 +1213,8 @@ static void SetMulticastFilter(struct net_device *dev)
                }
 
                /* Update table */
-               for (i = 0; i < dev->mc_count; i++) {   /* for each address in the list */
+               netdev_for_each_mc_addr(dmi, dev) {
                        addrs = dmi->dmi_addr;
-                       dmi = dmi->next;
                        if ((*addrs & 0x01) == 1) {     /* multicast address? */
                                crc = ether_crc_le(ETH_ALEN, addrs);
                                hashcode = crc & ((1 << 9) - 1);        /* hashcode is 9 LSb of CRC */