| From 58f11ee80caf5df895a4167e4298812f2fa995f0 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= |
| <niklas.soderlund+renesas@ragnatech.se> |
| Date: Wed, 1 Feb 2017 15:41:55 +0100 |
| Subject: [PATCH 139/255] sh_eth: fix wakeup event reporting from MagicPacket |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| If a link change interrupt happens along side the MagicPacket interrupt |
| and the link change interrupt is ignored the interrupt handler will |
| return and the wakeup event is not registered. Fix this by moving the |
| MagicPacket check before the link change check. |
| |
| Signed-off-by: Niklas Sรถderlund <niklas.soderlund+renesas@ragnatech.se> |
| Reported-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| (cherry picked from commit 0cf45a3b1e2c47bbcc9e75cbed5c660492e297da) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -1617,6 +1617,8 @@ static void sh_eth_emac_interrupt(struct |
| sh_eth_write(ndev, felic_stat, ECSR); /* clear int */ |
| if (felic_stat & ECSR_ICD) |
| ndev->stats.tx_carrier_errors++; |
| + if (felic_stat & ECSR_MPD) |
| + pm_wakeup_event(&mdp->pdev->dev, 0); |
| if (felic_stat & ECSR_LCHNG) { |
| /* Link Changed */ |
| if (mdp->cd->no_psr || mdp->no_ether_link) |
| @@ -1636,8 +1638,6 @@ static void sh_eth_emac_interrupt(struct |
| sh_eth_rcv_snd_enable(ndev); |
| } |
| } |
| - if (felic_stat & ECSR_MPD) |
| - pm_wakeup_event(&mdp->pdev->dev, 0); |
| } |
| |
| /* error control function */ |