Last edited 2 months ago

How to configure Ethernet switch

Applicable for STM32MP25x lines


1. Article purpose[edit | edit source]

This article describes how to configure the Ethernet switch. It is highly recommended to read the Ethernet switch overview article.

2. Ethernet switch configuration[edit | edit source]

The order of initialization in process of loading and initializing sequence is:

  1. GMAC ETH1 driver
  2. Stm32-deip glue
  3. edge-lkml
  4. ACM (if present)

The files, describing the process of detecting and initializing hardware devices during system boot-up, are located, on STM32MP2 series' boards More info green.png, in directories:

  • /etc/modprobe.d/edgx_sw_modprobe.conf
  • /etc/modprobe.d/acm_modprobe.conf (if ACM present)

During switch driver (edge-lkm) probe, the interface on which the switch internal port is connected is given as parameter in file:

  • /etc/modprobe.d/edgx_sw_core.conf
cat /etc/modprobe.d/edgx_sw_core.conf
options edgx_pfm_lkm netif="end1:0"

Here internal port of switch is connected on end1 interface

2.1. Ethernet switch interface[edit | edit source]

Alternate text
Ethernet switch interfaces

All available interfaces can be listed using ifconfigcommand:

  • end0:
    • standalone GMAC interface.
  • end1:
    • software interface for ETH1 GMAC,
    • will not have an IP address.
  • Sw0p1:
    • internal port interface,
    • will not have an IP address.
  • Sw0p2:
    • external port interface connected to ETH3 port,
    • will not have an IP address.
  • Sw0p3:
    • external port interface connected to ETH1 port,
    • will not have an IP address.
  • Sw0ep:
    • « endpoint » interface,
    • used to communicate to/from the STM32MP2 series' boards More info green.png through external ports.

Those interfaces are set during boot thanks to this script:

  • /usr/sbin/ttt-ip-init-systemd.sh

This script is launch thanks to service systemd:

cat lib/systemd/system/st-tsn.service
[Unit]
Description=TSN service
After=network.target systemd-networkd.service

[Service]
Type=forking
ExecStart=/usr/sbin/ttt-ip-init-systemd.sh start
ExecStop=/usr/sbin/ttt-ip-init-systemd.sh stop

[Install]
WantedBy=multi-user.target

2.1.1. More details about /usr/sbin/ttt-ip-init-systemd.sh[edit | edit source]

Services startup:

  • Start deptp: proprietary PTP stack provided by TTTech used for gPTP synchronization
  • Start LLDP (Link Layer Discovery Protocol): Use to exchange information (name, capabilities) with other connected devices
  • Start SNMPD: Use to collect data from the switch
  • Configure MSTP (through « mstpctl »): Used for spanning tree management (to avoid loop in a network)

PHY configuration:

  • Affect PHY to the well switch port:
echo -n stmmac-1:05 > /sys/devices/platform/soc/$IP_REF_NAME/net/sw0p3/phy/mdiobus
echo -n stmmac-1:04 > /sys/devices/platform/soc/$IP_REF_NAME/net/sw0p2/phy/mdiobus
 (ls –al /sys/bus/mdio_bus/devices/ to know which mdio bus refers to GMAC ETH1)
-> Here Phy address 5 is affected to sw0p3 port
-> Here Phy address 4 is affected to sw0p2 port
Warning white.png Warning
Phy address has to be updated for customer's PHY


  • Add phy delays:
   Used by the switch to compute its propagation delay (used for gPTP)
    echo 84 > /sys/class/net/sw0p2/phy/delay1000tx_min     
    echo 92 > /sys/class/net/sw0p2/phy/delay1000tx_max                     
    echo 84 > /sys/class/net/sw0p3/phy/delay1000tx_min                          
    echo 92 > /sys/class/net/sw0p3/phy/delay1000tx_max                                    
    echo 0 > /sys/class/net/sw0p2/phy/delay1000rx_min                                     
    echo 250 > /sys/class/net/sw0p2/phy/delay1000rx_max                                   
    echo 0 > /sys/class/net/sw0p3/phy/delay1000rx_min                                     
    echo 250 > /sys/class/net/sw0p3/phy/delay1000rx_max
Warning white.png Warning
Values can be found in the customer's PHY datasheet
Warning white.png Warning
100 Mbps values are currently missing
  • Configure IP address by default for sw0ep interface: ip addr add 192.168.0.10 dev sw0ep

3. References[edit | edit source]