diff options
Diffstat (limited to 'modules.d/95fcoe/fcoe-up.sh')
-rwxr-xr-x | modules.d/95fcoe/fcoe-up.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh new file mode 100755 index 00000000..1e1bcf5c --- /dev/null +++ b/modules.d/95fcoe/fcoe-up.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +# +# We get called like this: +# fcoe-up <network-device> <dcb|nodcb> +# +# Note currently only nodcb is supported, the dcb option is reserved for +# future use. + +PATH=/usr/sbin:/usr/bin:/sbin:/bin + +# Huh? Missing arguments ?? +[ -z "$1" -o -z "$2" ] && exit 1 + +export PS4="fcoe-up.$1.$$ + " +exec >>/run/initramfs/loginit.pipe 2>>/run/initramfs/loginit.pipe +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +netif=$1 +dcb=$2 + +ip link set "$netif" up +wait_for_if_up "$netif" + +netdriver=$(readlink -f /sys/class/net/$netif/device/driver) +netdriver=${netdriver##*/} + +if [ "$dcb" = "dcb" ]; then + # Note lldpad will stay running after switchroot, the system initscripts + # are to kill it and start a new lldpad to take over. Data is transfered + # between the 2 using a shm segment + lldpad -d + # stupid tools, need sleep + sleep 1 + dcbtool sc "$netif" dcb on + sleep 1 + dcbtool sc "$netif" app:fcoe e:1 a:1 w:1 + sleep 1 + fipvlan "$netif" -c -s +elif [ "$netdriver" = "bnx2x" ]; then + # If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan + modprobe 8021q + udevadm settle --timeout=30 + fipvlan "$netif" -c -s +else + echo -n "$netif" > /sys/module/fcoe/parameters/create +fi + +need_shutdown |