Browse Source

fcoe: start with fcoemon instead of fipvlan

(cherry picked from commit d02f522089)
master
Chris Leech 10 years ago committed by Harald Hoyer
parent
commit
4891d9a2ce
  1. 30
      modules.d/95fcoe/fcoe-up.sh
  2. 8
      modules.d/95fcoe/module-setup.sh
  3. 5
      modules.d/95fcoe/parse-fcoe.sh

30
modules.d/95fcoe/fcoe-up.sh

@ -15,6 +15,7 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh @@ -15,6 +15,7 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh

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

iflink=$(cat /sys/class/net/$netif/iflink)
ifindex=$(cat /sys/class/net/$netif/ifindex)
@ -29,6 +30,21 @@ linkup "$netif" @@ -29,6 +30,21 @@ linkup "$netif"
netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
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
# wait for lldpad to be ready
i=0
@ -46,6 +62,13 @@ if [ "$dcb" = "dcb" ]; then @@ -46,6 +62,13 @@ if [ "$dcb" = "dcb" ]; then
i=$(($i+1))
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
dcbtool sc "$netif" app:fcoe e:1 a:1 w:1 && break
info "Retrying to turn fcoe on"
@ -55,7 +78,8 @@ if [ "$dcb" = "dcb" ]; then @@ -55,7 +78,8 @@ if [ "$dcb" = "dcb" ]; then

sleep 1

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

need_shutdown

8
modules.d/95fcoe/module-setup.sh

@ -10,8 +10,7 @@ check() { @@ -10,8 +10,7 @@ check() {
[ -z "$fcoe_ctlr" ] && return 255
}

require_binaries dcbtool fipvlan lldpad ip readlink || return 1

require_binaries dcbtool fipvlan lldpad ip readlink fcoemon fcoeadm || return 1
return 0
}

@ -67,9 +66,12 @@ cmdline() { @@ -67,9 +66,12 @@ cmdline() {

# called by dracut
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/etc/fcoe"

if [[ $hostonly_cmdline == "yes" ]] ; then
local _fcoeconf=$(cmdline)

5
modules.d/95fcoe/parse-fcoe.sh

@ -18,12 +18,9 @@ @@ -18,12 +18,9 @@
# If it's not set we don't continue
[ -z "$fcoe" ] && return


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

initqueue --onetime modprobe -b -q bnx2fc
udevadm settle --timeout=30

parse_fcoe_opts() {
local OLDIFS="$IFS"

Loading…
Cancel
Save