bnx2: Refine VPD logic.
[safe/jmp/linux-2.6] / drivers / net / sb1250-mac.c
index 845431c..564d4d7 100644 (file)
@@ -1476,7 +1476,6 @@ static void sbmac_channel_start(struct sbmac_softc *s)
                V_MAC_TX_RL_THRSH(4) |
                V_MAC_RX_PL_THRSH(4) |
                V_MAC_RX_RD_THRSH(4) |  /* Must be '4' */
-               V_MAC_RX_PL_THRSH(4) |
                V_MAC_RX_RL_THRSH(8) |
                0;
 
@@ -2039,9 +2038,9 @@ static irqreturn_t sbmac_intr(int irq,void *dev_instance)
                sbdma_tx_process(sc,&(sc->sbm_txdma), 0);
 
        if (isr & (M_MAC_INT_CHANNEL << S_MAC_RX_CH0)) {
-               if (netif_rx_schedule_prep(&sc->napi)) {
+               if (napi_schedule_prep(&sc->napi)) {
                        __raw_writeq(0, sc->sbm_imr);
-                       __netif_rx_schedule(&sc->napi);
+                       __napi_schedule(&sc->napi);
                        /* Depend on the exit from poll to reenable intr */
                }
                else {
@@ -2084,14 +2083,14 @@ static int sbmac_start_tx(struct sk_buff *skb, struct net_device *dev)
                netif_stop_queue(dev);
                spin_unlock_irqrestore(&sc->sbm_lock, flags);
 
-               return 1;
+               return NETDEV_TX_BUSY;
        }
 
        dev->trans_start = jiffies;
 
        spin_unlock_irqrestore(&sc->sbm_lock, flags);
 
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 /**********************************************************************
@@ -2271,6 +2270,21 @@ static int sb1250_change_mtu(struct net_device *_dev, int new_mtu)
        return 0;
 }
 
+static const struct net_device_ops sbmac_netdev_ops = {
+       .ndo_open               = sbmac_open,
+       .ndo_stop               = sbmac_close,
+       .ndo_start_xmit         = sbmac_start_tx,
+       .ndo_set_multicast_list = sbmac_set_rx_mode,
+       .ndo_tx_timeout         = sbmac_tx_timeout,
+       .ndo_do_ioctl           = sbmac_mii_ioctl,
+       .ndo_change_mtu         = sb1250_change_mtu,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_set_mac_address    = eth_mac_addr,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = sbmac_netpoll,
+#endif
+};
+
 /**********************************************************************
  *  SBMAC_INIT(dev)
  *
@@ -2285,7 +2299,7 @@ static int sb1250_change_mtu(struct net_device *_dev, int new_mtu)
 
 static int sbmac_init(struct platform_device *pldev, long long base)
 {
-       struct net_device *dev = pldev->dev.driver_data;
+       struct net_device *dev = dev_get_drvdata(&pldev->dev);
        int idx = pldev->id;
        struct sbmac_softc *sc = netdev_priv(dev);
        unsigned char *eaddr;
@@ -2299,7 +2313,7 @@ static int sbmac_init(struct platform_device *pldev, long long base)
        eaddr = sc->sbm_hwaddr;
 
        /*
-        * Read the ethernet address.  The firwmare left this programmed
+        * Read the ethernet address.  The firmware left this programmed
         * for us in the ethernet address register for each mac.
         */
 
@@ -2327,21 +2341,11 @@ static int sbmac_init(struct platform_device *pldev, long long base)
 
        spin_lock_init(&(sc->sbm_lock));
 
-       dev->open               = sbmac_open;
-       dev->hard_start_xmit    = sbmac_start_tx;
-       dev->stop               = sbmac_close;
-       dev->set_multicast_list = sbmac_set_rx_mode;
-       dev->do_ioctl           = sbmac_mii_ioctl;
-       dev->tx_timeout         = sbmac_tx_timeout;
-       dev->watchdog_timeo     = TX_TIMEOUT;
+       dev->netdev_ops = &sbmac_netdev_ops;
+       dev->watchdog_timeo = TX_TIMEOUT;
 
        netif_napi_add(dev, &sc->napi, sbmac_poll, 16);
 
-       dev->change_mtu         = sb1250_change_mtu;
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller = sbmac_netpoll;
-#endif
-
        dev->irq                = UNIT_INT(idx);
 
        /* This is needed for PASS2 for Rx H/W checksum feature */
@@ -2406,7 +2410,7 @@ static int sbmac_open(struct net_device *dev)
         */
 
        __raw_readq(sc->sbm_isr);
-       err = request_irq(dev->irq, &sbmac_intr, IRQF_SHARED, dev->name, dev);
+       err = request_irq(dev->irq, sbmac_intr, IRQF_SHARED, dev->name, dev);
        if (err) {
                printk(KERN_ERR "%s: unable to get IRQ %d\n", dev->name,
                       dev->irq);
@@ -2667,7 +2671,7 @@ static int sbmac_poll(struct napi_struct *napi, int budget)
        sbdma_tx_process(sc, &(sc->sbm_txdma), 1);
 
        if (work_done < budget) {
-               netif_rx_complete(napi);
+               napi_complete(napi);
 
 #ifdef CONFIG_SBMAC_COALESCE
                __raw_writeq(((M_MAC_INT_EOP_COUNT | M_MAC_INT_EOP_TIMER) << S_MAC_TX_CH0) |
@@ -2683,7 +2687,7 @@ static int sbmac_poll(struct napi_struct *napi, int budget)
 }
 
 
-static int __init sbmac_probe(struct platform_device *pldev)
+static int __devinit sbmac_probe(struct platform_device *pldev)
 {
        struct net_device *dev;
        struct sbmac_softc *sc;
@@ -2726,7 +2730,7 @@ static int __init sbmac_probe(struct platform_device *pldev)
                goto out_unmap;
        }
 
-       pldev->dev.driver_data = dev;
+       dev_set_drvdata(&pldev->dev, dev);
        SET_NETDEV_DEV(dev, &pldev->dev);
 
        sc = netdev_priv(dev);
@@ -2751,7 +2755,7 @@ out_out:
 
 static int __exit sbmac_remove(struct platform_device *pldev)
 {
-       struct net_device *dev = pldev->dev.driver_data;
+       struct net_device *dev = dev_get_drvdata(&pldev->dev);
        struct sbmac_softc *sc = netdev_priv(dev);
 
        unregister_netdev(dev);