mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-03 21:01:50 +00:00
r8169: delay phy init until device opens.
It workarounds the 60s firmware load failure timeout for the non-modular case. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
697d0e338c
commit
eee3a96c63
1 changed files with 11 additions and 10 deletions
|
@ -3069,15 +3069,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
rtl8168_driver_start(tp);
|
rtl8168_driver_start(tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtl8169_init_phy(dev, tp);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pretend we are using VLANs; This bypasses a nasty bug where
|
|
||||||
* Interrupts stop flowing on high load on 8110SCd controllers.
|
|
||||||
*/
|
|
||||||
if (tp->mac_version == RTL_GIGA_MAC_VER_05)
|
|
||||||
RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) | RxVlan);
|
|
||||||
|
|
||||||
device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
|
device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
|
||||||
|
|
||||||
if (pci_dev_run_wake(pdev))
|
if (pci_dev_run_wake(pdev))
|
||||||
|
@ -3127,6 +3118,7 @@ static void __devexit rtl8169_remove_one(struct pci_dev *pdev)
|
||||||
static int rtl8169_open(struct net_device *dev)
|
static int rtl8169_open(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct rtl8169_private *tp = netdev_priv(dev);
|
struct rtl8169_private *tp = netdev_priv(dev);
|
||||||
|
void __iomem *ioaddr = tp->mmio_addr;
|
||||||
struct pci_dev *pdev = tp->pci_dev;
|
struct pci_dev *pdev = tp->pci_dev;
|
||||||
int retval = -ENOMEM;
|
int retval = -ENOMEM;
|
||||||
|
|
||||||
|
@ -3162,6 +3154,15 @@ static int rtl8169_open(struct net_device *dev)
|
||||||
|
|
||||||
napi_enable(&tp->napi);
|
napi_enable(&tp->napi);
|
||||||
|
|
||||||
|
rtl8169_init_phy(dev, tp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pretend we are using VLANs; This bypasses a nasty bug where
|
||||||
|
* Interrupts stop flowing on high load on 8110SCd controllers.
|
||||||
|
*/
|
||||||
|
if (tp->mac_version == RTL_GIGA_MAC_VER_05)
|
||||||
|
RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) | RxVlan);
|
||||||
|
|
||||||
rtl_pll_power_up(tp);
|
rtl_pll_power_up(tp);
|
||||||
|
|
||||||
rtl_hw_start(dev);
|
rtl_hw_start(dev);
|
||||||
|
@ -3171,7 +3172,7 @@ static int rtl8169_open(struct net_device *dev)
|
||||||
tp->saved_wolopts = 0;
|
tp->saved_wolopts = 0;
|
||||||
pm_runtime_put_noidle(&pdev->dev);
|
pm_runtime_put_noidle(&pdev->dev);
|
||||||
|
|
||||||
rtl8169_check_link_status(dev, tp, tp->mmio_addr);
|
rtl8169_check_link_status(dev, tp, ioaddr);
|
||||||
out:
|
out:
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue