Loading drivers/net/8139too.c +26 −12 Original line number Diff line number Diff line Loading @@ -586,6 +586,7 @@ struct rtl8139_private { dma_addr_t tx_bufs_dma; signed char phys[4]; /* MII device addresses. */ char twistie, twist_row, twist_col; /* Twister tune state. */ unsigned int watchdog_fired : 1; unsigned int default_port : 4; /* Last dev->if_port value. */ unsigned int have_thread : 1; spinlock_t lock; Loading Loading @@ -638,6 +639,7 @@ static void rtl8139_set_rx_mode (struct net_device *dev); static void __set_rx_mode (struct net_device *dev); static void rtl8139_hw_start (struct net_device *dev); static void rtl8139_thread (void *_data); static void rtl8139_tx_timeout_task(void *_data); static struct ethtool_ops rtl8139_ethtool_ops; /* write MMIO register, with flush */ Loading Loading @@ -1598,13 +1600,14 @@ static void rtl8139_thread (void *_data) { struct net_device *dev = _data; struct rtl8139_private *tp = netdev_priv(dev); unsigned long thr_delay; unsigned long thr_delay = next_tick; if (rtnl_shlock_nowait() == 0) { if (tp->watchdog_fired) { tp->watchdog_fired = 0; rtl8139_tx_timeout_task(_data); } else if (rtnl_shlock_nowait() == 0) { rtl8139_thread_iter (dev, tp, tp->mmio_addr); rtnl_unlock (); thr_delay = next_tick; } else { /* unlikely race. mitigate with fast poll. */ thr_delay = HZ / 2; Loading @@ -1631,7 +1634,8 @@ static void rtl8139_stop_thread(struct rtl8139_private *tp) if (tp->have_thread) { cancel_rearming_delayed_work(&tp->thread); tp->have_thread = 0; } } else flush_scheduled_work(); } static inline void rtl8139_tx_clear (struct rtl8139_private *tp) Loading @@ -1642,14 +1646,13 @@ static inline void rtl8139_tx_clear (struct rtl8139_private *tp) /* XXX account for unsent Tx packets in tp->stats.tx_dropped */ } static void rtl8139_tx_timeout (struct net_device *dev) static void rtl8139_tx_timeout_task (void *_data) { struct net_device *dev = _data; struct rtl8139_private *tp = netdev_priv(dev); void __iomem *ioaddr = tp->mmio_addr; int i; u8 tmp8; unsigned long flags; printk (KERN_DEBUG "%s: Transmit timeout, status %2.2x %4.4x %4.4x " "media %2.2x.\n", dev->name, RTL_R8 (ChipCmd), Loading @@ -1670,23 +1673,34 @@ static void rtl8139_tx_timeout (struct net_device *dev) if (tmp8 & CmdTxEnb) RTL_W8 (ChipCmd, CmdRxEnb); spin_lock(&tp->rx_lock); spin_lock_bh(&tp->rx_lock); /* Disable interrupts by clearing the interrupt mask. */ RTL_W16 (IntrMask, 0x0000); /* Stop a shared interrupt from scavenging while we are. */ spin_lock_irqsave (&tp->lock, flags); spin_lock_irq(&tp->lock); rtl8139_tx_clear (tp); spin_unlock_irqrestore (&tp->lock, flags); spin_unlock_irq(&tp->lock); /* ...and finally, reset everything */ if (netif_running(dev)) { rtl8139_hw_start (dev); netif_wake_queue (dev); } spin_unlock(&tp->rx_lock); spin_unlock_bh(&tp->rx_lock); } static void rtl8139_tx_timeout (struct net_device *dev) { struct rtl8139_private *tp = netdev_priv(dev); if (!tp->have_thread) { INIT_WORK(&tp->thread, rtl8139_tx_timeout_task, dev); schedule_delayed_work(&tp->thread, next_tick); } else tp->watchdog_fired = 1; } static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) { Loading drivers/net/Kconfig +1 −6 Original line number Diff line number Diff line Loading @@ -4,9 +4,9 @@ # menu "Network device support" depends on NET config NETDEVICES depends on NET default y if UML bool "Network device support" ---help--- Loading @@ -24,9 +24,6 @@ config NETDEVICES If unsure, say Y. # All the following symbols are dependent on NETDEVICES - do not repeat # that for each of the symbols. if NETDEVICES config IFB tristate "Intermediate Functional Block support" Loading Loading @@ -2718,8 +2715,6 @@ config NETCONSOLE If you want to log kernel messages over the network, enable this. See <file:Documentation/networking/netconsole.txt> for details. endif #NETDEVICES config NETPOLL def_bool NETCONSOLE Loading drivers/net/bonding/bond_main.c +14 −1 Original line number Diff line number Diff line Loading @@ -1145,7 +1145,8 @@ int bond_sethwaddr(struct net_device *bond_dev, struct net_device *slave_dev) } #define BOND_INTERSECT_FEATURES \ (NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM) (NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM|\ NETIF_F_TSO|NETIF_F_UFO) /* * Compute the common dev->feature set available to all slaves. Some Loading @@ -1168,6 +1169,16 @@ static int bond_compute_features(struct bonding *bond) NETIF_F_HW_CSUM))) features &= ~NETIF_F_SG; /* * features will include NETIF_F_TSO (NETIF_F_UFO) iff all * slave devices support NETIF_F_TSO (NETIF_F_UFO), which * implies that all slaves also support scatter-gather * (NETIF_F_SG), which implies that features also includes * NETIF_F_SG. So no need to check whether we have an * illegal combination of NETIF_F_{TSO,UFO} and * !NETIF_F_SG */ features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES); bond_dev->features = features; Loading Loading @@ -4080,6 +4091,8 @@ static void bond_ethtool_get_drvinfo(struct net_device *bond_dev, static struct ethtool_ops bond_ethtool_ops = { .get_tx_csum = ethtool_op_get_tx_csum, .get_tso = ethtool_op_get_tso, .get_ufo = ethtool_op_get_ufo, .get_sg = ethtool_op_get_sg, .get_drvinfo = bond_ethtool_get_drvinfo, }; Loading drivers/net/bonding/bond_sysfs.c +3 −3 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ static ssize_t bonding_store_slaves(struct class_device *cd, const char *buffer, char *ifname; int i, res, found, ret = count; struct slave *slave; struct net_device *dev = 0; struct net_device *dev = NULL; struct bonding *bond = to_bond(cd); /* Quick sanity check -- is the bond interface up? */ Loading Loading @@ -995,7 +995,7 @@ static ssize_t bonding_store_primary(struct class_device *cd, const char *buf, s printk(KERN_INFO DRV_NAME ": %s: Setting primary slave to None.\n", bond->dev->name); bond->primary_slave = 0; bond->primary_slave = NULL; bond_select_active_slave(bond); } else { printk(KERN_INFO DRV_NAME Loading Loading @@ -1123,7 +1123,7 @@ static ssize_t bonding_store_active_slave(struct class_device *cd, const char *b printk(KERN_INFO DRV_NAME ": %s: Setting active slave to None.\n", bond->dev->name); bond->primary_slave = 0; bond->primary_slave = NULL; bond_select_active_slave(bond); } else { printk(KERN_INFO DRV_NAME Loading drivers/net/e100.c +0 −2 Original line number Diff line number Diff line Loading @@ -2752,8 +2752,6 @@ static int e100_resume(struct pci_dev *pdev) retval = pci_enable_wake(pdev, 0, 0); if (retval) DPRINTK(PROBE,ERR, "Error clearing wake events\n"); if(e100_hw_init(nic)) DPRINTK(HW, ERR, "e100_hw_init failed\n"); netif_device_attach(netdev); if(netif_running(netdev)) Loading Loading
drivers/net/8139too.c +26 −12 Original line number Diff line number Diff line Loading @@ -586,6 +586,7 @@ struct rtl8139_private { dma_addr_t tx_bufs_dma; signed char phys[4]; /* MII device addresses. */ char twistie, twist_row, twist_col; /* Twister tune state. */ unsigned int watchdog_fired : 1; unsigned int default_port : 4; /* Last dev->if_port value. */ unsigned int have_thread : 1; spinlock_t lock; Loading Loading @@ -638,6 +639,7 @@ static void rtl8139_set_rx_mode (struct net_device *dev); static void __set_rx_mode (struct net_device *dev); static void rtl8139_hw_start (struct net_device *dev); static void rtl8139_thread (void *_data); static void rtl8139_tx_timeout_task(void *_data); static struct ethtool_ops rtl8139_ethtool_ops; /* write MMIO register, with flush */ Loading Loading @@ -1598,13 +1600,14 @@ static void rtl8139_thread (void *_data) { struct net_device *dev = _data; struct rtl8139_private *tp = netdev_priv(dev); unsigned long thr_delay; unsigned long thr_delay = next_tick; if (rtnl_shlock_nowait() == 0) { if (tp->watchdog_fired) { tp->watchdog_fired = 0; rtl8139_tx_timeout_task(_data); } else if (rtnl_shlock_nowait() == 0) { rtl8139_thread_iter (dev, tp, tp->mmio_addr); rtnl_unlock (); thr_delay = next_tick; } else { /* unlikely race. mitigate with fast poll. */ thr_delay = HZ / 2; Loading @@ -1631,7 +1634,8 @@ static void rtl8139_stop_thread(struct rtl8139_private *tp) if (tp->have_thread) { cancel_rearming_delayed_work(&tp->thread); tp->have_thread = 0; } } else flush_scheduled_work(); } static inline void rtl8139_tx_clear (struct rtl8139_private *tp) Loading @@ -1642,14 +1646,13 @@ static inline void rtl8139_tx_clear (struct rtl8139_private *tp) /* XXX account for unsent Tx packets in tp->stats.tx_dropped */ } static void rtl8139_tx_timeout (struct net_device *dev) static void rtl8139_tx_timeout_task (void *_data) { struct net_device *dev = _data; struct rtl8139_private *tp = netdev_priv(dev); void __iomem *ioaddr = tp->mmio_addr; int i; u8 tmp8; unsigned long flags; printk (KERN_DEBUG "%s: Transmit timeout, status %2.2x %4.4x %4.4x " "media %2.2x.\n", dev->name, RTL_R8 (ChipCmd), Loading @@ -1670,23 +1673,34 @@ static void rtl8139_tx_timeout (struct net_device *dev) if (tmp8 & CmdTxEnb) RTL_W8 (ChipCmd, CmdRxEnb); spin_lock(&tp->rx_lock); spin_lock_bh(&tp->rx_lock); /* Disable interrupts by clearing the interrupt mask. */ RTL_W16 (IntrMask, 0x0000); /* Stop a shared interrupt from scavenging while we are. */ spin_lock_irqsave (&tp->lock, flags); spin_lock_irq(&tp->lock); rtl8139_tx_clear (tp); spin_unlock_irqrestore (&tp->lock, flags); spin_unlock_irq(&tp->lock); /* ...and finally, reset everything */ if (netif_running(dev)) { rtl8139_hw_start (dev); netif_wake_queue (dev); } spin_unlock(&tp->rx_lock); spin_unlock_bh(&tp->rx_lock); } static void rtl8139_tx_timeout (struct net_device *dev) { struct rtl8139_private *tp = netdev_priv(dev); if (!tp->have_thread) { INIT_WORK(&tp->thread, rtl8139_tx_timeout_task, dev); schedule_delayed_work(&tp->thread, next_tick); } else tp->watchdog_fired = 1; } static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) { Loading
drivers/net/Kconfig +1 −6 Original line number Diff line number Diff line Loading @@ -4,9 +4,9 @@ # menu "Network device support" depends on NET config NETDEVICES depends on NET default y if UML bool "Network device support" ---help--- Loading @@ -24,9 +24,6 @@ config NETDEVICES If unsure, say Y. # All the following symbols are dependent on NETDEVICES - do not repeat # that for each of the symbols. if NETDEVICES config IFB tristate "Intermediate Functional Block support" Loading Loading @@ -2718,8 +2715,6 @@ config NETCONSOLE If you want to log kernel messages over the network, enable this. See <file:Documentation/networking/netconsole.txt> for details. endif #NETDEVICES config NETPOLL def_bool NETCONSOLE Loading
drivers/net/bonding/bond_main.c +14 −1 Original line number Diff line number Diff line Loading @@ -1145,7 +1145,8 @@ int bond_sethwaddr(struct net_device *bond_dev, struct net_device *slave_dev) } #define BOND_INTERSECT_FEATURES \ (NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM) (NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM|\ NETIF_F_TSO|NETIF_F_UFO) /* * Compute the common dev->feature set available to all slaves. Some Loading @@ -1168,6 +1169,16 @@ static int bond_compute_features(struct bonding *bond) NETIF_F_HW_CSUM))) features &= ~NETIF_F_SG; /* * features will include NETIF_F_TSO (NETIF_F_UFO) iff all * slave devices support NETIF_F_TSO (NETIF_F_UFO), which * implies that all slaves also support scatter-gather * (NETIF_F_SG), which implies that features also includes * NETIF_F_SG. So no need to check whether we have an * illegal combination of NETIF_F_{TSO,UFO} and * !NETIF_F_SG */ features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES); bond_dev->features = features; Loading Loading @@ -4080,6 +4091,8 @@ static void bond_ethtool_get_drvinfo(struct net_device *bond_dev, static struct ethtool_ops bond_ethtool_ops = { .get_tx_csum = ethtool_op_get_tx_csum, .get_tso = ethtool_op_get_tso, .get_ufo = ethtool_op_get_ufo, .get_sg = ethtool_op_get_sg, .get_drvinfo = bond_ethtool_get_drvinfo, }; Loading
drivers/net/bonding/bond_sysfs.c +3 −3 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ static ssize_t bonding_store_slaves(struct class_device *cd, const char *buffer, char *ifname; int i, res, found, ret = count; struct slave *slave; struct net_device *dev = 0; struct net_device *dev = NULL; struct bonding *bond = to_bond(cd); /* Quick sanity check -- is the bond interface up? */ Loading Loading @@ -995,7 +995,7 @@ static ssize_t bonding_store_primary(struct class_device *cd, const char *buf, s printk(KERN_INFO DRV_NAME ": %s: Setting primary slave to None.\n", bond->dev->name); bond->primary_slave = 0; bond->primary_slave = NULL; bond_select_active_slave(bond); } else { printk(KERN_INFO DRV_NAME Loading Loading @@ -1123,7 +1123,7 @@ static ssize_t bonding_store_active_slave(struct class_device *cd, const char *b printk(KERN_INFO DRV_NAME ": %s: Setting active slave to None.\n", bond->dev->name); bond->primary_slave = 0; bond->primary_slave = NULL; bond_select_active_slave(bond); } else { printk(KERN_INFO DRV_NAME Loading
drivers/net/e100.c +0 −2 Original line number Diff line number Diff line Loading @@ -2752,8 +2752,6 @@ static int e100_resume(struct pci_dev *pdev) retval = pci_enable_wake(pdev, 0, 0); if (retval) DPRINTK(PROBE,ERR, "Error clearing wake events\n"); if(e100_hw_init(nic)) DPRINTK(HW, ERR, "e100_hw_init failed\n"); netif_device_attach(netdev); if(netif_running(netdev)) Loading