diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:50:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:50:41 +0000 |
commit | 08cc4337e234ec3c07753357e5614a3b56873f29 (patch) | |
tree | b75a0caf4863df707c3ce453d6a3ddea712a22d6 /debian/ethtool.if-up | |
parent | Adding upstream version 1:6.1. (diff) | |
download | ethtool-debian.tar.xz ethtool-debian.zip |
Adding debian version 1:6.1-1.debian/1%6.1-1debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | debian/ethtool.if-up | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/debian/ethtool.if-up b/debian/ethtool.if-up new file mode 100644 index 0000000..1e9da0a --- /dev/null +++ b/debian/ethtool.if-up @@ -0,0 +1,55 @@ +#!/bin/sh + +ETHTOOL=/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 |