[packages/open-iscsi] - added patch with changes from upstream git - link daemons dynamic, no static kmod library
baggins
baggins at pld-linux.org
Tue Apr 1 12:06:03 CEST 2014
commit 12da3c756e12f13b58c5e3bb84576893144aab08
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Tue Apr 1 11:40:24 2014 +0200
- added patch with changes from upstream git
- link daemons dynamic, no static kmod library
iscsiuio.logrotate | 8 +
open-iscsi-git.patch | 35445 +++++++++++++++++++++++++++++++++++++++++++++++++
open-iscsi.spec | 65 +-
3 files changed, 35496 insertions(+), 22 deletions(-)
---
diff --git a/open-iscsi.spec b/open-iscsi.spec
index da74320..a29d115 100644
--- a/open-iscsi.spec
+++ b/open-iscsi.spec
@@ -1,9 +1,5 @@
-# TODO
-# - /sbin/iscsistart is linked static, should it be linked uclibc/klibc-static for initrd?
-# - for use in /sbin only openslp should be static (or libslp moved to /lib)
-#
# Conditional build:
-%bcond_with dynamic # link utilities dynamically
+%bcond_without dynamic # link utilities dynamically
#
%define ver 2.0
%define subver 873
@@ -19,13 +15,17 @@ Source0: http://www.open-iscsi.org/bits/%{name}-%{ver}-%{subver}.tar.gz
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}-devices.init
+Source4: iscsiuio.logrotate
Patch0: %{name}-build.patch
+Patch1: %{name}-git.patch
URL: http://www.open-iscsi.org/
+BuildRequires: kmod-devel
BuildRequires: openssl-devel
BuildRequires: rpmbuild(macros) >= 1.379
%if %{with dynamic}
BuildRequires: openslp-devel
BuildRequires: sed >= 4.0
+Requires: openslp >= 2.0.0
%else
BuildRequires: glibc-static
BuildRequires: openslp-static
@@ -58,42 +58,55 @@ informacji o protokole iSCSI znajduje się w standardach IETF na
%prep
%setup -q -n %{name}-%{ver}-%{subver}
%patch0 -p1
+%patch1 -p1
%if %{with dynamic}
sed -i -e 's/-static //' usr/Makefile
%endif
%build
-cd utils/open-isns
+cd iscsiuio
+%{__libtoolize}
+%{__aclocal}
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+%configure
+
+cd ../utils/open-isns
%configure \
--with-slp \
--without-security
-%{__make}
cd ../..
-for i in utils/sysdeps utils/fwparam_ibft usr utils; do
- %{__make} -C $i \
- CC="%{__cc}" \
- OPTFLAGS="%{rpmcflags} %{rpmcppflags}" \
- IPC_FLAGS="-DNETLINK_ISCSI=8 -D_GNU_SOURCE" \
- KSUBLEVEL=0 \
- KSRC=/usr
-done
+%{__make} \
+ CC="%{__cc}" \
+ OPTFLAGS="%{rpmcflags} %{rpmcppflags} -DUSE_KMOD -lkmod" \
+ IPC_FLAGS="-DNETLINK_ISCSI=8 -D_GNU_SOURCE" \
+ KSUBLEVEL=0
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sbindir},%{_mandir}/man8,%{_sysconfdir}/{iscsi/ifaces,iscsi/nodes,iscsi/send_targets},/etc/{rc.d/init.d,sysconfig}}
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/iscsi/{nodes,send_targets,static,isns,slp,ifaces} \
+ $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,logrotate.d} \
+ $RPM_BUILD_ROOT%{systemdunitdir} \
+ $RPM_BUILD_ROOT/lib/systemd/pld-helpers.d
+
+%{__make} install_programs install_doc install_etc \
+ DESTDIR=$RPM_BUILD_ROOT
+
+:> $RPM_BUILD_ROOT%{_sysconfdir}/iscsi/initiatorname.iscsi
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/iscsi
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/iscsi
install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/iscsi-devices
+install %{SOURCE4} $RPM_BUILD_ROOT/etc/logrotate.d/iscsiuio
-install etc/iscsid.conf $RPM_BUILD_ROOT%{_sysconfdir}/iscsi
-:> $RPM_BUILD_ROOT%{_sysconfdir}/iscsi/initiatorname.iscsi
-
-install usr/{iscsid,iscsiadm,iscsistart} $RPM_BUILD_ROOT%{_sbindir}
-install utils/iscsi{-iname,_discovery} $RPM_BUILD_ROOT%{_sbindir}
+install usr/iscsistart $RPM_BUILD_ROOT%{_sbindir}
+install doc/iscsistart.8 $RPM_BUILD_ROOT%{_mandir}/man8
+install doc/iscsi-iname.8 $RPM_BUILD_ROOT%{_mandir}/man8
-install doc/*.8 $RPM_BUILD_ROOT%{_mandir}/man8
+install etc/systemd/iscsid.service $RPM_BUILD_ROOT%{systemdunitdir}
+install etc/systemd/iscsid.socket $RPM_BUILD_ROOT%{systemdunitdir}
%clean
rm -rf $RPM_BUILD_ROOT
@@ -128,20 +141,28 @@ fi
%doc Changelog README THANKS
%dir %{_sysconfdir}/iscsi
%dir %{_sysconfdir}/iscsi/ifaces
+%dir %{_sysconfdir}/iscsi/isns
%dir %{_sysconfdir}/iscsi/nodes
%dir %{_sysconfdir}/iscsi/send_targets
+%dir %{_sysconfdir}/iscsi/slp
+%dir %{_sysconfdir}/iscsi/static
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/iscsi/iscsid.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/iscsi/initiatorname.iscsi
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/iscsi
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/iscsiuio
%attr(754,root,root) /etc/rc.d/init.d/iscsi
%attr(754,root,root) /etc/rc.d/init.d/iscsi-devices
+%{systemdunitdir}/iscsid.service
+%{systemdunitdir}/iscsid.socket
%attr(755,root,root) %{_sbindir}/iscsi-iname
%attr(755,root,root) %{_sbindir}/iscsiadm
%attr(755,root,root) %{_sbindir}/iscsid
%attr(755,root,root) %{_sbindir}/iscsistart
%attr(755,root,root) %{_sbindir}/iscsi_discovery
+%attr(755,root,root) %{_sbindir}/iscsiuio
%{_mandir}/man8/iscsi-iname.8*
%{_mandir}/man8/iscsi_discovery.8*
%{_mandir}/man8/iscsiadm.8*
%{_mandir}/man8/iscsid.8*
%{_mandir}/man8/iscsistart.8*
+%{_mandir}/man8/iscsiuio.8*
diff --git a/iscsiuio.logrotate b/iscsiuio.logrotate
new file mode 100644
index 0000000..ba9d418
--- /dev/null
+++ b/iscsiuio.logrotate
@@ -0,0 +1,8 @@
+/var/log/iscsiuio.log {
+ missingok
+ notifempty
+ sharedscripts
+ postrotate
+ /bin/killall -USR1 iscsiuio >/dev/null || :
+ endscript
+}
diff --git a/open-iscsi-git.patch b/open-iscsi-git.patch
new file mode 100644
index 0000000..3a06172
--- /dev/null
+++ b/open-iscsi-git.patch
@@ -0,0 +1,35445 @@
+diff --git a/Makefile b/Makefile
+index c5d9700..79bad84 100644
+--- a/Makefile
++++ b/Makefile
+@@ -14,8 +14,8 @@ mandir = $(prefix)/share/man
+ etcdir = /etc
+ initddir = $(etcdir)/init.d
+
+-MANPAGES = doc/iscsid.8 doc/iscsiadm.8 doc/iscsi_discovery.8
+-PROGRAMS = usr/iscsid usr/iscsiadm utils/iscsi_discovery utils/iscsi-iname
++MANPAGES = doc/iscsid.8 doc/iscsiadm.8 doc/iscsi_discovery.8 iscsiuio/docs/iscsiuio.8
++PROGRAMS = usr/iscsid usr/iscsiadm utils/iscsi_discovery utils/iscsi-iname iscsiuio/src/unix/iscsiuio
+ INSTALL = install
+ ETCFILES = etc/iscsid.conf
+ IFACEFILES = etc/iface.example
+@@ -26,24 +26,32 @@ IFACEFILES = etc/iface.example
+
+ all: user
+
+-user: utils/open-isns/Makefile
++user: utils/open-isns/Makefile iscsiuio/Makefile
+ $(MAKE) -C utils/open-isns
+ $(MAKE) -C utils/sysdeps
+ $(MAKE) -C utils/fwparam_ibft
+ $(MAKE) -C usr
+ $(MAKE) -C utils
++ $(MAKE) -C iscsiuio
+ @echo
+ @echo "Compilation complete Output file"
+ @echo "----------------------------------- ----------------"
+ @echo "Built iSCSI daemon: usr/iscsid"
+ @echo "Built management application: usr/iscsiadm"
+ @echo "Built boot tool: usr/iscsistart"
++ @echo "Built iscsiuio daemon: iscsiuio/src/unix/iscsiuio"
+ @echo
+ @echo "Read README file for detailed information."
+
+ utils/open-isns/Makefile: utils/open-isns/configure utils/open-isns/Makefile.in
+ cd utils/open-isns; ./configure CFLAGS="$(OPTFLAGS)" --with-security=no
+
++iscsiuio/Makefile: iscsiuio/configure iscsiuio/Makefile.in
++ cd iscsiuio; ./configure
++
++iscsiuio/configure iscsiuio/Makefile.in: iscsiuio/configure.ac iscsiuio/Makefile.am
++ cd iscsiuio; autoreconf --install
++
+ kernel: force
+ $(MAKE) -C kernel
+ @echo "Kernel Compilation complete Output file"
+@@ -61,6 +69,7 @@ clean:
+ $(MAKE) -C utils clean
+ $(MAKE) -C usr clean
+ $(MAKE) -C kernel clean
++ $(MAKE) -C iscsiuio clean
+ $(MAKE) -C utils/open-isns clean
+ $(MAKE) -C utils/open-isns distclean
+
+@@ -115,7 +124,7 @@ install_iface: $(IFACEFILES)
+ $(INSTALL) -m 644 $^ $(DESTDIR)$(etcdir)/iscsi/ifaces
+
+ install_etc: $(ETCFILES)
+- if [ ! -f /etc/iscsi/iscsid.conf ]; then \
++ if [ ! -f $(DESTDIR)/etc/iscsi/iscsid.conf ]; then \
+ $(INSTALL) -d $(DESTDIR)$(etcdir)/iscsi ; \
+ $(INSTALL) -m 644 $^ $(DESTDIR)$(etcdir)/iscsi ; \
+ fi
+@@ -128,11 +137,11 @@ install_kernel:
+ $(MAKE) -C kernel install_kernel
+
+ install_iname:
+- if [ ! -f /etc/iscsi/initiatorname.iscsi ]; then \
++ if [ ! -f $(DESTDIR)/etc/iscsi/initiatorname.iscsi ]; then \
+ echo "InitiatorName=`$(DESTDIR)/sbin/iscsi-iname`" > $(DESTDIR)/etc/iscsi/initiatorname.iscsi ; \
+ echo "***************************************************" ; \
+ echo "Setting InitiatorName to `cat $(DESTDIR)/etc/iscsi/initiatorname.iscsi`" ; \
+- echo "To override edit /etc/iscsi/initiatorname.iscsi" ; \
++ echo "To override edit $(DESTDIR)/etc/iscsi/initiatorname.iscsi" ; \
+ echo "***************************************************" ; \
+ fi
+
+diff --git a/README b/README
+index 7364b2d..06d1b6f 100644
+--- a/README
++++ b/README
+@@ -159,15 +159,20 @@ Usage: iscsid [OPTION]
+ 5. Open-iSCSI Configuration Utility
+ ===================================
+
+-Open-iSCSI persistent configuration is implemented as a DBM database
+-available on all Linux installations.
++Open-iSCSI persistent configuration is stored in a number of
++directories under a configuration root directory, using a flat-file
++format. This configuration root directory is /etc/iscsi by default,
++but may also commonly be in /var/lib/iscsi.
+
+-The database contains two tables:
++Configuration is contained in directories for:
+
+-- Discovery table (/etc/iscsi/send_targets);
+-- Node table (/etc/iscsi/nodes).
+-
+-The regular place for iSCSI database files: /etc/iscsi/nodes
++- nodes
++- slp
++- isns
++- static
++- fw
++- send_targets
++- ifaces
+
+ The iscsiadm utility is a command-line tool to manage (update, delete,
+ insert, query) the persistent database.
+@@ -388,7 +393,7 @@ Usage: iscsiadm [OPTION]
+ See below for examples.
+ -m iface --interface=iscsi_ifacename -C ping --ip=[ipaddr] --packetsize=[size]
+ --count=[count] --interval=[interval]
+- -m host --host=hostno|MAC --print=level -C chap --op=[op] --value=[chap_tbl_idx]
++ -m host --host=hostno|MAC --print=level -C chap --op=[SHOW]
+ Display information for a specific host. The host
+ can be passed in by host number or by MAC address.
+ If a host is not passed in then info
+@@ -401,6 +406,37 @@ Usage: iscsiadm [OPTION]
+ is connected to.
+ 3 = Print iscsi params used.
+ 4 = Print SCSI info like LUNs, device state.
++ -m host --host=hostno|MAC -C chap --op=[DELETE] --index=[chap_tbl_idx]
++ Delete chap entry at the given index from chap table.
++ -m host --host=hostno|MAC -C chap --op=[NEW | UPDATE] --index=[chap_tbl_idx] \
++ --name=[name] --value=[value]
++ Add new or update existing chap entry at the given
++ index with given username and password pair. If index
++ is not passed then entry is added at the first free
++ index in chap table.
++ -m host --host=hostno|MAC -C flashnode
++ Display list of all the targets in adapter's
++ flash (flash node), for the specified host,
++ with ip, port, tpgt and iqn.
++ -m host --host=hostno|MAC -C flashnode --op=[NEW] --portal_type=[ipv4|ipv6]
++ Create new flash node entry for the given host of the
++ specified portal_type. This returns the index of the
++ newly created entry on success.
++ -m host --host=hostno|MAC -C flashnode --index=[flashnode index] \
++ --op=[UPDATE] --name=[name] --value=[value]
++ Update the params of the speficied flash node.
++ The [name] and [value] pairs must be provided for the
++ params that need to be updated. Multiple params can
++ be updated using a single command.
++ -m host --host=hostno|MAC -C flashnode --index=[flashnode index] \
++ --op=[SHOW | DELETE | LOGIN | LOGOUT]
++ op=DELETE|LOGIN|LOGOUT will perform deletion/login/
++ logout operation on the specified flash node.
++
++ op=SHOW will list all params with the values for the
++ specified flash node. This is the default operation.
++
++ See the iscsiadm example section for more info.
+ -d, --debug debuglevel print debugging information
+ -V, --version display version and exit
+ -h, --help display this help and exit
+@@ -955,6 +991,96 @@ To now log into targets it is the same as with sofware iscsi. See section
+
+ ./iscsiadm -m session -P 1
+
++
++ Host mode with flashnode submode:
++
++ - Display list of flash nodes for a host
++
++ ./iscsiadm -m host -H 6 -C flashnode
++
++ This will print list of all the flash node entries for the given host 6
++ along with their ip, port, tpgt and iqn values.
++
++ - Display all parameters of a flash node entry for a host
++
++ ./iscsiadm -m host -H 6 -C flashnode -x 0
++
++ This will list all the parameter name,value pairs for flash node entry at
++ index 0 of host 6.
++
++ - Add a new flash node entry for a host
++
++ ./iscsiadm -m host -H 6 -C flashnode -o new -A ipv4
++ or
++ ./iscsiadm -m host -H 6 -C flashnode -o new -A ipv6
++
++ This will add new flash node entry for the given host 6 with portal
++ type of either ipv4 or ipv6. The new operation returns the index of
++ the newly created flash node entry.
++
++ - Update a flashnode entry
++ ./iscsiadm -m host -H 6 -C flashnode -x 1 -o update \
++ -n flashnode.conn[0].ipaddress -v 192.168.1.12 \
++ -n flashnode.session.targetname \
++ -v iqn.2002-03.com.compellent:5000d310004b0716
++
++ This will update the values of ipaddress and targetname params of
++ flash node entry at index 1 of host 6.
++
++ - Login to a flash node entry
++ ./iscsiadm -m host -H 6 -C flashnode -x 1 -o login
++
++ - Logout from a flash node entry
++ ./iscsiadm -m host -H 6 -C flashnode -x 1 -o logout
++ or
++ ./iscsiadm -m session -r $sid -u
++
++ Logout can be performed either using the flash node index or using the
++ corresponding session index.
++
++ - Delete a flash node entry
++ ./iscsiadm -m host -H 6 -C flashnode -x 1 -o delete
++
++ Host mode with chap submode:
++
++ - Display list of chap entries for a host
++
++ ./iscsiadm -m host -H 6 -C chap -o show
++
++ This will list all the chap entries for the given host.
++
++ - Delete a chap entry for a host
++
++ ./iscsiadm -m host -H 6 -C chap -o delete -x 5
++
++ This will delete any chap entry present at given index 5.
++
++ - Add/Update a local chap entry for a host
++
++ ./iscsiadm -m host -H 6 -C chap -o update -x 4 -n username \
++ -v value -n password -v value
++
++ This will update the local chap entry present at index 4. If index 4
++ is free then entry of type local chap will be created at that index
++ with given username and password values.
++
++ - Add/Update a bidi chap entry for a host
++
++ ./iscsiadm -m host -H 6 -C chap -o update -x 5 -n username_in \
++ -v value -n password_in -v value
++
++ This will update the bidi chap entry present at index 5. If index 5
++ is free then entry of type bidi chap will be created at that index
++ with given username_in and password_in values.
++
++ Host mode with stats submode:
++
++ - Display host statistics:
++ ./iscsiadm -m host -H 6 -C stats
++
++ This will print the aggregate statistics on the host adapter port.
++ This includes MAC, TCP/IP, ECC & iSCSI statistics.
++
+ 6. Configuration
+ ================
+
+diff --git a/doc/iscsiadm.8 b/doc/iscsiadm.8
+index 7c209f6..9a945d1 100644
+--- a/doc/iscsiadm.8
++++ b/doc/iscsiadm.8
+@@ -14,9 +14,9 @@ iscsiadm \- open-iscsi administration utility
+
+ \fBiscsiadm\fR \-m iface [ \-hV ] [ \-d debug_level ] [ \-P printlevel ] [ \-I ifacename | \-H hostno|MAC ] [ [ \-o operation ] [ \-n name ] [ \-v value ] ] [ \-C ping [ \-a ip ] [ \-b packetsize ] [ \-c count ] [ \-i interval ] ]
+
+-\fBiscsiadm\fR \-m fw [\-l]
++\fBiscsiadm\fR \-m fw [ \-d debug_level ] [\-l]
+
+-\fBiscsiadm\fR \-m host [ \-P printlevel ] [ \-H hostno|MAC ] [ -C chap [ -o operation ] [ -v chap_tbl_idx ] ]
++\fBiscsiadm\fR \-m host [ \-P printlevel ] [ \-H hostno|MAC ] [ [ \-C chap [ \-x chap_tbl_idx ] ] | [ \-C flashnode [ \-A portal_type ] [ \-x flashnode_idx ] ] | [ \-C stats ] ] [ [ \-o operation ] [ \-n name ] [ \-v value ] ]
+
+ \fBiscsiadm\fR \-k priority
+
+@@ -47,6 +47,12 @@ daemon (iscsid) be running.
+ This option is only valid for ping submode.
+
+ .TP
++\fB\-A\fR, \fB\-\-portal_type=\fI[ipv4|ipv6]\fR
++Specify the portal type for the new flash node entry to be created.
++.IP
++This option is only valid for flashnode submode of host mode and only with \fInew\fR operation.
++
++.TP
+ \fB\-b\fR, \fB\-\-packetsize=\fIpacketsize\fP
+ Specify the ping \fIpacketsize\fR.
+
+@@ -66,6 +72,14 @@ Currently iscsiadm support ping as submode for iface. For example,
+
+ iscsiadm -m iface -I ifacename -C ping -a ipaddr -b packetsize -c count -i interval
+
++For host, it supports chap , flashnode and stats as submodes. For example,
++
++iscsiadm -m host -H hostno -C chap -x chap_tbl_idx -o operation
++
++iscsiadm -m host -H hostno -C flashnode -x flashnode_idx -o operation
++
++iscsiadm -m host -H hostno -C stats
++
+ .TP
+ \fB\-d\fR, \fB\-\-debug=\fIdebug_level\fP
+ print debugging information. Valid values for debug_level are 0 to 8.
+@@ -170,8 +184,9 @@ for \fIiface\fR, all ifaces setup in /etc/iscsi/ifaces are displayed.
+
+ .TP
+ \fB\-n\fR, \fB\-\-name=\fIname\fR
+-Specify a field \fIname\fR in a record. For use with the \fIupdate\fR
+-operator.
++In node mode, specify a field \fIname\fR in a record. In flashnode submode of host mode, specify name of the flash node parameter.
++
++For use with the \fIupdate\fR operator.
+ .IP
+
+ .TP
+@@ -181,6 +196,8 @@ Specifies a database operator \fIop\fR. \fIop\fR must be one of
+ .IP
+ For iface mode, \fIapply\fR and \fIapplyall\fR are also applicable.
+ .IP
++For flashnode submode of host mode, \fIlogin\fR and \fIlogout\fR are also applicable.
++.IP
+ This option is valid for all modes except fw. Delete should not be used on a running session. If it is iscsiadm will stop the session and then delete the
+ record.
+ .IP
+@@ -210,6 +227,12 @@ sid is passed in.
+ .IP
+ \fIapplyall\fR will cause the network settings to take effect on all the ifaces whose MAC address or host number matches that of the specific host.
+
++.IP
++\fIlogin\fR will log into the specified flash node entry.
++
++.IP
++\fIlogout\fR does the logout from the given flash node entry.
++
+ .TP
+ \fB\-p\fR, \fB\-\-portal=\fIip[:port]\fR
+ Use target portal with ip-address \fIip\fR and \fIport\fR. If port is not passed
+@@ -258,6 +281,7 @@ tuple passed in.
+ .TP
+ \fB\-s\fR, \fB\-\-stats\fR
+ Display session statistics.
++This option when used with host mode, displays host statistics.
+
+ .TP
+ \fB\-S\fR, \fB\-\-show\fR
+@@ -292,12 +316,18 @@ for session mode).
+ \fB\-v\fR, \fB\-\-value=\fIvalue\fR
+ Specify a \fIvalue\fR for use with the \fIupdate\fR operator.
+ .IP
+-This option is only valid for node mode.
++This option is only valid for node mode and flashnode submode of host mode.
+
+ .TP
+ \fB\-V\fR, \fB\-\-version\fR
+ display version and exit
+
++.TP
++\fB\-x\fR, \fB\-\-index=\fIindex\fR
++Specify the \fIindex\fR of the entity to operate on.
++.IP
++This option is only valid for chap and flashnode submodes of host mode.
++
+ .SH DISCOVERY TYPES
+ iSCSI defines 3 discovery types: SendTargets, SLP, and iSNS.
+
+diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
+new file mode 100644
+index 0000000..028e0b3
+--- /dev/null
++++ b/etc/systemd/iscsid.service
+@@ -0,0 +1,13 @@
++[Unit]
++Description=Open-iSCSI
++Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
++After=network.target NetworkManager-wait-online.service iscsiuio.service tgtd.service targetcli.service
++
++[Service]
++Type=forking
++PIDFile=/var/run/iscsid.pid
++ExecStart=/usr/sbin/iscsid
++ExecStop=/sbin/iscsiadm -k 0 2
++
++[Install]
++WantedBy=multi-user.target
+diff --git a/etc/systemd/iscsid.socket b/etc/systemd/iscsid.socket
+new file mode 100644
+index 0000000..832451d
+--- /dev/null
++++ b/etc/systemd/iscsid.socket
+@@ -0,0 +1,9 @@
++[Unit]
++Description=Open-iSCSI iscsid Socket
++Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
++
++[Socket]
++ListenStream=@ISCSIADM_ABSTRACT_NAMESPACE
++
++[Install]
++WantedBy=sockets.target
+diff --git a/include/fw_context.h b/include/fw_context.h
+index 1640859..6563d68 100644
+--- a/include/fw_context.h
++++ b/include/fw_context.h
+@@ -30,6 +30,9 @@
+
+ struct boot_context {
+ struct list_head list;
++ char boot_root[BOOT_NAME_MAXLEN];
++ char boot_nic[BOOT_NAME_MAXLEN];
++ char boot_target[BOOT_NAME_MAXLEN];
+
+ /* target settings */
+ int target_port;
+diff --git a/include/iscsi_err.h b/include/iscsi_err.h
+index aabea4e..125f443 100644
+--- a/include/iscsi_err.h
++++ b/include/iscsi_err.h
+@@ -62,6 +62,10 @@ enum {
+ ISCSI_ERR_OP_NOT_SUPP = 27,
+ /* device or resource in use */
+ ISCSI_ERR_BUSY = 28,
++ /* Operation failed, but retrying layer may succeed */
++ ISCSI_ERR_AGAIN = 29,
++ /* unknown discovery type */
++ ISCSI_ERR_UNKNOWN_DISCOVERY_TYPE = 30,
+
+ /* Always last. Indicates end of error code space */
+ ISCSI_MAX_ERR_VAL,
+diff --git a/include/iscsi_if.h b/include/iscsi_if.h
+index dad9fd8..9d15811 100644
+--- a/include/iscsi_if.h
++++ b/include/iscsi_if.h
+@@ -68,8 +68,15 @@ enum iscsi_uevent_e {
+ ISCSI_UEVENT_PING = UEVENT_BASE + 22,
+ ISCSI_UEVENT_GET_CHAP = UEVENT_BASE + 23,
+ ISCSI_UEVENT_DELETE_CHAP = UEVENT_BASE + 24,
+-
+- ISCSI_UEVENT_MAX = ISCSI_UEVENT_DELETE_CHAP,
++ ISCSI_UEVENT_SET_FLASHNODE_PARAMS = UEVENT_BASE + 25,
++ ISCSI_UEVENT_NEW_FLASHNODE = UEVENT_BASE + 26,
++ ISCSI_UEVENT_DEL_FLASHNODE = UEVENT_BASE + 27,
++ ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28,
++ ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29,
++ ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30,
++ ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31,
++ ISCSI_UEVENT_GET_HOST_STATS = UEVENT_BASE + 32,
++ ISCSI_UEVENT_MAX = ISCSI_UEVENT_GET_HOST_STATS,
+
+ /* up events */
+ ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1,
+@@ -219,6 +226,35 @@ struct iscsi_uevent {
+ uint32_t host_no;
+ uint16_t chap_tbl_idx;
+ } delete_chap;
++ struct msg_set_flashnode_param {
++ uint32_t host_no;
++ uint32_t flashnode_idx;
++ uint32_t count;
++ } set_flashnode;
++ struct msg_new_flashnode {
++ uint32_t host_no;
++ uint32_t len;
++ } new_flashnode;
++ struct msg_del_flashnode {
++ uint32_t host_no;
++ uint32_t flashnode_idx;
++ } del_flashnode;
++ struct msg_login_flashnode {
++ uint32_t host_no;
++ uint32_t flashnode_idx;
++ } login_flashnode;
++ struct msg_logout_flashnode {
++ uint32_t host_no;
++ uint32_t flashnode_idx;
++ } logout_flashnode;
++ struct msg_logout_flashnode_sid {
++ uint32_t host_no;
++ uint32_t sid;
++ } logout_flashnode_sid;
++ struct msg_get_host_stats {
++ uint32_t host_no;
++ } get_host_stats;
++
+ } u;
+ union {
+ /* messages k -> u */
+@@ -276,6 +312,9 @@ struct iscsi_uevent {
+ with each ping request */
+ uint32_t data_size;
+ } ping_comp;
++ struct msg_new_flashnode_ret {
++ uint32_t flashnode_idx;
++ } new_flashnode_ret;
+ } r;
+ } __attribute__ ((aligned (sizeof(uint64_t))));
+
+@@ -283,8 +322,18 @@ enum iscsi_param_type {
+ ISCSI_PARAM, /* iscsi_param (session, conn, target, LU) */
+ ISCSI_HOST_PARAM, /* iscsi_host_param */
+ ISCSI_NET_PARAM, /* iscsi_net_param */
++ ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */
++ ISCSI_CHAP_PARAM, /* iscsi_chap_param */
++ ISCSI_IFACE_PARAM, /* iscsi_iface_param */
+ };
+
++/* structure for minimalist usecase */
++struct iscsi_param_info {
++ uint32_t len; /* Actual length of the param value */
++ uint16_t param; /* iscsi param */
++ uint8_t value[0]; /* length sized value follows */
++} __attribute__((__packed__));
++
+ struct iscsi_iface_param_info {
+ uint32_t iface_num; /* iface number, 0 - n */
+ uint32_t len; /* Actual length of the param */
+@@ -348,28 +397,106 @@ struct iscsi_path {
+ #define ISCSI_VLAN_DISABLE 0x01
+ #define ISCSI_VLAN_ENABLE 0x02
+
++/* iscsi generic enable/disabled setting for various features */
++#define ISCSI_NET_PARAM_DISABLE 0x01
++#define ISCSI_NET_PARAM_ENABLE 0x02
++
+ /* iSCSI network params */
+ enum iscsi_net_param {
+ ISCSI_NET_PARAM_IPV4_ADDR = 1,
+- ISCSI_NET_PARAM_IPV4_SUBNET = 2,
+- ISCSI_NET_PARAM_IPV4_GW = 3,
+- ISCSI_NET_PARAM_IPV4_BOOTPROTO = 4,
+- ISCSI_NET_PARAM_MAC = 5,
+- ISCSI_NET_PARAM_IPV6_LINKLOCAL = 6,
+- ISCSI_NET_PARAM_IPV6_ADDR = 7,
+- ISCSI_NET_PARAM_IPV6_ROUTER = 8,
+- ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG = 9,
+- ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG = 10,
+- ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG = 11,
+- ISCSI_NET_PARAM_IFACE_ENABLE = 12,
+- ISCSI_NET_PARAM_VLAN_ID = 13,
+- ISCSI_NET_PARAM_VLAN_PRIORITY = 14,
+- ISCSI_NET_PARAM_VLAN_ENABLED = 15,
+- ISCSI_NET_PARAM_VLAN_TAG = 16,
+- ISCSI_NET_PARAM_IFACE_TYPE = 17,
+- ISCSI_NET_PARAM_IFACE_NAME = 18,
+- ISCSI_NET_PARAM_MTU = 19,
+- ISCSI_NET_PARAM_PORT = 20,
++ ISCSI_NET_PARAM_IPV4_SUBNET,
++ ISCSI_NET_PARAM_IPV4_GW,
++ ISCSI_NET_PARAM_IPV4_BOOTPROTO,
++ ISCSI_NET_PARAM_MAC,
++ ISCSI_NET_PARAM_IPV6_LINKLOCAL,
++ ISCSI_NET_PARAM_IPV6_ADDR,
++ ISCSI_NET_PARAM_IPV6_ROUTER,
++ ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG,
++ ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG,
++ ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG,
++ ISCSI_NET_PARAM_IFACE_ENABLE,
++ ISCSI_NET_PARAM_VLAN_ID,
++ ISCSI_NET_PARAM_VLAN_PRIORITY,
++ ISCSI_NET_PARAM_VLAN_ENABLED,
++ ISCSI_NET_PARAM_VLAN_TAG,
++ ISCSI_NET_PARAM_IFACE_TYPE,
++ ISCSI_NET_PARAM_IFACE_NAME,
++ ISCSI_NET_PARAM_MTU,
++ ISCSI_NET_PARAM_PORT,
++ ISCSI_NET_PARAM_IPADDR_STATE,
++ ISCSI_NET_PARAM_IPV6_LINKLOCAL_STATE,
++ ISCSI_NET_PARAM_IPV6_ROUTER_STATE,
++ ISCSI_NET_PARAM_DELAYED_ACK_EN,
++ ISCSI_NET_PARAM_TCP_NAGLE_DISABLE,
++ ISCSI_NET_PARAM_TCP_WSF_DISABLE,
++ ISCSI_NET_PARAM_TCP_WSF,
++ ISCSI_NET_PARAM_TCP_TIMER_SCALE,
++ ISCSI_NET_PARAM_TCP_TIMESTAMP_EN,
++ ISCSI_NET_PARAM_CACHE_ID,
++ ISCSI_NET_PARAM_IPV4_DHCP_DNS_ADDR_EN,
++ ISCSI_NET_PARAM_IPV4_DHCP_SLP_DA_EN,
++ ISCSI_NET_PARAM_IPV4_TOS_EN,
++ ISCSI_NET_PARAM_IPV4_TOS,
++ ISCSI_NET_PARAM_IPV4_GRAT_ARP_EN,
++ ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID_EN,
++ ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID,
++ ISCSI_NET_PARAM_IPV4_DHCP_REQ_VENDOR_ID_EN,
++ ISCSI_NET_PARAM_IPV4_DHCP_USE_VENDOR_ID_EN,
++ ISCSI_NET_PARAM_IPV4_DHCP_VENDOR_ID,
++ ISCSI_NET_PARAM_IPV4_DHCP_LEARN_IQN_EN,
++ ISCSI_NET_PARAM_IPV4_FRAGMENT_DISABLE,
++ ISCSI_NET_PARAM_IPV4_IN_FORWARD_EN,
++ ISCSI_NET_PARAM_IPV4_TTL,
++ ISCSI_NET_PARAM_IPV6_GRAT_NEIGHBOR_ADV_EN,
++ ISCSI_NET_PARAM_IPV6_MLD_EN,
++ ISCSI_NET_PARAM_IPV6_FLOW_LABEL,
++ ISCSI_NET_PARAM_IPV6_TRAFFIC_CLASS,
++ ISCSI_NET_PARAM_IPV6_HOP_LIMIT,
++ ISCSI_NET_PARAM_IPV6_ND_REACHABLE_TMO,
++ ISCSI_NET_PARAM_IPV6_ND_REXMIT_TIME,
++ ISCSI_NET_PARAM_IPV6_ND_STALE_TMO,
++ ISCSI_NET_PARAM_IPV6_DUP_ADDR_DETECT_CNT,
++ ISCSI_NET_PARAM_IPV6_RTR_ADV_LINK_MTU,
++ ISCSI_NET_PARAM_REDIRECT_EN,
++};
++
++enum iscsi_ipaddress_state {
++ ISCSI_IPDDRESS_STATE_UNCONFIGURED,
++ ISCSI_IPDDRESS_STATE_ACQUIRING,
++ ISCSI_IPDDRESS_STATE_TENTATIVE,
++ ISCSI_IPDDRESS_STATE_VALID,
++ ISCSI_IPDDRESS_STATE_DISABLING,
++ ISCSI_IPDDRESS_STATE_INVALID,
++ ISCSI_IPDDRESS_STATE_DEPRECATED,
++};
++
++enum iscsi_router_state {
++ ISCSI_ROUTER_STATE_UNKNOWN,
++ ISCSI_ROUTER_STATE_ADVERTISED,
++ ISCSI_ROUTER_STATE_MANUAL,
++ ISCSI_ROUTER_STATE_STALE,
++};
++
++/* iSCSI specific settings params for iface */
++enum iscsi_iface_param {
++ ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO,
++ ISCSI_IFACE_PARAM_HDRDGST_EN,
++ ISCSI_IFACE_PARAM_DATADGST_EN,
++ ISCSI_IFACE_PARAM_IMM_DATA_EN,
++ ISCSI_IFACE_PARAM_INITIAL_R2T_EN,
++ ISCSI_IFACE_PARAM_DATASEQ_INORDER_EN,
++ ISCSI_IFACE_PARAM_PDU_INORDER_EN,
++ ISCSI_IFACE_PARAM_ERL,
++ ISCSI_IFACE_PARAM_MAX_RECV_DLENGTH,
++ ISCSI_IFACE_PARAM_FIRST_BURST,
++ ISCSI_IFACE_PARAM_MAX_R2T,
++ ISCSI_IFACE_PARAM_MAX_BURST,
++ ISCSI_IFACE_PARAM_CHAP_AUTH_EN,
++ ISCSI_IFACE_PARAM_BIDI_CHAP_EN,
++ ISCSI_IFACE_PARAM_DISCOVERY_AUTH_OPTIONAL,
++ ISCSI_IFACE_PARAM_DISCOVERY_LOGOUT_EN,
++ ISCSI_IFACE_PARAM_STRICT_LOGIN_COMP_EN,
++ ISCSI_IFACE_PARAM_INITIATOR_NAME,
+ };
+
+ enum iscsi_conn_state {
+@@ -460,61 +587,157 @@ enum iscsi_param {
+
+ ISCSI_PARAM_TGT_RESET_TMO,
+ ISCSI_PARAM_TARGET_ALIAS,
++
++ ISCSI_PARAM_CHAP_IN_IDX,
++ ISCSI_PARAM_CHAP_OUT_IDX,
++
++ ISCSI_PARAM_BOOT_ROOT,
++ ISCSI_PARAM_BOOT_NIC,
++ ISCSI_PARAM_BOOT_TARGET,
++
++ ISCSI_PARAM_AUTO_SND_TGT_DISABLE,
++ ISCSI_PARAM_DISCOVERY_SESS,
++ ISCSI_PARAM_PORTAL_TYPE,
++ ISCSI_PARAM_CHAP_AUTH_EN,
++ ISCSI_PARAM_DISCOVERY_LOGOUT_EN,
++ ISCSI_PARAM_BIDI_CHAP_EN,
++ ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL,
++
++ ISCSI_PARAM_DEF_TIME2WAIT,
++ ISCSI_PARAM_DEF_TIME2RETAIN,
++ ISCSI_PARAM_MAX_SEGMENT_SIZE,
++ ISCSI_PARAM_STATSN,
++ ISCSI_PARAM_KEEPALIVE_TMO,
++ ISCSI_PARAM_LOCAL_PORT,
++ ISCSI_PARAM_TSID,
++ ISCSI_PARAM_DEF_TASKMGMT_TMO,
++
++ ISCSI_PARAM_TCP_TIMESTAMP_STAT,
++ ISCSI_PARAM_TCP_WSF_DISABLE,
++ ISCSI_PARAM_TCP_NAGLE_DISABLE,
++ ISCSI_PARAM_TCP_TIMER_SCALE,
++ ISCSI_PARAM_TCP_TIMESTAMP_EN,
++ ISCSI_PARAM_TCP_XMIT_WSF,
++ ISCSI_PARAM_TCP_RECV_WSF,
++ ISCSI_PARAM_IP_FRAGMENT_DISABLE,
++ ISCSI_PARAM_IPV4_TOS,
++ ISCSI_PARAM_IPV6_TC,
++ ISCSI_PARAM_IPV6_FLOW_LABEL,
++ ISCSI_PARAM_IS_FW_ASSIGNED_IPV6,
++
++ ISCSI_PARAM_DISCOVERY_PARENT_IDX,
++ ISCSI_PARAM_DISCOVERY_PARENT_TYPE,
+ /* must always be last */
+ ISCSI_PARAM_MAX,
+ };
+
+-#define ISCSI_MAX_RECV_DLENGTH (1ULL << ISCSI_PARAM_MAX_RECV_DLENGTH)
+-#define ISCSI_MAX_XMIT_DLENGTH (1ULL << ISCSI_PARAM_MAX_XMIT_DLENGTH)
+-#define ISCSI_HDRDGST_EN (1ULL << ISCSI_PARAM_HDRDGST_EN)
+-#define ISCSI_DATADGST_EN (1ULL << ISCSI_PARAM_DATADGST_EN)
+-#define ISCSI_INITIAL_R2T_EN (1ULL << ISCSI_PARAM_INITIAL_R2T_EN)
+-#define ISCSI_MAX_R2T (1ULL << ISCSI_PARAM_MAX_R2T)
+-#define ISCSI_IMM_DATA_EN (1ULL << ISCSI_PARAM_IMM_DATA_EN)
+-#define ISCSI_FIRST_BURST (1ULL << ISCSI_PARAM_FIRST_BURST)
+-#define ISCSI_MAX_BURST (1ULL << ISCSI_PARAM_MAX_BURST)
+-#define ISCSI_PDU_INORDER_EN (1ULL << ISCSI_PARAM_PDU_INORDER_EN)
+-#define ISCSI_DATASEQ_INORDER_EN (1ULL << ISCSI_PARAM_DATASEQ_INORDER_EN)
+-#define ISCSI_ERL (1ULL << ISCSI_PARAM_ERL)
+-#define ISCSI_IFMARKER_EN (1ULL << ISCSI_PARAM_IFMARKER_EN)
+-#define ISCSI_OFMARKER_EN (1ULL << ISCSI_PARAM_OFMARKER_EN)
+-#define ISCSI_EXP_STATSN (1ULL << ISCSI_PARAM_EXP_STATSN)
+-#define ISCSI_TARGET_NAME (1ULL << ISCSI_PARAM_TARGET_NAME)
+-#define ISCSI_TPGT (1ULL << ISCSI_PARAM_TPGT)
+-#define ISCSI_PERSISTENT_ADDRESS (1ULL << ISCSI_PARAM_PERSISTENT_ADDRESS)
+-#define ISCSI_PERSISTENT_PORT (1ULL << ISCSI_PARAM_PERSISTENT_PORT)
+-#define ISCSI_SESS_RECOVERY_TMO (1ULL << ISCSI_PARAM_SESS_RECOVERY_TMO)
+-#define ISCSI_CONN_PORT (1ULL << ISCSI_PARAM_CONN_PORT)
+-#define ISCSI_CONN_ADDRESS (1ULL << ISCSI_PARAM_CONN_ADDRESS)
+-#define ISCSI_USERNAME (1ULL << ISCSI_PARAM_USERNAME)
+-#define ISCSI_USERNAME_IN (1ULL << ISCSI_PARAM_USERNAME_IN)
+-#define ISCSI_PASSWORD (1ULL << ISCSI_PARAM_PASSWORD)
+-#define ISCSI_PASSWORD_IN (1ULL << ISCSI_PARAM_PASSWORD_IN)
+-#define ISCSI_FAST_ABORT (1ULL << ISCSI_PARAM_FAST_ABORT)
+-#define ISCSI_ABORT_TMO (1ULL << ISCSI_PARAM_ABORT_TMO)
+-#define ISCSI_LU_RESET_TMO (1ULL << ISCSI_PARAM_LU_RESET_TMO)
+-#define ISCSI_HOST_RESET_TMO (1ULL << ISCSI_PARAM_HOST_RESET_TMO)
+-#define ISCSI_PING_TMO (1ULL << ISCSI_PARAM_PING_TMO)
+-#define ISCSI_RECV_TMO (1ULL << ISCSI_PARAM_RECV_TMO)
+-#define ISCSI_IFACE_NAME (1ULL << ISCSI_PARAM_IFACE_NAME)
+-#define ISCSI_ISID (1ULL << ISCSI_PARAM_ISID)
+-#define ISCSI_INITIATOR_NAME (1ULL << ISCSI_PARAM_INITIATOR_NAME)
+-#define ISCSI_TGT_RESET_TMO (1ULL << ISCSI_PARAM_TGT_RESET_TMO)
+-#define ISCSI_TARGET_ALIAS (1ULL << ISCSI_PARAM_TARGET_ALIAS)
+-
+ /* iSCSI HBA params */
+ enum iscsi_host_param {
+ ISCSI_HOST_PARAM_HWADDRESS,
+ ISCSI_HOST_PARAM_INITIATOR_NAME,
+ ISCSI_HOST_PARAM_NETDEV_NAME,
+ ISCSI_HOST_PARAM_IPADDRESS,
++ ISCSI_HOST_PARAM_PORT_STATE,
++ ISCSI_HOST_PARAM_PORT_SPEED,
+ ISCSI_HOST_PARAM_MAX,
+ };
+
+-#define ISCSI_HOST_HWADDRESS (1ULL << ISCSI_HOST_PARAM_HWADDRESS)
+-#define ISCSI_HOST_INITIATOR_NAME (1ULL << ISCSI_HOST_PARAM_INITIATOR_NAME)
+-#define ISCSI_HOST_NETDEV_NAME (1ULL << ISCSI_HOST_PARAM_NETDEV_NAME)
+-#define ISCSI_HOST_IPADDRESS (1ULL << ISCSI_HOST_PARAM_IPADDRESS)
++/* portal type */
++#define PORTAL_TYPE_IPV4 "ipv4"
++#define PORTAL_TYPE_IPV6 "ipv6"
++
++/* iSCSI Flash Target params */
++enum iscsi_flashnode_param {
++ ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6,
++ ISCSI_FLASHNODE_PORTAL_TYPE,
++ ISCSI_FLASHNODE_AUTO_SND_TGT_DISABLE,
++ ISCSI_FLASHNODE_DISCOVERY_SESS,
++ ISCSI_FLASHNODE_ENTRY_EN,
++ ISCSI_FLASHNODE_HDR_DGST_EN,
++ ISCSI_FLASHNODE_DATA_DGST_EN,
++ ISCSI_FLASHNODE_IMM_DATA_EN,
++ ISCSI_FLASHNODE_INITIAL_R2T_EN,
++ ISCSI_FLASHNODE_DATASEQ_INORDER,
++ ISCSI_FLASHNODE_PDU_INORDER,
++ ISCSI_FLASHNODE_CHAP_AUTH_EN,
++ ISCSI_FLASHNODE_SNACK_REQ_EN,
++ ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN,
++ ISCSI_FLASHNODE_BIDI_CHAP_EN,
++ /* make authentication for discovery sessions optional */
++ ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL,
++ ISCSI_FLASHNODE_ERL,
++ ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT,
++ ISCSI_FLASHNODE_TCP_NAGLE_DISABLE,
++ ISCSI_FLASHNODE_TCP_WSF_DISABLE,
++ ISCSI_FLASHNODE_TCP_TIMER_SCALE,
++ ISCSI_FLASHNODE_TCP_TIMESTAMP_EN,
++ ISCSI_FLASHNODE_IP_FRAG_DISABLE,
++ ISCSI_FLASHNODE_MAX_RECV_DLENGTH,
++ ISCSI_FLASHNODE_MAX_XMIT_DLENGTH,
++ ISCSI_FLASHNODE_FIRST_BURST,
++ ISCSI_FLASHNODE_DEF_TIME2WAIT,
++ ISCSI_FLASHNODE_DEF_TIME2RETAIN,
++ ISCSI_FLASHNODE_MAX_R2T,
++ ISCSI_FLASHNODE_KEEPALIVE_TMO,
++ ISCSI_FLASHNODE_ISID,
++ ISCSI_FLASHNODE_TSID,
++ ISCSI_FLASHNODE_PORT,
++ ISCSI_FLASHNODE_MAX_BURST,
++ ISCSI_FLASHNODE_DEF_TASKMGMT_TMO,
++ ISCSI_FLASHNODE_IPADDR,
++ ISCSI_FLASHNODE_ALIAS,
++ ISCSI_FLASHNODE_REDIRECT_IPADDR,
++ ISCSI_FLASHNODE_MAX_SEGMENT_SIZE,
++ ISCSI_FLASHNODE_LOCAL_PORT,
++ ISCSI_FLASHNODE_IPV4_TOS,
++ ISCSI_FLASHNODE_IPV6_TC,
++ ISCSI_FLASHNODE_IPV6_FLOW_LABEL,
++ ISCSI_FLASHNODE_NAME,
++ ISCSI_FLASHNODE_TPGT,
++ ISCSI_FLASHNODE_LINK_LOCAL_IPV6,
++ ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX,
++ ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE,
++ ISCSI_FLASHNODE_TCP_XMIT_WSF,
++ ISCSI_FLASHNODE_TCP_RECV_WSF,
++ ISCSI_FLASHNODE_CHAP_IN_IDX,
++ ISCSI_FLASHNODE_CHAP_OUT_IDX,
++ ISCSI_FLASHNODE_USERNAME,
++ ISCSI_FLASHNODE_USERNAME_IN,
++ ISCSI_FLASHNODE_PASSWORD,
++ ISCSI_FLASHNODE_PASSWORD_IN,
++ ISCSI_FLASHNODE_STATSN,
++ ISCSI_FLASHNODE_EXP_STATSN,
++ ISCSI_FLASHNODE_IS_BOOT_TGT,
++
++ ISCSI_FLASHNODE_MAX,
++};
++
++struct iscsi_flashnode_param_info {
++ uint32_t len; /* Actual length of the param */
++ uint16_t param; /* iscsi param value */
++ uint8_t value[0]; /* length sized value follows */
++} __attribute__((__packed__));
++
++enum iscsi_discovery_parent_type {
++ ISCSI_DISC_PARENT_UNKNOWN = 0x1,
++ ISCSI_DISC_PARENT_SENDTGT = 0x2,
++ ISCSI_DISC_PARENT_ISNS = 0x3,
++};
++
++/* iSCSI port Speed */
++enum iscsi_port_speed {
++ ISCSI_PORT_SPEED_UNKNOWN = 0x1,
++ ISCSI_PORT_SPEED_10MBPS = 0x2,
++ ISCSI_PORT_SPEED_100MBPS = 0x4,
++ ISCSI_PORT_SPEED_1GBPS = 0x8,
++ ISCSI_PORT_SPEED_10GBPS = 0x10,
++};
++
++/* iSCSI port state */
++enum iscsi_port_state {
++ ISCSI_PORT_STATE_DOWN = 0x1,
++ ISCSI_PORT_STATE_UP = 0x2,
++};
+
+ /* iSCSI PING status/error code */
+ enum iscsi_ping_status_code {
+@@ -551,7 +774,7 @@ enum iscsi_ping_status_code {
+ #define CAP_DIGEST_OFFLOAD 0x1000 /* offload hdr and data digests */
+ #define CAP_PADDING_OFFLOAD 0x2000 /* offload padding insertion, removal,
+ and verification */
+-#define CAP_LOGIN_OFFLOAD 0x4000 /* offload normal session login */
++#define CAP_LOGIN_OFFLOAD 0x4000 /* offload session login */
+
+ /*
+ * These flags describes reason of stop_conn() call
+@@ -617,9 +840,16 @@ enum chap_type_e {
+ CHAP_TYPE_IN,
+ };
+
++enum iscsi_chap_param {
++ ISCSI_CHAP_PARAM_INDEX,
++ ISCSI_CHAP_PARAM_CHAP_TYPE,
++ ISCSI_CHAP_PARAM_USERNAME,
++ ISCSI_CHAP_PARAM_PASSWORD,
++ ISCSI_CHAP_PARAM_PASSWORD_LEN
++};
++
+ #define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256
+ #define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256
+-
+ struct iscsi_chap_rec {
+ uint16_t chap_tbl_idx;
+ enum chap_type_e chap_type;
+@@ -628,4 +858,112 @@ struct iscsi_chap_rec {
+ uint8_t password_length;
+ };
+
++#define ISCSI_HOST_STATS_CUSTOM_MAX 32
++#define ISCSI_HOST_STATS_CUSTOM_DESC_MAX 64
++struct iscsi_host_stats_custom {
++ char desc[ISCSI_HOST_STATS_CUSTOM_DESC_MAX];
++ uint64_t value;
++};
++
++/* struct iscsi_offload_host_stats: Host statistics,
++ * Include statistics for MAC, IP, TCP & iSCSI.
++ */
++struct iscsi_offload_host_stats {
++ /* MAC */
++ uint64_t mactx_frames;
++ uint64_t mactx_bytes;
++ uint64_t mactx_multicast_frames;
++ uint64_t mactx_broadcast_frames;
++ uint64_t mactx_pause_frames;
++ uint64_t mactx_control_frames;
++ uint64_t mactx_deferral;
++ uint64_t mactx_excess_deferral;
++ uint64_t mactx_late_collision;
++ uint64_t mactx_abort;
++ uint64_t mactx_single_collision;
++ uint64_t mactx_multiple_collision;
++ uint64_t mactx_collision;
++ uint64_t mactx_frames_dropped;
++ uint64_t mactx_jumbo_frames;
++ uint64_t macrx_frames;
++ uint64_t macrx_bytes;
++ uint64_t macrx_unknown_control_frames;
++ uint64_t macrx_pause_frames;
++ uint64_t macrx_control_frames;
++ uint64_t macrx_dribble;
++ uint64_t macrx_frame_length_error;
++ uint64_t macrx_jabber;
++ uint64_t macrx_carrier_sense_error;
++ uint64_t macrx_frame_discarded;
++ uint64_t macrx_frames_dropped;
++ uint64_t mac_crc_error;
++ uint64_t mac_encoding_error;
++ uint64_t macrx_length_error_large;
++ uint64_t macrx_length_error_small;
++ uint64_t macrx_multicast_frames;
++ uint64_t macrx_broadcast_frames;
++ /* IP */
++ uint64_t iptx_packets;
++ uint64_t iptx_bytes;
++ uint64_t iptx_fragments;
++ uint64_t iprx_packets;
++ uint64_t iprx_bytes;
++ uint64_t iprx_fragments;
++ uint64_t ip_datagram_reassembly;
++ uint64_t ip_invalid_address_error;
++ uint64_t ip_error_packets;
++ uint64_t ip_fragrx_overlap;
++ uint64_t ip_fragrx_outoforder;
++ uint64_t ip_datagram_reassembly_timeout;
++ uint64_t ipv6tx_packets;
++ uint64_t ipv6tx_bytes;
++ uint64_t ipv6tx_fragments;
++ uint64_t ipv6rx_packets;
++ uint64_t ipv6rx_bytes;
++ uint64_t ipv6rx_fragments;
++ uint64_t ipv6_datagram_reassembly;
++ uint64_t ipv6_invalid_address_error;
++ uint64_t ipv6_error_packets;
++ uint64_t ipv6_fragrx_overlap;
++ uint64_t ipv6_fragrx_outoforder;
++ uint64_t ipv6_datagram_reassembly_timeout;
++ /* TCP */
++ uint64_t tcptx_segments;
++ uint64_t tcptx_bytes;
++ uint64_t tcprx_segments;
++ uint64_t tcprx_byte;
++ uint64_t tcp_duplicate_ack_retx;
++ uint64_t tcp_retx_timer_expired;
++ uint64_t tcprx_duplicate_ack;
++ uint64_t tcprx_pure_ackr;
++ uint64_t tcptx_delayed_ack;
++ uint64_t tcptx_pure_ack;
++ uint64_t tcprx_segment_error;
++ uint64_t tcprx_segment_outoforder;
++ uint64_t tcprx_window_probe;
++ uint64_t tcprx_window_update;
++ uint64_t tcptx_window_probe_persist;
++ /* ECC */
++ uint64_t ecc_error_correction;
++ /* iSCSI */
++ uint64_t iscsi_pdu_tx;
++ uint64_t iscsi_data_bytes_tx;
++ uint64_t iscsi_pdu_rx;
++ uint64_t iscsi_data_bytes_rx;
++ uint64_t iscsi_io_completed;
++ uint64_t iscsi_unexpected_io_rx;
++ uint64_t iscsi_format_error;
++ uint64_t iscsi_hdr_digest_error;
++ uint64_t iscsi_data_digest_error;
++ uint64_t iscsi_sequence_error;
++ /*
++ * iSCSI Custom Host Statistics support, i.e. Transport could
++ * extend existing host statistics with its own specific statistics
++ * up to ISCSI_HOST_STATS_CUSTOM_MAX
++ */
++ uint32_t custom_length;
++ struct iscsi_host_stats_custom custom[0]
++ __attribute__ ((aligned (sizeof(uint64_t))));
++};
++
+ #endif
+diff --git a/include/iscsi_proto.h b/include/iscsi_proto.h
+index 1c69feb..56f757b 100644
+--- a/include/iscsi_proto.h
++++ b/include/iscsi_proto.h
+@@ -619,6 +619,7 @@ struct iscsi_reject {
+ #define KEY_MAXLEN 64
+ #define VALUE_MAXLEN 255
+ #define TARGET_NAME_MAXLEN VALUE_MAXLEN
++#define BOOT_NAME_MAXLEN 256
+
+ #define ISCSI_DEF_MAX_RECV_SEG_LEN 8192
+ #define ISCSI_MIN_MAX_RECV_SEG_LEN 512
+diff --git a/iscsiuio/.gitignore b/iscsiuio/.gitignore
+new file mode 100644
+index 0000000..a27452a
+--- /dev/null
++++ b/iscsiuio/.gitignore
+@@ -0,0 +1,25 @@
++# Autogenerated files
++stamp-h1
++Makefile.in
++Makefile
++configure
++config.h.in
++config.h
++config.guess
++config.log
++config.status
++config.sub
++COPYING
++
++.deps
++autom4te.cache
++
++# autotools
++aclocal.m4
++compile
++depcomp
++install-sh
++libtool
++ltmain.sh
++missing
++
+diff --git a/iscsiuio/AUTHORS b/iscsiuio/AUTHORS
+new file mode 100644
+index 0000000..e69de29
+diff --git a/iscsiuio/ChangeLog b/iscsiuio/ChangeLog
+new file mode 100644
+index 0000000..a91b4d5
+--- /dev/null
++++ b/iscsiuio/ChangeLog
+@@ -0,0 +1,7 @@
++Version 0.4.1 (July 20, 2009)
++ * Fix from Mike Christie to determine page size from getpagesize()
++ rather then the constant PAGE_SIZE. PAGE_SIZE is not defined om
++ ia64 and ppc.
++ * Update documentation to indicate IPv6 is not supported
++ * Fix code to catch the message from the CNIC that the network
++ interface is going down.
+diff --git a/iscsiuio/INSTALL b/iscsiuio/INSTALL
+new file mode 100644
+index 0000000..c9fd2c0
+--- /dev/null
++++ b/iscsiuio/INSTALL
+@@ -0,0 +1,290 @@
++Installation Instructions
++*************************
++
++Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
++2006, 2007, 2008 Free Software Foundation, Inc.
++
++ This file is free documentation; the Free Software Foundation gives
++unlimited permission to copy, distribute and modify it.
++
++Basic Installation
++==================
++
++ Briefly, the shell commands `./configure; make; make install' should
++configure, build, and install this package. The following
++more-detailed instructions are generic; see the `README' file for
++instructions specific to this package.
++
++ The `configure' shell script attempts to guess correct values for
++various system-dependent variables used during compilation. It uses
++those values to create a `Makefile' in each directory of the package.
++It may also create one or more `.h' files containing system-dependent
++definitions. Finally, it creates a shell script `config.status' that
++you can run in the future to recreate the current configuration, and a
++file `config.log' containing compiler output (useful mainly for
++debugging `configure').
++
++ It can also use an optional file (typically called `config.cache'
++and enabled with `--cache-file=config.cache' or simply `-C') that saves
++the results of its tests to speed up reconfiguring. Caching is
++disabled by default to prevent problems with accidental use of stale
++cache files.
++
++ If you need to do unusual things to compile the package, please try
++to figure out how `configure' could check whether to do them, and mail
++diffs or instructions to the address given in the `README' so they can
++be considered for the next release. If you are using the cache, and at
++some point `config.cache' contains results you don't want to keep, you
++may remove or edit it.
++
++ The file `configure.ac' (or `configure.in') is used to create
++`configure' by a program called `autoconf'. You need `configure.ac' if
++you want to change it or regenerate `configure' using a newer version
++of `autoconf'.
++
++The simplest way to compile this package is:
++
++ 1. `cd' to the directory containing the package's source code and type
++ `./configure' to configure the package for your system.
++
++ Running `configure' might take a while. While running, it prints
++ some messages telling which features it is checking for.
++
++ 2. Type `make' to compile the package.
++
++ 3. Optionally, type `make check' to run any self-tests that come with
++ the package.
++
++ 4. Type `make install' to install the programs and any data files and
++ documentation.
++
++ 5. You can remove the program binaries and object files from the
++ source code directory by typing `make clean'. To also remove the
++ files that `configure' created (so you can compile the package for
++ a different kind of computer), type `make distclean'. There is
++ also a `make maintainer-clean' target, but that is intended mainly
++ for the package's developers. If you use it, you may have to get
++ all sorts of other programs in order to regenerate files that came
++ with the distribution.
++
++ 6. Often, you can also type `make uninstall' to remove the installed
++ files again.
++
++Compilers and Options
++=====================
++
++ Some systems require unusual options for compilation or linking that
++the `configure' script does not know about. Run `./configure --help'
++for details on some of the pertinent environment variables.
++
++ You can give `configure' initial values for configuration parameters
++by setting variables in the command line or in the environment. Here
++is an example:
++
++ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
++
++ *Note Defining Variables::, for more details.
++
++Compiling For Multiple Architectures
++====================================
++
++ You can compile the package for more than one kind of computer at the
++same time, by placing the object files for each architecture in their
++own directory. To do this, you can use GNU `make'. `cd' to the
++directory where you want the object files and executables to go and run
++the `configure' script. `configure' automatically checks for the
++source code in the directory that `configure' is in and in `..'.
++
++ With a non-GNU `make', it is safer to compile the package for one
++architecture at a time in the source code directory. After you have
++installed the package for one architecture, use `make distclean' before
++reconfiguring for another architecture.
++
++ On MacOS X 10.5 and later systems, you can create libraries and
++executables that work on multiple system types--known as "fat" or
++"universal" binaries--by specifying multiple `-arch' options to the
++compiler but only a single `-arch' option to the preprocessor. Like
++this:
++
++ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
++ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
++ CPP="gcc -E" CXXCPP="g++ -E"
++
++ This is not guaranteed to produce working output in all cases, you
++may have to build one architecture at a time and combine the results
++using the `lipo' tool if you have problems.
++
++Installation Names
++==================
++
++ By default, `make install' installs the package's commands under
++`/usr/local/bin', include files under `/usr/local/include', etc. You
++can specify an installation prefix other than `/usr/local' by giving
++`configure' the option `--prefix=PREFIX'.
++
++ You can specify separate installation prefixes for
++architecture-specific files and architecture-independent files. If you
++pass the option `--exec-prefix=PREFIX' to `configure', the package uses
++PREFIX as the prefix for installing programs and libraries.
++Documentation and other data files still use the regular prefix.
++
++ In addition, if you use an unusual directory layout you can give
++options like `--bindir=DIR' to specify different values for particular
++kinds of files. Run `configure --help' for a list of the directories
++you can set and what kinds of files go in them.
++
++ If the package supports it, you can cause programs to be installed
++with an extra prefix or suffix on their names by giving `configure' the
++option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
++
++Optional Features
++=================
++
++ Some packages pay attention to `--enable-FEATURE' options to
++`configure', where FEATURE indicates an optional part of the package.
++They may also pay attention to `--with-PACKAGE' options, where PACKAGE
++is something like `gnu-as' or `x' (for the X Window System). The
++`README' should mention any `--enable-' and `--with-' options that the
++package recognizes.
++
++ For packages that use the X Window System, `configure' can usually
++find the X include and library files automatically, but if it doesn't,
++you can use the `configure' options `--x-includes=DIR' and
++`--x-libraries=DIR' to specify their locations.
++
++Particular systems
++==================
++
++ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
++CC is not installed, it is recommended to use the following options in
++order to use an ANSI C compiler:
++
++ ./configure CC="cc -Ae"
++
++and if that doesn't work, install pre-built binaries of GCC for HP-UX.
++
++ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
++parse its `<wchar.h>' header file. The option `-nodtk' can be used as
++a workaround. If GNU CC is not installed, it is therefore recommended
++to try
++
++ ./configure CC="cc"
++
++and if that doesn't work, try
++
++ ./configure CC="cc -nodtk"
++
++Specifying the System Type
++==========================
++
++ There may be some features `configure' cannot figure out
++automatically, but needs to determine by the type of machine the package
++will run on. Usually, assuming the package is built to be run on the
++_same_ architectures, `configure' can figure that out, but if it prints
++a message saying it cannot guess the machine type, give it the
++`--build=TYPE' option. TYPE can either be a short name for the system
++type, such as `sun4', or a canonical name which has the form:
++
++ CPU-COMPANY-SYSTEM
++
++where SYSTEM can have one of these forms:
++
++ OS KERNEL-OS
++
++ See the file `config.sub' for the possible values of each field. If
++`config.sub' isn't included in this package, then this package doesn't
++need to know the machine type.
++
++ If you are _building_ compiler tools for cross-compiling, you should
++use the option `--target=TYPE' to select the type of system they will
++produce code for.
++
++ If you want to _use_ a cross compiler, that generates code for a
++platform different from the build platform, you should specify the
++"host" platform (i.e., that on which the generated programs will
++eventually be run) with `--host=TYPE'.
++
++Sharing Defaults
++================
++
++ If you want to set default values for `configure' scripts to share,
++you can create a site shell script called `config.site' that gives
++default values for variables like `CC', `cache_file', and `prefix'.
++`configure' looks for `PREFIX/share/config.site' if it exists, then
++`PREFIX/etc/config.site' if it exists. Or, you can set the
++`CONFIG_SITE' environment variable to the location of the site script.
++A warning: not all `configure' scripts look for a site script.
++
++Defining Variables
++==================
++
++ Variables not defined in a site shell script can be set in the
++environment passed to `configure'. However, some packages may run
++configure again during the build, and the customized values of these
++variables may be lost. In order to avoid this problem, you should set
++them in the `configure' command line, using `VAR=value'. For example:
++
++ ./configure CC=/usr/local2/bin/gcc
++
++causes the specified `gcc' to be used as the C compiler (unless it is
++overridden in the site shell script).
++
++Unfortunately, this technique does not work for `CONFIG_SHELL' due to
++an Autoconf bug. Until the bug is fixed you can use this workaround:
++
++ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
++
++`configure' Invocation
++======================
++
++ `configure' recognizes the following options to control how it
++operates.
++
++`--help'
++`-h'
++ Print a summary of all of the options to `configure', and exit.
++
++`--help=short'
++`--help=recursive'
++ Print a summary of the options unique to this package's
++ `configure', and exit. The `short' variant lists options used
++ only in the top level, while the `recursive' variant lists options
++ also present in any nested packages.
++
++`--version'
++`-V'
++ Print the version of Autoconf used to generate the `configure'
++ script, and exit.
++
++`--cache-file=FILE'
++ Enable the cache: use and save the results of the tests in FILE,
++ traditionally `config.cache'. FILE defaults to `/dev/null' to
++ disable caching.
++
++`--config-cache'
++`-C'
++ Alias for `--cache-file=config.cache'.
++
++`--quiet'
++`--silent'
++`-q'
++ Do not print messages saying which checks are being made. To
++ suppress all normal output, redirect it to `/dev/null' (any error
++ messages will still be shown).
++
++`--srcdir=DIR'
++ Look for the package's source code in directory DIR. Usually
++ `configure' can determine that directory automatically.
++
++`--prefix=DIR'
++ Use DIR as the installation prefix. *Note Installation Names::
++ for more details, including other options available for fine-tuning
++ the installation locations.
++
++`--no-create'
++`-n'
++ Run the configure checks, but stop before creating any output
++ files.
++
++`configure' also accepts some other, not widely useful, options. Run
++`configure --help' for more details.
+diff --git a/iscsiuio/Makefile.am b/iscsiuio/Makefile.am
+new file mode 100644
+index 0000000..28dd776
+--- /dev/null
++++ b/iscsiuio/Makefile.am
+@@ -0,0 +1,25 @@
++SUBDIRS= src
++
++EXTRA_DIST = build_date
++
++build_date:
++ echo 'char *build_date = "'`date`'";' > build_date.c
++ echo 'char *build_date;'> build_date.h
++
++manprefix = /usr/share
++mandir = ${manprefix}/man
++logdir = /etc/logrotate.d
++
++install-am: all-am
++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install-man install-log install-brcm
++
++install-man:
++ cat docs/iscsiuio.8 | GZIP=$(GZIP_ENV) gzip -c > iscsiuio.8.gz
++ $(INSTALL_PROGRAM) iscsiuio.8.gz $(mandir)/man8
++
++install-log:
++ $(INSTALL_PROGRAM) iscsiuiolog $(logdir)
++
++install-brcm:
++ -rm -f $(sbindir)/brcm_iscsiuio
++ -ln -s $(sbindir)/iscsiuio $(sbindir)/brcm_iscsiuio
+diff --git a/iscsiuio/NEWS b/iscsiuio/NEWS
+new file mode 100644
+index 0000000..e69de29
+diff --git a/iscsiuio/README b/iscsiuio/README
+new file mode 100644
+index 0000000..a283116
+--- /dev/null
++++ b/iscsiuio/README
+@@ -0,0 +1,224 @@
++Iscsiuio Userspace Tool
++Version 0.7.8.2
++Dec 10, 2013
++------------------------------------------------------
++
++This tool is to be used in conjunction with the Broadcom NetXtreme II Linux
++driver (Kernel module name: 'bnx2' and 'bnx2x'), Broadcom CNIC driver,
++and the Broadcom iSCSI driver (Kernel module name: 'bnx2i').
++This user space tool is used in conjunction with the following
++Broadcom Network Controllers:
++ bnx2: BCM5706, BCM5708, BCM5709 devices
++ bnx2x: BCM57710, BCM57711, BCM57711E, BCM57712, BCM57712E,
++ BCM57800, BCM57810, BCM57840 devices
++
++This utility will provide the ARP and DHCP functionality for the iSCSI offload.
++The communication to the driver is done via Userspace I/O (Kernel module name
++'uio').
++
++There is one component to this application:
++
++1. 'iscsiuio' - This is the daemon which aids in creating iSCSI offloaded
++ connections.
++
++Dependencies:
++=======================================
++
++Linux Kernel Dependencies:
++1. Broadcom CNIC driver (cnic)
++1. Broadcom iSCSI offload driver (bnx2i)
++2. Userspace I/O driver (uio)
++
++Directory Structure of this Package:
++=======================================
++
++<root>
++ |
++ +-doc (documentation directory: man pages)
++ |
++ +-src
++ |
++ +- uip - the uIP stack
++ |
++ +- unix - iscsiuio source
++
++
++
++Compiling / Installing
++=======================================
++
++1. Please untar the tarball.
++2. Run the configure script. This will create the Makefiles and proper
++ header files needed for the build.
++3. Run 'make'. This will create the binary, 'iscsiuio'
++4. Run 'make install' to place the binaries in their installed location.
++ (The default location is '/sbin')
++
++iscsid IFACE Configuration File:
++=======================================
++The network interface configuration files are driven by the iscsid iface
++files. The configuration data is parsed by iscsid and passed to the uIP
++stack when the connection is established.
++
++One can use the following iscsiadm commands to create/set the configuration
++using the iface files:
++
++1. Create the iface file:
++
++ iscsiadm -m iface -I <iface name> --op=new
++
++2. Discover the targets associated with the new iface
++
++ iscsiadm -m discovery -t st -p <iSCSI target IP address> -I <iface name>
++
++3. Update the iface file:
++
++ To use a static IPv4 address:
++ iscsiadm -m iface -I <iface name> --op=update --name=iface.ipaddress --value=<static IPv4 address ie: 192.168.0.1>
++
++ To use a DHCP address:
++ iscsiadm -m iface -I <iface name> --op=update --name=iface.ipaddress --value=0.0.0.0
++
++ The following values are required.
++
++ To specify the bnx2i as the transport:
++ iscsiadm -m iface -I <iface name> --op=update --name=iface.transport_name --value=bnx2i
++
++ To specify the network interface to offload with:
++
++ a. Specify the physical network interface name <ie. eth0, eth1, eth2 ...>
++ iscsiadm -m iface -I <iface name> --op=update --name=iface.net_ifacename --value=<network interface name>
++
++ b. Specify the iSCSI MAC address of the iSCSI HBA
++ iscsiadm -m iface -I <iface name> --op=update --name=iface.hwaddress --value=<MAC address of the iSCSI HBA>
++
++4. Now all the settings should be set so that one could connect to their
++ desired iSCSI target.
++
++ iscsiadm -m node -p <iSCSI target IP address> -T <target name> -I <iface name> --login
++
++bnx2 Limitations:
++=======================================
++* RX iSCSI ring:
++ * default ring size is 3 entries
++ * default buffer size is 0x400 bytes
++* TX iSCSI ring:
++ * default ring size of 1 entry
++ * default buffer size is 0x400 bytes
++
++bnx2x Limitations:
++=======================================
++* RX iSCSI ring:
++ * default ring size is 15 entries
++ * default buffer size is 0x400 bytes
++* TX iSCSI ring:
++ * default ring size of 1 entry
++ * default buffer size is 0x400 bytes
++
++Other Limiations:
++
++Any packets larger then the buffer size will not be sent/received by the
++hardware and will be dropped.
++
++IPv6 support:
++
++IPv6 NDP (neighbor discovery protocol), DHCPv6 and Static IPv6 are now
++supported. The IPv6 address used for the connection will be matched against
++the DHCPv6/static IPv6 address, the RA (router advertise) address, and the
++assigned link local address.
++
++VLAN support:
++
++VLAN support is only supported when using static IP addresses.
++Also, currently only 1 VLAN is supported per physical network interface.
++Either non-VLAN offloaded traffic is allowed or VLAN offloaded traffic
++is allowed. The current implementation does not support both at the
++same time.
++
++Currently there is no explicit VLAN attributes in the iface file.
++To configure the VLAN offload, the iface.hwaddress attribute or
++physical net_ifacename (without the VLAN identifier) must be used
++to specify the HBA device. For the proper CNIC routing, the
++corresponding L2 interface which has the associated VLAN interface must
++have an IP address on the same subnet.
++
++The following attributes need to be filled when offloading via the
++VLAN interface:
++
++ iface.iscsi_ifacename = <name of this iface file>
++ iface.hwaddress = XX:XX:XX:XX:XX:XX
++ iface.ipaddress = XX.XX.XX.XX
++ iface.transport_name = bnx2i
++
++Setting IP address:
++
++On RHEL5.4, RHEL5.5+, RHEL6.0+, and SLES11SP1 distributions,
++discovery login is done over the Linux TCP/IP stack and L2 network
++interface. The ethx interface corresponding to the HBA must
++therefore be in the same IP subnet in order to reach the iSCSI
++target during discovery. However, the HBA's IP address should not
++be the same as the L2 ethx's IP address.
++
++Starting with RHEL6.1 and all other newer distributions, discovery
++using SendTargets is done over the HBA interface, so there is no
++need for the HBA and L2 network to be on the same subnet. However,
++if VLAN is used on the HBA, they still have to be on the same subnet
++as described above.
++
++
++Setting Netmask and Gateway addresses:
++
++With the current limitations of the iface file, there are no entries
++to allow the user to enter a netmask or gateway IP address.
++
++The only way to explicitly configure these options is to use DHCP
++addressing. Then the netmask/gateway are set on the DHCP server.
++These settings are then sent to uIP via the DHCPOFFERs.
++
++If the netmask is not defined then the netmask are automatically
++generated depending on the destination IP address.
++
++Debugging:
++=======================================
++
++By default, the iscsiuio daemon does not output any messages to the log file,
++'/var/log/iscsiuio.log'. Message logging is only enabled when the daemon is
++run under debug mode.
++
++To run the daemon in debug mode please pass the parameter '-d <debug level>'
++
++where the following debug levels are defined:
++
++DEBUG 4 - Print all messages
++INFO 3 - Print messages needed to follow the uIP code (default)
++WARN 2 - Print warning messages
++ERROR 1 - Only print critical errors
++
++A sample banner message:
++
++INFO [Mon Jun 20 11:23:14 2011]Started iSCSI uio stack: Ver 0.7.0.6
++INFO [Mon Jun 20 11:23:14 2011]Build date: Mon Jun 20 11:22:05 PDT 2011
++INFO [Mon Jun 20 11:23:14 2011]Debug mode enabled
++
++These messages can be used to help debug any issues.
++
++When debugging issues like the iscsid, the iscsiuio daemon can be run
++in the foreground and the maximum debugging level should be used.
++
++To place the daemon in foreground mode please pass the parameter '-f'
++
++Note: The messages to the log file are not flushed unless debugging is enabled.
++
++Note: If the daemon iscsiuio is running, one will not be able to
++ trample over the existing binary. One might see the following message:
++
++ 'cannot create regular file `/sbin/iscsiuio': Text file busy'
++
++ The solve this, please stop the iscsid service and then install.
++
++Warning: If full debug is enabled, this may quickly fill the partition
++containing the iscsiuio logs. This is because full debugging will log
++packet activity which on a busy network will quickly fill the logs.
++
++Note: If the bnx2i and cnic drivers are unloaded, then iscsiuio will also
++need to be restarted so that it can determine the iscsid version.
+diff --git a/iscsiuio/RELEASE.TXT b/iscsiuio/RELEASE.TXT
+new file mode 100644
+index 0000000..48feedd
+--- /dev/null
++++ b/iscsiuio/RELEASE.TXT
+@@ -0,0 +1,2031 @@
++ Release Notes
++ Broadcom uIP Linux Driver
++ Version 0.7.8.2
++ 12/10/2013
++
++ Broadcom Corporation
++ 5300 California Avenue,
++ Irvine, CA 92617
++
++ Copyright (c) 2004 - 2013 Broadcom Corporation
++ All rights reserved
++
++uIP v0.7.10.2 (Feb 12, 2014)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00072504 - ifconfig shows allocation failure after
++ up/down few hours with iSCSI + L2 traffic
++ Cause: A memory leak was discovered in the ongoing pthread creation
++ destruction code during the connection recovery process
++ Change: Fixed the pthread creation code
++ Impact: All
++
++
++uIP v0.7.8.2 (Dec 10, 2013)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00072053 - Some hardware iSCSI paths fail during test
++ Cause: The test exercised a corner case where the ARP cache flush
++ mechanism didn't work properly
++ Change: Fixed the ARP cache flush mechanism
++ Impact: All
++
++ Enhancements
++ ------------
++ 1. Change: Added a new tx doorbell field in the uio path to work with
++ the new bnx2x/cnic drivers that supports VF_RSS
++ Impact: 10G only
++
++ 2. Change: Fixed the iface.subnet_mask decoding for IPv6
++ Impact: IPv6
++
++
++uIP v0.7.8.1b (May 01, 2013)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Performance optimization by caching the page size
++ Impact: All
++
++ 2. Change: Fixed a bug in the tx completion interrupt handler
++ Impact: 10G only
++
++
++uIP v0.7.6.1g (Jan 14, 2013)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00067316 - IPv6 address prefix length < 32
++ bits fails to connect
++ Cause: CIDR notation has an order bug in the IPv6 section
++ whenever the prefix length specified is < 32
++ Change: Fixed the network order bug
++ Impact: IPv6 only
++
++
++uIP v0.7.6.1f (Nov 14, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00065768 - RHEL5.X iscsiuio segfault possible
++ if there is a specific 1024 byte size broadcast
++ packet
++ Cause: This is another corner case where the packet size
++ is also exactly 1024 bytes + padding that exceeded
++ the DMA rx buffer. The previous fix was not
++ sufficient
++ Change: Ensure that the packet size + padding do not
++ exceed this limit.
++ Impact: 10G only. 1G already has the guard against it.
++
++
++uIP v0.7.6.1e (Nov 07, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00066397 - Unable to connect to iSCSI target
++ with NPAR enabled on 57840
++ Cause: The PCI device ID for 57840_MF has been changed from
++ 0x16ab to 0x16a4
++ Change: Updated the PCI id table to match exactly what the
++ bnx2x 1.76 indicates
++ Impact: 57840 MF
++
++
++uIP v0.7.6.1d (Oct 31, 2012)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Added support for open-iscsi-2.0.873
++ Impact: All
++
++
++uIP v0.7.6.1c (Oct 15, 2012)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Added support for 10G 57840 4x10 and 2x20
++ Impact: 10G 57840
++
++
++uIP v0.7.6.1b (Oct 09, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00065690 - Vconfig method of connecting over
++ tagged vlan with IPv6 failed
++ Cause: The new net param support changes has prevented
++ the old vconfig method from execising the IPv6
++ acquisition engine properly
++ Change: Ensure that this old vconfig method to run the IPv6
++ acquisition engine properly and to its entirety
++ Impact: IPv6 + VLAN using the network VLAN configuration
++ method
++
++ 2. Problem: Cont00065768 - RHEL5.X iscsiuio segfault possible
++ if there is a specific 1024 byte size broadcast
++ packet
++ Cause: This is a corner case where the packet size is
++ exactly 1024 bytes + padding that exceeded the
++ DMA rx buffer. This has been there since day 1.
++ Change: Ensure that the packet size + padding do not
++ exceed this limit.
++ Impact: 10G only. 1G already has the guard against it.
++
++
++ Enhancements
++ ------------
++ 1. Change: Source optimization - backported source code fixes
++ as reported from the upstream submission patch
++ Impact: ALL
++
++
++uIP v0.7.4.2k (Aug 10, 2012)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Enable HP SD mode
++ Impact: 577XX/578XX
++
++
++uIP v0.7.4.2j (Jul 18, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00064665 - Linux iSCSI connects via gateway address
++ on the wrong subnet
++ Cause: The gateway address used was not checked against the
++ subnet mask specified before the ARP requests. Since
++ this behavior deters from how L2 operates, therefore,
++ a change was made to correct this.
++ Change: Added check of the gateway specified against the subnet
++ specified.
++ Impact: Static IPv4 operation
++
++ 2. Problem: Cont00064722 - Linux iSCSI unable to force IPv6 LL
++ override (advanced iface parameters)
++ Cause: The override LL address was not being populated to the
++ IPv6 address database correctly
++ Change: Added this correctly to the IPv6 initialization
++ Impact: Static/DHCP IPv6 LL address override only
++
++
++uIP v0.7.4.2i (Jul 11, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00064604 - Fails to connect to routed IPv6 target
++ via RA
++ Cause: The default router IPv6 address was not being retrieved
++ correctly.
++ Change: Fixed the default router IPv6 address read
++ Impact: All
++
++
++uIP v0.7.4.2h (Jun 15, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00063863 - can't boot into offload image
++ when VLAN is enabled
++ Cause: During the iSCSI login exchange, certain iSCSI targets
++ will send an ARP request even though the TCP connection
++ has been made. The bug was in this ARP reply where
++ the local MAC was corrupted when VLAN is enabled.
++ Change: Fixed the ARP reply packet
++ Impact: All
++
++
++uIP v0.7.4.2g (Jun 08, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00063816 - The initiator is not able to connect
++ to the iSCSI targets over VLAN
++ Cause: The process packet routine did not consider the PCP
++ of the VLAN tag to be non-zero. This created a
++ mismatch when this VLAN tag was compared against the
++ nic_iface->vlan_id which doesn't include the PCP.
++ Change: Added the consideration of non-zero PCP
++ Impact: All
++
++
++uIP v0.7.4.2f (Jun 04, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00063626 - Static IPv6 does not connect when
++ the prefix len is not set explicitly
++ Cause: The IPv6 prefix length was not set correctly
++ for Static IPv6 operation when CIDR notation is
++ not specified
++ Change: Fixed the default prefix length
++ Impact: Static IPv6
++
++ 2. Problem: Cont00063651 - Cannot connect to iSCSI targets
++ HP PTM/SF
++ Cause: Switch-Dependent mode + invalid Outer VLAN was
++ not supported
++ Change: Allow SD+invalid OV to fallback to SF operation mode
++ Impact: 5771X/578XX
++
++
++uIP v0.7.4.2e (May 30, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00063443 - Compilation error on SLES11sp1
++ Cause: The iface_num field was not defined
++ Change: Fixed all references to iface_num
++ Impact: SLES11sp1
++
++ 2. Problem: Cont00063518 - HBA fails to connect across router
++ using iface.gateway address
++ Cause: The gateway override code did not populate the
++ address into the lower level engine
++ Change: Fixed the gateway override code
++ Impact: IPv4 Static IP operation
++
++ 3. Problem: Cont00063567 - IPv6 LL and RA override does not work
++ Cause: The IPv6 LL/RA override addresses were overwritten
++ by the NDP engine
++ Change: Fixed the LL/RA override code
++ Impact: IPv6 operation
++
++ Enhancements
++ ------------
++ 1. Added support for jumbo MTU (independent from the L2 MTU)
++
++
++uIP v0.7.4.2d (May 21, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00063421 - Static IPv6 cannot connect via RA/LL
++ Cause: The router advertise and the linklocal address
++ were corrupted due to the override capabilities
++ added for the newer open-iscsi util
++ Change: Fixed the address override code
++ Impact: Static IPv6
++
++ Enhancements
++ ------------
++ 1. Allow VLAN tag = 1 (router management) to connect offload
++
++
++uIP v0.7.4.2c (May 09, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: RHEL BZ 734010/804580 - issues found by the Coverity
++ scan
++ Cause: 10 code issues were flagged for revision
++ Change: Fixed all area of concern
++ Impact: All
++
++ 2. Problem: Cont00063177 - IPv4 DHCP with VLAN specification in
++ iface file gets wrong address
++ Cause: The DHCPv4 handler was not discriminating the VLAN tag
++ associated with the DHCP offers from multiple DHCP
++ servers
++ Change: Changed the DHCPv4 handler to drop DHCP offer packets
++ that doesn't match the VLAN tag of the intended DHCP
++ discovery packet
++ Impact: DHCPv4 operation
++
++
++uIP v0.7.4.2b (May 01, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00062993 - IPv6 DHCP with VLAN specification in
++ iface file gets wrong address
++ Cause: The DHCPv6 request was using the same DUID as always
++ so the non-VLAN DHCP server responded to our broadcast
++ instead
++ Change: Changed the DHCPv6 request DUID to link address + time
++ instead of link address alone
++ Impact: DHCPv6 operation
++
++
++uIP v0.7.4.1j (Apr 24, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00062805 - Cannot login to iSCSI targets on RHEL6.3
++ Cause: The problem was caused by a change made to the iface_rec
++ structure in the RHEL6.3 inbox open-iscsi util
++ Change: The new changes is now incorporated
++ Impact: All
++
++
++uIP v0.7.4.1i (Apr 16, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00062660 - Unable to login with VLAN iscsiuio
++ on RHEL6.2
++ Cause: The open-iscsi util in RHEL6.2 has a bug which
++ does not pass the correct iface_num to iscsiuio
++ Change: Added workaround to fall back to do the legacy
++ VLAN support if iface_num and vlan_id = 0
++ Impact: RHEL6.2
++
++
++uIP v0.7.4.1h (Apr 13, 2012)
++=======================================================
++ Enhancements
++ ------------
++ 1. Added support for the new iface_num field in the iscsi_uevent
++ path
++
++ 2. Fixed bug in the nic_iface search engine based on iface_num
++
++
++uIP v0.7.4.1g (Mar 22, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00061869 - Unable to setup an offload iSCSI
++ connection with FLR/NPAR under ESX5.0:PDA
++ Cause: The physical function ID was previously extracted
++ from the sysfs of the VM which might not be consistent
++ to the actual physical setup due to the function
++ remapping in the hypervisor
++ Change: Read the physical function ID directly from the BAR0
++ ME register
++ Impact: All
++
++ 2. Problem: Cont00062170 - IPv6 login/logout stress fails
++ Cause: The packet interrupt was lost after running the test
++ for a much longer period of time. A bug in the
++ packet processing routine was found to exit prematurely
++ Change: Fixed the packet processing routine to process all
++ packets before exiting
++ Impact: All
++
++
++uIP v0.7.4.1f (Mar 19, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00062170 - IPv6 login/logout stress fails
++ Cause: The packet buffer routine for IPv6 did not take
++ network order <-> host order into consideration
++ Change: Added a htons call to compensate for the ntohs pair
++ Impact: All
++
++
++uIP v0.7.4.1e (Mar 08, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00061978 - Load/unload stress test fails
++ Cause: The bnx2x open request was failing due to the module
++ request procedure. However, the open failure was
++ not being handled correctly.
++ Change: Fixed the device open error handling
++ Impact: 5771X/578XX
++
++
++uIP v0.7.4.1d (Mar 02, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00061708 - Unable to log into target after running
++ driver load/unload
++ Cause: A bug was introduced in the previous bug fix (CQ61459)
++ where a pthread_cond_broadcast call was erroneously
++ enabled
++ Change: Restored this back
++ Impact: All
++
++
++uIP v0.7.4.1c (Feb 16, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00061529 - Unable to connect to target after an
++ initial failed login attempt until iscsi service is
++ restarted
++ Cause: Upon a failed DHCPv4 acquisition due to the wrong VLAN
++ tag in the initial iface setup, any iscsid connect request
++ from the same NIC will get dropped due to a bug.
++ Change: Fixed the bug which prevented new iscsid connect requests
++ from getting honored
++ Impact: All
++
++ Enhancements
++ ------------
++ 1. Updated README
++
++
++uIP v0.7.4.1b (Feb 08, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00061513 - Unable to connect to target over VLAN
++ interface
++ Cause: The VLAN id was not properly passed back to the CNIC
++ driver for the offload request
++ Change: Fixed the VLAN id being passed back to the CNIC driver
++ Impact: All
++
++
++uIP v0.7.4.1a (Feb 01, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00049383 - No mechanism in iface file to support
++ gateway/routing
++ Change: Added support for the additional network parameters
++ as passed from the newer iscsi-util.
++ These parameters include:
++ IPv4: subnet_mask, gateway
++ IPv6: ipv6_linklocal, ipv6_router,
++ ipv6_autocfg, linklocal_autocfg, router_autocfg
++ VLAN: vlan_id, vlan_priority, vlan_state
++ Other: mtu, port
++ Impact: All
++
++ 2. Problem: Cont00060806 - Unable to connect target using DHCP over
++ tagged VLAN
++ Change: DHCP+VLAN is a new feature enhancement that was added
++ alongside all other new iface parameters.
++ Impact: All
++
++
++ Enhancements
++ ------------
++ 1. Lock iscsid's connect request with path_req so connect requests
++ with DHCP/Static will no longer override each other
++
++ 2. Fixed the if_down handler from global to nic specific
++
++ 3. Fixed various synchronization issues
++
++
++uIP v0.7.2.1e (Jan 05, 2012)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00060734 - ifupdown-mtu change stress with active
++ session causes iscsiuio to fail
++ Change: Fixed a race condition between the nic enable thread
++ and when DHCP fails
++ Impact: All
++
++
++uIP v0.7.2.1d (Dec 28, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00060368 - segfault observed after failing both
++ mpio paths
++ Change: Various memory leaks were identified and resolved in
++ the nic cleanup path
++ Impact: All
++
++
++uIP v0.7.2.1c (Dec 16, 2011)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Disable HP SD mode
++
++
++uIP v0.7.2.1b (Dec 14, 2011)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Default iscsiuio logging to off. Use the '-d'
++ option to enable
++
++
++uIP v0.7.0.14g (Oct 25, 2011)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Fixed the compilation under RHEL6.2
++ 2. Change: Added oom_adjust call to prevent OOM Killer from killing
++ iscsiuio when memory is low
++ 3. Change: Added mlockall setting to prevent page swap
++
++
++uIP v0.7.0.14f (Oct 20, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00058994 - DOS vulnerability in uip during UDP flood
++ Cause: The warning messages from the UDP handler was logging
++ at a rate faster than the log file logrotate rate
++ Therefore, the system's OOM eventually got kicked in to
++ start terminating running processes which includes iscsiuio
++ Change: Moved several UDP warning messages from the default log
++ level to the debug log level
++ Impact: All (minor)
++
++ 2. Problem: Cont00059288 - Show segfault w/ SLES11 SP1 Xen kernel
++ Cause: The bnx2x chip_id was not read correctly from the PCIe BAR1
++ under the Xen kernel. The error was in the mmap area.
++ Change: Corrected the mmapping of the PCI MMIO space.
++ Impact: Xen kernels
++
++ Enhancements
++ ------------
++ 1. Change: Changed the log file open error to a warning and let
++ the daemon progress. This was only observed under iSCSI boot
++
++
++uIP v0.7.0.14e (Sep 19, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00058678 - Can not iboot target from ipv6 path
++ using VLAN
++ Cause: A bug was found in the path request path where the vlan
++ iface's protocol family was not used correctly in the
++ iface search
++ Change: This has been corrected
++
++
++uIP v0.7.0.14d (Sep 16, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00058602 - Can't iboot using IPv6 offload path
++ Cause: The bug was exposed by a fix in 0.7.0.14c where the
++ IPv6 router solicitation timeout exceeded the nic
++ enable thread timeout.
++ Change: The IPv6 router solicitation timeout has been adjusted
++
++
++uIP v0.7.0.14c (Sep 01, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00058256 - Sessions fail after loginstress to via
++ simultaneous ipv4 and ipv6 dhcp
++ Cause: Switching between DHCPv4/v6 coupled with VLAN exposed
++ a drawback in our nic_iface architecture design where
++ VLAN is not specified by iscsid.
++ Change: The code was optimized and improved the performance when
++ switching between DHCPv4/v6+VLAN. However, the ultimate
++ fix is to make use of the net config parameters introduced
++ in the newer open-iscsi util which will identify the
++ specific VLAN nic_iface to use.
++
++ Enhancements
++ ------------
++ 1. Change: Added support for bnx2x-1.71.00
++
++
++uIP v0.7.0.14b (Aug 23, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00057840 - RHEL6.2 inbox: Unable to connect to
++ targets with 5709
++ Cause: For cases when the bnx2/bnx2x driver gets removed, the
++ uio database that was built by cnic would have the device
++ ->net reference removed. This has caused an unnecessary
++ timeout of 5s for each stale uio entry in the database.
++ Change: Adjusted the routine which seeks the device->net entry
++ to include more logic instead of hard waiting for 5s.
++
++ Enhancements
++ ------------
++ 1. Change: Added support for RHEL6.2 for out-of-box release
++ 2. Change: Updated the man page with -h and -p info
++ 3. Change: Updated the -h info
++
++
++uIP v0.7.0.13 (Aug 10, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00057768 - iscsiuio logrotate causes daemon failure
++ Cause: The logrotate script will send a SIGUSR1 signal to notify
++ the iscsiuio daemon of such action. However, the daemon
++ wasn't programmed to catch this signal.
++ Change: Restored the catching of this signal
++
++
++uIP v0.7.0.12 (Aug 04, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00050634 - brcm_iscsiuio Tainted: running IoZone,
++ Iometer and receiving a UDP flood on 3260
++ Cause: Upon iscsiuio termination, because of the UDP flood,
++ the nic thread will be busy servicing those UDP packets
++ while the signal handling thread will free up all nic
++ resources. The two threads were not in sync.
++ Change: Added a nic_remove_all routine to destroy all nic threads
++ before the nic resources get freed.
++
++ Enhancements
++ ------------
++ 1. Change: Fixed all warnings as reported by RHELS' Coverity testing.
++
++
++uIP v0.7.0.11 (Aug 02, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Erroneous VLAN tag was being passed by iscsid for connect
++ request
++ Cause: The iscsid's iface_rec_t ipc message does not contain this
++ vlan field. This field was added in uIP for future vlan
++ support. Since the buffer allocated to receive such message
++ in uIP didn't get initialized, therefore, garbled up VLAN
++ tag was getting used.
++ Change: Added the initialization of this buffer.
++
++
++uIP v0.7.0.10 (Jul 26, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Can't offload when switching from Static to DHCP then back to
++ Static IPv4 when connecting through a VLAN interface
++ Cause: The VLAN processing code did not reinstall the IP address
++ from the default nic_iface to the associated VLAN nic_iface.
++ This was only done on the very first time when the VLAN
++ interface was created and not on subsequent instances.
++ Change: Added code to mirror the default nic_iface IP/netmask/ip_config
++ on the VLAN nic_iface on every new connection request.
++
++
++uIP v0.7.0.9 (Jul 19, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Can't offload to 57810 NPAR NIC
++ Cause: The MF/VF variant of the PCI IDs were not supported previously
++ Change: Added support for the MF/VF variants for 57800/57810/57840
++
++
++uIP v0.7.0.8 (Jun 30, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00056522 - Unable to connect to iSCSI target using
++ netxtreme2 package 7.0.9
++ Cause: The iSCSI L2 ring's CID has changed from 17 to 49
++ Change: The code now gets L2 iSCSI ring CID from the l2_buf directly.
++ This will work with any version of the cnic driver because
++ the location is a zero before this change.
++
++
++uIP v0.7.0.7 (Jun 23, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00056460 - iSCSI Offload boot RHEL5u5 x64 dropped tagged
++ packets with iSCSI Offload Boot with untagged
++ Cause: The ICMP echo replies to the target was corrupted in both
++ 1g and 10g mode
++ Change: The code will now handle both VLAN stripped and no VLAN stripped
++ incoming packets correctly. Also modified the transmit routine
++ to strip out any inline VLAN tag before setting up the hw to
++ insert VLAN tag.
++
++
++uIP v0.7.0.6 (Jun 21, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00056231 - DHCPv4 not working with iSCSI HBA w/
++ linux-nx2 v7.0.7
++ Cause: The 10g L2 FW HSI has been modified for PCIe performance
++ enhancement in the 7.0.7 package (FW 1.70.20) which uIP
++ has not adapted to.
++ Change: The eth_rx_cqe size has been increased from 32B to 64B.
++
++ Enhancements
++ ------------
++ 1. Change: The utility name has changed from brcm_iscsiuio to iscsiuio
++ as preparation for upstream submission.
++ 2. Change: Updated README
++
++
++uIP v0.7.0.5 (Jun 02, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00055915 - iSCSI does not connect on 57800 in 4-port mode
++ Cause: The 4-port mode was not being determined correctly
++ Change: Fixed the PORT4MODE register offset and the QZONE_ID macros
++
++
++uIP v0.7.0.4 (May 24, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00055832 - linux iscsiboot can not login to target using
++ offload path (57800)
++ Cause: The device ID comparison routine did not take care of the case
++ when one device ID is bitwise superset of another.
++ Change: Fixed the device ID comparison routine.
++
++
++uIP v0.7.0.3 (May. 19, 2011)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Updated all fixes to match the released uIP 0.6.4.17
++
++ 2. Change: Modified source and Copyright info as preparation for upstream
++ submission
++
++
++uIP v0.7.0.2 (May. 03, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00048972 - brcm-iscsi.log has no max size and would grow
++ to consume all free space on hard disk
++ Cause: There was no mechanism to rotate the log
++ Change: Added logrotate entry and SIGUSR1 signal handling for log rotate
++ action
++
++ 2. Problem: Cont00054996 - Multi-session, multi-protocol mtu stress
++ does not recover all sessions
++ Cause: A segfault was observed during the load/unload module. The
++ problem was caused by an illegal dereference of a pointer
++ when IPv6 couldn't find the longest match address from
++ the ARP (Neighbor) table.
++ Change: Fixed the dereferencing error
++
++ 3. Problem: Cont00054900 - Linux uIP - Please add ability to connect
++ to routed target with static iface IPv6
++ Cause: Static IPv6 never runs the IPv6 NDP router sol/adv engine.
++ Change: IPv6 NDP router sol/adv has now been added to static IPv6
++ operation.
++
++ 4. Problem: Cont00054996 - Multi-session, multi-protocol mtu stress
++ does not recover all sessions
++ Cause: Segfaults were observed caused by the accessing of the IPv6
++ NDP structure while the nic is undergoing a reset either
++ due to a DHCPv4 request from iscsid or the handling of
++ if_down due to the NL handler from CNIC.
++ Change: The fix involves the following:
++ - Fixed the handling of staggered IPv4/v6 DHCP/static requests
++ - Fixed memory leak due to reallocation of IPv4 and IPv6
++ DHCP structs
++ - Fixed the pthread join stuck problem in the handling
++ of the if_down NL message
++
++ 5. Problem: Cont00054810 - Linux NMI - bnx2x_init_hw_common:PXP2 CFG
++ failed running iSCSI MTU stress test
++ Cause: This only happens in DHCPv4 mode. The problem was caused
++ by contention between the elongated window of performing
++ DHCP in the enable_nic thread while receiving the asynchronous
++ if_down NL message (from the MTU change event) from the
++ CNIC NL thread. The problem occurs when the enable_nic
++ thread tries to call bnx2x_open while the other thread
++ calls the bnx2x_close routine.
++ Change: Fixed mutex lock bugs for the enable_nic thread. Also
++ extended the nic_disable timeout to 10s to compensate for
++ the DHCP operation.
++
++ 6. Problem: Cont00054818 - RH6.0 - Unable to logout of iSCSI session
++ after running PQA baseline scripts
++ Cause: This was caused by the call to cancel the enable_nic
++ thread when disabling the nic but failed to unlock the
++ nic mutex that the enable_nic thread held.
++ Change: Wake up the enable_nic thread and wait for it to complete
++ instead of canceling it in the nic_disable path.
++
++ 7. Problem: Cont00054725 - Previous static HBA IP will be used after
++ a new static HBA IP has been created
++ Cause: There was an assumption in the code where if the same
++ nic_iface structure was found based on the nic/vlan pair,
++ the specified IP address would not be used. Instead, it
++ will continue to use the previous defined IP address.
++ Change: The previous IP address will now be compared against the
++ the specified IP address before finishing the parce
++ iface request from iscsid. If different, the current
++ nic will be disabled and then re-enabled with the newly
++ specified IP address.
++
++ 8. Problem: Cont00054571 - Unable to connect to routed ipv6 target
++ with RA address and iface DHCPv6
++ Cause: The default router address was not being employed for
++ the IPv6 neighbor negotiation. Additionally, the return
++ address of our neighbor advertisement was incorrect as
++ it should use the best matched src address instead.
++ Change: Fixed both the IPv6 neighbor solicitation and advertisement
++ transmission and handling.
++
++ 9. Problem: Cont00054510 - fails to login to 32 session with blanket
++ login IPv6
++ Cause: A bug was introduced in uIP 0.6.4.6 where the NIC_RUNNING
++ flag might not be set when entering the main loop under
++ certain situations depending on the nic bring up.
++ Change: A new NIC_STARTED_RUNNING flag is now defined to fix CQ53511.
++
++ 10. Problem: Cont00053807 - RA and link local are unable to connect if DHCPv6
++ fails
++ Cause: The host link local address was not being searched as one of
++ the host address to be replied to CNIC for the connect request.
++ Change: The path reply now includes the search of host link local
++ address as well.
++
++ 11. Problem: Cont00054236 - iSCSI service must be restarted before an IPv6
++ connection can be made to the Equalogic target
++ Cause: The problem was intermittent as it depends on which IPv6 address
++ the target was redirecting to. Since uIP was only extracting
++ the target's IPv6 address + MAC from the target's neighbor
++ advertisement packet itself and not from the ICMPv6 option, so
++ the wrong or no MAC address will get send down to CNIC for the
++ connection establishment; hence the no connect.
++ Change: Added the updating of the neighbor discovery table to also use
++ the Target IPv6 address + MAC specified in the incoming neighbor
++ advertisement's ICMPv6 option field.
++
++ 12. Problem: Cont00053255 - bnx2x panic dump logging into multiple
++ discovered IPv6 nodes (Equalogic IPv6 target)
++ Cause: The bnx2x panic was fixed in the 10g fw 6.4.29.
++ A IPv6 connectivity issue was then found and led to different
++ kernel/uIP crashes. This was caused by the same IPv6
++ connectivity problem mentioned above.
++ Change: Same as above
++
++ 13. Problem: Cont00053728 - Sessions never recover after doing initiator-side
++ cable pull test with IPv6 traffic against Equalogic targets
++ Cause: It was discovered that the Equalogic would send out periodic
++ neighbor solicitation to maintain the connection to the
++ initiator. Since uIP was responding with the assigned IPv6
++ link local address in the neighbor advertisement
++ unconditionally, the target was observed to stop transmitting on
++ the connection specified.
++ Change: The neighbor advertisement generated will now use the dst IPv6
++ address from the input neighbor solicitation packet instead of
++ the assigned IPv6 link local address for both the packet and the
++ ICMPv6 source IPv6 address.
++
++ 14. Problem: Compile error under 32-bit OS
++ Cause: A bug was introduced in the previous release 0.6.4.6 which
++ caused a compilation error in 32-bit OS (64-bit compiles
++ fine)
++ Change: Fixed the bug
++
++ 15. Problem: Cont00053807 - RA and Link local are unable to connect if dhcpv6
++ fails
++ Cause: There was a bug in the nl reply where the RA address will never
++ be sent back to CNIC for the connection request
++ Change: The best matched address to the dst will now be sent back to
++ CNIC in the path rsp.
++
++ Enhancements
++ ------------
++ 1. Change: Updated README to remove the 57713/E references
++
++ 2. Change: Allow the ICMP option field in the IPv6 Neighbor Advertisement
++ response to be included without discrimination. This fixes
++ an issue connecting against the EQL via RA for DHCPv6.
++
++ 3. Change: Updated README for the IPv6 operation, VLAN, and discovery.
++
++
++uIP v0.7.0.1 (Mar. 29, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00053511 - bnx2x panic dump during ifup/down stress with
++ iSCSI traffic
++ Cause: The panic dump was resolved by the driver's rq dbell size fix.
++ After that, uIP crashed due to the asynchronous if_down event
++ that took the chip resources away while the nic thread is still
++ continuing to try to send DHCP request.
++ Change: Added synchronization between the two threads so proper clean up
++ of the threads can occur.
++
++ Enhancements
++ ------------
++ 1. Change: Added support for E3 (57800, 57810, and 57840)
++
++
++uIP v0.6.4.5 (Mar. 23, 2011)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Optimized the double VLAN fix of CQ53870 to match
++ what will be submitted for RHELS5.7 and RHELS6.1 inbox
++
++
++uIP v0.6.4.4 (Mar. 17, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00053870 - Unable to login to iSCSI target via offload
++ through a Nexus 5020 switch with DCBx enabled
++ Cause: Double VLAN tagging was observed due to DCBx enabled.
++ The chip actually adds a VLAN tag if the txbd does not have
++ VLAN tag enabled under the DCBx environment for PRI setting.
++ Since uIP does not make use of hw assisted VLAN tagging,
++ 2 VLAN tag was observed in the data stream.
++ Change: Enabled hw assisted VLAN tagging in uIP for both 1g and 10g.
++
++ 2. Problem: Cont00053792 - maxconnections intermittently fail and
++ recover using iface DHCPv4
++ Cause: The DHCPv4 engine erroneously keeps on requesting for a
++ new lease which tremendously hamper normal path_req
++ operation. The problem is that the lease time parameter
++ has overflowed when converted to ticks count.
++ Change: Expanded the lease timer ticks count parameter from 16 to
++ 32 bits.
++
++ 3. Problem: Cont00053807 - RA and link local are unable to connect if
++ DHCPv6 fails
++ Cause: The DHCPv6 engine does not have the failover to use RA
++ mechanism
++ Change: Expanded to use best match address instead regardless of
++ DHCPv6 success or not, or using static v6.
++
++ Enhancements
++ ------------
++ 1. Change: Cont00051823 - Added man page for brcm_iscsiuio
++
++
++uIP v0.6.4.3 (Mar. 15, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00053719 - intermittent logging into targets that
++ are not in the same subnet as defined in the iface
++ Cause: The default route was used erroneously due to a miscompare
++ Change: Fixed this comparison so if the requested dst is not in
++ in the same subnet, uIP would not even ARP out.
++
++ 2. Problem: Cont00053580 - Unable to do iSCSI boot into Linux OS using
++ 57710 adapters
++ Cause: The E1 iro USTORM_RX_PROD_OFFSET doesn't match the t6.4 fw
++ Change: This is now fixed
++
++
++uIP v0.6.4.2 (Feb. 24, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00050343 - HBA does not follow RFC2131 spec for IPv4
++ DHCP lease expiration
++ Cause: The dhcp engine did not have this feature implemented
++ Change: Added lease time tracking and renewal
++
++ 2. Problem: Cont00050801 - Unable to connect to target after switching
++ between DHCPv4 to static v4
++ Cause: The configuration flags got corrupted when switching between
++ dhcp and static or vice versa.
++ Change: Fixed the flag handling. Also needed to zero out the static
++ ip address in the host memory when switching to dhcp.
++ Otherwise, the static ip address will get used mistakenly.
++
++ Enhancements
++ ------------
++ 1. Change: Cont00051936 - Added IPv6 NDP and DHCPv6 support.
++
++
++uIP v0.6.4.1 (Jan. 27, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00049766 - segfault seen while stopping iscsi service
++ Cause: The logger output routine was accessing the log resource
++ while another thread calls fini_logger to free the same
++ resources
++ Change: Added pthread mutex lock to the logger routine to exclude
++ the initializer, user, and finisher
++
++ Enhancements
++ ------------
++ 1. Change: Added new t6.4 HSI and 57713 support.
++
++
++uIP v0.6.2.13 (Jan. 04, 2011)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00049665 - iscsiboot:linux failed to boot into iscsi
++ boot image in offload path after 5 iterations
++ Cause: The hw consumer index for the uIP ring got out of sync
++ with the producer index. This has led to the xmit mutex
++ lock be held forever so subsequent ARP requests will not
++ get transmitted to the wire
++ Change: Added this out of sync detection and rescue the xmit mutex
++ lock
++
++uIP v0.6.2.12 (Dec. 21, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Cont00051820 - Session fails to reconnect after gateway
++ fallback
++ Cause: Under the HSRP test scenario, it was found that an ARP
++ request from the SUT is required in order for the HSRP
++ router to begin sending packets downstream to the SUT.
++ The default ARP age was originally set to 20 minutes
++ before a new ARP request will get sent,
++ Change: Changed the ARP age default to Linux default at 5 minutes
++
++uIP v0.6.2.11 (Dec. 17, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: For IPv4, the gateway route was not being utilized
++ when the subnet mask given or calculated does not
++ match. This resulted in many unwanted connection
++ attempts.
++ Cause: A bug was found in the default gateway calculation
++ logic which prevented the gateway address from being
++ used.
++ Change: Fixed the default gateway logic
++
++ 2. Problem: For IPv6, there are scenarios where it won't connect
++ Cause: The IPv6 subnet mask as extracted from the CIDR
++ format might contain garbage data. This garbage data
++ was then used as part of the subnet mask which would
++ prevent the correct address mask.
++ Change: Fixed the subnet mask
++
++uIP v0.6.2.10 (Dec. 15, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: IPv6 does not connect for non-CIDR iface.ipaddress
++ specification
++ Cause: A bug where all ones was used as the IPv6 netmask
++ instead of all zeroes. This prevented all IPv6
++ path requests from being honored
++ Change: Fixed the subnet mask used
++
++uIP v0.6.2.9 (Dec. 14, 2010)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Added IP address CIDR notation support for the
++ iface.ipaddress field in the iface file.
++ This will allow subnet mask to be defined and used.
++
++uIP v0.6.2.8 (Dec. 9, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: ipv6 + ifup/down fails to reconnect
++
++ Cause: There were 2 problems found:
++ - the xmit_mutex lock was being held indefinitely
++ - the nl_process_if_down flag for 10g doorbell ringing
++ did not get reinitialized
++
++ Change: Fixed the xmit_mutex deadlock via trylock
++ Added nl_process_if_down initialization in the IF_DOWN
++ process
++
++ 2. Problem: Added fix for the NPAR disabled for 57712
++
++ Cause: The mac address was not handled correctly
++
++ Change: Fixed the mac address handling. Also requires corresponding
++ kernel component for the complete fix
++
++uIP v0.6.2.7 (Dec. 7, 2010)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Use the gateway address from the DHCP server the
++ destination IP address is not in the current subnet.
++
++uIP v0.6.2.6 (Nov. 16, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Warning message seen in the kernel logs,
++ "uio uio2: uevent: unsupported action string"
++
++ Cause: The improper string was echo'ed into the UIO trigger
++ field. With an improper string, this message would
++ appear in the kernel logs.
++
++ Change: uIP will now write the string "online" to the UIO
++ trigger field. This is the string expected by the
++ Linux kernel base driver.
++
++ 2. Problem: uIP would segfault during a heavily login/logout
++ iSCSI subsystem reset senario
++
++ Cause: A double free occurred in the logging portion of the
++ uIP code, but this was root cause to a double free when
++ manipulating the NetLink buffers.
++
++ Change: Properly look at the return code from the routine which
++ will read NetLink messages. Also only free buffers
++ if they are allocated.
++
++ Enhancements
++ ------------
++ 1. Change: Add ability to print kernel version and machine
++ architecture to further help debug problems.
++
++ 2. Change: Apply the netmask from DHCP if provided.
++
++uIP v0.6.2.5 (Nov. 10, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iscsid would try to conenct with unintended iSCSI
++ targets
++
++ Cause: uIP would blindly return the iSCSI target MAC address
++ regardless if the iSCSI target is reachable via the
++ given port.
++
++ Change: uIP will try to filter the requests coming from CNIC
++ by automatically generating a network mask based off
++ the configured IP addressed. Then this netmask is
++ masked with the destination IP address. If there is
++ a match, then the path_req is allowed through.
++
++ 2. Problem: Problems reconnecting back to the target when running
++ MTU stress tests.
++
++ Cause: cnic/bnx2i and uIP could possibly get out of sync when
++ an if_down message is sent.
++
++ Change: uIP will now immediately react to the if_down message,
++ and flush all the path req's and then to process to
++ if_close.
++
++ Enhancements
++ ------------
++ 1. Change: Fix compile warnings for src/unix/nic_nl.c,
++ and src/unix/main.c
++
++uIP v0.6.2.4 (Nov. 4, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iSCSI HBA: brcm_iscsiuio segfault during ifdown
++ with many active sessions
++
++ Cause: uIP will segfault when traversing the error path when
++ an iSCSI connection is starting but the sysfs entries
++ have not been created yet.
++
++ Change: Use the errno value rather then the one from the file
++ descriptor because the file descriptor will be NULL and
++ the NULL dereference will cause a segfault.
++
++ Enhancements
++ ------------
++ 1. Change: Added initial changes for iSCSI multi-function support for
++ 10G NIC's.
++ 2. Change: Add more detailed messages for error pathes in nic_utils
++
++uIP v0.6.2.3 (October 28, 2010)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Add support for bnx2x-1.62.x drivers
++
++uIP v0.6.2.2 (October 18, 2010)
++=======================================================
++ Enhancements
++ ------------
++ 1. Change: Only allow iSCSI connections with known bnx2x HSI's.
++
++uIP v0.6.2.1 (October 7, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: After multiple MTU changes, the ethtool IOCTL used to
++ determine the bnx2x driver version fails and eventually
++ iSCSI connections would not reconnect.
++
++ Cause: The socket file descriptor used during the ethtool IOCTL
++ call was never closed and leaked.
++
++ Change: On the error path when calling the ethtool IOCTL, the
++ file descriptor is now properly closed.
++
++uIP v0.5.39 (September 15, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Could not offload IPv4 VLAN connection when the target tries
++ to ARP the iSCSI initiator
++
++ Cause: In the ARP reply, the ether field was incorrect.
++
++ Change: Properly set the ether field to 802.1Q type (0x8100)
++
++uIP v0.5.38 (September 14, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: uIP would cause a panic dump when the NIC was going down
++
++ Cause: uIP and CNIC where not synchonized on NIC state
++
++ Change: Check if the RX BD's which are zero'ed by CNIC when the
++ NIC is going down. If the BD addresses are zero, then
++ uIP will drop the TX packets.
++
++uIP v0.5.37 (August 21, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: uIP would segfault on ifup/ifdown stress test when using
++ DHCP to determine local IP address.
++
++ Cause: The uIP would use a NULL buffer during data transmission.
++
++ Change: Drop packets when there are no buffer avaliable.
++
++uIP v0.5.36 (August 21, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iSCSI boot would not completely login after the pivot
++ root operation.
++
++ Cause: The uIP would not properly start the NIC interface.
++
++ Change: uIP should only check the NIC state to determine whether
++ to start the NIC thread or not.
++
++ 2. Problem: uIP would segfault during if'up if'down testing.
++
++ Cause: The uIP would improperly start 2 NIC threads for the
++ same NIC interface.
++
++ Change: uIP should properly lock the NIC list when disabling/removing
++ the NIC threads.
++
++
++uIP v0.5.35 (August 20, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Sessions would hang with ethtool self-test
++
++ Cause: The uIP would hang because the socket layer was stuck
++ because there is much contention for that socket. This
++ would hang the CNIC thread.
++
++ Change: Remove any IOCTL calls in uIP which may colide with
++ the ethtool self test. The driver version is only
++ capture during uIP initialization.
++
++ 2. Problem: There were session recovery issue when using DHCP
++ if up/down tests.
++
++ Cause: The uIP would hang because the DHCP requests would
++ timeout if the network interface is downed which would
++ hang all the other uIP threads.
++
++ Change: Ensure that the DHCP state machine had exit points
++ if the network interface was down'ed.
++
++
++uIP v0.5.34 (August 18, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Sessions would not recover with ethtool self-test
++
++ Cause: The uIP would hang because either the NetLink buffer is
++ full or that any socket operations used to manipulate
++ multicast addresses would block.
++
++ Change: Ensure that the socket used for multicast addressing is
++ set to nonblocking. Drain the NetLink buffer without
++ using the eventing, but with a more aggressive poll routine.
++
++ 2. Problem: Sessions would not recover with L2 driver load/unload on
++ RHEL 6.0 SS9
++
++ Cause: The uIP would close the NIC thread too early and would
++ deadlock on cloing the NIC thread.
++
++ Change: Ensure that the NIC thread is canceled/closed only in one
++ location, in the NIC remove routine.
++
++
++uIP v0.5.33 (August 17, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Error message seen from the uIP stack for valid packets.
++
++ Cause: The uIP was incorrectly marking logging messages for valid
++ packets as errors because it didn't know how to parase them.
++
++ Change: Changed the following from error to debug message
++ ipv6: invalid version
++ ipv4: invalid version or header length.
++ icmpv6: unknown ICMP message.
++ ip: neither tcp nor icmp
++ Changed the following from error to warn message
++ udp: bad checksum
++ tcp: bad checksum
++ tcp: got reset, aborting connection.
++
++ 2. Problem: After multiple iterations the loading and unloading of
++ the Broadcom Linux drivers with active connections
++ would not cause the sessions to recover on RHEL 6.0
++ snapshot 9.
++
++ Cause: There was a deadlock in the nic mutex
++
++ Change: Lock ordering for the nic mutex and nic list mutex must
++ be inforced.
++
++ 3. Problem: After multiple iterations of running the ethtool selftest
++ the Broadcom Linux drivers with active connections
++ would not cause the sessions to recover on RHEL 5.5.
++
++ Cause: The Netlink buffer between uIP and CNIC would get full.
++
++ Change: Poll more regularly for packets in the Netlink buffer
++ from 4 times a second to 100 times a 1 second.
++ Drain packets during the PATH_REQ packet pull.
++
++
++uIP v0.5.32 (August 14, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Error message 'nic eth0: Didn't find type 0xaa bb' seen.
++
++ Cause: Valid non-DIX Ethernet packets as being passed to the
++ uIP. uIP will drop these packets but should be logged
++ correctly.
++
++ Change: These packets are valid, and should only be logged for
++ debugging purposes.
++
++ 2. Problem: Error message 'Dropped previous transmitted packet' seen.
++
++ Cause: The TX ring is full, and here uIP is trying to transmit a
++ packet which will be dropped. This is a valid state but
++ the log message is marked incorrectly
++
++ Change: These messages are not warnings and should be logging when
++ debugging is enabled.
++
++ 3. Problem: Error message: "iscsi_ipc eth0 Transport name is not
++ equal expected: got: bnx2i" seen.
++
++ Cause: The iface_rec structure is different between iscsid version.
++ For RHEL 5.5, iscsid is versioned 871, for RHEL 6.0 is
++ versioned 872.
++
++ Change: Allow uIP to compile against a different version of iscsid.
++
++
++uIP v0.5.31 (August 12, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Softlock would occur showing that the NetLink table
++ lock was taken but never released.
++
++ Cause: NetLink socket buffer would fill with constant PATH_REQ
++ messages preventing PATH_REQ response from libiscsi
++
++ Change: Now uIP will drain the NetLink buffer while looking for
++ a response.
++
++ Enhancements
++ ------------
++ 1. Change: Add documentation for VLAN configuration and restrictions.
++
++
++uIP v0.5.30 (August 6, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iscsid thread will stall if closing the uio files nodes
++ is stuck
++
++ Cause: uIP would indefinitely block waiting for the mutex shared
++ by the close routine.
++
++ Change: Now uIP will try and poll a bit for the mutex. If it can't
++ get this mutex in the iscsid thread then an error is return
++ rather then hold the thread.
++
++ 2. Problem: IPv6 Unicast Neighbor Adveriserments would have the
++ ICMPv6 option header specifying a MAC.
++
++ Cause: uIP should use the source IPv6 address to detmine whether
++ to strip the option header or not and not the target address
++ in the ICMPv6 field.
++
++ Change: The uIP stack return a unicast IPv6 Neighbor Advertisement
++ without the ICMPv6 option as a response to unicast
++ IPv6 Neighbor Solicitations.
++
++ 3. Problem: There would be TCP SYN packets with improper MAC address.
++
++ Cause: A zero'ed MAC address was not passed to CNIC to indicate an
++ error or if the IP address didn't resolve.
++
++ Change: The uIP stack will now return a zero'ed MAC address if it
++ can't find any entries.
++
++
++uIP v0.5.29 (August 6, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: "uip udp: no matching connection found: lport: 35072"
++ seen numerous times in the brcm_iscsiuio log file
++
++ Cause: This message was incorrectly marked as an error
++
++ Change: These messages are valid log entries especially if the
++ packet was a broadcast UDP packet not destined for the SUT
++ I will change the code to mark these logs entries as debug.
++
++
++uIP v0.5.28 (August 5, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Can't login into a redirected Equilogic Target
++
++ Cause: The Equilogic Target uses a unicast IPv6 Neighbor
++ Solicitation to test if the host is up. The uIP stack
++ would return a Neighbor Advertisement with an unneeded
++ ICMPv6 option.
++
++ Change: Only have the uIP stack return a unicast IPv6 Neighbor
++ Advertisement without the ICMPv6 option.
++
++ 2. Problem: With older bnx2/bnx2x/cnic/bnx2i driver combinations
++ uIP would segfault when these drivers were unloaded.
++
++ Cause: When the older drivers were removed, the underlying uio
++ instance was removed causing uIP to have a stale file handle.
++ When uIP finally closes using this stale file handle, either
++ uIP would segfault, or there would be an error in the
++ uio_release() path.
++
++ Change: Only have the uIP close if the UIO file node exists.
++
++
++uIP v0.5.27 (July 31, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iSCSI HBA: Unable to use DHCP address for iSCSI interface
++ if a connection was previously made with a static address
++ on bnx2 devices.
++
++ Cause: Because the device is closed and reopen'ed the TX consumer
++ indexes were not persisted
++
++ Change: Only discard the TX consumer indexes only when the devices
++ will be discarded or closed
++
++ Enhancements
++ ------------
++ 1. Change: Change CNIC references to bnx2 in the bnx2 user space
++ driver.
++
++
++uIP v0.5.26 (July 30, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: iSCSI HBA: Unable to use DHCP address for iSCSI interface
++ if a connection was previously made with a static address on
++ bnx2x devices.
++
++ Cause: Because the device is closed and reopen'ed the TX consumer
++ indexes were not persisted
++
++ Change: Only discard the TX consumer indexes only when the devices
++ will be discarded
++
++ 2. Problem: IPv6 using VLAN's didn't login
++
++ Cause: The uIP code used to determine if the packet was an IPv6
++ or not was not working. This VLAN packets for IPv6 were
++ being mis-interpreted.
++
++ Change: Make the function is_ipv6() VLAN aware
++
++ 3. Problem: Persistant targets was not loggin in during boot
++
++ Cause: If udev was slow and the /dev/uio* were creatly slowly
++ uIP would fail.
++
++ Change: Poll uIP waiting for /dev/uio* file nodes.
++
++uIP v0.5.25 (July 27, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: When using IPv4 DHCP, there are no initial DHCP Discover
++ packets were not seen on the wire.
++
++ Cause: Packets generated from the app handler from the uIP stack
++ were not placed on the wire.
++
++ Change: Packets originating from the uIP stack are now always placed
++ on the wire.
++
++uIP v0.5.24 (July 25, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: One would see invalid packet packets flow through the
++ uIP stack, where the logs would indicate there is a packet
++ with an invalid length
++
++ Cause: The BD and CQE consumer indexes were not properly incremented
++ and masked.
++
++ Change: The BD index is now properly masked. The CQE index is not
++ incremented using the CQE index rather the mistaken BD index.
++
++ Impact: 10G only
++
++ 2. Problem: uIP would segfault during the booting of the machine.
++
++ Cause: uIP was using a NULL data pointer because there was an
++ incorrect packet passed to the stack.
++
++ Change: Only allow uIP to process data if the packet exists.
++
++ 3. Problem: uIP would stop processing packets
++
++ Cause: The uIP code would not properly drain the CQE ring causing
++ it to eventually be full
++
++ Change: Consume all the CQE elements even if they are ethernet types
++ or not.
++
++ Impact: 10G only
++
++ 4. Problem: uIP would stop after if/down of the network interface.
++
++ Cause: uIP was not kick starting the NIC loop thread properly.
++
++ Change: Ensure that the NIC loop thread is started by when iscsid
++ request that the interface start the offload. Mark the NIC
++ only if the thread is truly canceled.
++
++
++uIP v0.5.23 (July 20, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Segfault during brcm_iscsiuio initialization
++
++ Cause: uIP was using a NULL data pointer, because a different
++ thread re-initialized the uIP stack
++
++ Change: Properly synchronize the initialization of the stack
++
++ 2. Problem: Deadlock during the printing of heavy debug messages
++
++ Cause: The variable macro structures would point to invalid
++ data
++
++ Change: With each invocation of va_copy() a corresponding
++ invocation of va_end() in the same function for the proper
++ cleanup
++
++ 3. Problem: uIP would hang when the interface could go up/down
++
++ Cause: uIP would get out of sync with the state of the network
++ interface
++
++ Change: Instead of detriving state from the UIO file nodes, uIP
++ will take direction from iscsid on when interfaces will be
++ started.
++
++uIP v0.5.22 (July 15, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Unable to reconnect via iSCSI offload after
++ ifup/ifdown
++
++ Cause: uIP was stuck on the thread when closing the NIC main
++ loop
++
++ Change: Properly synchronize the NetLink CNIC and uevent threads
++
++ 2. Problem: uIP would crash during boot up.
++
++ Cause: uIP would overwrite a memory location which was already
++ freed during nic_remove().
++
++ Change: Since the NIC is freed there is no need to write to
++ update the NIC flags
++
++ Enhancements
++ ------------
++
++ 1. Change: Added IPv6 Link Local support
++
++
++uIP v0.5.21 (July 5, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Unable to connect via iSCSI offload after
++ changing L2 address
++
++ Cause: uIP didn't notice the network inferface going down
++
++ Change: Allow uIP to persist the stack's IP address after
++ a reset
++
++ 2. Problem: Unable to connect via IPv4 and IPv6 concurrently
++
++ Cause: uIP didn't notice the network inferface going down
++
++ Change: Allow uIP to persist the stack's IP address after
++ a reset and properly bring up the interface
++
++ 3. Problem: Unable to connect via VLAN
++
++ Cause: IP address was no persisted after a device reset
++
++ Change: When CNIC requests a path request, uIP will use the
++ VLAN passed by the CNIC.
++
++
++uIP v0.5.20 (June 24, 2010)
++
++
++uIP v0.5.20 (June 24, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Certain IPv6 addresses are not repsonded to by
++ the target.
++
++ Cause: The MAC was generated from the target's IPv6
++ address not the deterived multicast IPv6 address.
++
++ Change: The destination MAC address should be deterived
++ from the packet's destination IPv6 address and
++ not the target.
++
++ 2. Problem: brcm_iscsiuio would segfault when L2 interface is
++ bought up and down after being logged into
++
++ Cause: The NIC thread was not stopped properly
++
++ Change: When the UIO device is remove and when the
++ cooresponding NIC tracked by brcm_iscsiuio, the
++ daemon would properly wait for the NIC thread to
++ stop.
++
++
++uIP v0.5.19 (June 22, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Can't login after boot
++
++ Cause: If NIC interfaces are brough up and down quickly
++ uIP wait on an invalid NIC thread
++
++ Change: Only wait for the NIC thread if the NIC thread
++ exists.
++
++uIP v0.5.18 (June 21, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Does not compile on SLES 11 SP1
++
++ Cause: Automake cached files were included as part of the
++ uIP-0.5.17 package
++
++ Change: Remove automake cached files, and allow these files
++ to be generated each time the source is compiled
++
++ 2. Problem: Does not always receive multicast packets
++
++ Cause: Multicast bit was not set in SORT USER 2 register
++
++ Change: brcm_iscsiuio will now set the SORT USER 2 registers
++ with both the broadcast and multicast bits.
++
++ 3. Problem: Existing iSCSI connections do not reconnect after
++ operations which require equivalent driver
++ load/unload operations
++
++ Cause: Multiple path requests would trample NIC configurations
++
++ Change: Allow only one path request at a time
++
++uIP v0.5.17 (June 16, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: IPv6 neighbor solicitations from brcm_iscsiuio could
++ not be responded to
++
++ Cause: The IPv6 neighbor solicitation packet had an invalid
++ multicast MAC address
++
++ Change: Properly set the MAC address multicast bit and OR
++ with the IPv6 destination address
++
++ 2. Problem: NIC state was not properly synchronized and noticed
++ by Shyam Iyer <shiyer at redhat.com>
++
++ Change: Properly lock the NIC device when changing state
++
++ Enhancements
++ ------------
++
++ 1. Change: Listen for iscsid before daemonizing to close a timing
++ gap which might allow iscsid to start before uIP is
++ completely initialized.
++
++uIP v0.5.16 (June 2, 2010)
++=======================================================
++
++ Enhancements
++ ------------
++
++ 1. Change: Formally add IPv6 support. Only a static IPv6 address
++ is supported.
++
++uIP v0.5.15 (May 20, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: brcm_iscsiuio would echo packets off the wire
++
++ Cause: Stale packets from the uIP stack could potentially
++ make it onto the wire causing a network flood
++
++ Change: Only place on the wire packets uIP intended to place
++ on the wire. Drop all other packets.
++
++uIP v0.5.14 (May 18, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: brcm_iscsiuio would crash when offloading using a
++ bnx2x device /dev/mem could not be
++ opened, (ie. SE Linux enabled)
++
++ Cause: /dev/mem could not be opened, (ie. SE Linux enabled)
++ and then the NIC would be improperly initialized.
++
++ Change: If /dev/mem is not able to be opened, then the device
++ is closed
++
++ 2. Problem: brcm_iscsiuio would crash when brcm_iscsiuio is
++ being shutdown
++
++ Cause: The NIC mutex was deferenced imporperly when the NIC
++ is being closed
++
++ Change: Take the NIC mutex lock only when the NIC is closed.
++
++uIP v0.5.13 (May 16, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: brcm_iscsiuio would crash with heavy traffic directed
++ at the iSCSI traffic
++
++ Cause: Packets which are sized between 1006-1024 bytes would
++ crash brcm_iscsiuio because brcm_iscsiuio is not sized
++ to handle such large packets
++
++ Change: Drop large packets, properly hold the NIC mutex lock
++ for the duration when NIC fields are being used.
++
++
++uIP v0.5.12 (May 13, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: brcm_iscsiuio could crash on when L2 interface is
++ ifdown'ed
++
++ Cause: The local NIC pointer was not initialized properly
++ in the routine parse_iface()
++
++ Change: Properly initialize the NIC pointer
++
++ 2. Problem: Documentation referred to older admin_client which
++ doesn't exist any more because brcm_iscsiuio uses
++ the iscsid iface file
++
++ Change: Remove the stale references
++
++
++uIP v0.5.11 (May 11, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: brcm_iscsiuio could crash on invalid packet sizes
++
++ Cause: The hardware BD could be a large value because of a
++ hardware error
++
++ Change: Limit the size of the packet dumped to the MTU size
++
++ Enhancements
++ ------------
++
++ 1. Change: During the running of the configure script now
++ the script will check for ar and ranlib binaries
++
++
++uIP v0.5.10 (May 03, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: BCM57712 not recognized
++
++ Cause: The PCI ID's in the bnx2x file were missing.
++
++ Change: Added proper BCM57712, BCM57712E, BCM57713, BCM57713E
++ PCI ID's
++
++ 2. Problem: (CQ 47481) brcm_iscsiuio not installed in correct location
++
++ Cause: Default install path for autoconf is /usr/local
++
++ Change: Change the default prefix to '/' so the brcm_iscsiuio
++ binary is installed to /sbin/
++
++ Enhancements
++ ------------
++
++ 1. Change: Remove dependency on Yacc and Lex
++
++
++uIP v0.5.9 (April 28, 2010)
++=======================================================
++
++ Fixes
++ -----
++ 1. Problem: bnx2x T6.0 driver would not login
++
++ Cause: The bnx2x code was not using the T6.0 HSI offsets
++
++ Change: Determine to bnx2x driver version eariler to properly use the
++ T4.8 or T6.0 HSI
++
++ Enhancements
++ ------------
++
++ 1. Change: Collapse all the various locks to use the NIC lock to shrink
++ memory footprint
++
++ 2. Change: Consolidate upper layer checksumming code
++
++
++uIP v0.5.5 (March 02, 2010)
++=======================================================
++
++ Enhancements
++ ------------
++
++ 1. Change: Add support for T6.0 bnx2x HSI and 57712.
++
++ 2. Change: Initial support for IPv6
++
++uIP v0.5.8 (April 22, 2010)
++=======================================================
++
++ Enhancements
++ ------------
++
++ 1. Change: Add support for T6.0 bnx2x HSI and 57712.
++
++ 2. Change: Initial support for IPv6
++
++uIP v0.5.7 (March 17, 2010)
++=======================================================
++
++ Enhancements
++ ------------
++
++ 1. Change: Add to documentation on discovering on a particular
++ iface before logging in
++
++uIP v0.5.6 (Mar 05, 2009)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: bnx2x panic dump would be seen when sending
++ traffic to uIP
++
++ Cause: The TX producer index was not properly
++ incrementing when the wrapping occured
++
++ Change: Do not skip the last TX producer index like the
++ TX BD's
++
++ Impact: None.
++
++uIP v0.5.5 (March 02, 2010)
++=======================================================
++ Initial release
++
++ Enhancements
++ ------------
++
++ 1. Change: Add to documentation on debugging/logging for uIP
++
++
++uIP v0.5.4 (Feb 22, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Compile error where 'ETHERTYPE_VLAN' define
++ is missing
++
++ Cause: Certain distributions do not define 'ETHERTYPE_VLAN'
++ in the header file "net/ethernet.h".
++
++ Change: Added proper defines for ETHERTYPE_VLAN when necessary
++
++ Impact: None.
++
++
++uIP v0.5.3 (Feb 18, 2010)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Using VLAN's on offloaded iSCSI connections
++
++ Cause: (CQ45983) VLAN tags were not being properly inserted
++ when sending the ARP request packets
++
++ Change: Added VLAN tags when sending ARP request packets
++
++ Impact: None.
++
++
++uIP v0.5.2 (Dec 10, 2009)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: Switching between 10G and 1G iSCSI offloaded
++ devices caused login connectivity problems
++
++ Cause: The NIC devices within uIP were not cleanup
++ properly.
++
++ Change: The NIC structure is not re-initialized and the
++ NIC thread is destroyed when the host network
++ interface is brought down.
++
++ Impact: None.
++
++
++uIP v0.5.1 (Dec 9, 2009)
++=======================================================
++ Fixes
++ -----
++ 1. Problem: 10G devices behind PCI bridges would not collect
++
++ Cause: PCI bus:slot.func string was parsed incorrectly
++ because the bridge string was used
++
++ Change: Parse the proper PCI bus:slot.func string.
++
++ Impact: None.
++
++
++uIP v0.5.0b (Nov 24, 2009)
++=======================================================
++ Initial release
++
++ Enhancements
++ ------------
++
++ 1. Change: Add Broadcom 10G iSCSI offload support
++
++ Impact: Linux
++
+diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac
+new file mode 100644
+index 0000000..4faee9e
+--- /dev/null
++++ b/iscsiuio/configure.ac
+@@ -0,0 +1,76 @@
++dnl iscsiuio uIP user space stack configure.ac file
++dnl
++dnl Copyright (c) 2004-2013 Broadcom Corporation
++dnl
++dnl This program is free software; you can redistribute it and/or modify
++dnl it under the terms of the GNU General Public License as published by
++dnl the Free Software Foundation.
++dnl
++dnl Written by: Eddie Wai (eddie.wai at broadcom.com)
++dnl Benjamin Li (benli at broadcom.com)
++dnl
++
++PACKAGE=iscsiuio
++VERSION=0.7.8.2
++
++AC_INIT([iscsiuio], [0.7.8.2], [eddie.wai at broadcom.com])
++
++AM_INIT_AUTOMAKE
++AC_CONFIG_HEADER(config.h)
++AC_PATH_PROGS(BASH, bash)
++
++AC_PROG_CC
++AM_PROG_CC_C_O
++
++AC_PROG_RANLIB
++
++AC_GNU_SOURCE
++AC_PROG_INSTALL
++AC_PROG_GCC_TRADITIONAL
++
++# Checks for typedefs, structures, and compiler characteristics.
++AC_C_CONST
++AC_C_INLINE
++AC_TYPE_OFF_T
++AC_TYPE_SIZE_T
++AC_CHECK_TYPES(int8_t)
++AC_CHECK_TYPES(uint8_t)
++AC_CHECK_TYPES(int16_t)
++AC_CHECK_TYPES(uint16_t)
++AC_CHECK_TYPES(int32_t)
++AC_CHECK_TYPES(uint32_t)
++AC_CHECK_TYPES(int64_t)
++AC_CHECK_TYPES(uint64_t)
++AC_CHECK_SIZEOF(short, 2)
++AC_CHECK_SIZEOF(int, 4)
++AC_CHECK_SIZEOF(long, 4)
++
++AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[BIG]),AC_SUBST([ENDIAN],[LITTLE]))
++
++AC_LIBTOOL_DLOPEN
++
++# libtool stuff
++AC_PROG_LIBTOOL
++
++CFLAGS="-O2 -Wall"
++## check for --enable-debug first before checking CFLAGS before
++## so that we don't mix -O and -g
++AC_ARG_ENABLE(debug,
++[ --enable-debug Turn on compiler debugging information (default=no)],
++ [if eval "test x$enable_debug = xyes"; then
++ CFLAGS="${CFLAGS} -g -O0"
++ fi])
++AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
++
++AC_CONFIG_COMMANDS([default],[[ echo 'char *build_date = "'`date`'";' > src/unix/build_date.c && echo 'char *build_date;'> src/unix/build_date.h]],[[]])
++
++AC_PREFIX_DEFAULT()
++
++AC_OUTPUT([Makefile
++src/Makefile
++src/apps/Makefile
++src/apps/dhcpc/Makefile
++src/apps/brcm-iscsi/Makefile
++src/uip/Makefile
++src/unix/Makefile
++src/unix/libs/Makefile])
+diff --git a/iscsiuio/docs/iscsiuio.8 b/iscsiuio/docs/iscsiuio.8
+new file mode 100644
+index 0000000..3b50409
+--- /dev/null
++++ b/iscsiuio/docs/iscsiuio.8
+@@ -0,0 +1,86 @@
++.\" Copyright (c) 2010-2013 Broadcom Corporation
++.\" This is free documentation; you can redistribute it and/or
++.\" modify it under the terms of the GNU General Public License as
++.\" published by the Free Software Foundation.
++.\"
++.\" bnx2.4,v 0.7.8.1b
++.\"
++.TH iscsiuio 8 "12/10/2013" "Broadcom Corporation"
++.\"
++.\" NAME part
++.\"
++.SH NAME
++iscsiuio \- iSCSI UserSpace I/O driver
++.\"
++.\" SYNOPSIS part
++.\"
++.SH SYNOPSIS
++.B iscsiuio
++.RB [ -d -f -v ]
++.PP
++.\"
++.\" DESCRIPTION part
++.\"
++.SH DESCRIPTION
++iscsiuio is the UserSpace I/O driver for the Broadcom NetXtreme II
++BCM5706/5708/5709 series PCI/PCI-X Gigabit Ethernet Network Interface Card
++(NIC) and for the Broadcom NetXtreme II BCM57710/57711/57712/57800/57810/57840
++series PCI-E 10 Gigabit Ethernet Network Interface Card.
++The driver has been tested on 2.6.28 kernels and above.
++.PP
++Refer to the README.TXT from the driver package on how to
++compile and install the driver.
++.PP
++Refer to various Linux documentations
++on how to configure network protocol and address.
++.\"
++.\" DRIVER DEPENDENCIES part
++.\"
++.SH DRIVER DEPENDENCIES
++
++.\"
++.\" PARAMETER part
++.\"
++.SH PARAMETERS
++There are very few parameters when running this application.
++.TP
++.BI -d <debug level>
++This is to enable debug mode where debug messages will be sent to stdout
++The following debug modes are supported
++.P
++.RS
++DEBUG 4 - Print all messages
++.P
++INFO 3 - Print messages needed to follow the uIP code (default)
++.P
++WARN 2 - Print warning messages
++.P
++ERROR 1 - Only print critical errors
++.RE
++.PP
++.TP
++.TP
++.BI -f
++This is to enable forground mode so that this application doesn't get sent
++into the background.
++.PP
++.TP
++.BI -v
++This is to print the version.
++.PP
++.TP
++.BI -p <pidfile>
++Use pidfile (default /var/run/iscsiuio.pid )
++.PP
++.TP
++.BI -h
++Display this help and exit.
++
++
++.\"
++.\" AUTHOR part
++.\"
++.SH AUTHOR
++Benjamin Li \- benli at broadcom.com
++.P
++Eddie Wai \- eddie.wai at broadcom.com
+diff --git a/iscsiuio/iscsiuiolog b/iscsiuio/iscsiuiolog
+new file mode 100644
+index 0000000..360947c
+--- /dev/null
++++ b/iscsiuio/iscsiuiolog
+@@ -0,0 +1,10 @@
++/var/log/iscsiuio.log {
++ weekly
++ missingok
<Skipped 31627 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/open-iscsi.git/commitdiff/73d24d5e829ad5cd1b399f95fc288cb320b17a65
More information about the pld-cvs-commit
mailing list