[OpenWrt-Devel] [PATCH] gemini: Bring up DSA switches

John Crispin john at phrozen.org
Sat Jul 13 07:13:19 EDT 2019


On 13/07/2019 13:04, Linus Walleij wrote:
> On Fri, Jul 12, 2019 at 8:57 AM Hauke Mehrtens <hauke at hauke-m.de> wrote:
>> On 7/12/19 8:07 AM, Linus Walleij wrote:
>>> +     # These are all connected to eth1 thru VSC7385
>>> +     ucidef_set_interfaces_lan_wan "eth1 lan1 lan2 lan3 lan4" "eth0"
>> This will create a bridge over eth1, lan1, lan2, lan3 and lan4, but I
>> think you do not have to put eth1 into this bridge, it should be
>> sufficient to have all the lanX in it.
> It is really puzzling to me too :(
>
> What I notice is that if I do this everything works fine and if eth1
> is not included it doesn't.
>
> This sequence also works fine:
> ifconfig eth1 169.254.1.2 netmask 255.255.255.0 up
> ifconfig lan1 up
> ifconfig lan2 up
> ifconfig lan3 up
> ifconfig lan4 up
>
> I think the reason is that the IP address is not assigned to
> eth1 (the CPU port towards the switch/DSA).
>
> Maybe other DSA switches are better with this? My dmesg
> looks like this with eth1 included in the lan-facing interfaces:

Hi Linus,

I recall while bringing up QCA8k that the underlying physical ethernet 
needs to be up and have a valid mac addr otherwise the unicast filter of 
the mac ip block would drop traffic. long shot guess, the mac of eth1 
probably implictly brings up the uni cast filter when you set an IP. try 
just doing an ifconfig up and setting the same mac as the switchdev ports.

     John



> [   52.704396] gemini-ethernet-port 6000c000.ethernet-port eth1: link
> flow control: both
> [   53.046012] br-lan: port 1(eth1) entered blocking state
> [   53.170160] br-lan: port 1(eth1) entered disabled state
> [   53.253455] device eth1 entered promiscuous mode
> [   53.299150] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
> [   53.388545] vsc73xx spi0.0: enable port 0
> [   53.446029] vsc73xx spi0.0 lan1: configuring for phy/gmii link mode
> [   53.526483] br-lan: port 2(lan1) entered blocking state
> [   53.594789] br-lan: port 2(lan1) entered disabled state
> [   53.665816] device lan1 entered promiscuous mode
> [   53.728728] br-lan: port 1(eth1) entered blocking state
> [   53.760176] br-lan: port 1(eth1) entered forwarding state
> [   53.874449] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
> [   54.000353] vsc73xx spi0.0: enable port 1
> [   54.056099] vsc73xx spi0.0 lan2: configuring for phy/gmii link mode
> [   54.142223] br-lan: port 3(lan2) entered blocking state
> [   54.214679] br-lan: port 3(lan2) entered disabled state
> [   54.266496] device lan2 entered promiscuous mode
> [   54.308593] vsc73xx spi0.0: enable port 2
> [   54.335298] vsc73xx spi0.0 lan3: configuring for phy/gmii link mode
> [   54.377279] br-lan: port 4(lan3) entered blocking state
> [   54.444497] br-lan: port 4(lan3) entered disabled state
> [   54.515791] device lan3 entered promiscuous mode
> [   54.588687] vsc73xx spi0.0: enable port 3
> [   54.646048] vsc73xx spi0.0 lan4: configuring for phy/gmii link mode
> [   54.726991] br-lan: port 5(lan4) entered blocking state
> [   54.785910] vsc73xx spi0.0 lan1: Link is Up - 1Gbps/Full - flow control rx/tx
> [   54.844478] br-lan: port 5(lan4) entered disabled state
> [   54.915911] device lan4 entered promiscuous mode
> [   54.976533] br-lan: port 2(lan1) entered blocking state
> [   55.007954] br-lan: port 2(lan1) entered forwarding state
>
> After this I can ping the host:
> # ping 169.254.1.1
> PING 169.254.1.1 (169.254.1.1): 56 data bytes
> 64 bytes from 169.254.1.1: seq=0 ttl=64 time=2.049 ms
> 64 bytes from 169.254.1.1: seq=6 ttl=64 time=0.913 ms
> 64 bytes from 169.254.1.1: seq=25 ttl=64 time=1.268 ms
> And the host can ping the device:
> $ ping 169.254.1.2
> PING 169.254.1.2 (169.254.1.2) 56(84) bytes of data.
> 64 bytes from 169.254.1.2: icmp_seq=1 ttl=64 time=1.12 ms
> 64 bytes from 169.254.1.2: icmp_seq=2 ttl=64 time=0.582 ms
> 64 bytes from 169.254.1.2: icmp_seq=3 ttl=64 time=0.576 ms
> 64 bytes from 169.254.1.2: icmp_seq=4 ttl=64 time=0.654 ms
>
> But if I remove eth1 from the LAN facing interfaces it looks like
> this:
>
> [   52.433253] gemini-ethernet-port 6000c000.ethernet-port eth1: link
> flow control: both
> [   52.769503] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
> [   52.925178] device eth1 entered promiscuous mode
> [   52.987672] vsc73xx spi0.0: enable port 0
> [   53.014460] vsc73xx spi0.0 lan1: configuring for phy/gmii link mode
> [   53.054754] br-lan: port 1(lan1) entered blocking state
> [   53.086323] br-lan: port 1(lan1) entered disabled state
> [   53.119857] device lan1 entered promiscuous mode
> [   53.160541] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
> [   53.250938] vsc73xx spi0.0: enable port 1
> [   53.309220] vsc73xx spi0.0 lan2: configuring for phy/gmii link mode
> [   53.394269] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
> [   53.476271] br-lan: port 2(lan2) entered blocking state
> [   53.543459] br-lan: port 2(lan2) entered disabled state
> [   53.604655] device lan2 entered promiscuous mode
> [   53.686932] vsc73xx spi0.0: enable port 2
> [   53.744974] vsc73xx spi0.0 lan3: configuring for phy/gmii link mode
> [   53.820229] br-lan: port 3(lan3) entered blocking state
> [   53.893505] br-lan: port 3(lan3) entered disabled state
> [   53.964682] device lan3 entered promiscuous mode
> [   54.047383] vsc73xx spi0.0: enable port 3
> [   54.087228] vsc73xx spi0.0 lan4: configuring for phy/gmii link mode
> [   54.128009] br-lan: port 4(lan4) entered blocking state
> [   54.160537] br-lan: port 4(lan4) entered disabled state
> [   54.194726] device lan4 entered promiscuous mode
> [   54.284743] vsc73xx spi0.0 lan1: Link is Up - 1Gbps/Full - flow control rx/tx
> [   54.453740] br-lan: port 1(lan1) entered blocking state
> [   54.485220] br-lan: port 1(lan1) entered forwarding state
> [   54.883281] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
>
> This kind of "should work".
>
> But now I can't ping anything. As you can see what is missing,
> since the eth1 is no longer part of the bridge, is this:
> [   53.046012] br-lan: port 1(eth1) entered blocking state
> [   53.170160] br-lan: port 1(eth1) entered disabled state
>
> I wonder if it is some bug in my DSA driver or some basic assumption that
> the network tools are making about the default state or so :/
>
> I guess I keep digging around in it
>
> Yours,
> Linus Walleij
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list