Make it possible to disable NOP-In PDUs by the iSCSI initiator by setting

kern.cam.ctl.iscsi.ping_timeout to 0.  This fixes interoperability with
some initiators that don't properly support NOP-Ins, namely iPXE/gPXE.

Submitted by:	Chen Wen <pokkys@gmail.com>
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Edward Tomasz Napierala 2014-09-10 13:34:27 +00:00
parent a7e201bbac
commit 42c12ebf91

View File

@ -1002,6 +1002,19 @@ cfiscsi_callout(void *context)
}
#endif
if (ping_timeout <= 0) {
/*
* Pings are disabled. Don't send NOP-In in this case;
* user might have disabled pings to work around problems
* with certain initiators that can't properly handle
* NOP-In, such as iPXE. Reset the timeout, to avoid
* triggering reconnection, should the user decide to
* reenable them.
*/
cs->cs_timeout = 0;
return;
}
if (cs->cs_timeout >= ping_timeout) {
CFISCSI_SESSION_WARN(cs, "no ping reply (NOP-Out) after %d seconds; "
"dropping connection", ping_timeout);