Loading Documentation/networking/e1000.txt +2 −12 Original line number Diff line number Diff line Loading @@ -517,17 +517,7 @@ Additional Configurations NAPI ---- NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled or disabled based on the configuration of the kernel. To override the default, use the following compile-time flags. To enable NAPI, compile the driver module, passing in a configuration option: make CFLAGS_EXTRA=-DE1000_NAPI install To disable NAPI, compile the driver module, passing in a configuration option: make CFLAGS_EXTRA=-DE1000_NO_NAPI install NAPI (Rx polling mode) is enabled in the e1000 driver. See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. Loading MAINTAINERS +2 −2 Original line number Diff line number Diff line Loading @@ -3527,7 +3527,7 @@ S: Supported 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 Loading @@ -3547,7 +3547,7 @@ S: Supported 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/ Loading drivers/net/8139too.c +74 −64 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ #include <linux/compiler.h> #include <linux/pci.h> #include <linux/init.h> #include <linux/ioport.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/rtnetlink.h> Loading @@ -120,11 +119,6 @@ NETIF_MSG_LINK) /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */ #ifdef CONFIG_8139TOO_PIO #define USE_IO_OPS 1 #endif /* define to 1, 2 or 3 to enable copious debugging info */ #define RTL8139_DEBUG 0 Loading Loading @@ -156,6 +150,13 @@ static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; /* Whether to use MMIO or PIO. Default to MMIO. */ #ifdef CONFIG_8139TOO_PIO static int use_io = 1; #else static int use_io = 0; #endif /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast). The RTL chips use a 64 element hash table based on the Ethernet CRC. */ static int multicast_filter_limit = 32; Loading Loading @@ -614,6 +615,8 @@ MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver"); MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_VERSION); module_param(use_io, int, 0); MODULE_PARM_DESC(use_io, "Force use of I/O access mode. 0=MMIO 1=PIO"); module_param(multicast_filter_limit, int, 0); module_param_array(media, int, NULL, 0); module_param_array(full_duplex, int, NULL, 0); Loading Loading @@ -709,13 +712,8 @@ static void __rtl8139_cleanup_dev (struct net_device *dev) assert (tp->pci_dev != NULL); pdev = tp->pci_dev; #ifdef USE_IO_OPS if (tp->mmio_addr) ioport_unmap (tp->mmio_addr); #else if (tp->mmio_addr) pci_iounmap (pdev, tp->mmio_addr); #endif /* USE_IO_OPS */ /* it's ok to call this even if we have no regions to free */ pci_release_regions (pdev); Loading Loading @@ -790,7 +788,8 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, DPRINTK("PIO region size == 0x%02X\n", pio_len); DPRINTK("MMIO region size == 0x%02lX\n", mmio_len); #ifdef USE_IO_OPS retry: if (use_io) { /* make sure PCI base addr 0 is PIO */ if (!(pio_flags & IORESOURCE_IO)) { dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n"); Loading @@ -803,7 +802,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, rc = -ENODEV; goto err_out; } #else } else { /* make sure PCI base addr 1 is MMIO */ if (!(mmio_flags & IORESOURCE_MEM)) { dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n"); Loading @@ -815,7 +814,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, rc = -ENODEV; goto err_out; } #endif } rc = pci_request_regions (pdev, DRV_NAME); if (rc) Loading @@ -825,28 +824,28 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, /* enable PCI bus-mastering */ pci_set_master (pdev); #ifdef USE_IO_OPS ioaddr = ioport_map(pio_start, pio_len); if (use_io) { ioaddr = pci_iomap(pdev, 0, 0); if (!ioaddr) { dev_err(&pdev->dev, "cannot map PIO, aborting\n"); rc = -EIO; goto err_out; } dev->base_addr = pio_start; tp->mmio_addr = ioaddr; tp->regs_len = pio_len; #else } else { /* ioremap MMIO region */ ioaddr = pci_iomap(pdev, 1, 0); if (ioaddr == NULL) { dev_err(&pdev->dev, "cannot remap MMIO, aborting\n"); rc = -EIO; goto err_out; dev_err(&pdev->dev, "cannot remap MMIO, trying PIO\n"); pci_release_regions(pdev); use_io = 1; goto retry; } dev->base_addr = (long) ioaddr; tp->mmio_addr = ioaddr; tp->regs_len = mmio_len; #endif /* USE_IO_OPS */ } tp->mmio_addr = ioaddr; /* Bring old chips out of low-power mode. */ RTL_W8 (HltClk, 'R'); Loading Loading @@ -952,6 +951,14 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev, "Use the \"8139cp\" driver for improved performance and stability.\n"); } if (pdev->vendor == PCI_VENDOR_ID_REALTEK && pdev->device == PCI_DEVICE_ID_REALTEK_8139 && pdev->subsystem_vendor == PCI_VENDOR_ID_ATHEROS && pdev->subsystem_device == PCI_DEVICE_ID_REALTEK_8139) { printk(KERN_INFO "8139too: OQO Model 2 detected. Forcing PIO\n"); use_io = 1; } i = rtl8139_init_board (pdev, &dev); if (i < 0) return i; Loading Loading @@ -2381,20 +2388,24 @@ static void rtl8139_set_msglevel(struct net_device *dev, u32 datum) np->msg_enable = datum; } /* TODO: we are too slack to do reg dumping for pio, for now */ #ifdef CONFIG_8139TOO_PIO #define rtl8139_get_regs_len NULL #define rtl8139_get_regs NULL #else static int rtl8139_get_regs_len(struct net_device *dev) { struct rtl8139_private *np = netdev_priv(dev); struct rtl8139_private *np; /* TODO: we are too slack to do reg dumping for pio, for now */ if (use_io) return 0; np = netdev_priv(dev); return np->regs_len; } static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *regbuf) { struct rtl8139_private *np = netdev_priv(dev); struct rtl8139_private *np; /* TODO: we are too slack to do reg dumping for pio, for now */ if (use_io) return; np = netdev_priv(dev); regs->version = RTL_REGS_VER; Loading @@ -2402,7 +2413,6 @@ static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, memcpy_fromio(regbuf, np->mmio_addr, regs->len); spin_unlock_irq(&np->lock); } #endif /* CONFIG_8139TOO_MMIO */ static int rtl8139_get_sset_count(struct net_device *dev, int sset) { Loading drivers/net/Kconfig +11 −14 Original line number Diff line number Diff line Loading @@ -1926,20 +1926,6 @@ config E1000 To compile this driver as a module, choose M here. The module will be called e1000. config E1000_NAPI bool "Use Rx Polling (NAPI)" depends on E1000 help NAPI is a new driver API designed to reduce CPU and interrupt load when the driver is receiving lots of packets from the card. It is still somewhat experimental and thus not yet enabled by default. If your estimated Rx load is 10kpps or more, or if the card will be deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. If in doubt, say N. config E1000_DISABLE_PACKET_SPLIT bool "Disable Packet Split for PCI express adapters" depends on E1000 Loading Loading @@ -2304,6 +2290,17 @@ config ATL1 To compile this driver as a module, choose M here. The module will be called atl1. config ATL1E tristate "Atheros L1E Gigabit Ethernet support (EXPERIMENTAL)" depends on PCI && EXPERIMENTAL select CRC32 select MII help This driver supports the Atheros L1E gigabit ethernet adapter. To compile this driver as a module, choose M here. The module will be called atl1e. endif # NETDEV_1000 # Loading drivers/net/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ obj-$(CONFIG_EHEA) += ehea/ obj-$(CONFIG_CAN) += can/ obj-$(CONFIG_BONDING) += bonding/ obj-$(CONFIG_ATL1) += atlx/ obj-$(CONFIG_ATL1E) += atl1e/ obj-$(CONFIG_GIANFAR) += gianfar_driver.o obj-$(CONFIG_TEHUTI) += tehuti.o Loading Loading
Documentation/networking/e1000.txt +2 −12 Original line number Diff line number Diff line Loading @@ -517,17 +517,7 @@ Additional Configurations NAPI ---- NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled or disabled based on the configuration of the kernel. To override the default, use the following compile-time flags. To enable NAPI, compile the driver module, passing in a configuration option: make CFLAGS_EXTRA=-DE1000_NAPI install To disable NAPI, compile the driver module, passing in a configuration option: make CFLAGS_EXTRA=-DE1000_NO_NAPI install NAPI (Rx polling mode) is enabled in the e1000 driver. See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. Loading
MAINTAINERS +2 −2 Original line number Diff line number Diff line Loading @@ -3527,7 +3527,7 @@ S: Supported 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 Loading @@ -3547,7 +3547,7 @@ S: Supported 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/ Loading
drivers/net/8139too.c +74 −64 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ #include <linux/compiler.h> #include <linux/pci.h> #include <linux/init.h> #include <linux/ioport.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/rtnetlink.h> Loading @@ -120,11 +119,6 @@ NETIF_MSG_LINK) /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */ #ifdef CONFIG_8139TOO_PIO #define USE_IO_OPS 1 #endif /* define to 1, 2 or 3 to enable copious debugging info */ #define RTL8139_DEBUG 0 Loading Loading @@ -156,6 +150,13 @@ static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; /* Whether to use MMIO or PIO. Default to MMIO. */ #ifdef CONFIG_8139TOO_PIO static int use_io = 1; #else static int use_io = 0; #endif /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast). The RTL chips use a 64 element hash table based on the Ethernet CRC. */ static int multicast_filter_limit = 32; Loading Loading @@ -614,6 +615,8 @@ MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver"); MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_VERSION); module_param(use_io, int, 0); MODULE_PARM_DESC(use_io, "Force use of I/O access mode. 0=MMIO 1=PIO"); module_param(multicast_filter_limit, int, 0); module_param_array(media, int, NULL, 0); module_param_array(full_duplex, int, NULL, 0); Loading Loading @@ -709,13 +712,8 @@ static void __rtl8139_cleanup_dev (struct net_device *dev) assert (tp->pci_dev != NULL); pdev = tp->pci_dev; #ifdef USE_IO_OPS if (tp->mmio_addr) ioport_unmap (tp->mmio_addr); #else if (tp->mmio_addr) pci_iounmap (pdev, tp->mmio_addr); #endif /* USE_IO_OPS */ /* it's ok to call this even if we have no regions to free */ pci_release_regions (pdev); Loading Loading @@ -790,7 +788,8 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, DPRINTK("PIO region size == 0x%02X\n", pio_len); DPRINTK("MMIO region size == 0x%02lX\n", mmio_len); #ifdef USE_IO_OPS retry: if (use_io) { /* make sure PCI base addr 0 is PIO */ if (!(pio_flags & IORESOURCE_IO)) { dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n"); Loading @@ -803,7 +802,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, rc = -ENODEV; goto err_out; } #else } else { /* make sure PCI base addr 1 is MMIO */ if (!(mmio_flags & IORESOURCE_MEM)) { dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n"); Loading @@ -815,7 +814,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, rc = -ENODEV; goto err_out; } #endif } rc = pci_request_regions (pdev, DRV_NAME); if (rc) Loading @@ -825,28 +824,28 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev, /* enable PCI bus-mastering */ pci_set_master (pdev); #ifdef USE_IO_OPS ioaddr = ioport_map(pio_start, pio_len); if (use_io) { ioaddr = pci_iomap(pdev, 0, 0); if (!ioaddr) { dev_err(&pdev->dev, "cannot map PIO, aborting\n"); rc = -EIO; goto err_out; } dev->base_addr = pio_start; tp->mmio_addr = ioaddr; tp->regs_len = pio_len; #else } else { /* ioremap MMIO region */ ioaddr = pci_iomap(pdev, 1, 0); if (ioaddr == NULL) { dev_err(&pdev->dev, "cannot remap MMIO, aborting\n"); rc = -EIO; goto err_out; dev_err(&pdev->dev, "cannot remap MMIO, trying PIO\n"); pci_release_regions(pdev); use_io = 1; goto retry; } dev->base_addr = (long) ioaddr; tp->mmio_addr = ioaddr; tp->regs_len = mmio_len; #endif /* USE_IO_OPS */ } tp->mmio_addr = ioaddr; /* Bring old chips out of low-power mode. */ RTL_W8 (HltClk, 'R'); Loading Loading @@ -952,6 +951,14 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev, "Use the \"8139cp\" driver for improved performance and stability.\n"); } if (pdev->vendor == PCI_VENDOR_ID_REALTEK && pdev->device == PCI_DEVICE_ID_REALTEK_8139 && pdev->subsystem_vendor == PCI_VENDOR_ID_ATHEROS && pdev->subsystem_device == PCI_DEVICE_ID_REALTEK_8139) { printk(KERN_INFO "8139too: OQO Model 2 detected. Forcing PIO\n"); use_io = 1; } i = rtl8139_init_board (pdev, &dev); if (i < 0) return i; Loading Loading @@ -2381,20 +2388,24 @@ static void rtl8139_set_msglevel(struct net_device *dev, u32 datum) np->msg_enable = datum; } /* TODO: we are too slack to do reg dumping for pio, for now */ #ifdef CONFIG_8139TOO_PIO #define rtl8139_get_regs_len NULL #define rtl8139_get_regs NULL #else static int rtl8139_get_regs_len(struct net_device *dev) { struct rtl8139_private *np = netdev_priv(dev); struct rtl8139_private *np; /* TODO: we are too slack to do reg dumping for pio, for now */ if (use_io) return 0; np = netdev_priv(dev); return np->regs_len; } static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *regbuf) { struct rtl8139_private *np = netdev_priv(dev); struct rtl8139_private *np; /* TODO: we are too slack to do reg dumping for pio, for now */ if (use_io) return; np = netdev_priv(dev); regs->version = RTL_REGS_VER; Loading @@ -2402,7 +2413,6 @@ static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, memcpy_fromio(regbuf, np->mmio_addr, regs->len); spin_unlock_irq(&np->lock); } #endif /* CONFIG_8139TOO_MMIO */ static int rtl8139_get_sset_count(struct net_device *dev, int sset) { Loading
drivers/net/Kconfig +11 −14 Original line number Diff line number Diff line Loading @@ -1926,20 +1926,6 @@ config E1000 To compile this driver as a module, choose M here. The module will be called e1000. config E1000_NAPI bool "Use Rx Polling (NAPI)" depends on E1000 help NAPI is a new driver API designed to reduce CPU and interrupt load when the driver is receiving lots of packets from the card. It is still somewhat experimental and thus not yet enabled by default. If your estimated Rx load is 10kpps or more, or if the card will be deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. If in doubt, say N. config E1000_DISABLE_PACKET_SPLIT bool "Disable Packet Split for PCI express adapters" depends on E1000 Loading Loading @@ -2304,6 +2290,17 @@ config ATL1 To compile this driver as a module, choose M here. The module will be called atl1. config ATL1E tristate "Atheros L1E Gigabit Ethernet support (EXPERIMENTAL)" depends on PCI && EXPERIMENTAL select CRC32 select MII help This driver supports the Atheros L1E gigabit ethernet adapter. To compile this driver as a module, choose M here. The module will be called atl1e. endif # NETDEV_1000 # Loading
drivers/net/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ obj-$(CONFIG_EHEA) += ehea/ obj-$(CONFIG_CAN) += can/ obj-$(CONFIG_BONDING) += bonding/ obj-$(CONFIG_ATL1) += atlx/ obj-$(CONFIG_ATL1E) += atl1e/ obj-$(CONFIG_GIANFAR) += gianfar_driver.o obj-$(CONFIG_TEHUTI) += tehuti.o Loading