Subject: Re: [PATCH] e1000: power off PHY after reset when interface is down

From: Prasanna Panchamukhi <[email-masked]>
Date: Fri, 04 Mar 2011 10:03:59 -0800

On 03/04/2011 12:19 AM, Jeff Kirsher wrote:
> On Wed, Feb 23, 2011 at 16:02, Jeff Kirsher<[email-masked]>  wrote:
>> On Tue, 2011-02-22 at 17:25 -0800, [email-masked]
>> wrote:
>>> From: Prasanna S. Panchamukhi<[email-masked]>
>>>
>>> Some Phys supported by the e1000 driver do not remain powered off
>>> across
>>> a reset of the device when the interface is down, e.g. on 82546.
>>> This patch powers down (only when WoL is disabled) the PHY after reset
>>> if
>>> the interface is down and ethtool diagnostics are not currently
>>> running.
>>>
>>> Similar problem was see on 82571 controller and was fixed in e1000e
>>> driver
>>> by Bruce Allan.
>>> Please refer commit 31dbe5b4ac6fca72dec946e4d0fa7f0913f1d9b1 for
>>> details.
>>>
>>> Signed-off-by: Prasanna S. Panchamukhi
>>> <[email-masked]>
>>> ---
>>>   drivers/net/e1000/e1000_ethtool.c |   27 +++++++++++++++++++--------
>>>   drivers/net/e1000/e1000_main.c    |    7 +++++++
>>>   2 files changed, 26 insertions(+), 8 deletions(-)
>> Thanks Prasanna!  I have added the patch to my queue of e1000 patches.
>>
> Prasanna-
> Here is what we found during validating your patch:
>
> The behavior of 82546 device(s) seems to be identical with/without this patch
> applied. 82546GB (LOM), dev_id 1079 powers down (with wol disabled) after
> ifdown, but powers back up after approx. 10 seconds. 82546EB (NIC), dev_id
> 1010 powers down (with wol disabled) after ifdown. Both of the above
> behaviors are the same with and without the patch applied. Also, if this patch
> DID work as expected, it should print a message after a reset, such as "Cannot
> restart autonegotiation: Resource temporarily unavailable", which would mirror
> the behavior of e1000e.
>
Hi Jeff,

Below is the test case we run verify this fix:

$ ethtool -s eth0 wol d
$ ifconfig eth0 up
$ mii-tool eth0
eth0: negotiated 100baseTx-FD, link ok
$ ifconfig eth0 down
$ mii-tool eth0
eth0: no link
$ ethtool -s eth0 autoneg on  (doesn't really matter what we do here)
$ mii-tool eth0
eth0: negotiated 100baseTx-FD, link ok (this should be: eth0: no link)

I will re-run the test&  check if does not fix this.

Thanks
Prasanna