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: <4496952.bab7Homqhv@metabook>
Date:   Sat, 23 Jan 2021 04:01:01 +0300
From:   Sergej Bauer <sbauer@...ckbox.su>
To:     Florian Fainelli <f.fainelli@...il.com>
Cc:     Andrew Lunn <andrew@...n.ch>, 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 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/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.
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.

sbauer@...amini ~$ sudo ethtool eth7
Settings for eth7:
Cannot get device settings: No such device
        Supports Wake-on: pumbag
        Wake-on: d
        Current message level: 0x00000137 (311)
                               drv probe link ifdown ifup tx_queued
        Link detected: no
sbauer@...amini ~$ sudo ifup eth7
sbauer@...amini ~$ sudo ethtool eth7
Settings for eth7:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Full 
                                100baseT/Full 
                                1000baseT/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Full 
                                100baseT/Full 
                                1000baseT/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbag
        Wake-on: d
        Current message level: 0x00000137 (311)
                               drv probe link ifdown ifup tx_queued
        Link detected: yes
sbauer@...amini ~$ sudo mii-tool -vv eth7
Using SIOCGMIIPHY=0x8947
eth7: negotiated 1000baseT-FD, link ok
  registers for MII PHY 0: 
    5140 512d 7431 0011 4140 4140 000d 0000
    0000 0200 7800 0000 0000 0000 0000 2000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
  product info: vendor 1d:0c:40, model 1 rev 1
  basic mode:   loopback, autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-FD 100baseTx-FD 10baseT-FD
  advertising:  1000baseT-FD 100baseTx-FD 10baseT-FD
  link partner: 1000baseT-FD 100baseTx-FD 10baseT-FD

							   Regards,
							       Sergej.



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ