95iscsi: Fixup bnx2i offload booting

bnx2i is using a separate iSCSI offload engine with a separate
MAC address. As a result, the iBFT information is displaying
a MAC address which does not relate to any MAC address from
the network interfaces.
In addition, the iSCSI offload engine works independently on
the NIC, so we do not need to enable the NIC for iSCSI offload
to work.
This patch modifies the automatic iBFT detection to not set
the 'ip=ibft' flag when bnx2i offload is detected.

References: bnc#855747

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Hannes Reinecke 2016-02-25 20:58:11 +08:00 committed by Harald Hoyer
parent 9eab750787
commit bff5416520
1 changed files with 25 additions and 1 deletions

View File

@ -29,14 +29,38 @@ check() {
return 0
}

get_ibft_mod() {
local ibft_mac=$1
# Return the iSCSI offload module for a given MAC address
iscsiadm -m iface | while read iface_name iface_desc ; do
IFS=$','
set -- $iface_desc
if [ "$ibft_mac" = "$2" ] ; then
echo $1
return 0
fi
unset IFS
done
}

install_ibft() {
# When iBFT / iscsi_boot is detected:
# - Use 'ip=ibft' to set up iBFT network interface
# Note: bnx2i is using a different MAC address of iSCSI offloading
# so the 'ip=ibft' parameter must not be set
# - specify firmware booting cmdline parameter

for d in /sys/firmware/* ; do
if [ -d ${d}/ethernet0 ] ; then
read ibft_mac < ${d}/ethernet0/mac
ibft_mod=$(get_ibft_mod $ibft_mac)
fi
if [ -z "$ibft_mod" ] && [ -d ${d}/ethernet1 ] ; then
read ibft_mac < ${d}/ethernet1/mac
ibft_mod=$(get_ibft_mod $ibft_mac)
fi
if [ -d ${d}/initiator ] ; then
if [ ${d##*/} = "ibft" ] ; then
if [ ${d##*/} = "ibft" ] && [ "$ibft_mod" != "bnx2i" ] ; then
echo -n "ip=ibft "
fi
echo -n "rd.iscsi.firmware=1"