Subject: Re: Marvell switch port shows LOWERLAYERDOWN, ping fails

From: Andrew Lunn <[email-masked]>
Date: Sat, 24 Jul 2021 19:34:15 +0200

> root@dali:~# ip link
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode
> DEFAULT group default qlen 1000
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> 2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group
> default qlen 10
>     link/can
> 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 qdisc mq state UP mode
> DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff
> 4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group
> default qlen 1000
>     link/sit 0.0.0.0 brd 0.0.0.0
> 5: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
> state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff
> 6: lan2@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
> DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff
> 7: lan3@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
> DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff
> 8: lan4@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
> DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff
> 9: dmz@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
> DEFAULT group default qlen 1000
>     link/ether b6:07:dc:be:30:f9 brd ff:ff:ff:ff:ff:ff

I would suggest you configure all the interfaces up. I've made the
stupid mistake of thinking the right most RJ-45 socket is lan1 when it
is in fact dmz, etc. If you configure them all up, you should see
kernel messages if any go up, and you can see LOWER_UP, etc.

What does the link peer think? Does it think there is link? I think
for this generation of switch, the PHYs by default are enabled and
will perform autoneg, even if the interface is down. But if the
interface is down, phylib will not be monitoring it, and so you don't
see any kernel messages.

You might want to enable dbg prints in driver/nets/phy/phy.c, so you
can see the state machine changes.

    Andrew