From 82c853344888c2d541d6445a08ab31cbcf1c140f Mon Sep 17 00:00:00 2001 From: Mike Christie Date: Wed, 11 Sep 2013 17:31:39 -0700 Subject: [PATCH] iscsi tools: sync iscsi_if.h with kernel space This patches syncs iscsi_if.h with upstream commit commit ae542edb11c79706cd74d7bd54ebd7702965a7f3 Author: Adheer Chandravanshi Date: Mon Jul 1 05:54:11 2013 -0400 [SCSI] scsi_transport_iscsi: Exporting new attrs for iscsi session and conne --- include/iscsi_if.h | 204 ++++++++++++++++++------------------------------- usr/initiator.c | 12 +-- usr/initiator.h | 1 + usr/initiator_common.c | 38 +++++---- 4 files changed, 99 insertions(+), 156 deletions(-) diff --git a/include/iscsi_if.h b/include/iscsi_if.h index 20f2bc2..01d38e7 100644 --- a/include/iscsi_if.h +++ b/include/iscsi_if.h @@ -495,47 +495,64 @@ 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, +}; + +/* portal type */ +#define PORTAL_TYPE_IPV4 "ipv4" +#define PORTAL_TYPE_IPV6 "ipv6" /* iSCSI Flash Target params */ enum iscsi_flashnode_param { @@ -603,106 +620,32 @@ enum iscsi_flashnode_param { ISCSI_FLASHNODE_MAX, }; -#define ISCSI_FNODE_IS_FW_ASSIGNED_IPV6 \ - (1ULL << ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6) -#define ISCSI_FNODE_PORTAL_TYPE (1ULL << ISCSI_FLASHNODE_PORTAL_TYPE) -#define ISCSI_FNODE_AUTO_SND_TGT_DISABLE \ - (1ULL << ISCSI_FLASHNODE_OPT_AUTO_SND_TGT_DISABLE) -#define ISCSI_FNODE_DISCOVERY_SESS \ - (1ULL << ISCSI_FLASHNODE_OPT_DISCOVERY_SESS) -#define ISCSI_FNODE_ENTRY_EN (1ULL << ISCSI_FLASHNODE_ENTRY_EN) -#define ISCSI_FNODE_HDR_DGST_EN (1ULL << ISCSI_FLASHNODE_HDR_DGST_EN) -#define ISCSI_FNODE_DATA_DGST_EN (1ULL << ISCSI_FLASHNODE_DATA_DGST_EN) -#define ISCSI_FNODE_IMM_DATA_EN (1ULL << ISCSI_FLASHNODE_IMM_DATA_EN) -#define ISCSI_FNODE_INITIAL_R2T_EN (1ULL << ISCSI_FLASHNODE_INITIAL_R2T_EN) -#define ISCSI_FNODE_DATASEQ_INORDER \ - (1ULL << ISCSI_FLASHNODE_DATASEQ_INORDER) -#define ISCSI_FNODE_PDU_INORDER (1ULL << ISCSI_FLASHNODE_PDU_INORDER) -#define ISCSI_FNODE_CHAP_AUTH_EN (1ULL << ISCSI_FLASHNODE_CHAP_AUTH_EN) -#define ISCSI_FNODE_SNACK_REQ_EN (1ULL << ISCSI_FLASHNODE_SNACK_REQ_EN) -#define ISCSI_FNODE_DISCOVERY_LOGOUT_EN \ - (1ULL << ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN) -#define ISCSI_FNODE_BIDI_CHAP_EN (1ULL << ISCSI_FLASHNODE_BIDI_CHAP_EN) -#define ISCSI_FNODE_DISCOVERY_AUTH_OPTIONAL \ - (1ULL << ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL) -#define ISCSI_FNODE_ERL (1ULL << ISCSI_FLASHNODE_ERL) -#define ISCSI_FNODE_TCP_TIMESTAMP_STAT \ - (1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT) -#define ISCSI_FNODE_TCP_NAGLE_DISABLE \ - (1ULL << ISCSI_FLASHNODE_TCP_NAGLE_DISABLE) -#define ISCSI_FNODE_TCP_WSF_DISABLE \ - (1ULL << ISCSI_FLASHNODE_TCP_WSF_DISABLE) -#define ISCSI_FNODE_TCP_TIMER_SCALE \ - (1ULL << ISCSI_FLASHNODE_TCP_TIMER_SCALE) -#define ISCSI_FNODE_TCP_TIMESTAMP_ENABLE \ - (1ULL << ISCSI_FLASHNODE_TCP_TIMESTAMP_ENABLE) -#define ISCSI_FNODE_IP_FRAG_DISABLE \ - (1ULL << ISCSI_FLASHNODE_IP_FRAG_DISABLE) -#define ISCSI_FNODE_MAX_RECV_DLENGTH \ - (1ULL << ISCSI_FLASHNODE_MAX_RECV_DLENGTH) -#define ISCSI_FNODE_MAX_XMIT_DLENGTH \ - (1ULL << ISCSI_FLASHNODE_MAX_XMIT_DLENGTH) -#define ISCSI_FNODE_FIRST_BURST (1ULL << ISCSI_FLASHNODE_FIRST_BURST) -#define ISCSI_FNODE_DEF_TIME2WAIT (1ULL << ISCSI_FLASHNODE_DEF_TIME2WAIT) -#define ISCSI_FNODE_DEF_TIME2RETAIN \ - (1ULL << ISCSI_FLASHNODE_DEF_TIME2RETAIN) -#define ISCSI_FNODE_MAX_R2T (1ULL << ISCSI_FLASHNODE_MAX_R2T) -#define ISCSI_FNODE_KEEPALIVE_TMO (1ULL << ISCSI_FLASHNODE_KEEPALIVE_TMO) -#define ISCSI_FNODE_ISID (1ULL << ISCSI_FLASHNODE_ISID) -#define ISCSI_FNODE_TSID (1ULL << ISCSI_FLASHNODE_TSID) -#define ISCSI_FNODE_PORT (1ULL << ISCSI_FLASHNODE_PORT) -#define ISCSI_FNODE_MAX_BURST (1ULL << ISCSI_FLASHNODE_MAX_BURST) -#define ISCSI_FNODE_DEF_TMF_TMO (1ULL << ISCSI_FLASHNODE_DEF_TMF_TMO) -#define ISCSI_FNODE_IPADDR (1ULL << ISCSI_FLASHNODE_IPADDR) -#define ISCSI_FNODE_ALIAS (1ULL << ISCSI_FLASHNODE_ALIAS) -#define ISCSI_FNODE_REDIRECT_IPADDR \ - (1ULL << ISCSI_FLASHNODE_REDIRECT_IPADDR) -#define ISCSI_FNODE_MAX_SEGMENT_SIZE \ - (1ULL << ISCSI_FLASHNODE_MAX_SEGMENT_SIZE) -#define ISCSI_FNODE_LOCAL_PORT (1ULL << ISCSI_FLASHNODE_LOCAL_PORT) -#define ISCSI_FNODE_IPV4_TOS (1ULL << ISCSI_FLASHNODE_IPV4_TOS) -#define ISCSI_FNODE_IPV6_TC (1ULL << ISCSI_FLASHNODE_IPV6_TC) -#define ISCSI_FNODE_IPV6_FLOW_LABEL \ - (1ULL << ISCSI_FLASHNODE_IPV6_FLOW_LABEL) -#define ISCSI_FNODE_NAME (1ULL << ISCSI_FLASHNODE_NAME) -#define ISCSI_FNODE_TPGT (1ULL << ISCSI_FLASHNODE_TPGT) -#define ISCSI_FNODE_LINK_LOCAL_IPV6 \ - (1ULL << ISCSI_FLASHNODE_LINK_LOCAL_IPV6) -#define ISCSI_FNODE_DISCOVERY_PARENT_IDX \ - (1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX) -#define ISCSI_FNODE_DISCOVERY_PARENT_TYPE \ - (1ULL << ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE) -#define ISCSI_FNODE_TCP_XMIT_WSF (1ULL << ISCSI_FLASHNODE_TCP_XMIT_WSF) -#define ISCSI_FNODE_TCP_RECV_WSF (1ULL << ISCSI_FLASHNODE_TCP_RECV_WSF) -#define ISCSI_FNODE_CHAP_IN_IDX (1ULL << ISCSI_FLASHNODE_CHAP_IN_IDX) -#define ISCSI_FNODE_CHAP_OUT_IDX (1ULL << ISCSI_FLASHNODE_CHAP_OUT_IDX) -#define ISCSI_FNODE_USERNAME (1ULL << ISCSI_FLASHNODE_USERNAME) -#define ISCSI_FNODE_USERNAME_IN (1ULL << ISCSI_FLASHNODE_USERNAME_IN) -#define ISCSI_FNODE_PASSWORD (1ULL << ISCSI_FLASHNODE_PASSWORD) -#define ISCSI_FNODE_PASSWORD_IN (1ULL << ISCSI_FLASHNODE_PASSWORD_IN) -#define ISCSI_FNODE_STATSN (1ULL << ISCSI_FLASHNODE_STATSN) -#define ISCSI_FNODE_EXP_STATSN (1ULL << ISCSI_FLASHNODE_EXP_STATSN) -#define ISCSI_FNODE_IS_BOOT_TGT (1ULL << ISCSI_FLASHNODE_IS_BOOT_TGT) - 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__)); -/* 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_MAX, +enum iscsi_discovery_parent_type { + ISCSI_DISC_PARENT_UNKNOWN = 0x1, + ISCSI_DISC_PARENT_SENDTGT = 0x2, + ISCSI_DISC_PARENT_ISNS = 0x3, }; -#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) +/* 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 { @@ -739,7 +682,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 @@ -807,7 +750,6 @@ enum chap_type_e { #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; diff --git a/usr/initiator.c b/usr/initiator.c index a3b24b7..79d1779 100644 --- a/usr/initiator.c +++ b/usr/initiator.c @@ -384,17 +384,7 @@ __session_create(node_rec_t *rec, struct iscsi_transport *t) /* setup authentication variables for the session*/ iscsi_setup_authentication(session, &rec->session.auth); - session->param_mask = ~0ULL; - if (!(t->caps & CAP_MULTI_R2T)) - session->param_mask &= ~ISCSI_MAX_R2T; - if (!(t->caps & CAP_HDRDGST)) - session->param_mask &= ~ISCSI_HDRDGST_EN; - if (!(t->caps & CAP_DATADGST)) - session->param_mask &= ~ISCSI_DATADGST_EN; - if (!(t->caps & CAP_MARKERS)) { - session->param_mask &= ~ISCSI_IFMARKER_EN; - session->param_mask &= ~ISCSI_OFMARKER_EN; - } + iscsi_session_init_params(session); hostno = iscsi_sysfs_get_host_no_from_hwinfo(&rec->iface, &rc); if (!rc) { diff --git a/usr/initiator.h b/usr/initiator.h index d6dc02e..680640c 100644 --- a/usr/initiator.h +++ b/usr/initiator.h @@ -357,5 +357,6 @@ extern int iscsi_setup_portal(struct iscsi_conn *conn, char *address, int port); extern int iscsi_set_net_config(struct iscsi_transport *t, iscsi_session_t *session, struct iface_rec *iface); +extern void iscsi_session_init_params(struct iscsi_session *session); #endif /* INITIATOR_H */ diff --git a/usr/initiator_common.c b/usr/initiator_common.c index eb72795..0fb7edc 100644 --- a/usr/initiator_common.c +++ b/usr/initiator_common.c @@ -324,12 +324,32 @@ int iscsi_host_set_params(struct iscsi_session *session) return 0; } +static inline void iscsi_session_clear_param(struct iscsi_session *session, + int param) +{ + session->param_mask &= ~(1ULL << param); +} + +void iscsi_session_init_params(struct iscsi_session *session) +{ + session->param_mask = ~0ULL; + if (!(session->t->caps & CAP_MULTI_R2T)) + iscsi_session_clear_param(session, ISCSI_PARAM_MAX_R2T); + if (!(session->t->caps & CAP_HDRDGST)) + iscsi_session_clear_param(session, ISCSI_PARAM_HDRDGST_EN); + if (!(session->t->caps & CAP_DATADGST)) + iscsi_session_clear_param(session, ISCSI_PARAM_DATADGST_EN); + if (!(session->t->caps & CAP_MARKERS)) { + iscsi_session_clear_param(session, ISCSI_PARAM_IFMARKER_EN); + iscsi_session_clear_param(session, ISCSI_PARAM_OFMARKER_EN); + } +} + #define MAX_SESSION_PARAMS 32 int iscsi_session_set_params(struct iscsi_conn *conn) { struct iscsi_session *session = conn->session; - struct iscsi_transport *t = session->t; int i, rc; uint32_t one = 1, zero = 0; struct connparam { @@ -499,22 +519,12 @@ int iscsi_session_set_params(struct iscsi_conn *conn) }, }; - session->param_mask = ~0ULL; - if (!(t->caps & CAP_MULTI_R2T)) - session->param_mask &= ~ISCSI_MAX_R2T; - if (!(t->caps & CAP_HDRDGST)) - session->param_mask &= ~ISCSI_HDRDGST_EN; - if (!(t->caps & CAP_DATADGST)) - session->param_mask &= ~ISCSI_DATADGST_EN; - if (!(t->caps & CAP_MARKERS)) { - session->param_mask &= ~ISCSI_IFMARKER_EN; - session->param_mask &= ~ISCSI_OFMARKER_EN; - } + iscsi_session_init_params(session); /* some llds will send nops internally */ if (!iscsi_sysfs_session_supports_nop(session->id)) { - session->param_mask &= ~ISCSI_PING_TMO; - session->param_mask &= ~ISCSI_RECV_TMO; + iscsi_session_clear_param(session, ISCSI_PARAM_PING_TMO); + iscsi_session_clear_param(session, ISCSI_PARAM_RECV_TMO); } /* Entered full-feature phase! */ -- 1.8.3.1