All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksij Rempel <o.rempel@pengutronix.de>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Oliver Neukum <oneukum@suse.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	kernel@pengutronix.de, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>
Subject: Re: [PATCH net-next v1 4/4] usbnet: add support for label from device tree
Date: Thu, 27 Jan 2022 13:00:39 +0100	[thread overview]
Message-ID: <20220127120039.GE9150@pengutronix.de> (raw)
In-Reply-To: <YfKCTG7N86yy74q+@kroah.com>

On Thu, Jan 27, 2022 at 12:30:20PM +0100, Greg KH wrote:
> On Thu, Jan 27, 2022 at 12:23:05PM +0100, Oleksij Rempel wrote:
> > On Thu, Jan 27, 2022 at 11:57:26AM +0100, Greg KH wrote:
> > > On Thu, Jan 27, 2022 at 11:49:05AM +0100, Oleksij Rempel wrote:
> > > > Similar to the option to set a netdev name in device tree for switch
> > > > ports by using the property "label" in the DSA framework, this patch
> > > > adds this functionality to the usbnet infrastructure.
> > > > 
> > > > This will help to name the interfaces properly throughout supported
> > > > devices. This provides stable interface names which are useful
> > > > especially in embedded use cases.
> > > 
> > > Stable interface names are for userspace to set, not the kernel.
> > > 
> > > Why would USB care about this?  If you need something like this, get it
> > > from the USB device itself, not DT, which should have nothing to do with
> > > USB as USB is a dynamic, self-describing, bus.  Unlike DT.
> > > 
> > > So I do not think this is a good idea.
> > 
> > This is needed for embedded devices with integrated USB Ethernet
> > controller. Currently I have following use cases to solve:
> > - Board with one or multiple USB Ethernet controllers with external PHY.
> >   The PHY need devicetree to describe IRQ, clock sources, label on board, etc.
> 
> The phy is for the USB controller, not the Ethernet controller, right?
> If for the ethernet controller, ugh, that's a crazy design and I would
> argue a broken one.  But whatever, DT should not be used to describe a
> USB device itself.
> 
> > - Board with USB Ethernet controller with DSA switch. The USB ethernet
> >   controller is attached to the CPU port of DSA switch. In this case,
> >   DSA switch is the sub-node of the USB device.
> 
> What do you mean exactly by "sub node"?  USB does not have such a term.

Here are some examples:

  - |
    usb@11270000 {
        reg = <0x11270000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;

        ethernet@1 {
            compatible = "usb424,ec00";
            reg = <1>;
            label = "LAN0";
	    // there is no internal eeprom, so MAC address is taken from
	    // NVMEM of the SoC.
            local-mac-address = [00 00 00 00 00 00];

            mdio {
		ethernet-phy@4 {
			reg = <4>;
			// Interrupt is attached to the SoC or the GPIO
			// controller of the same USB devices.
			interrupts-extended = <&gpio1 28 IRQ_TYPE_LEVEL_LOW>;
			// same about reset. It is attached to the SoC
			// or GPIO controller of the USB device.
			reset-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
			reset-assert-us = <10000>;
			reset-deassert-us = <1000>;
			// some external clock provider
			clocks = <&clk>
			qca,smarteee-tw-us-1g = <24>;
			qca,clk-out-frequency = <125000000>;
		};
            };
        };
    };
  - |
    usb@11270000 {
        reg = <0x11270000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;

        usb1@1 {
            compatible = "usb424,9514";
            reg = <1>;
            #address-cells = <1>;
            #size-cells = <0>;

            eth0: ethernet@1 {
               compatible = "usb424,ec00";
               reg = <1>;
               label = "cpu0";

               fixed-link {
                   speed = <1000>;
                   full-duplex;
               };

               // managment interface of the switch is attached to the
	       // MDIO bus of this USB device.
               mdio {
                switch@0 {
                    compatible = "microchip,ksz9477";
                    reg = <0>;
		    // reset is controlled by the SoC or by the GPIO
		    // controller of this USB device.
                    reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;

                    ethernet-ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                            reg = <0>;
                            label = "lan1";
                        };
                        port@1 {
                            reg = <1>;
                            label = "lan2";
                        };
                        port@2 {
                            reg = <2>;
                            label = "lan3";
                        };
                        port@3 {
                            reg = <3>;
                            label = "lan4";
                        };
                        port@4 {
                            reg = <4>;
                            label = "lan5";
                        };
                        port@5 {
                            reg = <5>;
                            label = "cpu";
                            ethernet = <&eth0>;
                            fixed-link {
                                speed = <1000>;
                                full-duplex;
                            };
                        };
                    };
                };
               };
            };
        };
    };


> >  The CPU port should have
> >   stable name for all device related to this product.
> 
> name for who to use?  Userspace?  Or within the kernel?
> 
> Naming is done by userspace, as USB is NOT determinisitic in numbering /
> naming the devices attached to it, by design.  If you need to have a
> stable name, do so in userspace please, we have loads of tools that
> already do this there today.  Let's not reinvent the wheel.
> 
> > Using user space tools to name interfaces would double the maintenance
> > of similar information: DT - describing the HW + udev scripts describing
> > same HW again.
> 
> Not for the network name of the device, that belongs in userspace.
> 
> Do not be listing USB device ids in a DT file, that way lies madness.
> 
> thanks,
> 
> greg k-h
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2022-01-27 12:00 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-27 10:49 [PATCH net-next v1 0/4] usbnet: add "label" support Oleksij Rempel
2022-01-27 10:49 ` [PATCH net-next v1 1/4] dt-bindings: net: add schema for ASIX USB Ethernet controllers Oleksij Rempel
2022-01-27 10:59   ` Greg KH
2022-02-03 13:21     ` Oliver Neukum
2022-02-09  3:41     ` Rob Herring
2022-01-27 10:49 ` [PATCH net-next v1 2/4] dt-bindings: net: add schema for Microchip/SMSC LAN95xx " Oleksij Rempel
2022-01-27 10:59   ` Greg KH
2022-01-27 11:28     ` Oleksij Rempel
2022-02-09  3:47     ` Rob Herring
2022-01-27 14:03   ` Rob Herring
2022-01-27 10:49 ` [PATCH net-next v1 3/4] dt-bindings: net: add "label" property for all usbnet " Oleksij Rempel
2022-02-09  3:51   ` Rob Herring
2022-01-27 10:49 ` [PATCH net-next v1 4/4] usbnet: add support for label from device tree Oleksij Rempel
2022-01-27 10:57   ` Greg KH
2022-01-27 11:23     ` Oleksij Rempel
2022-01-27 11:30       ` Greg KH
2022-01-27 12:00         ` Oleksij Rempel [this message]
2022-01-27 13:21           ` Greg KH
2022-01-27 14:01             ` Lucas Stach
2022-02-03  0:12               ` Sergey Ryazanov
2022-02-03  2:20             ` Sergey Ryazanov
2022-02-03 13:04               ` Andrew Lunn
2022-02-03 14:20                 ` Greg KH
2022-01-27 14:28       ` Andrew Lunn
2022-02-09  4:00   ` Rob Herring
2022-01-27 10:57 ` [PATCH net-next v1 0/4] usbnet: add "label" support Greg KH
2022-02-03  9:34   ` Oliver Neukum
2022-02-03 10:27     ` Oleksij Rempel
2022-02-03 13:16       ` Oliver Neukum

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=20220127120039.GE9150@pengutronix.de \
    --to=o.rempel@pengutronix.de \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel@pengutronix.de \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=oneukum@suse.com \
    --cc=robh+dt@kernel.org \
    --cc=vivien.didelot@gmail.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.