Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Jul 2008 02:09:51 +0000 (19:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Jul 2008 02:09:51 +0000 (19:09 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (82 commits)
  ipw2200: Call netif_*_queue() interfaces properly.
  netxen: Needs to include linux/vmalloc.h
  [netdrvr] atl1d: fix !CONFIG_PM build
  r6040: rework init_one error handling
  r6040: bump release number to 0.18
  r6040: handle RX fifo full and no descriptor interrupts
  r6040: change the default waiting time
  r6040: use definitions for magic values in descriptor status
  r6040: completely rework the RX path
  r6040: call napi_disable when puting down the interface and set lp->dev accordingly.
  mv643xx_eth: fix NETPOLL build
  r6040: rework the RX buffers allocation routine
  r6040: fix scheduling while atomic in r6040_tx_timeout
  r6040: fix null pointer access and tx timeouts
  r6040: prefix all functions with r6040
  rndis_host: support WM6 devices as modems
  at91_ether: use netstats in net_device structure
  sfc: Create one RX queue and interrupt per CPU package by default
  sfc: Use a separate workqueue for resets
  sfc: I2C adapter initialisation fixes
  ...

1  2 
MAINTAINERS
drivers/net/arm/at91_ether.c
drivers/net/fs_enet/fs_enet-main.c
include/linux/fs_enet_pd.h

diff --combined MAINTAINERS
@@@ -1988,12 -1988,6 +1988,12 @@@ M:    mikulas@artax.karlin.mff.cuni.c
  W:    http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
  S:    Maintained
  
 +HTCPEN TOUCHSCREEN DRIVER
 +P:    Pau Oliva Fora
 +M:    pof@eslack.org
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +
  HUGETLB FILESYSTEM
  P:    William Irwin
  M:    wli@holomorphy.com
@@@ -3533,7 -3527,7 +3533,7 @@@ S:      Supporte
  
  S390 NETWORK DRIVERS
  P:    Ursula Braun
- M:    ubraun@linux.vnet.ibm.com
+ M:    ursula.braun@de.ibm.com
  P:    Frank Blaschka
  M:    blaschka@linux.vnet.ibm.com
  M:    linux390@de.ibm.com
@@@ -3553,7 -3547,7 +3553,7 @@@ S:      Supporte
  
  S390 IUCV NETWORK LAYER
  P:    Ursula Braun
- M:    ubraun@linux.vnet.ibm.com
+ M:    ursula.braun@de.ibm.com
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -4047,10 -4041,9 +4047,10 @@@ W:    http://www.buzzard.org.uk/toshiba
  S:    Maintained
  
  TPM DEVICE DRIVER
 -P:     Debora Velarde
 -P:     Rajiv Andrade
 -M:    tpmdd-devel@lists.sourceforge.net
 +P:    Debora Velarde
 +M:    debora@linux.vnet.ibm.com
 +P:    Rajiv Andrade
 +M:    srajiv@linux.vnet.ibm.com
  W:    http://tpmdd.sourceforge.net
  P:    Marcel Selhorst
  M:    tpm@selhorst.net
@@@ -677,7 -677,7 +677,7 @@@ static void at91ether_get_drvinfo(struc
  {
        strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
        strlcpy(info->version, DRV_VERSION, sizeof(info->version));
 -      strlcpy(info->bus_info, dev->dev.parent->bus_id, sizeof(info->bus_info));
 +      strlcpy(info->bus_info, dev_name(dev->dev.parent), sizeof(info->bus_info));
  }
  
  static const struct ethtool_ops at91ether_ethtool_ops = {
@@@ -820,7 -820,7 +820,7 @@@ static int at91ether_tx(struct sk_buff 
                lp->skb = skb;
                lp->skb_length = skb->len;
                lp->skb_physaddr = dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE);
-               lp->stats.tx_bytes += skb->len;
+               dev->stats.tx_bytes += skb->len;
  
                /* Set address of the data in the Transmit Address register */
                at91_emac_write(AT91_EMAC_TAR, lp->skb_physaddr);
   */
  static struct net_device_stats *at91ether_stats(struct net_device *dev)
  {
-       struct at91_private *lp = netdev_priv(dev);
        int ale, lenerr, seqe, lcol, ecol;
  
        if (netif_running(dev)) {
-               lp->stats.rx_packets += at91_emac_read(AT91_EMAC_OK);           /* Good frames received */
+               dev->stats.rx_packets += at91_emac_read(AT91_EMAC_OK);          /* Good frames received */
                ale = at91_emac_read(AT91_EMAC_ALE);
-               lp->stats.rx_frame_errors += ale;                               /* Alignment errors */
+               dev->stats.rx_frame_errors += ale;                              /* Alignment errors */
                lenerr = at91_emac_read(AT91_EMAC_ELR) + at91_emac_read(AT91_EMAC_USF);
-               lp->stats.rx_length_errors += lenerr;                           /* Excessive Length or Undersize Frame error */
+               dev->stats.rx_length_errors += lenerr;                          /* Excessive Length or Undersize Frame error */
                seqe = at91_emac_read(AT91_EMAC_SEQE);
-               lp->stats.rx_crc_errors += seqe;                                /* CRC error */
-               lp->stats.rx_fifo_errors += at91_emac_read(AT91_EMAC_DRFC);     /* Receive buffer not available */
-               lp->stats.rx_errors += (ale + lenerr + seqe
+               dev->stats.rx_crc_errors += seqe;                               /* CRC error */
+               dev->stats.rx_fifo_errors += at91_emac_read(AT91_EMAC_DRFC);    /* Receive buffer not available */
+               dev->stats.rx_errors += (ale + lenerr + seqe
                        + at91_emac_read(AT91_EMAC_CDE) + at91_emac_read(AT91_EMAC_RJB));
  
-               lp->stats.tx_packets += at91_emac_read(AT91_EMAC_FRA);          /* Frames successfully transmitted */
-               lp->stats.tx_fifo_errors += at91_emac_read(AT91_EMAC_TUE);      /* Transmit FIFO underruns */
-               lp->stats.tx_carrier_errors += at91_emac_read(AT91_EMAC_CSE);   /* Carrier Sense errors */
-               lp->stats.tx_heartbeat_errors += at91_emac_read(AT91_EMAC_SQEE);/* Heartbeat error */
+               dev->stats.tx_packets += at91_emac_read(AT91_EMAC_FRA);         /* Frames successfully transmitted */
+               dev->stats.tx_fifo_errors += at91_emac_read(AT91_EMAC_TUE);     /* Transmit FIFO underruns */
+               dev->stats.tx_carrier_errors += at91_emac_read(AT91_EMAC_CSE);  /* Carrier Sense errors */
+               dev->stats.tx_heartbeat_errors += at91_emac_read(AT91_EMAC_SQEE);/* Heartbeat error */
  
                lcol = at91_emac_read(AT91_EMAC_LCOL);
                ecol = at91_emac_read(AT91_EMAC_ECOL);
-               lp->stats.tx_window_errors += lcol;                     /* Late collisions */
-               lp->stats.tx_aborted_errors += ecol;                    /* 16 collisions */
+               dev->stats.tx_window_errors += lcol;                    /* Late collisions */
+               dev->stats.tx_aborted_errors += ecol;                   /* 16 collisions */
  
-               lp->stats.collisions += (at91_emac_read(AT91_EMAC_SCOL) + at91_emac_read(AT91_EMAC_MCOL) + lcol + ecol);
+               dev->stats.collisions += (at91_emac_read(AT91_EMAC_SCOL) + at91_emac_read(AT91_EMAC_MCOL) + lcol + ecol);
        }
-       return &lp->stats;
+       return &dev->stats;
  }
  
  /*
@@@ -896,16 -895,16 +895,16 @@@ static void at91ether_rx(struct net_dev
  
                        skb->protocol = eth_type_trans(skb, dev);
                        dev->last_rx = jiffies;
-                       lp->stats.rx_bytes += pktlen;
+                       dev->stats.rx_bytes += pktlen;
                        netif_rx(skb);
                }
                else {
-                       lp->stats.rx_dropped += 1;
+                       dev->stats.rx_dropped += 1;
                        printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", dev->name);
                }
  
                if (dlist->descriptors[lp->rxBuffIndex].size & EMAC_MULTICAST)
-                       lp->stats.multicast++;
+                       dev->stats.multicast++;
  
                dlist->descriptors[lp->rxBuffIndex].addr &= ~EMAC_DESC_DONE;    /* reset ownership bit */
                if (lp->rxBuffIndex == MAX_RX_DESCR-1)                          /* wrap after last buffer */
@@@ -934,7 -933,7 +933,7 @@@ static irqreturn_t at91ether_interrupt(
        if (intstatus & AT91_EMAC_TCOM) {       /* Transmit complete */
                /* The TCOM bit is set even if the transmission failed. */
                if (intstatus & (AT91_EMAC_TUND | AT91_EMAC_RTRY))
-                       lp->stats.tx_errors += 1;
+                       dev->stats.tx_errors += 1;
  
                if (lp->skb) {
                        dev_kfree_skb_irq(lp->skb);
  #include <linux/fs.h>
  #include <linux/platform_device.h>
  #include <linux/phy.h>
 +#include <linux/of_platform.h>
 +#include <linux/of_gpio.h>
  
  #include <linux/vmalloc.h>
  #include <asm/pgtable.h>
  #include <asm/irq.h>
  #include <asm/uaccess.h>
  
 -#ifdef CONFIG_PPC_CPM_NEW_BINDING
 -#include <linux/of_gpio.h>
 -#include <linux/of_platform.h>
 -#endif
 -
  #include "fs_enet.h"
  
  /*************************************************/
  
 -#ifndef CONFIG_PPC_CPM_NEW_BINDING
 -static char version[] __devinitdata =
 -    DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")" "\n";
 -#endif
 -
  MODULE_AUTHOR("Pantelis Antoniou <panto@intracom.gr>");
  MODULE_DESCRIPTION("Freescale Ethernet Driver");
  MODULE_LICENSE("GPL");
@@@ -730,9 -738,6 +730,6 @@@ static void generic_adjust_link(struc
                if (!fep->oldlink) {
                        new_state = 1;
                        fep->oldlink = 1;
-                       netif_tx_schedule_all(dev);
-                       netif_carrier_on(dev);
-                       netif_start_queue(dev);
                }
  
                if (new_state)
                fep->oldlink = 0;
                fep->oldspeed = 0;
                fep->oldduplex = -1;
-               netif_carrier_off(dev);
-               netif_stop_queue(dev);
        }
  
        if (new_state && netif_msg_link(fep))
@@@ -818,6 -821,8 +813,8 @@@ static int fs_enet_open(struct net_devi
        }
        phy_start(fep->phydev);
  
+       netif_start_queue(dev);
        return 0;
  }
  
@@@ -950,6 -955,190 +947,6 @@@ static int fs_ioctl(struct net_device *
  extern int fs_mii_connect(struct net_device *dev);
  extern void fs_mii_disconnect(struct net_device *dev);
  
 -#ifndef CONFIG_PPC_CPM_NEW_BINDING
 -static struct net_device *fs_init_instance(struct device *dev,
 -              struct fs_platform_info *fpi)
 -{
 -      struct net_device *ndev = NULL;
 -      struct fs_enet_private *fep = NULL;
 -      int privsize, i, r, err = 0, registered = 0;
 -
 -      fpi->fs_no = fs_get_id(fpi);
 -      /* guard */
 -      if ((unsigned int)fpi->fs_no >= FS_MAX_INDEX)
 -              return ERR_PTR(-EINVAL);
 -
 -      privsize = sizeof(*fep) + (sizeof(struct sk_buff **) *
 -                          (fpi->rx_ring + fpi->tx_ring));
 -
 -      ndev = alloc_etherdev(privsize);
 -      if (!ndev) {
 -              err = -ENOMEM;
 -              goto err;
 -      }
 -
 -      fep = netdev_priv(ndev);
 -
 -      fep->dev = dev;
 -      dev_set_drvdata(dev, ndev);
 -      fep->fpi = fpi;
 -      if (fpi->init_ioports)
 -              fpi->init_ioports((struct fs_platform_info *)fpi);
 -
 -#ifdef CONFIG_FS_ENET_HAS_FEC
 -      if (fs_get_fec_index(fpi->fs_no) >= 0)
 -              fep->ops = &fs_fec_ops;
 -#endif
 -
 -#ifdef CONFIG_FS_ENET_HAS_SCC
 -      if (fs_get_scc_index(fpi->fs_no) >=0)
 -              fep->ops = &fs_scc_ops;
 -#endif
 -
 -#ifdef CONFIG_FS_ENET_HAS_FCC
 -      if (fs_get_fcc_index(fpi->fs_no) >= 0)
 -              fep->ops = &fs_fcc_ops;
 -#endif
 -
 -      if (fep->ops == NULL) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                     ": %s No matching ops found (%d).\n",
 -                     ndev->name, fpi->fs_no);
 -              err = -EINVAL;
 -              goto err;
 -      }
 -
 -      r = (*fep->ops->setup_data)(ndev);
 -      if (r != 0) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                     ": %s setup_data failed\n",
 -                      ndev->name);
 -              err = r;
 -              goto err;
 -      }
 -
 -      /* point rx_skbuff, tx_skbuff */
 -      fep->rx_skbuff = (struct sk_buff **)&fep[1];
 -      fep->tx_skbuff = fep->rx_skbuff + fpi->rx_ring;
 -
 -      /* init locks */
 -      spin_lock_init(&fep->lock);
 -      spin_lock_init(&fep->tx_lock);
 -
 -      /*
 -       * Set the Ethernet address.
 -       */
 -      for (i = 0; i < 6; i++)
 -              ndev->dev_addr[i] = fpi->macaddr[i];
 -
 -      r = (*fep->ops->allocate_bd)(ndev);
 -
 -      if (fep->ring_base == NULL) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                     ": %s buffer descriptor alloc failed (%d).\n", ndev->name, r);
 -              err = r;
 -              goto err;
 -      }
 -
 -      /*
 -       * Set receive and transmit descriptor base.
 -       */
 -      fep->rx_bd_base = fep->ring_base;
 -      fep->tx_bd_base = fep->rx_bd_base + fpi->rx_ring;
 -
 -      /* initialize ring size variables */
 -      fep->tx_ring = fpi->tx_ring;
 -      fep->rx_ring = fpi->rx_ring;
 -
 -      /*
 -       * The FEC Ethernet specific entries in the device structure.
 -       */
 -      ndev->open = fs_enet_open;
 -      ndev->hard_start_xmit = fs_enet_start_xmit;
 -      ndev->tx_timeout = fs_timeout;
 -      ndev->watchdog_timeo = 2 * HZ;
 -      ndev->stop = fs_enet_close;
 -      ndev->get_stats = fs_enet_get_stats;
 -      ndev->set_multicast_list = fs_set_multicast_list;
 -
 -#ifdef CONFIG_NET_POLL_CONTROLLER
 -      ndev->poll_controller = fs_enet_netpoll;
 -#endif
 -
 -      netif_napi_add(ndev, &fep->napi,
 -                     fs_enet_rx_napi, fpi->napi_weight);
 -
 -      ndev->ethtool_ops = &fs_ethtool_ops;
 -      ndev->do_ioctl = fs_ioctl;
 -
 -      init_timer(&fep->phy_timer_list);
 -
 -      netif_carrier_off(ndev);
 -
 -      err = register_netdev(ndev);
 -      if (err != 0) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                     ": %s register_netdev failed.\n", ndev->name);
 -              goto err;
 -      }
 -      registered = 1;
 -
 -
 -      return ndev;
 -
 -err:
 -      if (ndev != NULL) {
 -              if (registered)
 -                      unregister_netdev(ndev);
 -
 -              if (fep && fep->ops) {
 -                      (*fep->ops->free_bd)(ndev);
 -                      (*fep->ops->cleanup_data)(ndev);
 -              }
 -
 -              free_netdev(ndev);
 -      }
 -
 -      dev_set_drvdata(dev, NULL);
 -
 -      return ERR_PTR(err);
 -}
 -
 -static int fs_cleanup_instance(struct net_device *ndev)
 -{
 -      struct fs_enet_private *fep;
 -      const struct fs_platform_info *fpi;
 -      struct device *dev;
 -
 -      if (ndev == NULL)
 -              return -EINVAL;
 -
 -      fep = netdev_priv(ndev);
 -      if (fep == NULL)
 -              return -EINVAL;
 -
 -      fpi = fep->fpi;
 -
 -      unregister_netdev(ndev);
 -
 -      dma_free_coherent(fep->dev, (fpi->tx_ring + fpi->rx_ring) * sizeof(cbd_t),
 -                        (void __force *)fep->ring_base, fep->ring_mem_addr);
 -
 -      /* reset it */
 -      (*fep->ops->cleanup_data)(ndev);
 -
 -      dev = fep->dev;
 -      if (dev != NULL) {
 -              dev_set_drvdata(dev, NULL);
 -              fep->dev = NULL;
 -      }
 -
 -      free_netdev(ndev);
 -
 -      return 0;
 -}
 -#endif
 -
  /**************************************************************************************/
  
  /* handy pointer to the immap */
@@@ -976,6 -1165,7 +973,6 @@@ static void cleanup_immap(void
  
  /**************************************************************************************/
  
 -#ifdef CONFIG_PPC_CPM_NEW_BINDING
  static int __devinit find_phy(struct device_node *np,
                                struct fs_platform_info *fpi)
  {
@@@ -1215,6 -1405,121 +1212,6 @@@ static void __exit fs_cleanup(void
        of_unregister_platform_driver(&fs_enet_driver);
        cleanup_immap();
  }
 -#else
 -static int __devinit fs_enet_probe(struct device *dev)
 -{
 -      struct net_device *ndev;
 -
 -      /* no fixup - no device */
 -      if (dev->platform_data == NULL) {
 -              printk(KERN_INFO "fs_enet: "
 -                              "probe called with no platform data; "
 -                              "remove unused devices\n");
 -              return -ENODEV;
 -      }
 -
 -      ndev = fs_init_instance(dev, dev->platform_data);
 -      if (IS_ERR(ndev))
 -              return PTR_ERR(ndev);
 -      return 0;
 -}
 -
 -static int fs_enet_remove(struct device *dev)
 -{
 -      return fs_cleanup_instance(dev_get_drvdata(dev));
 -}
 -
 -static struct device_driver fs_enet_fec_driver = {
 -      .name           = "fsl-cpm-fec",
 -      .bus            = &platform_bus_type,
 -      .probe          = fs_enet_probe,
 -      .remove         = fs_enet_remove,
 -#ifdef CONFIG_PM
 -/*    .suspend        = fs_enet_suspend,      TODO */
 -/*    .resume         = fs_enet_resume,       TODO */
 -#endif
 -};
 -
 -static struct device_driver fs_enet_scc_driver = {
 -      .name           = "fsl-cpm-scc",
 -      .bus            = &platform_bus_type,
 -      .probe          = fs_enet_probe,
 -      .remove         = fs_enet_remove,
 -#ifdef CONFIG_PM
 -/*    .suspend        = fs_enet_suspend,      TODO */
 -/*    .resume         = fs_enet_resume,       TODO */
 -#endif
 -};
 -
 -static struct device_driver fs_enet_fcc_driver = {
 -      .name           = "fsl-cpm-fcc",
 -      .bus            = &platform_bus_type,
 -      .probe          = fs_enet_probe,
 -      .remove         = fs_enet_remove,
 -#ifdef CONFIG_PM
 -/*    .suspend        = fs_enet_suspend,      TODO */
 -/*    .resume         = fs_enet_resume,       TODO */
 -#endif
 -};
 -
 -static int __init fs_init(void)
 -{
 -      int r;
 -
 -      printk(KERN_INFO
 -                      "%s", version);
 -
 -      r = setup_immap();
 -      if (r != 0)
 -              return r;
 -
 -#ifdef CONFIG_FS_ENET_HAS_FCC
 -      /* let's insert mii stuff */
 -      r = fs_enet_mdio_bb_init();
 -
 -      if (r != 0) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                      "BB PHY init failed.\n");
 -              return r;
 -      }
 -      r = driver_register(&fs_enet_fcc_driver);
 -      if (r != 0)
 -              goto err;
 -#endif
 -
 -#ifdef CONFIG_FS_ENET_HAS_FEC
 -      r =  fs_enet_mdio_fec_init();
 -      if (r != 0) {
 -              printk(KERN_ERR DRV_MODULE_NAME
 -                      "FEC PHY init failed.\n");
 -              return r;
 -      }
 -
 -      r = driver_register(&fs_enet_fec_driver);
 -      if (r != 0)
 -              goto err;
 -#endif
 -
 -#ifdef CONFIG_FS_ENET_HAS_SCC
 -      r = driver_register(&fs_enet_scc_driver);
 -      if (r != 0)
 -              goto err;
 -#endif
 -
 -      return 0;
 -err:
 -      cleanup_immap();
 -      return r;
 -}
 -
 -static void __exit fs_cleanup(void)
 -{
 -      driver_unregister(&fs_enet_fec_driver);
 -      driver_unregister(&fs_enet_fcc_driver);
 -      driver_unregister(&fs_enet_scc_driver);
 -      cleanup_immap();
 -}
 -#endif
  
  #ifdef CONFIG_NET_POLL_CONTROLLER
  static void fs_enet_netpoll(struct net_device *dev)
@@@ -103,10 -103,6 +103,6 @@@ struct fs_mii_bb_platform_info 
        struct fs_mii_bit       mdio_dir;
        struct fs_mii_bit       mdio_dat;
        struct fs_mii_bit       mdc_dat;
-       int mdio_port;  /* port & bit for MDIO */
-       int mdio_bit;
-       int mdc_port;   /* port & bit for MDC  */
-       int mdc_bit;
        int delay;      /* delay in us         */
        int irq[32];    /* irqs per phy's */
  };
@@@ -135,7 -131,11 +131,7 @@@ struct fs_platform_info 
        u32 device_flags;
  
        int phy_addr;           /* the phy address (-1 no phy) */
 -#ifdef CONFIG_PPC_CPM_NEW_BINDING
        char bus_id[16];
 -#else
 -      const char*     bus_id;
 -#endif
        int phy_irq;            /* the phy irq (if it exists)  */
  
        const struct fs_mii_bus_info *bus_info;