On Wed, Jul 03, 2024 at 03:02:52PM +0200, Landry Breuil wrote:
> Le Tue, Jul 02, 2024 at 07:50:56PM +0000, Miod Vallat a écrit :
> > > hi,
> > > 
> > > playing with 7.5 on an edgerouter poe, it panics at boot:
> > 
> > Congratulations, you've reached a divide by zero in the kernel.
> > 
> > This is caused by cn30xxgmx_rgmii_speed() setting the local variable
> > `baudrate' to zero (with an XXX comment) prior to dividing by it.
> > 
> > The following diff sweeps the issue under the rug by following the
> > "consider unknown value as 1Gbps" logic used all over the file. It might
> > help your setup.
> 
> it's right in the sense that it doesn't panic anymore and i can
> up/configure the interface:
> 
> erpoe# ifconfig cnmac2 media
> cnmac2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 80:2a:a8:8e:2d:51
>         index 3 priority 0 llprio 3
>         media: Ethernet manual (none)
>         supported media:
>                 media manual
>         inet 10.0.2.2 netmask 0xffffff00 broadcast 10.0.2.255
> 
> but it shows no media type, doesn't work and no packets flow.
> 
> digging in the archives, i found
> https://marc.info/?l=openbsd-bugs&m=151063517020444&w=2 which seems to
> say that it'd be better to apparently skip that port (and that there's
> no hope for the two remaining ports ?)
> 
> visa, any hindsight on this ?

Not really.

> trying the following diff adapted from the 2017 thread:
> 
> Index: arch/octeon/dev/cn30xxsmi.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/octeon/dev/cn30xxsmi.c,v
> diff -u -r1.12 cn30xxsmi.c
> --- arch/octeon/dev/cn30xxsmi.c       20 May 2024 23:13:33 -0000      1.12
> +++ arch/octeon/dev/cn30xxsmi.c       3 Jul 2024 12:54:48 -0000
> @@ -197,6 +197,10 @@
>                       reg = nutm25_phys[port];
>                       break;
>               case BOARD_UBIQUITI_E100:
> +                     /* XXX Skip the switch port on ERPoe-5.
> +                      * XXX There is no driver for it. */
> +                     if (port > 1)
> +                             return ENOENT;

The condition should be (port > 1 && octeon_boot_info->board_rev_major == 1).
Otherwise the code skips a working port on the EdgeRouter Lite.
The Lite uses the same board id but has board_rev_major == 2 as far
as I know.

>               case BOARD_UBIQUITI_E120:
>                       if (port > 2)
>                               return ENOENT;
> 
> dmesg goes from
> mainbus0 at root: board 20002 rev 1.27, model CN3xxx/CN5xxx
> ...
> octgmx0 at octpip0 interface 0
> cnmac0 at octgmx0: port 0 RGMII, address 80:2a:a8:8e:2d:4f
> atphy0 at cnmac0 phy 7: AR8035 10/100/1000 PHY, rev. 2
> cnmac1 at octgmx0: port 1 RGMII, address 80:2a:a8:8e:2d:50
> atphy1 at cnmac1 phy 6: AR8035 10/100/1000 PHY, rev. 2
> cnmac2 at octgmx0: port 2 RGMII, address 80:2a:a8:8e:2d:51
> com0 at simplebus0: ns16550a, 64 byte fifo
> 
> to now only two supported ports:
> octgmx0 at octpip0 interface 0
> cnmac0 at octgmx0: port 0 RGMII, address 80:2a:a8:8e:2d:4f
> atphy0 at cnmac0 phy 7: AR8035 10/100/1000 PHY, rev. 2
> cnmac1 at octgmx0: port 1 RGMII, address 80:2a:a8:8e:2d:50
> atphy1 at cnmac1 phy 6: AR8035 10/100/1000 PHY, rev. 2
> com0 at simplebus0: ns16550a, 64 byte fifo
> 
> at least the edgerouter lite 3 physical ports are supported.. its' a
> pity having only 2 working ports on 5 physical...
> 
> Landry
> 

Reply via email to