2017-03-29 08:52:37

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH net-next v2] net: mvneta: set rx mode during resume if interface is running

I found a bug by:

0. boot and start dhcp client
1. echo mem > /sys/power/state
2. resume back immediately
3. don't touch dhcp client to renew the lease
4. ping the gateway. No acks

Usually, after step2, the DHCP lease isn't expired, so in theory we
should resume all back. But in fact, it doesn't. It turns out
the rx mode isn't resumed correctly. This patch fixes it by adding
mvneta_set_rx_mode(dev) in the resume hook if interface is running.

Signed-off-by: Jisheng Zhang <[email protected]>
---
Since v1:
- rebased to the latest net-next tree and explictly mention it

drivers/net/ethernet/marvell/mvneta.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index aebbc5399a06..cc126204dc4d 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -4449,8 +4449,11 @@ static int mvneta_resume(struct device *device)
mvneta_fixed_link_update(pp, dev->phydev);

netif_device_attach(dev);
- if (netif_running(dev))
+ if (netif_running(dev)) {
mvneta_open(dev);
+ mvneta_set_rx_mode(dev);
+ }
+
return 0;
}
#endif
--
2.11.0


2017-03-29 12:57:53

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvneta: set rx mode during resume if interface is running

On Wed, Mar 29, 2017 at 04:47:19PM +0800, Jisheng Zhang wrote:
> I found a bug by:
>
> 0. boot and start dhcp client
> 1. echo mem > /sys/power/state
> 2. resume back immediately
> 3. don't touch dhcp client to renew the lease
> 4. ping the gateway. No acks
>
> Usually, after step2, the DHCP lease isn't expired, so in theory we
> should resume all back. But in fact, it doesn't. It turns out
> the rx mode isn't resumed correctly. This patch fixes it by adding
> mvneta_set_rx_mode(dev) in the resume hook if interface is running.
>
> Signed-off-by: Jisheng Zhang <[email protected]>

Reviewed-by: Andrew Lunn <[email protected]>

Andrew

2017-03-29 21:09:50

by David Miller

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvneta: set rx mode during resume if interface is running

From: Jisheng Zhang <[email protected]>
Date: Wed, 29 Mar 2017 16:47:19 +0800

> I found a bug by:
>
> 0. boot and start dhcp client
> 1. echo mem > /sys/power/state
> 2. resume back immediately
> 3. don't touch dhcp client to renew the lease
> 4. ping the gateway. No acks
>
> Usually, after step2, the DHCP lease isn't expired, so in theory we
> should resume all back. But in fact, it doesn't. It turns out
> the rx mode isn't resumed correctly. This patch fixes it by adding
> mvneta_set_rx_mode(dev) in the resume hook if interface is running.
>
> Signed-off-by: Jisheng Zhang <[email protected]>
> ---
> Since v1:
> - rebased to the latest net-next tree and explictly mention it

Applied.