Re: [PATCH 2/2] net: ethernet: Add driver for Sunplus SP7021

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I don't know how to implement STP in L2 switch like SP7021.

That is the nice thing about using Linux. It already knows how to
implement STP. The bridge will do it for you. You just need to add the
callbacks in the driver which are needed. Please take a look at other
switchdev drivers.

> If this is acceptable, I'd like to have Ethernet of SP7021 have two operation 
> modes:
>  - Dual NIC mode
>  - Single NIC with 2-port frame-flooding hub mode

No, sorry. Do it correctly, or do not do it. Please start with a clean
driver doing Dual NIC mode. You can add L2 support later, once you
have done the research to understand switchdev, etc.

> RMII pins of PHY ports of SP7021 are multiplexable. I'd like to switch RMII 
> pins of the second PHY for other use if single NIC mode is used.
> In fact, some SP7021 boards have dual Ethernet and some have only one
> Ethernet. We really need the two operation modes.

Only using a subset of ports in a switch is common. The common binding
for DSA switches is described in:

Documentation/devicetree/bindings/net/dsa/dsa.yaml and for example
Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml is
a memory mapped switch. Notice the reg numbers:

           ethernet-ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    label = "cpu";
                    ethernet = <&gmac0>;
                };

                port@2 {
                    reg = <2>;
                    label = "lan0";
                    phy-handle = <&phy1>;
                };

reg = <1> is missing in this example. Port 1 of the switch is not
used. You can do the same with a 2 port switch, when you don't want to
make use of a port. Just don't list it in DT.

> After looking up some data, I find RMC means reserved multi-cast.
> RMC packets means packets with DA = 0x0180c2000000, 0x0180c2000002 ~ 0x0180c200000f,
> except the PAUSE packet (DA = 0x0180c2000001)

Ah, good. BPDUs use 01:80:C2:00:00:00. So they will be passed when the
port is in blocking mode. PTP uses 01:80:C2:00:00:0E. So the hardware
designers appear to of designed a proper L2 switch with everything you
need for a managed switch. What is missing is software. The more i
learn about this hardware, the more i've convinced you need to write
proper Linux support for it, not your mode hacks.

    Andrew



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux