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-next>] [day] [month] [year] [list]
Message-ID: <5C1C4160.5080404@gmail.com>
Date:   Thu, 20 Dec 2018 20:26:56 -0500
From:   John Rama <john.rama01@...il.com>
To:     netdev@...r.kernel.org
Subject: dsa: how to set external PHY address of slave MDIO bus

Hi, Guys, 

I have one question. I'm working following configuration, and implementing a device driver.
Basically, port 1-7 is working fine. I'm now having problem on port8.

- System                                                       
  - i.MX6 and Marvel 88q5050 Switch(PHY addr is 0x10)          
  - port1-5 has integrated PHY
  - port7 is connected to Marvel 88e1510 PHY(PHY addr is 0x1)  
  - port8 is connected to Marvel 88e1510 PHY(PHY addr is 0x0), 
    but it's the slave of MDIO bus whose master is the switch. 
                                                               
                           0x10                                
    +------------+         +-----------------+                 
    |            |         | Marvel 88q5050  |                 
    |            | RGMII   |           port1 |                 
    |   IMX6     +---------+ port6           |                 
    |            |         |           port2 |                 
    |            | MDIO    |                 |                 
    |            +-+-------+           port3 |                 
    |            | |       |                 |                 
    +------------+ |       |           port4 |                 
                   |       |                 |                 
                 +-+-+     |           port5 |     +---+       
                 |   |SGMII|                 |RGMII|   |       
                 |PHY|-----| port7     port8 +-----+PHY+       
                 |   |     |                 |MDIO |   |       
                 +---+     |                 +-----+   |       
            Marvel 88e1510 +-----------------+     +---+       
                 0x1                           Marvel 88e1510  
                                                    0x0        

- Question
In the system above, how should we tell DSA driver the PHY address of the PHY which is connected to port8 ?
It seems to me that port number of ethernet switch and the PHY address of the port should be the same,
and there is no way to tell this info to DSA driver, correct ?

The reason why I think so is based on the code below from linux-next.

# net/dsa/slave.c 

dsa_slave_phy_setup() {
    ....
    /* We could not connect to a designated PHY, so use the switch internal
     * MDIO bus instead
     */
    if (!slave_dev->phydev) {
        ret = dsa_slave_phy_connect(slave_dev, dp->index);
       ....
    }
}

static int dsa_slave_phy_connect(struct net_device *slave_dev, int addr)
{
    ....
    slave_dev->phydev = mdiobus_get_phy(ds->slave_mii_bus, addr);
    ....
}

As shown above, dsa_slave_phy_connect() is called by assigning "dp->index" to "addr".
I think "dp->index" implies the port number of the switch, while "addr" implies the PHY address of the PHY
which connected to the MDIO bus from switch.

Before implementing the solution, I want to confirm if my understanding is correct or not.
Thanks a lot for your help !!

John

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ