diff options
| author | Lukasz Kasprzak <lukasz.kasprzak@pm.me> | 2026-03-20 19:16:32 +0100 |
|---|---|---|
| committer | Lukasz Kasprzak <lukasz.kasprzak@pm.me> | 2026-03-20 19:16:32 +0100 |
| commit | 39711cf6c2ec5a3b4480dcb4800cc3802bda5bf2 (patch) | |
| tree | 9221704f413398cfb5d5759083b1e7032566820e /straper/db/public/network/etc-network/if-up.d/ethtool | |
| parent | 6b59b75c3a294060dea66bdee16ffaf95ae92889 (diff) | |
| download | bin-39711cf6c2ec5a3b4480dcb4800cc3802bda5bf2.tar.gz bin-39711cf6c2ec5a3b4480dcb4800cc3802bda5bf2.zip | |
feat: first fully successful run e2e on straper
Diffstat (limited to 'straper/db/public/network/etc-network/if-up.d/ethtool')
| -rwxr-xr-x | straper/db/public/network/etc-network/if-up.d/ethtool | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/straper/db/public/network/etc-network/if-up.d/ethtool b/straper/db/public/network/etc-network/if-up.d/ethtool new file mode 100755 index 0000000..05b56d7 --- /dev/null +++ b/straper/db/public/network/etc-network/if-up.d/ethtool @@ -0,0 +1,55 @@ +#!/bin/sh + +ETHTOOL=/usr/sbin/ethtool + +test -x $ETHTOOL || exit 0 + +[ "$IFACE" != "lo" ] || exit 0 + +# Find settings with a given prefix and print them as they appeared in +# /etc/network/interfaces, only with the prefix removed. +# This actually prints each name and value on a separate line, but that +# doesn't matter to the shell. +gather_settings () { + set | sed -n " +/^IF_$1[A-Za-z0-9_]*=/ { + h; # hold line + s/^IF_$1//; s/=.*//; s/_/-/g; # get name without prefix + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/; # lower-case + p; + g; # restore line + s/^[^=]*=//; s/^'\(.*\)'/\1/; # get value + p; +}" +} + +# Gather together the mixed bag of settings applied with -s/--change +SETTINGS="\ +${IF_LINK_SPEED:+ speed $IF_LINK_SPEED}\ +${IF_LINK_DUPLEX:+ duplex $IF_LINK_DUPLEX}\ +" + +# WOL has an optional pass-key +set -- $IF_ETHERNET_WOL +SETTINGS="$SETTINGS${1:+ wol $1}${2:+ sopass $2}" + +# Autonegotiation can be on|off or an advertising mask +case "$IF_ETHERNET_AUTONEG" in +'') ;; +on|off) SETTINGS="$SETTINGS autoneg $IF_ETHERNET_AUTONEG" ;; +*) SETTINGS="$SETTINGS autoneg on advertise $IF_ETHERNET_AUTONEG" ;; +esac + +[ -z "$SETTINGS" ] || $ETHTOOL --change "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings ETHERNET_PAUSE_)" +[ -z "$SETTINGS" ] || $ETHTOOL --pause "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings HARDWARE_IRQ_COALESCE_)" +[ -z "$SETTINGS" ] || $ETHTOOL --coalesce "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings HARDWARE_DMA_RING_)" +[ -z "$SETTINGS" ] || $ETHTOOL --set-ring "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings OFFLOAD_)" +[ -z "$SETTINGS" ] || $ETHTOOL --offload "$IFACE" $SETTINGS |
