From 2d6fefb9dc69ea01353a9f0fc04f96c029234969 Mon Sep 17 00:00:00 2001 From: Mark Einon Date: Sat, 1 Oct 2011 11:14:17 +0100 Subject: [PATCH] --- yaml --- r: 268687 b: refs/heads/master c: 8481085a83af02397ed0bf29c2bce517c9287f32 h: refs/heads/master i: 268685: 6a4e97f7e98f88e25266c5e421378a4ed65dc48d 268683: 74e99456852c1670eba09dada09752fa1291ba6f 268679: 47167ab51601146bb26e9a0351917b7beaee8568 268671: 3f1ae0d83c482de13fa8fab25deae9b3ef9cdd75 v: v3 --- [refs] | 2 +- trunk/drivers/staging/et131x/et1310_pm.c | 5 +++-- trunk/drivers/staging/et131x/et131x_initpci.c | 12 +++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 0ae6155a4754..ff65127babe4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 86d734fd1e8edcab411c80ae4447c97317f8d8b5 +refs/heads/master: 8481085a83af02397ed0bf29c2bce517c9287f32 diff --git a/trunk/drivers/staging/et131x/et1310_pm.c b/trunk/drivers/staging/et131x/et1310_pm.c index fd1eb6f32966..a1b72bf84677 100644 --- a/trunk/drivers/staging/et131x/et1310_pm.c +++ b/trunk/drivers/staging/et131x/et1310_pm.c @@ -147,6 +147,8 @@ void et1310_enable_phy_coma(struct et131x_adapter *adapter) /* Wait for outstanding Receive packets */ + et131x_disable_txrx(adapter->netdev); + /* Gate off JAGCore 3 clock domains */ pmcsr &= ~ET_PMCSR_INIT; writel(pmcsr, &adapter->regs->global.pm_csr); @@ -198,7 +200,6 @@ void et1310_disable_phy_coma(struct et131x_adapter *adapter) /* Allow Tx to restart */ adapter->flags &= ~fMP_ADAPTER_LOWER_POWER; - /* Need to re-enable Rx. */ - et131x_rx_dma_enable(adapter); + et131x_enable_txrx(adapter->netdev); } diff --git a/trunk/drivers/staging/et131x/et131x_initpci.c b/trunk/drivers/staging/et131x/et131x_initpci.c index ed2261548d38..9795310fa71e 100644 --- a/trunk/drivers/staging/et131x/et131x_initpci.c +++ b/trunk/drivers/staging/et131x/et131x_initpci.c @@ -243,10 +243,15 @@ void et131x_error_timer_handler(unsigned long data) struct et131x_adapter *adapter = (struct et131x_adapter *) data; struct phy_device *phydev = adapter->phydev; - if (!et1310_in_phy_coma(adapter)) + if (et1310_in_phy_coma(adapter)) { + /* Bring the device immediately out of coma, to + * prevent it from sleeping indefinitely, this + * mechanism could be improved! */ + et1310_disable_phy_coma(adapter); + adapter->boot_coma = 20; + } else { et1310_update_macstat_host_counters(adapter); - else - dev_err(&adapter->pdev->dev, "No interrupts, in PHY coma\n"); + } if (!phydev->link && adapter->boot_coma < 11) adapter->boot_coma++; @@ -495,6 +500,7 @@ static void et131x_adjust_link(struct net_device *netdev) } else { dev_warn(&adapter->pdev->dev, "Link down - cable problem ?\n"); + adapter->boot_coma = 0; if (phydev && phydev->speed == SPEED_10) { /* NOTE - Is there a way to query this without