diff options
-rw-r--r-- | CHANGELOG.txt | 10 | ||||
-rw-r--r-- | VERSION.txt | 2 | ||||
-rw-r--r-- | linux/Makefile (renamed from ethtool/Makefile) | 0 | ||||
-rwxr-xr-x | linux/bin/linux-i40e | 159 | ||||
-rw-r--r--[-rwxr-xr-x] | linux/share/man/Makefile (renamed from ethtool/bin/ethtool-i40e) | 52 | ||||
-rw-r--r-- | linux/share/man/linux-i40e.1.rst | 85 | ||||
-rw-r--r-- | linux/share/man/man.in | 19 | ||||
-rw-r--r-- | linux/share/systemd/linux-i40e.service (renamed from ethtool/share/systemd/ethtool-i40e.service) | 7 |
8 files changed, 315 insertions, 19 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 4750c15..2f1a084 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,13 @@ +2022-05-25 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20220525. + + [ Daniel Baumann ] + * Renaming ethtools to linux since it's about kernel module options for now. + * Adding link-down-on-close=on in linux-i40e. + * Refactoring linux-i40e for start/stop/status actions. + * Adding linux-i40e manpage. + 2022-05-24 Daniel Baumann <daniel.baumann@open-infrastructure.net> * Releasing version 20220524. diff --git a/VERSION.txt b/VERSION.txt index 7d93d38..a0acbbd 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -20220524 +20220525 diff --git a/ethtool/Makefile b/linux/Makefile index 278e7e5..278e7e5 100644 --- a/ethtool/Makefile +++ b/linux/Makefile diff --git a/linux/bin/linux-i40e b/linux/bin/linux-i40e new file mode 100755 index 0000000..2c8f322 --- /dev/null +++ b/linux/bin/linux-i40e @@ -0,0 +1,159 @@ +#!/bin/sh + +# Open Infrastructure: service-tools + +# Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net> +# +# SPDX-License-Identifier: GPL-3.0+ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +set -e + +PROGRAM="$(basename ${0})" + +RED="\033[1;33;31m" +GREEN="\033[1;33;32m" +YELLOW="\033[1;33;33m" +BLUE="\033[1;33;34m" +WHITE="\033[1;33;37m" +NORMAL="\033[0m" + +Ethtool_get () +{ + DEVICE="${1}" + FLAG="${2}" + TARGET_VALUE="${3}" + + if ethtool --show-priv-flags ${DEVICE} | awk '{ print $1 }' | grep -qs "^${FLAG}$" + then + CURRENT_VALUE="$(ethtool --show-priv-flags ${DEVICE} | awk "/^${FLAG} / { print \$3 }")" + + if [ "${CURRENT_VALUE}" = "${TARGET_VALUE}" ] + then + echo -n " ${FLAG}=${GREEN}${CURRENT_VALUE}${NORMAL}" + else + echo -n " ${FLAG}=${RED}${CURRENT_VALUE}${NORMAL}" + fi + fi +} + +Ethtool_set () +{ + DEVICE="${1}" + FLAG="${2}" + VALUE="${3}" + + if ethtool --show-priv-flags ${DEVICE} | awk '{ print $1 }' | grep -qs "^${FLAG}$" + then + echo -n " ${FLAG}" + ethtool --set-priv-flags ${DEVICE} ${FLAG} ${VALUE} + echo -n "=${VALUE}" + fi +} + +Test_root () +{ + case "$(id -u)" in + 0) + ;; + + *) + echo "'${PROGRAM}': must be run as root (or use sudo)" >&2 + exit 1 + ;; + esac +} + +Start () +{ + Test_root + + for DEVICE in ${DEVICES} + do + echo -n "Configuring ${DEVICE}:" + Ethtool_set ${DEVICE} disable-fw-lldp on + Ethtool_set ${DEVICE} link-down-on-close on + echo + done +} + +Stop () +{ + Test_root + + for DEVICE in ${DEVICES} + do + echo -n "Deconfiguring ${DEVICE}:" + Ethtool_set ${DEVICE} disable-fw-lldp off + Ethtool_set ${DEVICE} link-down-on-close off + echo + done +} + +Status () +{ + for DEVICE in ${DEVICES} + do + echo -n "${DEVICE}:" + Ethtool_get ${DEVICE} disable-fw-lldp on + Ethtool_get ${DEVICE} link-down-on-close on + echo + done +} + +Usage () +{ + echo "Usage: ${PROGRAM} {start|stop|status}" >&2 + echo >&2 + echo "See ${PROGRAM}(1) for more information." >&2 + + exit 1 +} + +if [ -z "${1}" ] +then + Usage +fi + +if [ ! -x /usr/sbin/ethtool ] +then + echo "'${PROGRAM}': /usr/sbin/ethtool - no such file." >&2 + exit 1 +fi + +DEVICES="$(grep -s '^DRIVER=i40e' /sys/class/net/*/device/uevent | awk -F/ '{ print $5 }' | sort -V)" + +if [ -z "${DEVICES}" ] +then + echo "'${PROGRAM}': no network devices available with i40e driver" >&2 +fi + +case "${1}" in + start) + Start + ;; + + stop) + Stop + ;; + + status) + Status + ;; + + *) + Usage + ;; +esac diff --git a/ethtool/bin/ethtool-i40e b/linux/share/man/Makefile index 637ae65..a6d6bf2 100755..100644 --- a/ethtool/bin/ethtool-i40e +++ b/linux/share/man/Makefile @@ -1,5 +1,3 @@ -#!/bin/sh - # Open Infrastructure: service-tools # Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net> @@ -19,19 +17,43 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. -set -e +# Depends: python3-docutils + +RST2MAN = rst2man \ + --no-datestamp \ + --no-generator \ + --strict \ + --strip-comments \ + --tab-width=4 \ + --verbose + +VERSION := $(shell cat ../../../VERSION.txt) + +SHELL := sh -e + +all: build + +build: man + +man: man.in *.rst + @echo -n "Creating manpages... " + + @for FILE in *.rst; \ + do \ + cp man.in $$(basename $${FILE} .rst); \ + $(RST2MAN) $${FILE} | \ + sed -e '/^.\\" Man page generated/d' \ + -e '/^.\\" Generated by/d' \ + -e "s|^\(.TH .*\) \(\"\" \"\"\) |\1 $${VERSION} service-tools |" \ + >> $$(basename $${FILE} .rst); \ + echo -n "."; \ + done + + @echo " done." -PROGRAM="$(basename ${0})" -DEVICES="$(grep DRIVER=i40e /sys/class/net/*/device/uevent | awk -F/ '{ print $5 }' | sort -V)" +clean: + rm -f *.[0-9] -if [ -z "${DEVICES}" ] -then - echo "'${PROGRAM}': no network devices available with i40e driver" -fi +distclean: clean -for DEVICE in ${DEVICES} -do - echo -n "'${DEVICE}': disabling FW LLDP..." - ethtool --set-priv-flags ${DEVICE} disable-fw-lldp on - echo " done." -done +rebuild: clean build diff --git a/linux/share/man/linux-i40e.1.rst b/linux/share/man/linux-i40e.1.rst new file mode 100644 index 0000000..f4c2eb7 --- /dev/null +++ b/linux/share/man/linux-i40e.1.rst @@ -0,0 +1,85 @@ +.. Open Infrastructure: service-tools + +.. Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net> +.. +.. SPDX-License-Identifier: GPL-3.0+ +.. +.. This program is free software: you can redistribute it and/or modify +.. it under the terms of the GNU General Public License as published by +.. the Free Software Foundation, either version 3 of the License, or +.. (at your option) any later version. +.. +.. This program is distributed in the hope that it will be useful, +.. but WITHOUT ANY WARRANTY; without even the implied warranty of +.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. GNU General Public License for more details. +.. +.. You should have received a copy of the GNU General Public License +.. along with this program. If not, see <https://www.gnu.org/licenses/>. + +========== +linux-i40e +========== + +------------------------------------------------------------ +setting recommended options for the Linux i40e device driver +------------------------------------------------------------ + +:manual section: 1 +:manual group: Open Infrastructure + +Synopsis +======== + +| **linux-i40e** start|stop|status + +Description +=========== + +**linux-i40e** sets all recommended options for the Linux i40e device driver. + +Recommended options +=================== + +| **Enabling disable-fw-lldp** +| Many Intel network cards such as the X700 Series drop LLDP pakets by default. +| When using LACP (802.1ad) this has the effect that after a reboot of one switch, +| the bond interfaces do not recover. Disabling the firewalling of LLDP pakets on +| the network card allows the operating system (= Linux kernel) to actually recieve +| the pakets and re-establish the bonded connection. + +| **Enabling link-down-on-close** +| Many Intel network cards such as the X700 Series do not take down the link +| when the corresponding interface is deconfigured. This is in contrast to the +| consumer (Intel) network cards that usually do this. Therefore, without enabling +| the link-down-on-close, most assumptions of HA stacks (e.g. pacemaker/corosync) +| are not met and can lead to various unwanted effects. Enabling this options +| restores the usual behaviour. + +See also +======== + +| ethtool(8), +| https://www.kernel.org/doc/Documentation/networking/i40e.txt + +Homepage +======== + +More information about service-tools and the Open Infrastructure project can be +found on the homepage (https://open-infrastructure.net). + +Contact +======= + +Bug reports, feature requests, help, patches, support and everything else are +welcome on the Open Infrastructure Software Mailing List +<software@lists.open-infrastructure.net>. + +Debian specific bugs can also be reported in the Debian Bug Tracking System +(https://bugs.debian.org). + +Authors +======= + +service-tools were written by Daniel Baumann +<daniel.baumann@open-infrastructure.net> and others. diff --git a/linux/share/man/man.in b/linux/share/man/man.in new file mode 100644 index 0000000..f95ca67 --- /dev/null +++ b/linux/share/man/man.in @@ -0,0 +1,19 @@ +.\" Open Infrastructure: service-tools +.\" +.\" Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net> +.\" +.\" SPDX-License-Identifier: GPL-3.0+ +.\" +.\" This program is free software: you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation, either version 3 of the License, or +.\" (at your option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program. If not, see <https://www.gnu.org/licenses/>. +.\" diff --git a/ethtool/share/systemd/ethtool-i40e.service b/linux/share/systemd/linux-i40e.service index e578d35..5d7f99f 100644 --- a/ethtool/share/systemd/ethtool-i40e.service +++ b/linux/share/systemd/linux-i40e.service @@ -1,14 +1,15 @@ # Open Infrastructure: service-tools [Unit] -Description=ethtool-i40e options -Documentation=man:ethotool-i40e +Description=setting recommended options for the Linux i40e device driver +Documentation=man:linux-i40e Before=network.target [Service] Type=oneshot RemainAfterExit=yes -ExecStart=/usr/bin/ethtool-i40e +ExecStart=/usr/bin/linux-i40e start +ExecStop=/usr/bin/linux-i40e stop StandardOutput=journal StandardError=journal |