With Cavium/Qlogic NX2 cards, SLES12 SP3 fails to boot on first reboot following installation.
This document (7023013) is provided subject to the disclaimer at the end of this document.
Environment
Situation
Resolution
2. For each network interface where FCoE offload is configured, issue the following command :fipvlan -a
fipvlan -c -s <network interface>3. Review output to verify that the boot devices have appeared, by running the following command :
dmesg
exit
/usr/lib/dracut/modules.d/95fcoe/
dracut -f
Cause
Additional Information
# We use (fcoe_interface or fcoe_mac) and fcoe_dcb as set by parse-fcoe.sh
# If neither mac nor interface are set we don't continue
[ -z "$fcoe_interface" -a -z "$fcoe_mac" ] && return
# Write udev rules
{
if [ -n "$fcoe_mac" ] ; then
printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode"
printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --timeout --unique --name fcoe-timeout-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode"
else
printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode"
printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --timeout --unique --name fcoe-timeout-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode"
fi
} >> /etc/udev/rules.d/92-fcoe.rules
File name : fcoe-up.sh
#!/bin/sh
#
# We get called like this:
# fcoe-up <network-device> <dcb|nodcb> <fabric|vn2vn>
#
# Note currently only nodcb is supported, the dcb option is reserved for
# future use.
PATH=/usr/sbin:/usr/bin:/sbin:/bin
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
# Huh? Missing arguments ??
[ -z "$1" -o -z "$2" ] && exit 1
netif=$1
dcb=$2
mode=$3
vlan="yes"
iflink=$(cat /sys/class/net/$netif/iflink)
ifindex=$(cat /sys/class/net/$netif/ifindex)
if [ "$iflink" != "$ifindex" ] ; then
# Skip VLAN devices
exit 0
fi
ip link set dev $netif up
linkup "$netif"
netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
netdriver=${netdriver##*/}
write_fcoemon_cfg() {
[ -f /etc/fcoe/cfg-$netif ] && return
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
if [ "$mode" = "vn2vn" ] ; then
echo MODE=\"vn2vn\" >> /etc/fcoe/cfg-$netif
else
echo MODE=\"fabric\" >> /etc/fcoe/cfg-$netif
fi
}
if [ "$netdriver" = "bnx2x" ]; then
# If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan
modprobe 8021q
udevadm settle --timeout=30
# Sleep for 13 s to allow dcb negotiation
sleep 13
fipvlan "$netif" -c -s
need_shutdown
exit
fi
if [ "$dcb" = "dcb" ]; then
# wait for lldpad to be ready
i=0
while [ $i -lt 60 ]; do
lldptool -p && break
info "Waiting for lldpad to be ready"
sleep 1
i=$(($i+1))
done
while [ $i -lt 60 ]; do
dcbtool sc "$netif" dcb on && break
info "Retrying to turn dcb on"
sleep 1
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"
sleep 1
i=$(($i+1))
done
sleep 1
fi
write_fcoemon_cfg
fcoemon --syslog=yes
need_shutdown
[/code]
fcoe-up.sh: POSIX shell script, ASCII text executable
fcoe-genrules.sh: POSIX shell script, ASCII text executable
/usr/lib/dracut/modules.d/95fcoe/Note :
- When installing from a SLES12 SP3 ISO, an older dracut version will be installed, with insufficient Cavium / Qlogic driver support available. Hence the need to provide these details in a work-around.
- When installing from an updated SLES12 SP3 installation repository, an updated dracut version is currently available which already provides some improvements here for the Cavium / Qlogic driver support, and there would for example be no need to replace the fcoe-up.sh and fcoe-genrules.sh file.
* Fri Dec 15 2017 daniel.molkentin@suse.com
- Switch back to fipvlan for bnx2fc (bsc#1052840)
* adds 0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch
- 95fcoe: Allow bnc2x driver more time to complete DCB negotiation (bsc#1052840)
* adds 0549-fcoe-up-Increase-sleeptime-to-13s.patch
- 95fcoe: add timeout initqueue entries (bsc#1052840)
* adds 0550-95fcoe-add-timeout-initqueue-entries.patch
Disclaimer
This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.
- Document ID:7023013
- Creation Date: 24-May-2018
- Modified Date:03-Mar-2020
-
- SUSE Linux Enterprise Server
For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com