Re: [patch net-next RFC 00/12] devlink: introduce port flavours and common phys_port_name generation
flat view
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2018-03-24 17:07:33
On March 24, 2018 9:07:49 AM PDT, Jiri Pirko [off-list ref] wrote:
Sat, Mar 24, 2018 at 03:35:09PM CET, f.fainelli@gmail.com wrote:quoted
On March 24, 2018 12:45:51 AM PDT, Jiri Pirko [off-list ref]wrote:quoted
quoted
Fri, Mar 23, 2018 at 04:24:12PM CET, andrew@lunn.ch wrote:quoted
On Fri, Mar 23, 2018 at 03:59:35PM +0100, Jiri Pirko wrote:quoted
Fri, Mar 23, 2018 at 02:43:57PM CET, andrew@lunn.ch wrote:quoted
quoted
I tested this for mlxsw and nfp. I have no way to test this onDSA hw,quoted
quoted
quoted
quoted
I would really appretiate DSA guys to test this.Hi Jiri With the missing break added, i get: root@zii-devel-b:~# ./iproute2/devlink/devlink port mdio_bus/0.1:00/0: type eth netdev lan0 flavour physical number 0 mdio_bus/0.1:00/1: type eth netdev lan1 flavour physical number 1 mdio_bus/0.1:00/2: type eth netdev lan2 flavour physical number 2 mdio_bus/0.1:00/3: type notset mdio_bus/0.1:00/4: type notset mdio_bus/0.1:00/5: type notset flavour dsa number 5 mdio_bus/0.1:00/6: type notset flavour cpu number 6 mdio_bus/0.2:00/0: type eth netdev lan3 flavour physical number 0 mdio_bus/0.2:00/1: type eth netdev lan4 flavour physical number 1 mdio_bus/0.2:00/2: type eth netdev lan5 flavour physical number 2 mdio_bus/0.2:00/3: type notset mdio_bus/0.2:00/4: type notset mdio_bus/0.2:00/5: type notset flavour dsa number 5 mdio_bus/0.2:00/6: type notset flavour dsa number 6 mdio_bus/0.4:00/0: type eth netdev lan6 flavour physical number 0 mdio_bus/0.4:00/1: type eth netdev lan7 flavour physical number 1 mdio_bus/0.4:00/2: type eth netdev lan8 flavour physical number 2 mdio_bus/0.4:00/3: type eth netdev optical3 flavour physicalnumberquoted
quoted
3quoted
quoted
quoted
mdio_bus/0.4:00/4: type eth netdev optical4 flavour physicalnumberquoted
quoted
4quoted
quoted
quoted
mdio_bus/0.4:00/5: type notset mdio_bus/0.4:00/6: type notset mdio_bus/0.4:00/7: type notset mdio_bus/0.4:00/8: type notset mdio_bus/0.4:00/9: type notset flavour dsa number 9quoted
That is basically front panel number for physical ports.You cannot make that assumption. As you can see here, we have 3portsquoted
quoted
quoted
with the number 0. Look at clearfog, armada-388-clearfog.dts. port 0=lan5, port 1=lan4 port 2=lan3, port 3=lan2, port 4=lan1, port 5=cpu, port 6=lan6. The hardware and mechanical engineer is free to wire switch ports to the front panel however they want. That is why we put the netdevnamequoted
quoted
quoted
in device tree.Got it. Hmm, so I think that the port number can be made optional and when it is present, it would be used to generate phys_port_name. If not, perhaps devlink port index could be used instead. So iiuc, you don't really need phys_port_name in dsa, as it provides misleading names, right? Why is it implemented then?We do need phys_port_name because there are switch configurationoperations, e.g: ethtool::rxnfc which take a port number and queue number as part of the action to redirect a packet for instance. There is no way to obtain this physical port number other than either knowing it and hard coding it (not great) or scanning the device tree and look for the "reg" property value. phys_port_name gets you that and it is easy for an application to scan /sys/class/net/ on startup to get to know that (and other stuff as well). Hmm. That sounds like misuse of phys_port_name. The original purpose was to provide names as they are actually written on the front panel.
Ok, if we look back at the history of the changes I had implemented ndo_phys_port_id() to return the port number initially, but this was wrong and reverted based on your feedback, and then ndo_phys_port_name() was implemented with your reviewed-by tag: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/dsa/slave.c?id=3a543ef479868e36c95935de320608a7e41466ca https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/dsa/slave.c?id=592050b2541407d033da18226d3644644832d082 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/dsa/slave.c?id=592050b2541407d033da18226d3644644832d082 Now that this is reported through sysfs it unfortunately becomes ABI and we should not be breaking user applications relying on that and there is at least one I know of... What is an appropriate attribute to use to return the physical port number within a given switch? -- Florian