Hi,

I'm on a IMX8 platform and have a Microchip KSZ9567 Ethernet switch.  I can
use IP commands to manually bring lan1 and lan2 interfaces up and then
create a redundant/failover bond ... but I'm having difficulty figuring out
how to do this the "systemd" way.

My first attempt was to just have systemd run a script of all the commands
I do manually but during system startup there appears to be race conditions
so I have to set my service type to "Idle" and sometimes even that doesn't
work. So I want to exploit any systemd support for DSA and bonding.

Here is script my manual steps which is what I want systemd to ultimately
do:

#!/bin/bash

# Create a redundant bond between ksz9567 DSA lan1 and lan2 interfaces

# Load bonding kernel module
modprobe bonding

# Bring up CPU interface (cpu to switch port 7 - the RGMII link)
ip link set eth0 up

# Create a bond
echo +bond0 > /sys/class/net/bonding_masters

# Set mode to active-backup (redundancy failover)
echo active-backup > /sys/class/net/bond0/bonding/mode

# Set time it takes (in ms) for slave to move when a link goes down
echo 1000 > /sys/class/net/bond0/bonding/miimon

# Add slaves to bond

echo +lan1 > /sys/class/net/bond0/bonding/slaves
echo +lan2 > /sys/class/net/bond0/bonding/slaves

# Set IP and netmask of the bond
ip addr add 192.168.0.4/24 dev bond0

# And bring bond up.  Pings and network connectivity should work now
ip link set bond0 up

# For a board that doesn't have Ethernet switch hardware strapped to enable
at boot .. enable it now
i2cset -f -y 0 0x5f 0x03 0x00 0x01 i

Thanks for any information, pointers etc.

Regards,

Brian

Reply via email to