diff options
Diffstat (limited to 'sys-kernel/linux-image-redcore/files/enable_alx_wol.patch')
-rw-r--r-- | sys-kernel/linux-image-redcore/files/enable_alx_wol.patch | 78 |
1 files changed, 45 insertions, 33 deletions
diff --git a/sys-kernel/linux-image-redcore/files/enable_alx_wol.patch b/sys-kernel/linux-image-redcore/files/enable_alx_wol.patch index f9347bfa..1b7f6e13 100644 --- a/sys-kernel/linux-image-redcore/files/enable_alx_wol.patch +++ b/sys-kernel/linux-image-redcore/files/enable_alx_wol.patch @@ -1,7 +1,8 @@ -diff -Nur a/drivers/net/ethernet/atheros/alx/ethtool.c b/drivers/net/ethernet/atheros/alx/ethtool.c ---- a/drivers/net/ethernet/atheros/alx/ethtool.c 2018-04-01 22:20:27.000000000 +0100 -+++ b/drivers/net/ethernet/atheros/alx/ethtool.c 2018-04-06 01:07:48.163242605 +0100 -@@ -310,11 +310,47 @@ +diff --git a/drivers/net/ethernet/atheros/alx/ethtool.c b/drivers/net/ethernet/atheros/alx/ethtool.c +index 2f4eabf652e8..859e27236ce4 100644 +--- a/drivers/net/ethernet/atheros/alx/ethtool.c ++++ b/drivers/net/ethernet/atheros/alx/ethtool.c +@@ -310,11 +310,47 @@ static int alx_get_sset_count(struct net_device *netdev, int sset) } } @@ -49,10 +50,11 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/ethtool.c b/drivers/net/ethernet/at .get_link = ethtool_op_get_link, .get_strings = alx_get_strings, .get_sset_count = alx_get_sset_count, -diff -Nur a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros/alx/hw.c ---- a/drivers/net/ethernet/atheros/alx/hw.c 2018-04-01 22:20:27.000000000 +0100 -+++ b/drivers/net/ethernet/atheros/alx/hw.c 2018-04-06 01:07:48.163242605 +0100 -@@ -332,6 +332,16 @@ +diff --git a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros/alx/hw.c +index 6ac40b0003a3..4791b9dbbe26 100644 +--- a/drivers/net/ethernet/atheros/alx/hw.c ++++ b/drivers/net/ethernet/atheros/alx/hw.c +@@ -332,6 +332,16 @@ void alx_set_macaddr(struct alx_hw *hw, const u8 *addr) alx_write_mem32(hw, ALX_STAD1, val); } @@ -69,7 +71,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros static void alx_reset_osc(struct alx_hw *hw, u8 rev) { u32 val, val2; -@@ -848,6 +858,66 @@ +@@ -848,6 +858,66 @@ void alx_post_phy_link(struct alx_hw *hw) } } @@ -136,7 +138,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros bool alx_phy_configured(struct alx_hw *hw) { u32 cfg, hw_cfg; -@@ -920,6 +990,26 @@ +@@ -920,6 +990,26 @@ int alx_clear_phy_intr(struct alx_hw *hw) return alx_read_phy_reg(hw, ALX_MII_ISR, &isr); } @@ -163,7 +165,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros void alx_disable_rss(struct alx_hw *hw) { u32 ctrl = alx_read_mem32(hw, ALX_RXQ0); -@@ -1045,6 +1135,71 @@ +@@ -1045,6 +1135,71 @@ void alx_mask_msix(struct alx_hw *hw, int index, bool mask) } @@ -235,10 +237,11 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.c b/drivers/net/ethernet/atheros bool alx_get_phy_info(struct alx_hw *hw) { u16 devs1, devs2; -diff -Nur a/drivers/net/ethernet/atheros/alx/hw.h b/drivers/net/ethernet/atheros/alx/hw.h ---- a/drivers/net/ethernet/atheros/alx/hw.h 2018-04-01 22:20:27.000000000 +0100 -+++ b/drivers/net/ethernet/atheros/alx/hw.h 2018-04-06 01:07:48.163242605 +0100 -@@ -487,6 +487,8 @@ +diff --git a/drivers/net/ethernet/atheros/alx/hw.h b/drivers/net/ethernet/atheros/alx/hw.h +index e42d7e0947eb..a7fb6c8d846a 100644 +--- a/drivers/net/ethernet/atheros/alx/hw.h ++++ b/drivers/net/ethernet/atheros/alx/hw.h +@@ -487,6 +487,8 @@ struct alx_hw { u8 flowctrl; u32 adv_cfg; @@ -247,7 +250,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.h b/drivers/net/ethernet/atheros spinlock_t mdio_lock; struct mdio_if_info mdio; u16 phy_id[2]; -@@ -549,12 +551,14 @@ +@@ -549,12 +551,14 @@ void alx_reset_pcie(struct alx_hw *hw); void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en); int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl); void alx_post_phy_link(struct alx_hw *hw); @@ -262,7 +265,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.h b/drivers/net/ethernet/atheros void alx_cfg_mac_flowcontrol(struct alx_hw *hw, u8 fc); void alx_start_mac(struct alx_hw *hw); int alx_reset_mac(struct alx_hw *hw); -@@ -563,6 +567,7 @@ +@@ -563,6 +567,7 @@ bool alx_phy_configured(struct alx_hw *hw); void alx_configure_basic(struct alx_hw *hw); void alx_mask_msix(struct alx_hw *hw, int index, bool mask); void alx_disable_rss(struct alx_hw *hw); @@ -270,10 +273,11 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/hw.h b/drivers/net/ethernet/atheros bool alx_get_phy_info(struct alx_hw *hw); void alx_update_hw_stats(struct alx_hw *hw); -diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c ---- a/drivers/net/ethernet/atheros/alx/main.c 2018-04-01 22:20:27.000000000 +0100 -+++ b/drivers/net/ethernet/atheros/alx/main.c 2018-04-06 01:07:48.164242638 +0100 -@@ -1070,6 +1070,7 @@ +diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c +index 5e5022fa1d04..7adaf10a1929 100644 +--- a/drivers/net/ethernet/atheros/alx/main.c ++++ b/drivers/net/ethernet/atheros/alx/main.c +@@ -1070,6 +1070,7 @@ static int alx_init_sw(struct alx_priv *alx) alx->dev->max_mtu = ALX_MAX_FRAME_LEN(ALX_MAX_FRAME_SIZE); alx->tx_ringsz = 256; alx->rx_ringsz = 512; @@ -281,7 +285,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather hw->imt = 200; alx->int_mask = ALX_ISR_MISC; hw->dma_chnl = hw->max_dma_chnl; -@@ -1345,6 +1346,65 @@ +@@ -1345,6 +1346,65 @@ static int alx_stop(struct net_device *netdev) __alx_stop(netdev_priv(netdev)); return 0; } @@ -347,7 +351,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather static void alx_link_check(struct work_struct *work) { -@@ -1841,6 +1901,8 @@ +@@ -1841,6 +1901,8 @@ static int alx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto out_unmap; } @@ -356,7 +360,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather netdev_info(netdev, "Qualcomm Atheros AR816x/AR817x Ethernet [%pM]\n", netdev->dev_addr); -@@ -1883,12 +1945,21 @@ +@@ -1883,12 +1945,21 @@ static void alx_remove(struct pci_dev *pdev) static int alx_suspend(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); @@ -383,13 +387,23 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather return 0; } -@@ -1896,20 +1967,47 @@ +@@ -1896,26 +1967,49 @@ static int alx_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct alx_priv *alx = pci_get_drvdata(pdev); - struct alx_hw *hw = &alx->hw; +- int err; - - alx_reset_phy(hw); +- +- if (!netif_running(alx->dev)) +- return 0; +- netif_device_attach(alx->dev); +- +- rtnl_lock(); +- err = __alx_open(alx, true); +- rtnl_unlock(); +- + struct net_device *netdev = alx->dev; + struct alx_hw *hw = &alx->hw; + int err; @@ -422,17 +436,15 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather + } + + if (netif_running(netdev)) { ++ rtnl_lock(); + err = __alx_open(alx, true); ++ rtnl_unlock(); + if (err) + return err; + } - -- if (!netif_running(alx->dev)) -- return 0; -- netif_device_attach(alx->dev); -- return __alx_open(alx, true); ++ + netif_device_attach(netdev); -+ return err; + return err; } -static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); @@ -442,7 +454,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather #endif -@@ -1955,6 +2053,8 @@ +@@ -1961,6 +2055,8 @@ static pci_ers_result_t alx_pci_error_slot_reset(struct pci_dev *pdev) } pci_set_master(pdev); @@ -451,7 +463,7 @@ diff -Nur a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/ather alx_reset_pcie(hw); if (!alx_reset_mac(hw)) -@@ -2006,11 +2106,19 @@ +@@ -2012,11 +2108,19 @@ static const struct pci_device_id alx_pci_tbl[] = { {} }; |