From: Sergej Bauer <sbauer@blackbox.su>
To: Florian Fainelli <f.fainelli@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Bryan Whitehead <bryan.whitehead@microchip.com>,
UNGLinuxDriver@microchip.com,
Simon Horman <simon.horman@netronome.com>,
Mark Einon <mark.einon@gmail.com>,
Madalin Bucur <madalin.bucur@oss.nxp.com>,
Arnd Bergmann <arnd@arndb.de>,
Masahiro Yamada <masahiroy@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] lan743x: add virtual PHY for PHY-less devices
Date: Mon, 25 Jan 2021 11:57:54 +0300 [thread overview]
Message-ID: <4225841.iQuhppFpKy@metabook> (raw)
In-Reply-To: <cce7fdd0-2b75-26f5-ce25-ca8803ffccc5@gmail.com>
On Saturday, January 23, 2021 4:39:47 AM MSK Florian Fainelli wrote:
> On 1/22/2021 5:01 PM, Sergej Bauer wrote:
> > On Saturday, January 23, 2021 3:01:47 AM MSK Florian Fainelli wrote:
> >> 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/lan78
> >>>> xx
> >>>> .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.
> >
> > it migth be helpful for developers work on userspace networking tools with
> > PHY-less lan743x (the interface even could not be brought up)
> > of course, there nothing much to do without TP port but the difference is
> > representative.
>
> You are still not explaining why fixed PHY is not a suitable emulation
> and what is different, providing the output of ethtool does not tell me
> how you are using it.
>
> Literally everyone using Ethernet switches or MAC to MAC Ethernet
> connections uses fixed PHY and is reasonably happy with it.
Florian, the key idea is to make virtual phy device which acts as real 802.11
standard phy.
original fixed_phy and swphy are little bit useless as they do not support
write operation. in contrast of them virtual_phy supports write to all
registers. and can change the speed of interface by means of SIOCSMIIREG ioctl
call either ethtool.
changing of appropriate bits in register 0 will change speed reflecting in
ethtool
and vise versa.
--
Regards,
Sergej
next prev parent reply other threads:[~2021-01-26 19:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-22 21:42 [PATCH v2] lan743x: add virtual PHY for PHY-less devices Sergej Bauer
2021-01-22 21:52 ` Florian Fainelli
2021-01-22 22:11 ` Sergej Bauer
2021-01-22 22:08 ` Andrew Lunn
2021-01-22 23:09 ` Sergej Bauer
2021-01-22 23:23 ` Andrew Lunn
2021-01-22 23:58 ` Sergej Bauer
2021-01-23 0:01 ` Florian Fainelli
2021-01-23 1:01 ` Sergej Bauer
2021-01-23 1:32 ` Andrew Lunn
2021-01-23 4:01 ` Sergej Bauer
2021-01-25 8:57 ` Sergej Bauer
2021-01-23 1:39 ` Florian Fainelli
2021-01-25 8:57 ` Sergej Bauer [this message]
2021-01-25 10:23 ` Sergej Bauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4225841.iQuhppFpKy@metabook \
--to=sbauer@blackbox.su \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew@lunn.ch \
--cc=arnd@arndb.de \
--cc=bryan.whitehead@microchip.com \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=madalin.bucur@oss.nxp.com \
--cc=mark.einon@gmail.com \
--cc=masahiroy@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=simon.horman@netronome.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.