--- /dev/null
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+dcb=$1
+
+if ! [ -d /sys/firmware/edd ]; then
+ modprobe edd
+ while ! [ -d /sys/firmware/edd ]; do sleep 0.1; done
+fi
+
+for disk in /sys/firmware/edd/int13_*; do
+ [ -d $disk ] || continue
+ for nic in ${disk}/pci_dev/net/*; do
+ [ -d $nic ] || continue
+ if [ -e ${nic}/address ]; then
+ fcoe_interface=${nic##*/}
+ if ! [ -e "/tmp/.fcoe-$fcoe_interface" ]; then
+ /sbin/fcoe-up $fcoe_interface $dcb
+ > "/tmp/.fcoe-$fcoe_interface"
+ fi
+ fi
+ done
+done
+modprobe -r edd
mkdir -m 0755 -p "$initdir/var/lib/lldpad"
inst "$moddir/fcoe-up" "/sbin/fcoe-up"
+ inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"
inst "$moddir/fcoe-genrules.sh" "/sbin/fcoe-genrules.sh"
- inst_hook pre-udev 60 "$moddir/fcoe-genrules.sh"
inst_hook cmdline 99 "$moddir/parse-fcoe.sh"
}
if [ "$fcoe_dcb" != "nodcb" -a "$fcoe_dcb" != "dcb" ] ; then
warn "Invalid FCoE DCB option: $fcoe_dcb"
fi
- [ -d /sys/firmware/edd ] || modprobe edd
- # parse edd interfaces
- for disk in /sys/firmware/edd/int13_*; do
- [ -d $disk ] || continue
- for nic in ${disk}/pci_dev/net/*; do
- [ -d $nic ] || continue
- if [ -e ${nic}/address ]; then
- unset fcoe_mac
- unset fcoe_interface
- fcoe_mac=$(cat ${nic}/address)
- [ -n "$fcoe_mac" ] && . $(command -v fcoe-genrules.sh)
- fi
- done
- done
+ /sbin/initqueue --settled --unique /sbin/fcoe-edd $fcoe_dcb
else
for fcoe in $(getargs fcoe=); do
unset fcoe_mac