fcoe: start with fcoemon instead of fipvlan

Chris Leech 2015-07-03 13:40:12 +02:00 committed by Harald Hoyer
parent d8ad687e1a
commit d02f522089
3 changed files with 35 additions and 6 deletions

View File

@ -20,12 +20,28 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh


netif=$1 netif=$1
dcb=$2 dcb=$2
vlan="yes"


linkup "$netif" linkup "$netif"


netdriver=$(readlink -f /sys/class/net/$netif/device/driver) netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
netdriver=${netdriver##*/} netdriver=${netdriver##*/}


write_fcoemon_cfg() {
echo FCOE_ENABLE=\"yes\" > /etc/fcoe/cfg-$netif
if [ "$dcb" = "dcb" ]; then
echo DCB_REQUIRED=\"yes\" >> /etc/fcoe/cfg-$netif
else
echo DCB_REQUIRED=\"no\" >> /etc/fcoe/cfg-$netif
fi
if [ "$vlan" = "yes" ]; then
echo AUTO_VLAN=\"yes\" >> /etc/fcoe/cfg-$netif
else
echo AUTO_VLAN=\"no\" >> /etc/fcoe/cfg-$netif
fi
echo MODE=\"fabric\" >> /etc/fcoe/cfg-$netif
}

if [ "$dcb" = "dcb" ]; then if [ "$dcb" = "dcb" ]; then
# Note lldpad will stay running after switchroot, the system initscripts # 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 # are to kill it and start a new lldpad to take over. Data is transfered
@ -51,6 +67,13 @@ if [ "$dcb" = "dcb" ]; then
i=$(($i+1)) i=$(($i+1))
done done


while [ $i -lt 60 ]; do
dcbtool sc "$netif" pfc e:1 a:1 w:1 && break
info "Retrying to turn dcb on"
sleep 1
i=$(($i+1))
done

while [ $i -lt 60 ]; do while [ $i -lt 60 ]; do
dcbtool sc "$netif" app:fcoe e:1 a:1 w:1 && break dcbtool sc "$netif" app:fcoe e:1 a:1 w:1 && break
info "Retrying to turn fcoe on" info "Retrying to turn fcoe on"
@ -60,7 +83,8 @@ if [ "$dcb" = "dcb" ]; then


sleep 1 sleep 1


fipvlan "$netif" -c -s write_fcoemon_cfg
fcoemon --syslog
elif [ "$netdriver" = "bnx2x" ]; then elif [ "$netdriver" = "bnx2x" ]; then
# If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan # If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan
modprobe 8021q modprobe 8021q
@ -69,7 +93,9 @@ elif [ "$netdriver" = "bnx2x" ]; then
sleep 3 sleep 3
fipvlan "$netif" -c -s fipvlan "$netif" -c -s
else else
echo -n "$netif" > /sys/module/fcoe/parameters/create vlan="no"
write_fcoemon_cfg
fcoemon --syslog
fi fi


need_shutdown need_shutdown

View File

@ -3,7 +3,7 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh # ex: ts=8 sw=4 sts=4 et filetype=sh


check() { check() {
require_binaries dcbtool fipvlan lldpad ip readlink || return 1 require_binaries dcbtool fipvlan lldpad ip readlink fcoemon fcoeadm || return 1
return 0 return 0
} }


@ -17,9 +17,12 @@ installkernel() {
} }


install() { install() {
inst_multiple ip dcbtool fipvlan lldpad readlink lldptool inst_multiple ip dcbtool fipvlan lldpad readlink lldptool fcoemon fcoeadm
inst_libdir_file 'libhbalinux.so*'
inst "/etc/hba.conf" "/etc/hba.conf"


mkdir -m 0755 -p "$initdir/var/lib/lldpad" mkdir -m 0755 -p "$initdir/var/lib/lldpad"
mkdir -m 0755 -p "$initdir/etc/fcoe"


inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up" inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up"
inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd" inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"

View File

@ -22,13 +22,13 @@




# BRCM: Later, should check whether bnx2x is loaded first before loading bnx2fc so do not load bnx2fc when there are no Broadcom adapters # BRCM: Later, should check whether bnx2x is loaded first before loading bnx2fc so do not load bnx2fc when there are no Broadcom adapters
[ -e /sys/module/fcoe/parameters/create ] || modprobe -a fcoe || die "FCoE requested but kernel/initrd does not support FCoE" [ -e /sys/bus/fcoe/ctlr_create ] || modprobe -a fcoe || die "FCoE requested but kernel/initrd does not support FCoE"


modprobe bnx2fc >/dev/null 2>&1 modprobe bnx2fc >/dev/null 2>&1
udevadm settle --timeout=30 udevadm settle --timeout=30


# FCoE actually supported? # FCoE actually supported?
[ -e /sys/module/fcoe/parameters/create ] || modprobe fcoe || die "FCoE requested but kernel/initrd does not support FCoE" [ -e /sys/bus/fcoe/ctlr_create ] || modprobe fcoe || die "FCoE requested but kernel/initrd does not support FCoE"


parse_fcoe_opts() { parse_fcoe_opts() {
local IFS=: local IFS=: