Skip to content

Commit cc9f07a

Browse files
hkallweitkuba-moo
authored andcommitted
r8169: fix WoL on shutdown if CONFIG_DEBUG_SHIRQ is set
So far phy_disconnect() is called before free_irq(). If CONFIG_DEBUG_SHIRQ is set and interrupt is shared, then free_irq() creates an "artificial" interrupt by calling the interrupt handler. The "link change" flag is set in the interrupt status register, causing phylib to eventually call phy_suspend(). Because the net_device is detached from the PHY already, the PHY driver can't recognize that WoL is configured and powers down the PHY. Fixes: f1e911d ("r8169: add basic phylib support") Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Link: https://lore.kernel.org/r/fe732c2c-a473-9088-3974-df83cfbd6efd@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent a11148e commit cc9f07a

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/net/ethernet/realtek/r8169_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4704,10 +4704,10 @@ static int rtl8169_close(struct net_device *dev)
47044704

47054705
cancel_work_sync(&tp->wk.work);
47064706

4707-
phy_disconnect(tp->phydev);
4708-
47094707
free_irq(pci_irq_vector(pdev, 0), tp);
47104708

4709+
phy_disconnect(tp->phydev);
4710+
47114711
dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray,
47124712
tp->RxPhyAddr);
47134713
dma_free_coherent(&pdev->dev, R8169_TX_RING_BYTES, tp->TxDescArray,

0 commit comments

Comments
 (0)