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  PHC 
Open Source and information security mailing list archives
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 30 Aug 2017 13:06:06 +0300
From:   Maxim Uvarov <>
To:     Florian Fainelli <>
Cc:     Pavel Machek <>, Andrew Lunn <>,,
        Nathan Conrad <>,
        Vivien Didelot <>,,,
Subject: Re: [PATCH] DSA support for Micrel KSZ8895

2017-08-30 0:23 GMT+03:00 Florian Fainelli <>:
> On 08/29/2017 02:15 PM, Pavel Machek wrote:
>> On Tue 2017-08-29 14:26:04, Andrew Lunn wrote:
>>>> But the MDIO emaulation code is from their driver, after lots of
>>>> deletions.
>>> Is this driver supposed to run on lots of different OSs? That would
>>> explain why they ignored the Linux MDIO and PHY layers.
>> It did not look particulary portable.
> Part of the problem is that they need to duplicate the standard MII
> definitions, whereas we could re-use those from include/linux/mii.h
> and/or mdio.h.
>>> If possible, please make use of the Linux infrastructure.
>> I did not find any infrastructure I could use instead
>> ksz_mdio_emulation.
> fixed PHY/swphy.c is as close as it could get, but it is a highly
> simplified version of this.
>> Now, drivers/net/phy/spi_ks8995.c can access the PHY registers, and I
>> can not see any translation there, so there may be something I'm
>> missing.
> I don't see anything in that driver that seems to access PHY registers
> what makes you think it does?
> There's got to be a way to perform indirect accesses through SPI,
> Woojung, do you know?

As I understand they just attach phy on spi bus with generic driver:

        phy_addr = 0;
        phy_mode = PHY_INTERFACE_MODE_MII;
        snprintf(bus_id, MII_BUS_ID_SIZE, "sw.%d", sw_device_present);
        snprintf(phy_id, MII_BUS_ID_SIZE, PHY_ID_FMT, bus_id, phy_addr);
        phydev = phy_attach(netdev, phy_id, 0, phy_mode);
        if (!IS_ERR(phydev)) {
                phydev->adjust_link = sw_adjust_link;
                return phydev;

Where is bus is:
bus = mdiobus_alloc();
bus->read = ksz_mii_read; (spi read function)
bus->write = ksz_mii_write;

Then just generic reads:
    .config_aneg    = genphy_config_aneg,
    .read_status    = genphy_read_status,


>> Pointers would be welcome at this point.
>> Thanks,
>>                                                                       Pavel
> --
> Florian

Best regards,
Maxim Uvarov

Powered by blists - more mailing lists