Merge branch 'for-russell' of git://git.kernel.org/pub/scm/linux/kernel/git/chris...
[safe/jmp/linux-2.6] / drivers / net / sc92031.c
index af0422d..8b75bef 100644 (file)
@@ -796,7 +796,7 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
 
                rx_len -= rx_size_align + 4;
 
-               skb = dev_alloc_skb(pkt_size + NET_IP_ALIGN);
+               skb = netdev_alloc_skb(dev, pkt_size + NET_IP_ALIGN);
                if (unlikely(!skb)) {
                        if (printk_ratelimit())
                                printk(KERN_ERR "%s: Couldn't allocate a skb_buff for a packet of size %u\n",
@@ -816,7 +816,6 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
                }
 
                skb->protocol = eth_type_trans(skb, dev);
-               dev->last_rx = jiffies;
                netif_rx(skb);
 
                dev->stats.rx_bytes += pkt_size;
@@ -947,16 +946,13 @@ static struct net_device_stats *sc92031_get_stats(struct net_device *dev)
 
 static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-       int err = 0;
        struct sc92031_priv *priv = netdev_priv(dev);
        void __iomem *port_base = priv->port_base;
-
        unsigned len;
        unsigned entry;
        u32 tx_status;
 
        if (unlikely(skb->len > TX_BUF_SIZE)) {
-               err = -EMSGSIZE;
                dev->stats.tx_dropped++;
                goto out;
        }
@@ -964,7 +960,6 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
        spin_lock(&priv->lock);
 
        if (unlikely(!netif_carrier_ok(dev))) {
-               err = -ENOLINK;
                dev->stats.tx_dropped++;
                goto out_unlock;
        }
@@ -976,7 +971,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
        skb_copy_and_csum_dev(skb, priv->tx_bufs + entry * TX_BUF_SIZE);
 
        len = skb->len;
-       if (unlikely(len < ETH_ZLEN)) {
+       if (len < ETH_ZLEN) {
                memset(priv->tx_bufs + entry * TX_BUF_SIZE + len,
                                0, ETH_ZLEN - len);
                len = ETH_ZLEN;
@@ -1007,7 +1002,7 @@ out_unlock:
 out:
        dev_kfree_skb(skb);
 
-       return err;
+       return NETDEV_TX_OK;
 }
 
 static int sc92031_open(struct net_device *dev)
@@ -1391,7 +1386,7 @@ static void sc92031_ethtool_get_ethtool_stats(struct net_device *dev,
        spin_unlock_bh(&priv->lock);
 }
 
-static struct ethtool_ops sc92031_ethtool_ops = {
+static const struct ethtool_ops sc92031_ethtool_ops = {
        .get_settings           = sc92031_ethtool_get_settings,
        .set_settings           = sc92031_ethtool_set_settings,
        .get_drvinfo            = sc92031_ethtool_get_drvinfo,
@@ -1404,6 +1399,22 @@ static struct ethtool_ops sc92031_ethtool_ops = {
        .get_ethtool_stats      = sc92031_ethtool_get_ethtool_stats,
 };
 
+
+static const struct net_device_ops sc92031_netdev_ops = {
+       .ndo_get_stats          = sc92031_get_stats,
+       .ndo_start_xmit         = sc92031_start_xmit,
+       .ndo_open               = sc92031_open,
+       .ndo_stop               = sc92031_stop,
+       .ndo_set_multicast_list = sc92031_set_multicast_list,
+       .ndo_change_mtu         = eth_change_mtu,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_tx_timeout         = sc92031_tx_timeout,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = sc92031_poll_controller,
+#endif
+};
+
 static int __devinit sc92031_probe(struct pci_dev *pdev,
                const struct pci_device_id *id)
 {
@@ -1457,17 +1468,9 @@ static int __devinit sc92031_probe(struct pci_dev *pdev,
        /* faked with skb_copy_and_csum_dev */
        dev->features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA;
 
-       dev->get_stats          = sc92031_get_stats;
-       dev->ethtool_ops        = &sc92031_ethtool_ops;
-       dev->hard_start_xmit    = sc92031_start_xmit;
+       dev->netdev_ops         = &sc92031_netdev_ops;
        dev->watchdog_timeo     = TX_TIMEOUT;
-       dev->open               = sc92031_open;
-       dev->stop               = sc92031_stop;
-       dev->set_multicast_list = sc92031_set_multicast_list;
-       dev->tx_timeout         = sc92031_tx_timeout;
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller    = sc92031_poll_controller;
-#endif
+       dev->ethtool_ops        = &sc92031_ethtool_ops;
 
        priv = netdev_priv(dev);
        spin_lock_init(&priv->lock);