diff options
| -rw-r--r-- | MAINTAINERS | 6 | ||||
| -rw-r--r-- | drivers/net/3c59x.c | 1 | ||||
| -rw-r--r-- | drivers/net/ax88796.c | 5 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_ethtool.c | 2 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_hw.c | 5 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_hw.h | 3 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_main.c | 4 | ||||
| -rw-r--r-- | drivers/net/myri10ge/myri10ge.c | 25 | ||||
| -rw-r--r-- | drivers/net/natsemi.c | 3 | ||||
| -rw-r--r-- | drivers/net/via-rhine.c | 6 | ||||
| -rw-r--r-- | drivers/net/xen-netfront.c | 7 |
11 files changed, 55 insertions, 12 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index d3a0684945b4..e4dde7f1f8d2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -97,6 +97,12 @@ M: philb@gnu.org | |||
| 97 | L: netdev@vger.kernel.org | 97 | L: netdev@vger.kernel.org |
| 98 | S: Maintained | 98 | S: Maintained |
| 99 | 99 | ||
| 100 | 3C59X NETWORK DRIVER | ||
| 101 | P: Steffen Klassert | ||
| 102 | M: klassert@mathematik.tu-chemnitz.de | ||
| 103 | L: netdev@vger.kernel.org | ||
| 104 | S: Maintained | ||
| 105 | |||
| 100 | 3CR990 NETWORK DRIVER | 106 | 3CR990 NETWORK DRIVER |
| 101 | P: David Dillow | 107 | P: David Dillow |
| 102 | M: dave@thedillows.org | 108 | M: dave@thedillows.org |
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 001c66dd3a94..a8c0f436cdd2 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
| @@ -1555,6 +1555,7 @@ vortex_up(struct net_device *dev) | |||
| 1555 | mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR); | 1555 | mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR); |
| 1556 | mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA); | 1556 | mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA); |
| 1557 | vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0); | 1557 | vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0); |
| 1558 | vp->mii.full_duplex = vp->full_duplex; | ||
| 1558 | 1559 | ||
| 1559 | vortex_check_media(dev, 1); | 1560 | vortex_check_media(dev, 1); |
| 1560 | } | 1561 | } |
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c index 83da1770bafb..90e0734e6037 100644 --- a/drivers/net/ax88796.c +++ b/drivers/net/ax88796.c | |||
| @@ -821,8 +821,9 @@ static int ax_probe(struct platform_device *pdev) | |||
| 821 | dev->base_addr = (unsigned long)ei_status.mem; | 821 | dev->base_addr = (unsigned long)ei_status.mem; |
| 822 | 822 | ||
| 823 | if (ei_status.mem == NULL) { | 823 | if (ei_status.mem == NULL) { |
| 824 | dev_err(&pdev->dev, "Cannot ioremap area (%08zx,%08zx)\n", | 824 | dev_err(&pdev->dev, "Cannot ioremap area (%08llx,%08llx)\n", |
| 825 | res->start, res->end); | 825 | (unsigned long long)res->start, |
| 826 | (unsigned long long)res->end); | ||
| 826 | 827 | ||
| 827 | ret = -ENXIO; | 828 | ret = -ENXIO; |
| 828 | goto exit_req; | 829 | goto exit_req; |
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index c90c92e72d2a..4c3785c9d4b8 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c | |||
| @@ -1706,6 +1706,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol | |||
| 1706 | case E1000_DEV_ID_82545EM_COPPER: | 1706 | case E1000_DEV_ID_82545EM_COPPER: |
| 1707 | case E1000_DEV_ID_82546GB_QUAD_COPPER: | 1707 | case E1000_DEV_ID_82546GB_QUAD_COPPER: |
| 1708 | case E1000_DEV_ID_82546GB_PCIE: | 1708 | case E1000_DEV_ID_82546GB_PCIE: |
| 1709 | case E1000_DEV_ID_82571EB_SERDES_QUAD: | ||
| 1709 | /* these don't support WoL at all */ | 1710 | /* these don't support WoL at all */ |
| 1710 | wol->supported = 0; | 1711 | wol->supported = 0; |
| 1711 | break; | 1712 | break; |
| @@ -1723,6 +1724,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol | |||
| 1723 | retval = 0; | 1724 | retval = 0; |
| 1724 | break; | 1725 | break; |
| 1725 | case E1000_DEV_ID_82571EB_QUAD_COPPER: | 1726 | case E1000_DEV_ID_82571EB_QUAD_COPPER: |
| 1727 | case E1000_DEV_ID_82571EB_QUAD_FIBER: | ||
| 1726 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: | 1728 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: |
| 1727 | case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: | 1729 | case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: |
| 1728 | /* quad port adapters only support WoL on port A */ | 1730 | /* quad port adapters only support WoL on port A */ |
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index 9be44699300b..ba120f7fb0be 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c | |||
| @@ -384,7 +384,10 @@ e1000_set_mac_type(struct e1000_hw *hw) | |||
| 384 | case E1000_DEV_ID_82571EB_COPPER: | 384 | case E1000_DEV_ID_82571EB_COPPER: |
| 385 | case E1000_DEV_ID_82571EB_FIBER: | 385 | case E1000_DEV_ID_82571EB_FIBER: |
| 386 | case E1000_DEV_ID_82571EB_SERDES: | 386 | case E1000_DEV_ID_82571EB_SERDES: |
| 387 | case E1000_DEV_ID_82571EB_SERDES_DUAL: | ||
| 388 | case E1000_DEV_ID_82571EB_SERDES_QUAD: | ||
| 387 | case E1000_DEV_ID_82571EB_QUAD_COPPER: | 389 | case E1000_DEV_ID_82571EB_QUAD_COPPER: |
| 390 | case E1000_DEV_ID_82571EB_QUAD_FIBER: | ||
| 388 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: | 391 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: |
| 389 | hw->mac_type = e1000_82571; | 392 | hw->mac_type = e1000_82571; |
| 390 | break; | 393 | break; |
| @@ -485,6 +488,8 @@ e1000_set_media_type(struct e1000_hw *hw) | |||
| 485 | case E1000_DEV_ID_82545GM_SERDES: | 488 | case E1000_DEV_ID_82545GM_SERDES: |
| 486 | case E1000_DEV_ID_82546GB_SERDES: | 489 | case E1000_DEV_ID_82546GB_SERDES: |
| 487 | case E1000_DEV_ID_82571EB_SERDES: | 490 | case E1000_DEV_ID_82571EB_SERDES: |
| 491 | case E1000_DEV_ID_82571EB_SERDES_DUAL: | ||
| 492 | case E1000_DEV_ID_82571EB_SERDES_QUAD: | ||
| 488 | case E1000_DEV_ID_82572EI_SERDES: | 493 | case E1000_DEV_ID_82572EI_SERDES: |
| 489 | case E1000_DEV_ID_80003ES2LAN_SERDES_DPT: | 494 | case E1000_DEV_ID_80003ES2LAN_SERDES_DPT: |
| 490 | hw->media_type = e1000_media_type_internal_serdes; | 495 | hw->media_type = e1000_media_type_internal_serdes; |
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h index bd000b802ee7..fe8714655c90 100644 --- a/drivers/net/e1000/e1000_hw.h +++ b/drivers/net/e1000/e1000_hw.h | |||
| @@ -475,7 +475,10 @@ int32_t e1000_check_phy_reset_block(struct e1000_hw *hw); | |||
| 475 | #define E1000_DEV_ID_82571EB_FIBER 0x105F | 475 | #define E1000_DEV_ID_82571EB_FIBER 0x105F |
| 476 | #define E1000_DEV_ID_82571EB_SERDES 0x1060 | 476 | #define E1000_DEV_ID_82571EB_SERDES 0x1060 |
| 477 | #define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4 | 477 | #define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4 |
| 478 | #define E1000_DEV_ID_82571EB_QUAD_FIBER 0x10A5 | ||
| 478 | #define E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE 0x10BC | 479 | #define E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE 0x10BC |
| 480 | #define E1000_DEV_ID_82571EB_SERDES_DUAL 0x10D9 | ||
| 481 | #define E1000_DEV_ID_82571EB_SERDES_QUAD 0x10DA | ||
| 479 | #define E1000_DEV_ID_82572EI_COPPER 0x107D | 482 | #define E1000_DEV_ID_82572EI_COPPER 0x107D |
| 480 | #define E1000_DEV_ID_82572EI_FIBER 0x107E | 483 | #define E1000_DEV_ID_82572EI_FIBER 0x107E |
| 481 | #define E1000_DEV_ID_82572EI_SERDES 0x107F | 484 | #define E1000_DEV_ID_82572EI_SERDES 0x107F |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index f48b659e0c2b..4a225950fb43 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
| @@ -100,6 +100,7 @@ static struct pci_device_id e1000_pci_tbl[] = { | |||
| 100 | INTEL_E1000_ETHERNET_DEVICE(0x1099), | 100 | INTEL_E1000_ETHERNET_DEVICE(0x1099), |
| 101 | INTEL_E1000_ETHERNET_DEVICE(0x109A), | 101 | INTEL_E1000_ETHERNET_DEVICE(0x109A), |
| 102 | INTEL_E1000_ETHERNET_DEVICE(0x10A4), | 102 | INTEL_E1000_ETHERNET_DEVICE(0x10A4), |
| 103 | INTEL_E1000_ETHERNET_DEVICE(0x10A5), | ||
| 103 | INTEL_E1000_ETHERNET_DEVICE(0x10B5), | 104 | INTEL_E1000_ETHERNET_DEVICE(0x10B5), |
| 104 | INTEL_E1000_ETHERNET_DEVICE(0x10B9), | 105 | INTEL_E1000_ETHERNET_DEVICE(0x10B9), |
| 105 | INTEL_E1000_ETHERNET_DEVICE(0x10BA), | 106 | INTEL_E1000_ETHERNET_DEVICE(0x10BA), |
| @@ -107,6 +108,8 @@ static struct pci_device_id e1000_pci_tbl[] = { | |||
| 107 | INTEL_E1000_ETHERNET_DEVICE(0x10BC), | 108 | INTEL_E1000_ETHERNET_DEVICE(0x10BC), |
| 108 | INTEL_E1000_ETHERNET_DEVICE(0x10C4), | 109 | INTEL_E1000_ETHERNET_DEVICE(0x10C4), |
| 109 | INTEL_E1000_ETHERNET_DEVICE(0x10C5), | 110 | INTEL_E1000_ETHERNET_DEVICE(0x10C5), |
| 111 | INTEL_E1000_ETHERNET_DEVICE(0x10D9), | ||
| 112 | INTEL_E1000_ETHERNET_DEVICE(0x10DA), | ||
| 110 | /* required last entry */ | 113 | /* required last entry */ |
| 111 | {0,} | 114 | {0,} |
| 112 | }; | 115 | }; |
| @@ -1096,6 +1099,7 @@ e1000_probe(struct pci_dev *pdev, | |||
| 1096 | break; | 1099 | break; |
| 1097 | case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: | 1100 | case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: |
| 1098 | case E1000_DEV_ID_82571EB_QUAD_COPPER: | 1101 | case E1000_DEV_ID_82571EB_QUAD_COPPER: |
| 1102 | case E1000_DEV_ID_82571EB_QUAD_FIBER: | ||
| 1099 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: | 1103 | case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: |
| 1100 | /* if quad port adapter, disable WoL on all but port A */ | 1104 | /* if quad port adapter, disable WoL on all but port A */ |
| 1101 | if (global_quad_port_a != 0) | 1105 | if (global_quad_port_a != 0) |
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index deca65330b0f..ae9bb7b7fd67 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
| @@ -191,6 +191,7 @@ struct myri10ge_priv { | |||
| 191 | struct timer_list watchdog_timer; | 191 | struct timer_list watchdog_timer; |
| 192 | int watchdog_tx_done; | 192 | int watchdog_tx_done; |
| 193 | int watchdog_tx_req; | 193 | int watchdog_tx_req; |
| 194 | int watchdog_pause; | ||
| 194 | int watchdog_resets; | 195 | int watchdog_resets; |
| 195 | int tx_linearized; | 196 | int tx_linearized; |
| 196 | int pause; | 197 | int pause; |
| @@ -2800,6 +2801,7 @@ static void myri10ge_watchdog(struct work_struct *work) | |||
| 2800 | static void myri10ge_watchdog_timer(unsigned long arg) | 2801 | static void myri10ge_watchdog_timer(unsigned long arg) |
| 2801 | { | 2802 | { |
| 2802 | struct myri10ge_priv *mgp; | 2803 | struct myri10ge_priv *mgp; |
| 2804 | u32 rx_pause_cnt; | ||
| 2803 | 2805 | ||
| 2804 | mgp = (struct myri10ge_priv *)arg; | 2806 | mgp = (struct myri10ge_priv *)arg; |
| 2805 | 2807 | ||
| @@ -2816,19 +2818,28 @@ static void myri10ge_watchdog_timer(unsigned long arg) | |||
| 2816 | myri10ge_fill_thresh) | 2818 | myri10ge_fill_thresh) |
| 2817 | mgp->rx_big.watchdog_needed = 0; | 2819 | mgp->rx_big.watchdog_needed = 0; |
| 2818 | } | 2820 | } |
| 2821 | rx_pause_cnt = ntohl(mgp->fw_stats->dropped_pause); | ||
| 2819 | 2822 | ||
| 2820 | if (mgp->tx.req != mgp->tx.done && | 2823 | if (mgp->tx.req != mgp->tx.done && |
| 2821 | mgp->tx.done == mgp->watchdog_tx_done && | 2824 | mgp->tx.done == mgp->watchdog_tx_done && |
| 2822 | mgp->watchdog_tx_req != mgp->watchdog_tx_done) | 2825 | mgp->watchdog_tx_req != mgp->watchdog_tx_done) { |
| 2823 | /* nic seems like it might be stuck.. */ | 2826 | /* nic seems like it might be stuck.. */ |
| 2824 | schedule_work(&mgp->watchdog_work); | 2827 | if (rx_pause_cnt != mgp->watchdog_pause) { |
| 2825 | else | 2828 | if (net_ratelimit()) |
| 2826 | /* rearm timer */ | 2829 | printk(KERN_WARNING "myri10ge %s:" |
| 2827 | mod_timer(&mgp->watchdog_timer, | 2830 | "TX paused, check link partner\n", |
| 2828 | jiffies + myri10ge_watchdog_timeout * HZ); | 2831 | mgp->dev->name); |
| 2829 | 2832 | } else { | |
| 2833 | schedule_work(&mgp->watchdog_work); | ||
| 2834 | return; | ||
| 2835 | } | ||
| 2836 | } | ||
| 2837 | /* rearm timer */ | ||
| 2838 | mod_timer(&mgp->watchdog_timer, | ||
| 2839 | jiffies + myri10ge_watchdog_timeout * HZ); | ||
| 2830 | mgp->watchdog_tx_done = mgp->tx.done; | 2840 | mgp->watchdog_tx_done = mgp->tx.done; |
| 2831 | mgp->watchdog_tx_req = mgp->tx.req; | 2841 | mgp->watchdog_tx_req = mgp->tx.req; |
| 2842 | mgp->watchdog_pause = rx_pause_cnt; | ||
| 2832 | } | 2843 | } |
| 2833 | 2844 | ||
| 2834 | static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 2845 | static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index 6bb48ba80964..b47a12d684f9 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c | |||
| @@ -2438,13 +2438,16 @@ static void netdev_error(struct net_device *dev, int intr_status) | |||
| 2438 | dev->name); | 2438 | dev->name); |
| 2439 | } | 2439 | } |
| 2440 | np->stats.rx_fifo_errors++; | 2440 | np->stats.rx_fifo_errors++; |
| 2441 | np->stats.rx_errors++; | ||
| 2441 | } | 2442 | } |
| 2442 | /* Hmmmmm, it's not clear how to recover from PCI faults. */ | 2443 | /* Hmmmmm, it's not clear how to recover from PCI faults. */ |
| 2443 | if (intr_status & IntrPCIErr) { | 2444 | if (intr_status & IntrPCIErr) { |
| 2444 | printk(KERN_NOTICE "%s: PCI error %#08x\n", dev->name, | 2445 | printk(KERN_NOTICE "%s: PCI error %#08x\n", dev->name, |
| 2445 | intr_status & IntrPCIErr); | 2446 | intr_status & IntrPCIErr); |
| 2446 | np->stats.tx_fifo_errors++; | 2447 | np->stats.tx_fifo_errors++; |
| 2448 | np->stats.tx_errors++; | ||
| 2447 | np->stats.rx_fifo_errors++; | 2449 | np->stats.rx_fifo_errors++; |
| 2450 | np->stats.rx_errors++; | ||
| 2448 | } | 2451 | } |
| 2449 | spin_unlock(&np->lock); | 2452 | spin_unlock(&np->lock); |
| 2450 | } | 2453 | } |
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c index c3fe230695a0..b56dff26772d 100644 --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c | |||
| @@ -42,7 +42,13 @@ static int max_interrupt_work = 20; | |||
| 42 | 42 | ||
| 43 | /* Set the copy breakpoint for the copy-only-tiny-frames scheme. | 43 | /* Set the copy breakpoint for the copy-only-tiny-frames scheme. |
| 44 | Setting to > 1518 effectively disables this feature. */ | 44 | Setting to > 1518 effectively disables this feature. */ |
| 45 | #if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ | ||
| 46 | || defined(CONFIG_SPARC) || defined(__ia64__) \ | ||
| 47 | || defined(__sh__) || defined(__mips__) | ||
| 48 | static int rx_copybreak = 1518; | ||
| 49 | #else | ||
| 45 | static int rx_copybreak; | 50 | static int rx_copybreak; |
| 51 | #endif | ||
| 46 | 52 | ||
| 47 | /* Work-around for broken BIOSes: they are unable to get the chip back out of | 53 | /* Work-around for broken BIOSes: they are unable to get the chip back out of |
| 48 | power state D3 so PXE booting fails. bootparam(7): via-rhine.avoid_D3=1 */ | 54 | power state D3 so PXE booting fails. bootparam(7): via-rhine.avoid_D3=1 */ |
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 489f69c5d6ca..4445810335a8 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
| @@ -566,6 +566,10 @@ static int xennet_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 566 | if (notify) | 566 | if (notify) |
| 567 | notify_remote_via_irq(np->netdev->irq); | 567 | notify_remote_via_irq(np->netdev->irq); |
| 568 | 568 | ||
| 569 | np->stats.tx_bytes += skb->len; | ||
| 570 | np->stats.tx_packets++; | ||
| 571 | |||
| 572 | /* Note: It is not safe to access skb after xennet_tx_buf_gc()! */ | ||
| 569 | xennet_tx_buf_gc(dev); | 573 | xennet_tx_buf_gc(dev); |
| 570 | 574 | ||
| 571 | if (!netfront_tx_slot_available(np)) | 575 | if (!netfront_tx_slot_available(np)) |
| @@ -573,9 +577,6 @@ static int xennet_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 573 | 577 | ||
| 574 | spin_unlock_irq(&np->tx_lock); | 578 | spin_unlock_irq(&np->tx_lock); |
| 575 | 579 | ||
| 576 | np->stats.tx_bytes += skb->len; | ||
| 577 | np->stats.tx_packets++; | ||
| 578 | |||
| 579 | return 0; | 580 | return 0; |
| 580 | 581 | ||
| 581 | drop: | 582 | drop: |
