lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <df29df7d0799cd22c6e30ced02e7c760@yo2urs.ro>
Date:   Mon, 20 Dec 2021 23:28:52 +0200
From:   Gabriel Hojda <ghojda@...urs.ro>
To:     Andrew Lunn <andrew@...n.ch>
Cc:     Martyn Welch <martyn.welch@...labora.com>,
        netdev <netdev@...r.kernel.org>
Subject: Re: Issues with smsc95xx driver since a049a30fc27c

On 2021-12-20 10:53, Andrew Lunn wrote:
>>> next, when i have time and if there's still no progress, i think i 
>>> should
>> try to insert:
>> 
>>         ret = smsc95xx_reset(dev);
>> 	if (ret)
>> 		goto free_pdata;
>> 
>> before
>> 
>> 	ret = phy_connect_direct(dev->net, pdata->phydev,
>> 				 &smsc95xx_handle_link_change,
>> 				 PHY_INTERFACE_MODE_MII);
>> 
>> in smsc95xx_bind() to try to emulate the old behavior for the first 
>> call to
>> start_phy().
> 
> Yes, that will be in interesting experiment. Something in
> smsc95xx_reset() is required.
> 
> 	Andrew

since the above experiment did not work, i studied usbnet_open() in 
usbnet.c which really tries to reset() and then check_connect() ... 
after that i tried following patch which restored network functionality:

-----------------------------------------------------------------------------
--- a/drivers/net/usb/smsc95xx.c        2021-12-17 11:30:17.000000000 
+0200
+++ b/drivers/net/usb/smsc95xx.c        2021-12-20 22:47:30.401385947 
+0200
@@ -1961,7 +1961,8 @@
         .bind           = smsc95xx_bind,
         .unbind         = smsc95xx_unbind,
         .link_reset     = smsc95xx_link_reset,
-       .reset          = smsc95xx_start_phy,
+       .reset          = smsc95xx_reset,
+       .check_connect  = smsc95xx_start_phy,
         .stop           = smsc95xx_stop,
         .rx_fixup       = smsc95xx_rx_fixup,
         .tx_fixup       = smsc95xx_tx_fixup,
-----------------------------------------------------------------------------

i guess a call to smsc95xx_reset() is needed before phy_start() ...

Gabriel

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ