[systemd-devel] Systemd setup DSA interfaces in port mode and bond them together?

Mantas Mikulėnas grawity at gmail.com
Tue Nov 16 08:11:53 UTC 2021


Most of this looks like it could be done with systemd-networkd to create a
bond .netdev, with a small oneshot service for i2c. (What's the exact
criteria for when it should be run? Does it depend on bond0 being there,
does it need to be last, etc?)

On Tue, Nov 16, 2021, 02:58 Brian Hutchinson <b.hutchman at gmail.com> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20211116/ded11e6e/attachment.htm>


More information about the systemd-devel mailing list