summaryrefslogtreecommitdiff
path: root/sys-kernel/linux-image-redcore/files/enable_alx_wol.patch
diff options
context:
space:
mode:
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.patch78
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[] = {
{}
};