[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5306ffe6-112c-83c9-826a-9bacd661691b@gmail.com>
Date: Fri, 22 Jan 2021 16:01:47 -0800
From: Florian Fainelli <f.fainelli@...il.com>
To: Sergej Bauer <sbauer@...ckbox.su>, Andrew Lunn <andrew@...n.ch>
Cc: netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Bryan Whitehead <bryan.whitehead@...rochip.com>,
UNGLinuxDriver@...rochip.com,
Simon Horman <simon.horman@...ronome.com>,
Mark Einon <mark.einon@...il.com>,
Madalin Bucur <madalin.bucur@....nxp.com>,
Arnd Bergmann <arnd@...db.de>,
Masahiro Yamada <masahiroy@...nel.org>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] lan743x: add virtual PHY for PHY-less devices
On 1/22/2021 3:58 PM, Sergej Bauer wrote:
> On Saturday, January 23, 2021 2:23:25 AM MSK Andrew Lunn wrote:
>>>>> @@ -1000,8 +1005,10 @@ static void lan743x_phy_close(struct
>>>>> lan743x_adapter *adapter)>
>>>>>
>>>>> struct net_device *netdev = adapter->netdev;
>>>>>
>>>>> phy_stop(netdev->phydev);
>>>>>
>>>>> - phy_disconnect(netdev->phydev);
>>>>> - netdev->phydev = NULL;
>>>>> + if (phy_is_pseudo_fixed_link(netdev->phydev))
>>>>> + lan743x_virtual_phy_disconnect(netdev->phydev);
>>>>> + else
>>>>> + phy_disconnect(netdev->phydev);
>>>>
>>>> phy_disconnect() should work. You might want to call
>>
>> There are drivers which call phy_disconnect() on a fixed_link. e.g.
>>
>> https://elixir.bootlin.com/linux/v5.11-rc4/source/drivers/net/usb/lan78xx.c#
>> L3555.
>>
>
>> It could be your missing call to fixed_phy_unregister() is leaving
>> behind bad state.
>>
> lan743x_virtual_phy_disconnect removes sysfs-links and calls
> fixed_phy_unregister()
> and the reason was phydev in sysfs.
>
>>> It was to make ethtool show full set of supported speeds and MII only in
>>> supported ports (without TP and the no any ports in the bare card).
>>
>> But fixed link does not support the full set of speed. It is fixed. It
>> supports only one speed it is configured with.
> That's why I "re-implemented the fixed PHY driver" as Florian said.
> The goal of virtual phy was to make an illusion of real device working in
> loopback mode. So I could use ethtool and ioctl's to switch speed of device.
>
>> And by setting it
>> wrongly, you are going to allow the user to do odd things, like use
>> ethtool force the link speed to a speed which is not actually
>> supported.
> I have lan743x only and in loopback mode it allows to use speeds
> 10/100/1000MBps
> in full-duplex mode only. But the highest speed I have achived was something
> near
> 752Mbps...
> And I can switch speed on the fly, without reloading the module.
>
> May by I should limit the list of acceptable devices?
It is not clear what your use case is so maybe start with explaining it
and we can help you define something that may be acceptable for upstream
inclusion.
--
Florian
Powered by blists - more mailing lists