Loading MAINTAINERS +1 −1 Original line number Diff line number Diff line Loading @@ -1142,7 +1142,7 @@ ATLX ETHERNET DRIVERS M: Jay Cliburn <jcliburn@gmail.com> M: Chris Snook <chris.snook@gmail.com> M: Jie Yang <jie.yang@atheros.com> L: atl1-devel@lists.sourceforge.net L: netdev@vger.kernel.org W: http://sourceforge.net/projects/atl1 W: http://atl1.sourceforge.net S: Maintained Loading drivers/dca/dca-core.c +79 −6 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ static DEFINE_SPINLOCK(dca_lock); static LIST_HEAD(dca_domains); static BLOCKING_NOTIFIER_HEAD(dca_provider_chain); static int dca_providers_blocked; static struct pci_bus *dca_pci_rc_from_dev(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); Loading Loading @@ -70,6 +74,60 @@ static void dca_free_domain(struct dca_domain *domain) kfree(domain); } static int dca_provider_ioat_ver_3_0(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); return ((pdev->vendor == PCI_VENDOR_ID_INTEL) && ((pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG0) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG1) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG2) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG3) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG4) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG5) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG6) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG7))); } static void unregister_dca_providers(void) { struct dca_provider *dca, *_dca; struct list_head unregistered_providers; struct dca_domain *domain; unsigned long flags; blocking_notifier_call_chain(&dca_provider_chain, DCA_PROVIDER_REMOVE, NULL); INIT_LIST_HEAD(&unregistered_providers); spin_lock_irqsave(&dca_lock, flags); if (list_empty(&dca_domains)) { spin_unlock_irqrestore(&dca_lock, flags); return; } /* at this point only one domain in the list is expected */ domain = list_first_entry(&dca_domains, struct dca_domain, node); if (!domain) return; list_for_each_entry_safe(dca, _dca, &domain->dca_providers, node) { list_del(&dca->node); list_add(&dca->node, &unregistered_providers); } dca_free_domain(domain); spin_unlock_irqrestore(&dca_lock, flags); list_for_each_entry_safe(dca, _dca, &unregistered_providers, node) { dca_sysfs_remove_provider(dca); list_del(&dca->node); } } static struct dca_domain *dca_find_domain(struct pci_bus *rc) { struct dca_domain *domain; Loading @@ -90,10 +148,14 @@ static struct dca_domain *dca_get_domain(struct device *dev) domain = dca_find_domain(rc); if (!domain) { if (dca_provider_ioat_ver_3_0(dev) && !list_empty(&dca_domains)) { dca_providers_blocked = 1; } else { domain = dca_allocate_domain(rc); if (domain) list_add(&domain->node, &dca_domains); } } return domain; } Loading Loading @@ -293,8 +355,6 @@ void free_dca_provider(struct dca_provider *dca) } EXPORT_SYMBOL_GPL(free_dca_provider); static BLOCKING_NOTIFIER_HEAD(dca_provider_chain); /** * register_dca_provider - register a dca provider * @dca - struct created by alloc_dca_provider() Loading @@ -306,6 +366,13 @@ int register_dca_provider(struct dca_provider *dca, struct device *dev) unsigned long flags; struct dca_domain *domain; spin_lock_irqsave(&dca_lock, flags); if (dca_providers_blocked) { spin_unlock_irqrestore(&dca_lock, flags); return -ENODEV; } spin_unlock_irqrestore(&dca_lock, flags); err = dca_sysfs_add_provider(dca, dev); if (err) return err; Loading @@ -313,7 +380,13 @@ int register_dca_provider(struct dca_provider *dca, struct device *dev) spin_lock_irqsave(&dca_lock, flags); domain = dca_get_domain(dev); if (!domain) { if (dca_providers_blocked) { spin_unlock_irqrestore(&dca_lock, flags); dca_sysfs_remove_provider(dca); unregister_dca_providers(); } else { spin_unlock_irqrestore(&dca_lock, flags); } return -ENODEV; } list_add(&dca->node, &domain->dca_providers); Loading drivers/net/3c59x.c +3 −4 Original line number Diff line number Diff line Loading @@ -635,6 +635,9 @@ struct vortex_private { must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ large_frames:1, /* accept large frames */ handling_irq:1; /* private in_irq indicator */ /* {get|set}_wol operations are already serialized by rtnl. * no additional locking is required for the enable_wol and acpi_set_WOL() */ int drv_flags; u16 status_enable; u16 intr_enable; Loading Loading @@ -2939,13 +2942,11 @@ static void vortex_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) { struct vortex_private *vp = netdev_priv(dev); spin_lock_irq(&vp->lock); wol->supported = WAKE_MAGIC; wol->wolopts = 0; if (vp->enable_wol) wol->wolopts |= WAKE_MAGIC; spin_unlock_irq(&vp->lock); } static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) Loading @@ -2954,13 +2955,11 @@ static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) if (wol->wolopts & ~WAKE_MAGIC) return -EINVAL; spin_lock_irq(&vp->lock); if (wol->wolopts & WAKE_MAGIC) vp->enable_wol = 1; else vp->enable_wol = 0; acpi_set_WOL(dev); spin_unlock_irq(&vp->lock); return 0; } Loading drivers/net/atlx/atl1.c +9 −2 Original line number Diff line number Diff line Loading @@ -1251,6 +1251,12 @@ static void atl1_free_ring_resources(struct atl1_adapter *adapter) rrd_ring->desc = NULL; rrd_ring->dma = 0; adapter->cmb.dma = 0; adapter->cmb.cmb = NULL; adapter->smb.dma = 0; adapter->smb.smb = NULL; } static void atl1_setup_mac_ctrl(struct atl1_adapter *adapter) Loading Loading @@ -2847,10 +2853,11 @@ static int atl1_resume(struct pci_dev *pdev) pci_enable_wake(pdev, PCI_D3cold, 0); atl1_reset_hw(&adapter->hw); adapter->cmb.cmb->int_stats = 0; if (netif_running(netdev)) if (netif_running(netdev)) { adapter->cmb.cmb->int_stats = 0; atl1_up(adapter); } netif_device_attach(netdev); return 0; Loading drivers/net/bonding/bond_3ad.c +3 −0 Original line number Diff line number Diff line Loading @@ -2466,6 +2466,9 @@ int bond_3ad_lacpdu_recv(struct sk_buff *skb, struct net_device *dev, struct pac if (!(dev->flags & IFF_MASTER)) goto out; if (!pskb_may_pull(skb, sizeof(struct lacpdu))) goto out; read_lock(&bond->lock); slave = bond_get_slave_by_dev((struct bonding *)netdev_priv(dev), orig_dev); Loading Loading
MAINTAINERS +1 −1 Original line number Diff line number Diff line Loading @@ -1142,7 +1142,7 @@ ATLX ETHERNET DRIVERS M: Jay Cliburn <jcliburn@gmail.com> M: Chris Snook <chris.snook@gmail.com> M: Jie Yang <jie.yang@atheros.com> L: atl1-devel@lists.sourceforge.net L: netdev@vger.kernel.org W: http://sourceforge.net/projects/atl1 W: http://atl1.sourceforge.net S: Maintained Loading
drivers/dca/dca-core.c +79 −6 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ static DEFINE_SPINLOCK(dca_lock); static LIST_HEAD(dca_domains); static BLOCKING_NOTIFIER_HEAD(dca_provider_chain); static int dca_providers_blocked; static struct pci_bus *dca_pci_rc_from_dev(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); Loading Loading @@ -70,6 +74,60 @@ static void dca_free_domain(struct dca_domain *domain) kfree(domain); } static int dca_provider_ioat_ver_3_0(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); return ((pdev->vendor == PCI_VENDOR_ID_INTEL) && ((pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG0) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG1) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG2) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG3) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG4) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG5) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG6) || (pdev->device == PCI_DEVICE_ID_INTEL_IOAT_TBG7))); } static void unregister_dca_providers(void) { struct dca_provider *dca, *_dca; struct list_head unregistered_providers; struct dca_domain *domain; unsigned long flags; blocking_notifier_call_chain(&dca_provider_chain, DCA_PROVIDER_REMOVE, NULL); INIT_LIST_HEAD(&unregistered_providers); spin_lock_irqsave(&dca_lock, flags); if (list_empty(&dca_domains)) { spin_unlock_irqrestore(&dca_lock, flags); return; } /* at this point only one domain in the list is expected */ domain = list_first_entry(&dca_domains, struct dca_domain, node); if (!domain) return; list_for_each_entry_safe(dca, _dca, &domain->dca_providers, node) { list_del(&dca->node); list_add(&dca->node, &unregistered_providers); } dca_free_domain(domain); spin_unlock_irqrestore(&dca_lock, flags); list_for_each_entry_safe(dca, _dca, &unregistered_providers, node) { dca_sysfs_remove_provider(dca); list_del(&dca->node); } } static struct dca_domain *dca_find_domain(struct pci_bus *rc) { struct dca_domain *domain; Loading @@ -90,10 +148,14 @@ static struct dca_domain *dca_get_domain(struct device *dev) domain = dca_find_domain(rc); if (!domain) { if (dca_provider_ioat_ver_3_0(dev) && !list_empty(&dca_domains)) { dca_providers_blocked = 1; } else { domain = dca_allocate_domain(rc); if (domain) list_add(&domain->node, &dca_domains); } } return domain; } Loading Loading @@ -293,8 +355,6 @@ void free_dca_provider(struct dca_provider *dca) } EXPORT_SYMBOL_GPL(free_dca_provider); static BLOCKING_NOTIFIER_HEAD(dca_provider_chain); /** * register_dca_provider - register a dca provider * @dca - struct created by alloc_dca_provider() Loading @@ -306,6 +366,13 @@ int register_dca_provider(struct dca_provider *dca, struct device *dev) unsigned long flags; struct dca_domain *domain; spin_lock_irqsave(&dca_lock, flags); if (dca_providers_blocked) { spin_unlock_irqrestore(&dca_lock, flags); return -ENODEV; } spin_unlock_irqrestore(&dca_lock, flags); err = dca_sysfs_add_provider(dca, dev); if (err) return err; Loading @@ -313,7 +380,13 @@ int register_dca_provider(struct dca_provider *dca, struct device *dev) spin_lock_irqsave(&dca_lock, flags); domain = dca_get_domain(dev); if (!domain) { if (dca_providers_blocked) { spin_unlock_irqrestore(&dca_lock, flags); dca_sysfs_remove_provider(dca); unregister_dca_providers(); } else { spin_unlock_irqrestore(&dca_lock, flags); } return -ENODEV; } list_add(&dca->node, &domain->dca_providers); Loading
drivers/net/3c59x.c +3 −4 Original line number Diff line number Diff line Loading @@ -635,6 +635,9 @@ struct vortex_private { must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ large_frames:1, /* accept large frames */ handling_irq:1; /* private in_irq indicator */ /* {get|set}_wol operations are already serialized by rtnl. * no additional locking is required for the enable_wol and acpi_set_WOL() */ int drv_flags; u16 status_enable; u16 intr_enable; Loading Loading @@ -2939,13 +2942,11 @@ static void vortex_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) { struct vortex_private *vp = netdev_priv(dev); spin_lock_irq(&vp->lock); wol->supported = WAKE_MAGIC; wol->wolopts = 0; if (vp->enable_wol) wol->wolopts |= WAKE_MAGIC; spin_unlock_irq(&vp->lock); } static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) Loading @@ -2954,13 +2955,11 @@ static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) if (wol->wolopts & ~WAKE_MAGIC) return -EINVAL; spin_lock_irq(&vp->lock); if (wol->wolopts & WAKE_MAGIC) vp->enable_wol = 1; else vp->enable_wol = 0; acpi_set_WOL(dev); spin_unlock_irq(&vp->lock); return 0; } Loading
drivers/net/atlx/atl1.c +9 −2 Original line number Diff line number Diff line Loading @@ -1251,6 +1251,12 @@ static void atl1_free_ring_resources(struct atl1_adapter *adapter) rrd_ring->desc = NULL; rrd_ring->dma = 0; adapter->cmb.dma = 0; adapter->cmb.cmb = NULL; adapter->smb.dma = 0; adapter->smb.smb = NULL; } static void atl1_setup_mac_ctrl(struct atl1_adapter *adapter) Loading Loading @@ -2847,10 +2853,11 @@ static int atl1_resume(struct pci_dev *pdev) pci_enable_wake(pdev, PCI_D3cold, 0); atl1_reset_hw(&adapter->hw); adapter->cmb.cmb->int_stats = 0; if (netif_running(netdev)) if (netif_running(netdev)) { adapter->cmb.cmb->int_stats = 0; atl1_up(adapter); } netif_device_attach(netdev); return 0; Loading
drivers/net/bonding/bond_3ad.c +3 −0 Original line number Diff line number Diff line Loading @@ -2466,6 +2466,9 @@ int bond_3ad_lacpdu_recv(struct sk_buff *skb, struct net_device *dev, struct pac if (!(dev->flags & IFF_MASTER)) goto out; if (!pskb_may_pull(skb, sizeof(struct lacpdu))) goto out; read_lock(&bond->lock); slave = bond_get_slave_by_dev((struct bonding *)netdev_priv(dev), orig_dev); Loading