You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
From bff5416520f950942b4040ed10281d2ccaf9f09a Mon Sep 17 00:00:00 2001 |
|
From: Hannes Reinecke <hare@suse.de> |
|
Date: Thu, 25 Feb 2016 20:58:11 +0800 |
|
Subject: [PATCH] 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> |
|
--- |
|
modules.d/95iscsi/module-setup.sh | 26 +++++++++++++++++++++++++- |
|
1 file changed, 25 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh |
|
index 422bea72..181da3c7 100755 |
|
--- a/modules.d/95iscsi/module-setup.sh |
|
+++ b/modules.d/95iscsi/module-setup.sh |
|
@@ -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"
|
|
|