Subject: RE: drivers/net/usb/asix: bug in asix_get_wol

From: "ASIX Allan Email [office]" <[email-masked]>
Date: Fri, 16 Dec 2011 11:37:34 +0800

Dear Grant and Eugene,

Please refer to the attached file and below statements to modify the asix_get_wol() routine and let us know if this suggestion can solve your issues or not? Thanks a lot.

================
static void
asix_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
{
	struct usbnet *dev = netdev_priv(net);
	u8 opt;

	if (asix_read_cmd(dev, AX_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) {
		wolinfo->supported = 0;
		wolinfo->wolopts = 0;
		return;
	}
	wolinfo->supported = WAKE_PHY | WAKE_MAGIC;
	wolinfo->wolopts = 0;
	if (opt & AX_MONITOR_LINK)
		wolinfo->wolopts |= WAKE_PHY;
	if (opt & AX_MONITOR_MAGIC)
		wolinfo->wolopts |= WAKE_MAGIC;
}

---
Best regards,
Allan Chou
Technical Support Division
ASIX Electronics Corporation
TEL: 886-3-5799500 ext.228
FAX: 886-3-5799558
E-mail: [email-masked] 
http://www.asix.com.tw/ 

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On Behalf Of Grant Grundler
Sent: Friday, December 16, 2011 12:48 AM
To: Eugene; Allan Chou
Cc: [email-masked]; Freddy Xin
Subject: Re: drivers/net/usb/asix: bug in asix_get_wol

On Tue, Dec 13, 2011 at 5:03 AM, Eugene <[email-masked]> wrote:
> Hi Grant,
>
>
> The problem is that, as it's currently written, asix_get_wol always
> returns that wake-on-lan is disabled.

I think that was the intent.

Allan, can you please confirm?

thanks,
grant

>
>
> Cheers,
> Eugene
>
> On 12 December 2011 10:29, Grant Grundler <[email-masked]> wrote:
>> [+freddy/allan @ ASIX]
>>
>> On Sat, Dec 10, 2011 at 5:02 PM, Eugene <[email-masked]> wrote:
>>> Dear kernel devs,
>>>
>>> Thanks for the commit at
>>> http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=4ad1438f025ed8d1e4e95a796ca7f0ad5a22c378,
>>> It successfully stops my adapter from dying when wake-on-lan gets
>>> enabled.
>>
>> Hi Eugene!
>> thanks for the "it works!" report.
>>
>>> However, I've noticed that it has broken asix_get_wol - the
>>> lines
>>>
>>>       if (opt & AX_MONITOR_LINK)
>>>               wolinfo->wolopts |= WAKE_PHY;
>>>       if (opt & AX_MONITOR_MAGIC)
>>>               wolinfo->wolopts |= WAKE_MAGIC;
>>>
>>> have been accidentally removed.
>>
>> This wasn't by accident. This comment in the commit log perhaps
>> doesn't explain sufficiently:
>> |    Remove MONITOR_MODE. In this mode, Received packets are not buffered when
>> | the remote wakeup is enabled.
>>
>>> The vendor driver has them, and I've
>>> successfully tested a kernel with these lines included. The change is
>>> too small for me to bother sending in a properly formatted patch...
>>
>> "Too small"? No such thing. :)
>>
>> cheers,
>> grant