[PATCH net 0/3] net: dsa: lantiq_gswip: SGMII/2500BASE-X and flow-control fixes

Jan Havran (Advantech Czech) posted 3 patches 2 weeks, 4 days ago
drivers/net/dsa/lantiq/lantiq_gswip.h        |  2 +-
drivers/net/dsa/lantiq/lantiq_gswip_common.c |  1 +
drivers/net/dsa/lantiq/mxl-gsw1xx.c          | 29 ++++++++++----------
3 files changed, 17 insertions(+), 15 deletions(-)
[PATCH net 0/3] net: dsa: lantiq_gswip: SGMII/2500BASE-X and flow-control fixes
Posted by Jan Havran (Advantech Czech) 2 weeks, 4 days ago
This series fixes three issues in the lantiq_gswip / mxl-gsw1xx DSA driver
found while bringing up a MaxLinear GSW145 over SGMII on a Marvell
Armada 7040 board, with the switch CPU port running 2500BASE-X and the
user ports at 1000BASE-T.

Patch 1 reorders the SerDes NCO clock-rate setup ahead of the SGMII shell
reset. Without it, only the rate the switch was left at by the straps or
the boot loader links up; the other rate comes up but forwards no traffic.

Patch 2 adds the missing SPEED_2500 case to gswip_port_set_speed(); without
it the CPU port was forced to 10 Mbps at 2.5G link-up.

Patch 3 corrects the GSWIP_MDIO_PHY_FCONTX_EN field value (a typo present
since the original vrx200 driver).

Tested on GSW145 hardware only. The register values are backed by the
public GSW145 data sheet and by the driver's own field encoding; the
xRX200/xRX300 data sheets are not public.

Jan Havran (Advantech Czech) (3):
  net: dsa: mxl-gsw1xx: set SerDes NCO rate before SGMII reset
  net: dsa: lantiq_gswip: handle SPEED_2500 in gswip_port_set_speed()
  net: dsa: lantiq_gswip: fix GSWIP_MDIO_PHY_FCONTX_EN value

 drivers/net/dsa/lantiq/lantiq_gswip.h        |  2 +-
 drivers/net/dsa/lantiq/lantiq_gswip_common.c |  1 +
 drivers/net/dsa/lantiq/mxl-gsw1xx.c          | 29 ++++++++++----------
 3 files changed, 17 insertions(+), 15 deletions(-)


base-commit: 38b6be101006d3e7af972999f45d4f1e8250587a
-- 
2.39.5
Re: [PATCH net 0/3] net: dsa: lantiq_gswip: SGMII/2500BASE-X and flow-control fixes
Posted by Daniel Golle 2 weeks, 4 days ago
On Mon, Sep 07, 2026 at 03:48:15PM +0200, Jan Havran (Advantech Czech) wrote:
> This series fixes three issues in the lantiq_gswip / mxl-gsw1xx DSA driver
> found while bringing up a MaxLinear GSW145 over SGMII on a Marvell
> Armada 7040 board, with the switch CPU port running 2500BASE-X and the
> user ports at 1000BASE-T.
> 
> Patch 1 reorders the SerDes NCO clock-rate setup ahead of the SGMII shell
> reset. Without it, only the rate the switch was left at by the straps or
> the boot loader links up; the other rate comes up but forwards no traffic.
> 
> Patch 2 adds the missing SPEED_2500 case to gswip_port_set_speed(); without
> it the CPU port was forced to 10 Mbps at 2.5G link-up.
> 
> Patch 3 corrects the GSWIP_MDIO_PHY_FCONTX_EN field value (a typo present
> since the original vrx200 driver).
> 
> Tested on GSW145 hardware only. The register values are backed by the
> public GSW145 data sheet and by the driver's own field encoding; the
> xRX200/xRX300 data sheets are not public.
> 
> Jan Havran (Advantech Czech) (3):
>   net: dsa: mxl-gsw1xx: set SerDes NCO rate before SGMII reset
>   net: dsa: lantiq_gswip: handle SPEED_2500 in gswip_port_set_speed()
>   net: dsa: lantiq_gswip: fix GSWIP_MDIO_PHY_FCONTX_EN value

Thank you for taking care of this on a board which allows you to actually
test it -- on the reference platform I had to develop the driver with the
SerDes interface of the switch is hard-wired to an MxL86111 PHY, hence I
could never test 2500Base-X mode.

Whole series
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
Re: [PATCH net 0/3] net: dsa: lantiq_gswip: SGMII/2500BASE-X and flow-control fixes
Posted by Jan Havran 2 weeks, 2 days ago
V Mon, Sep 07, 2026 at 06:22:48PM +0100, Daniel Golle napsal(a):
> On Mon, Sep 07, 2026 at 03:48:15PM +0200, Jan Havran (Advantech Czech) wrote:
> > This series fixes three issues in the lantiq_gswip / mxl-gsw1xx DSA driver
> > found while bringing up a MaxLinear GSW145 over SGMII on a Marvell
> > Armada 7040 board, with the switch CPU port running 2500BASE-X and the
> > user ports at 1000BASE-T.
> > 
> > Patch 1 reorders the SerDes NCO clock-rate setup ahead of the SGMII shell
> > reset. Without it, only the rate the switch was left at by the straps or
> > the boot loader links up; the other rate comes up but forwards no traffic.
> > 
> > Patch 2 adds the missing SPEED_2500 case to gswip_port_set_speed(); without
> > it the CPU port was forced to 10 Mbps at 2.5G link-up.
> > 
> > Patch 3 corrects the GSWIP_MDIO_PHY_FCONTX_EN field value (a typo present
> > since the original vrx200 driver).
> > 
> > Tested on GSW145 hardware only. The register values are backed by the
> > public GSW145 data sheet and by the driver's own field encoding; the
> > xRX200/xRX300 data sheets are not public.
> > 
> > Jan Havran (Advantech Czech) (3):
> >   net: dsa: mxl-gsw1xx: set SerDes NCO rate before SGMII reset
> >   net: dsa: lantiq_gswip: handle SPEED_2500 in gswip_port_set_speed()
> >   net: dsa: lantiq_gswip: fix GSWIP_MDIO_PHY_FCONTX_EN value
> 
> Thank you for taking care of this on a board which allows you to actually
> test it -- on the reference platform I had to develop the driver with the
> SerDes interface of the switch is hard-wired to an MxL86111 PHY, hence I
> could never test 2500Base-X mode.
> 
> Whole series
> Reviewed-by: Daniel Golle <daniel@makrotopia.org>

Thank you, Daniel.
We are developing a new board containing this switch and we found your upstream driver
in a much better shape than the official Maxlinear driver.

Unfortunatelly 2.5G did not work for us because of the missing SPEED_2500 case and
1G did not work because the switch was left in 2.5G mode by the straps.

But with these fixes, this driver works great for us.

Thanks again for your work on this driver.
Regards,
Jan