2c4537b
From 82c853344888c2d541d6445a08ab31cbcf1c140f Mon Sep 17 00:00:00 2001
2c4537b
From: Mike Christie <michaelc@cs.wisc.edu>
2c4537b
Date: Wed, 11 Sep 2013 17:31:39 -0700
2c4537b
Subject: [PATCH] iscsi tools: sync iscsi_if.h with kernel space
2c4537b
2c4537b
This patches syncs iscsi_if.h with upstream commit
2c4537b
2c4537b
commit ae542edb11c79706cd74d7bd54ebd7702965a7f3
2c4537b
Author: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com>
2c4537b
Date:   Mon Jul 1 05:54:11 2013 -0400
2c4537b
2c4537b
    [SCSI] scsi_transport_iscsi: Exporting new attrs for iscsi session
2c4537b
and conne
2c4537b
---
2c4537b
 include/iscsi_if.h     | 204 ++++++++++++++++++-------------------------------
2c4537b
 usr/initiator.c        |  12 +--
2c4537b
 usr/initiator.h        |   1 +
2c4537b
 usr/initiator_common.c |  38 +++++----
2c4537b
 4 files changed, 99 insertions(+), 156 deletions(-)
2c4537b
2c4537b
diff --git a/include/iscsi_if.h b/include/iscsi_if.h
2c4537b
index 20f2bc2..01d38e7 100644
2c4537b
--- a/include/iscsi_if.h
2c4537b
+++ b/include/iscsi_if.h
2c4537b
@@ -495,47 +495,64 @@ enum iscsi_param {
2c4537b
 
2c4537b
 	ISCSI_PARAM_TGT_RESET_TMO,
2c4537b
 	ISCSI_PARAM_TARGET_ALIAS,
2c4537b
+
2c4537b
+	ISCSI_PARAM_CHAP_IN_IDX,
2c4537b
+	ISCSI_PARAM_CHAP_OUT_IDX,
2c4537b
+
2c4537b
+	ISCSI_PARAM_BOOT_ROOT,
2c4537b
+	ISCSI_PARAM_BOOT_NIC,
2c4537b
+	ISCSI_PARAM_BOOT_TARGET,
2c4537b
+
2c4537b
+	ISCSI_PARAM_AUTO_SND_TGT_DISABLE,
2c4537b
+	ISCSI_PARAM_DISCOVERY_SESS,
2c4537b
+	ISCSI_PARAM_PORTAL_TYPE,
2c4537b
+	ISCSI_PARAM_CHAP_AUTH_EN,
2c4537b
+	ISCSI_PARAM_DISCOVERY_LOGOUT_EN,
2c4537b
+	ISCSI_PARAM_BIDI_CHAP_EN,
2c4537b
+	ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL,
2c4537b
+
2c4537b
+	ISCSI_PARAM_DEF_TIME2WAIT,
2c4537b
+	ISCSI_PARAM_DEF_TIME2RETAIN,
2c4537b
+	ISCSI_PARAM_MAX_SEGMENT_SIZE,
2c4537b
+	ISCSI_PARAM_STATSN,
2c4537b
+	ISCSI_PARAM_KEEPALIVE_TMO,
2c4537b
+	ISCSI_PARAM_LOCAL_PORT,
2c4537b
+	ISCSI_PARAM_TSID,
2c4537b
+	ISCSI_PARAM_DEF_TASKMGMT_TMO,
2c4537b
+
2c4537b
+	ISCSI_PARAM_TCP_TIMESTAMP_STAT,
2c4537b
+	ISCSI_PARAM_TCP_WSF_DISABLE,
2c4537b
+	ISCSI_PARAM_TCP_NAGLE_DISABLE,
2c4537b
+	ISCSI_PARAM_TCP_TIMER_SCALE,
2c4537b
+	ISCSI_PARAM_TCP_TIMESTAMP_EN,
2c4537b
+	ISCSI_PARAM_TCP_XMIT_WSF,
2c4537b
+	ISCSI_PARAM_TCP_RECV_WSF,
2c4537b
+	ISCSI_PARAM_IP_FRAGMENT_DISABLE,
2c4537b
+	ISCSI_PARAM_IPV4_TOS,
2c4537b
+	ISCSI_PARAM_IPV6_TC,
2c4537b
+	ISCSI_PARAM_IPV6_FLOW_LABEL,
2c4537b
+	ISCSI_PARAM_IS_FW_ASSIGNED_IPV6,
2c4537b
+
2c4537b
+	ISCSI_PARAM_DISCOVERY_PARENT_IDX,
2c4537b
+	ISCSI_PARAM_DISCOVERY_PARENT_TYPE,
2c4537b
 	/* must always be last */
2c4537b
 	ISCSI_PARAM_MAX,
2c4537b
 };
2c4537b
 
2c4537b
-#define ISCSI_MAX_RECV_DLENGTH		(1ULL << ISCSI_PARAM_MAX_RECV_DLENGTH)
2c4537b
-#define ISCSI_MAX_XMIT_DLENGTH		(1ULL << ISCSI_PARAM_MAX_XMIT_DLENGTH)
2c4537b
-#define ISCSI_HDRDGST_EN		(1ULL << ISCSI_PARAM_HDRDGST_EN)
2c4537b
-#define ISCSI_DATADGST_EN		(1ULL << ISCSI_PARAM_DATADGST_EN)
2c4537b
-#define ISCSI_INITIAL_R2T_EN		(1ULL << ISCSI_PARAM_INITIAL_R2T_EN)
2c4537b
-#define ISCSI_MAX_R2T			(1ULL << ISCSI_PARAM_MAX_R2T)
2c4537b
-#define ISCSI_IMM_DATA_EN		(1ULL << ISCSI_PARAM_IMM_DATA_EN)
2c4537b
-#define ISCSI_FIRST_BURST		(1ULL << ISCSI_PARAM_FIRST_BURST)
2c4537b
-#define ISCSI_MAX_BURST			(1ULL << ISCSI_PARAM_MAX_BURST)
2c4537b
-#define ISCSI_PDU_INORDER_EN		(1ULL << ISCSI_PARAM_PDU_INORDER_EN)
2c4537b
-#define ISCSI_DATASEQ_INORDER_EN	(1ULL << ISCSI_PARAM_DATASEQ_INORDER_EN)
2c4537b
-#define ISCSI_ERL			(1ULL << ISCSI_PARAM_ERL)
2c4537b
-#define ISCSI_IFMARKER_EN		(1ULL << ISCSI_PARAM_IFMARKER_EN)
2c4537b
-#define ISCSI_OFMARKER_EN		(1ULL << ISCSI_PARAM_OFMARKER_EN)
2c4537b
-#define ISCSI_EXP_STATSN		(1ULL << ISCSI_PARAM_EXP_STATSN)
2c4537b
-#define ISCSI_TARGET_NAME		(1ULL << ISCSI_PARAM_TARGET_NAME)
2c4537b
-#define ISCSI_TPGT			(1ULL << ISCSI_PARAM_TPGT)
2c4537b
-#define ISCSI_PERSISTENT_ADDRESS	(1ULL << ISCSI_PARAM_PERSISTENT_ADDRESS)
2c4537b
-#define ISCSI_PERSISTENT_PORT		(1ULL << ISCSI_PARAM_PERSISTENT_PORT)
2c4537b
-#define ISCSI_SESS_RECOVERY_TMO		(1ULL << ISCSI_PARAM_SESS_RECOVERY_TMO)
2c4537b
-#define ISCSI_CONN_PORT			(1ULL << ISCSI_PARAM_CONN_PORT)
2c4537b
-#define ISCSI_CONN_ADDRESS		(1ULL << ISCSI_PARAM_CONN_ADDRESS)
2c4537b
-#define ISCSI_USERNAME			(1ULL << ISCSI_PARAM_USERNAME)
2c4537b
-#define ISCSI_USERNAME_IN		(1ULL << ISCSI_PARAM_USERNAME_IN)
2c4537b
-#define ISCSI_PASSWORD			(1ULL << ISCSI_PARAM_PASSWORD)
2c4537b
-#define ISCSI_PASSWORD_IN		(1ULL << ISCSI_PARAM_PASSWORD_IN)
2c4537b
-#define ISCSI_FAST_ABORT		(1ULL << ISCSI_PARAM_FAST_ABORT)
2c4537b
-#define ISCSI_ABORT_TMO			(1ULL << ISCSI_PARAM_ABORT_TMO)
2c4537b
-#define ISCSI_LU_RESET_TMO		(1ULL << ISCSI_PARAM_LU_RESET_TMO)
2c4537b
-#define ISCSI_HOST_RESET_TMO		(1ULL << ISCSI_PARAM_HOST_RESET_TMO)
2c4537b
-#define ISCSI_PING_TMO			(1ULL << ISCSI_PARAM_PING_TMO)
2c4537b
-#define ISCSI_RECV_TMO			(1ULL << ISCSI_PARAM_RECV_TMO)
2c4537b
-#define ISCSI_IFACE_NAME		(1ULL << ISCSI_PARAM_IFACE_NAME)
2c4537b
-#define ISCSI_ISID			(1ULL << ISCSI_PARAM_ISID)
2c4537b
-#define ISCSI_INITIATOR_NAME		(1ULL << ISCSI_PARAM_INITIATOR_NAME)
2c4537b
-#define ISCSI_TGT_RESET_TMO		(1ULL << ISCSI_PARAM_TGT_RESET_TMO)
2c4537b
-#define ISCSI_TARGET_ALIAS		(1ULL << ISCSI_PARAM_TARGET_ALIAS)
2c4537b
+/* iSCSI HBA params */
2c4537b
+enum iscsi_host_param {
2c4537b
+	ISCSI_HOST_PARAM_HWADDRESS,
2c4537b
+	ISCSI_HOST_PARAM_INITIATOR_NAME,
2c4537b
+	ISCSI_HOST_PARAM_NETDEV_NAME,
2c4537b
+	ISCSI_HOST_PARAM_IPADDRESS,
2c4537b
+	ISCSI_HOST_PARAM_PORT_STATE,
2c4537b
+	ISCSI_HOST_PARAM_PORT_SPEED,
2c4537b
+	ISCSI_HOST_PARAM_MAX,
2c4537b
+};
2c4537b
+
2c4537b
+/* portal type */
2c4537b
+#define PORTAL_TYPE_IPV4	"ipv4"
2c4537b
+#define PORTAL_TYPE_IPV6	"ipv6"
2c4537b
 
2c4537b
 /* iSCSI Flash Target params */
2c4537b
 enum iscsi_flashnode_param {
2c4537b
@@ -603,106 +620,32 @@ enum iscsi_flashnode_param {
2c4537b
 	ISCSI_FLASHNODE_MAX,
2c4537b
 };
2c4537b
 
2c4537b
-#define ISCSI_FNODE_IS_FW_ASSIGNED_IPV6				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6)
2c4537b
-#define ISCSI_FNODE_PORTAL_TYPE		(1ULL << ISCSI_FLASHNODE_PORTAL_TYPE)
2c4537b
-#define ISCSI_FNODE_AUTO_SND_TGT_DISABLE			\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_OPT_AUTO_SND_TGT_DISABLE)
2c4537b
-#define ISCSI_FNODE_DISCOVERY_SESS				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_OPT_DISCOVERY_SESS)
2c4537b
-#define ISCSI_FNODE_ENTRY_EN		(1ULL << ISCSI_FLASHNODE_ENTRY_EN)
2c4537b
-#define ISCSI_FNODE_HDR_DGST_EN		(1ULL << ISCSI_FLASHNODE_HDR_DGST_EN)
2c4537b
-#define ISCSI_FNODE_DATA_DGST_EN	(1ULL << ISCSI_FLASHNODE_DATA_DGST_EN)
2c4537b
-#define ISCSI_FNODE_IMM_DATA_EN		(1ULL << ISCSI_FLASHNODE_IMM_DATA_EN)
2c4537b
-#define ISCSI_FNODE_INITIAL_R2T_EN	(1ULL << ISCSI_FLASHNODE_INITIAL_R2T_EN)
2c4537b
-#define ISCSI_FNODE_DATASEQ_INORDER				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DATASEQ_INORDER)
2c4537b
-#define ISCSI_FNODE_PDU_INORDER		(1ULL << ISCSI_FLASHNODE_PDU_INORDER)
2c4537b
-#define ISCSI_FNODE_CHAP_AUTH_EN	(1ULL << ISCSI_FLASHNODE_CHAP_AUTH_EN)
2c4537b
-#define ISCSI_FNODE_SNACK_REQ_EN	(1ULL << ISCSI_FLASHNODE_SNACK_REQ_EN)
2c4537b
-#define ISCSI_FNODE_DISCOVERY_LOGOUT_EN				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN)
2c4537b
-#define ISCSI_FNODE_BIDI_CHAP_EN	(1ULL << ISCSI_FLASHNODE_BIDI_CHAP_EN)
2c4537b
-#define ISCSI_FNODE_DISCOVERY_AUTH_OPTIONAL			\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL)
2c4537b
-#define ISCSI_FNODE_ERL			(1ULL << ISCSI_FLASHNODE_ERL)
2c4537b
-#define ISCSI_FNODE_TCP_TIMESTAMP_STAT				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT)
2c4537b
-#define ISCSI_FNODE_TCP_NAGLE_DISABLE				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_TCP_NAGLE_DISABLE)
2c4537b
-#define ISCSI_FNODE_TCP_WSF_DISABLE				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_TCP_WSF_DISABLE)
2c4537b
-#define ISCSI_FNODE_TCP_TIMER_SCALE				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_TCP_TIMER_SCALE)
2c4537b
-#define ISCSI_FNODE_TCP_TIMESTAMP_ENABLE			\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_ENABLE)
2c4537b
-#define ISCSI_FNODE_IP_FRAG_DISABLE				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_IP_FRAG_DISABLE)
2c4537b
-#define ISCSI_FNODE_MAX_RECV_DLENGTH				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_MAX_RECV_DLENGTH)
2c4537b
-#define ISCSI_FNODE_MAX_XMIT_DLENGTH				\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_MAX_XMIT_DLENGTH)
2c4537b
-#define ISCSI_FNODE_FIRST_BURST		(1ULL << ISCSI_FLASHNODE_FIRST_BURST)
2c4537b
-#define ISCSI_FNODE_DEF_TIME2WAIT	(1ULL << ISCSI_FLASHNODE_DEF_TIME2WAIT)
2c4537b
-#define ISCSI_FNODE_DEF_TIME2RETAIN	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DEF_TIME2RETAIN)
2c4537b
-#define ISCSI_FNODE_MAX_R2T		(1ULL << ISCSI_FLASHNODE_MAX_R2T)
2c4537b
-#define ISCSI_FNODE_KEEPALIVE_TMO	(1ULL << ISCSI_FLASHNODE_KEEPALIVE_TMO)
2c4537b
-#define ISCSI_FNODE_ISID		(1ULL << ISCSI_FLASHNODE_ISID)
2c4537b
-#define ISCSI_FNODE_TSID		(1ULL << ISCSI_FLASHNODE_TSID)
2c4537b
-#define ISCSI_FNODE_PORT		(1ULL << ISCSI_FLASHNODE_PORT)
2c4537b
-#define ISCSI_FNODE_MAX_BURST		(1ULL << ISCSI_FLASHNODE_MAX_BURST)
2c4537b
-#define ISCSI_FNODE_DEF_TMF_TMO		(1ULL << ISCSI_FLASHNODE_DEF_TMF_TMO)
2c4537b
-#define ISCSI_FNODE_IPADDR		(1ULL << ISCSI_FLASHNODE_IPADDR)
2c4537b
-#define ISCSI_FNODE_ALIAS		(1ULL << ISCSI_FLASHNODE_ALIAS)
2c4537b
-#define ISCSI_FNODE_REDIRECT_IPADDR	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_REDIRECT_IPADDR)
2c4537b
-#define ISCSI_FNODE_MAX_SEGMENT_SIZE	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_MAX_SEGMENT_SIZE)
2c4537b
-#define ISCSI_FNODE_LOCAL_PORT		(1ULL << ISCSI_FLASHNODE_LOCAL_PORT)
2c4537b
-#define ISCSI_FNODE_IPV4_TOS		(1ULL << ISCSI_FLASHNODE_IPV4_TOS)
2c4537b
-#define ISCSI_FNODE_IPV6_TC		(1ULL << ISCSI_FLASHNODE_IPV6_TC)
2c4537b
-#define ISCSI_FNODE_IPV6_FLOW_LABEL	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_IPV6_FLOW_LABEL)
2c4537b
-#define ISCSI_FNODE_NAME		(1ULL << ISCSI_FLASHNODE_NAME)
2c4537b
-#define ISCSI_FNODE_TPGT		(1ULL << ISCSI_FLASHNODE_TPGT)
2c4537b
-#define ISCSI_FNODE_LINK_LOCAL_IPV6	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_LINK_LOCAL_IPV6)
2c4537b
-#define ISCSI_FNODE_DISCOVERY_PARENT_IDX	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX)
2c4537b
-#define ISCSI_FNODE_DISCOVERY_PARENT_TYPE	\
2c4537b
-	(1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE)
2c4537b
-#define ISCSI_FNODE_TCP_XMIT_WSF	(1ULL << ISCSI_FLASHNODE_TCP_XMIT_WSF)
2c4537b
-#define ISCSI_FNODE_TCP_RECV_WSF	(1ULL << ISCSI_FLASHNODE_TCP_RECV_WSF)
2c4537b
-#define ISCSI_FNODE_CHAP_IN_IDX		(1ULL << ISCSI_FLASHNODE_CHAP_IN_IDX)
2c4537b
-#define ISCSI_FNODE_CHAP_OUT_IDX	(1ULL << ISCSI_FLASHNODE_CHAP_OUT_IDX)
2c4537b
-#define ISCSI_FNODE_USERNAME		(1ULL << ISCSI_FLASHNODE_USERNAME)
2c4537b
-#define ISCSI_FNODE_USERNAME_IN		(1ULL << ISCSI_FLASHNODE_USERNAME_IN)
2c4537b
-#define ISCSI_FNODE_PASSWORD		(1ULL << ISCSI_FLASHNODE_PASSWORD)
2c4537b
-#define ISCSI_FNODE_PASSWORD_IN		(1ULL << ISCSI_FLASHNODE_PASSWORD_IN)
2c4537b
-#define ISCSI_FNODE_STATSN		(1ULL << ISCSI_FLASHNODE_STATSN)
2c4537b
-#define ISCSI_FNODE_EXP_STATSN		(1ULL << ISCSI_FLASHNODE_EXP_STATSN)
2c4537b
-#define ISCSI_FNODE_IS_BOOT_TGT		(1ULL << ISCSI_FLASHNODE_IS_BOOT_TGT)
2c4537b
-
2c4537b
 struct iscsi_flashnode_param_info {
2c4537b
 	uint32_t len;		/* Actual length of the param */
2c4537b
 	uint16_t param;		/* iscsi param value */
2c4537b
 	uint8_t value[0];	/* length sized value follows */
2c4537b
 } __attribute__((__packed__));
2c4537b
 
2c4537b
-/* iSCSI HBA params */
2c4537b
-enum iscsi_host_param {
2c4537b
-	ISCSI_HOST_PARAM_HWADDRESS,
2c4537b
-	ISCSI_HOST_PARAM_INITIATOR_NAME,
2c4537b
-	ISCSI_HOST_PARAM_NETDEV_NAME,
2c4537b
-	ISCSI_HOST_PARAM_IPADDRESS,
2c4537b
-	ISCSI_HOST_PARAM_MAX,
2c4537b
+enum iscsi_discovery_parent_type {
2c4537b
+	ISCSI_DISC_PARENT_UNKNOWN	= 0x1,
2c4537b
+	ISCSI_DISC_PARENT_SENDTGT	= 0x2,
2c4537b
+	ISCSI_DISC_PARENT_ISNS		= 0x3,
2c4537b
 };
2c4537b
 
2c4537b
-#define ISCSI_HOST_HWADDRESS		(1ULL << ISCSI_HOST_PARAM_HWADDRESS)
2c4537b
-#define ISCSI_HOST_INITIATOR_NAME	(1ULL << ISCSI_HOST_PARAM_INITIATOR_NAME)
2c4537b
-#define ISCSI_HOST_NETDEV_NAME		(1ULL << ISCSI_HOST_PARAM_NETDEV_NAME)
2c4537b
-#define ISCSI_HOST_IPADDRESS		(1ULL << ISCSI_HOST_PARAM_IPADDRESS)
2c4537b
+/* iSCSI port Speed */
2c4537b
+enum iscsi_port_speed {
2c4537b
+	ISCSI_PORT_SPEED_UNKNOWN	= 0x1,
2c4537b
+	ISCSI_PORT_SPEED_10MBPS		= 0x2,
2c4537b
+	ISCSI_PORT_SPEED_100MBPS	= 0x4,
2c4537b
+	ISCSI_PORT_SPEED_1GBPS		= 0x8,
2c4537b
+	ISCSI_PORT_SPEED_10GBPS		= 0x10,
2c4537b
+};
2c4537b
+
2c4537b
+/* iSCSI port state */
2c4537b
+enum iscsi_port_state {
2c4537b
+	ISCSI_PORT_STATE_DOWN		= 0x1,
2c4537b
+	ISCSI_PORT_STATE_UP		= 0x2,
2c4537b
+};
2c4537b
 
2c4537b
 /* iSCSI PING status/error code */
2c4537b
 enum iscsi_ping_status_code {
2c4537b
@@ -739,7 +682,7 @@ enum iscsi_ping_status_code {
2c4537b
 #define CAP_DIGEST_OFFLOAD	0x1000	/* offload hdr and data digests */
2c4537b
 #define CAP_PADDING_OFFLOAD	0x2000	/* offload padding insertion, removal,
2c4537b
 					 and verification */
2c4537b
-#define CAP_LOGIN_OFFLOAD	0x4000  /* offload normal session login */
2c4537b
+#define CAP_LOGIN_OFFLOAD	0x4000  /* offload session login */
2c4537b
 
2c4537b
 /*
2c4537b
  * These flags describes reason of stop_conn() call
2c4537b
@@ -807,7 +750,6 @@ enum chap_type_e {
2c4537b
 
2c4537b
 #define ISCSI_CHAP_AUTH_NAME_MAX_LEN	256
2c4537b
 #define ISCSI_CHAP_AUTH_SECRET_MAX_LEN	256
2c4537b
-
2c4537b
 struct iscsi_chap_rec {
2c4537b
 	uint16_t chap_tbl_idx;
2c4537b
 	enum chap_type_e chap_type;
2c4537b
diff --git a/usr/initiator.c b/usr/initiator.c
2c4537b
index a3b24b7..79d1779 100644
2c4537b
--- a/usr/initiator.c
2c4537b
+++ b/usr/initiator.c
2c4537b
@@ -384,17 +384,7 @@ __session_create(node_rec_t *rec, struct iscsi_transport *t)
2c4537b
 	/* setup authentication variables for the session*/
2c4537b
 	iscsi_setup_authentication(session, &rec->session.auth);
2c4537b
 
2c4537b
-	session->param_mask = ~0ULL;
2c4537b
-	if (!(t->caps & CAP_MULTI_R2T))
2c4537b
-		session->param_mask &= ~ISCSI_MAX_R2T;
2c4537b
-	if (!(t->caps & CAP_HDRDGST))
2c4537b
-		session->param_mask &= ~ISCSI_HDRDGST_EN;
2c4537b
-	if (!(t->caps & CAP_DATADGST))
2c4537b
-		session->param_mask &= ~ISCSI_DATADGST_EN;
2c4537b
-	if (!(t->caps & CAP_MARKERS)) {
2c4537b
-		session->param_mask &= ~ISCSI_IFMARKER_EN;
2c4537b
-		session->param_mask &= ~ISCSI_OFMARKER_EN;
2c4537b
-	}
2c4537b
+	iscsi_session_init_params(session);
2c4537b
 
2c4537b
 	hostno = iscsi_sysfs_get_host_no_from_hwinfo(&rec->iface, &rc);
2c4537b
 	if (!rc) {
2c4537b
diff --git a/usr/initiator.h b/usr/initiator.h
2c4537b
index d6dc02e..680640c 100644
2c4537b
--- a/usr/initiator.h
2c4537b
+++ b/usr/initiator.h
2c4537b
@@ -357,5 +357,6 @@ extern int iscsi_setup_portal(struct iscsi_conn *conn, char *address, int port);
2c4537b
 extern int iscsi_set_net_config(struct iscsi_transport *t,
2c4537b
 				iscsi_session_t *session,
2c4537b
 				struct iface_rec *iface);
2c4537b
+extern void iscsi_session_init_params(struct iscsi_session *session);
2c4537b
 
2c4537b
 #endif /* INITIATOR_H */
2c4537b
diff --git a/usr/initiator_common.c b/usr/initiator_common.c
2c4537b
index eb72795..0fb7edc 100644
2c4537b
--- a/usr/initiator_common.c
2c4537b
+++ b/usr/initiator_common.c
2c4537b
@@ -324,12 +324,32 @@ int iscsi_host_set_params(struct iscsi_session *session)
2c4537b
 	return 0;
2c4537b
 }
2c4537b
 
2c4537b
+static inline void iscsi_session_clear_param(struct iscsi_session *session,
2c4537b
+					     int param)
2c4537b
+{
2c4537b
+	session->param_mask &= ~(1ULL << param);
2c4537b
+}
2c4537b
+
2c4537b
+void iscsi_session_init_params(struct iscsi_session *session)
2c4537b
+{
2c4537b
+	session->param_mask = ~0ULL;
2c4537b
+	if (!(session->t->caps & CAP_MULTI_R2T))
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_MAX_R2T);
2c4537b
+	if (!(session->t->caps & CAP_HDRDGST))
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_HDRDGST_EN); 
2c4537b
+	if (!(session->t->caps & CAP_DATADGST))
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_DATADGST_EN); 
2c4537b
+	if (!(session->t->caps & CAP_MARKERS)) {
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_IFMARKER_EN);
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_OFMARKER_EN);
2c4537b
+	}
2c4537b
+}
2c4537b
+
2c4537b
 #define MAX_SESSION_PARAMS 32
2c4537b
 
2c4537b
 int iscsi_session_set_params(struct iscsi_conn *conn)
2c4537b
 {
2c4537b
 	struct iscsi_session *session = conn->session;
2c4537b
-	struct iscsi_transport *t = session->t;
2c4537b
 	int i, rc;
2c4537b
 	uint32_t one = 1, zero = 0;
2c4537b
 	struct connparam {
2c4537b
@@ -499,22 +519,12 @@ int iscsi_session_set_params(struct iscsi_conn *conn)
2c4537b
 		},
2c4537b
 	};
2c4537b
 
2c4537b
-	session->param_mask = ~0ULL;
2c4537b
-	if (!(t->caps & CAP_MULTI_R2T))
2c4537b
-		session->param_mask &= ~ISCSI_MAX_R2T;
2c4537b
-	if (!(t->caps & CAP_HDRDGST))
2c4537b
-		session->param_mask &= ~ISCSI_HDRDGST_EN;
2c4537b
-	if (!(t->caps & CAP_DATADGST))
2c4537b
-		session->param_mask &= ~ISCSI_DATADGST_EN;
2c4537b
-	if (!(t->caps & CAP_MARKERS)) {
2c4537b
-		session->param_mask &= ~ISCSI_IFMARKER_EN;
2c4537b
-		session->param_mask &= ~ISCSI_OFMARKER_EN;
2c4537b
-	}
2c4537b
+	iscsi_session_init_params(session);
2c4537b
 
2c4537b
 	/* some llds will send nops internally */
2c4537b
 	if (!iscsi_sysfs_session_supports_nop(session->id)) {
2c4537b
-		session->param_mask &= ~ISCSI_PING_TMO;
2c4537b
-		session->param_mask &= ~ISCSI_RECV_TMO;
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_PING_TMO); 
2c4537b
+		iscsi_session_clear_param(session, ISCSI_PARAM_RECV_TMO);
2c4537b
 	}
2c4537b
 
2c4537b
 	/* Entered full-feature phase! */
2c4537b
-- 
2c4537b
1.8.3.1
2c4537b