diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2013-05-13 03:15:34 -0500 |
---|---|---|
committer | Mike Christie <michaelc@cs.wisc.edu> | 2013-05-28 02:58:28 -0500 |
commit | 42fa2585ff7a922ddea83d55aa7751a319cf29bf (patch) | |
tree | 636bde79ef22cd9245e472a7cc658cd4c1981bc8 /include | |
parent | fcab9b7b116ea861a5ed58b36ae88a3154b779d4 (diff) | |
download | open-iscsi-42fa2585ff7a922ddea83d55aa7751a319cf29bf.tar.gz |
From: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com>
This support lets the user manage the target entries in adapter flash
and
perform various operations like add, delete, login, logout,
and update the target information.
The sysfs entries will look as cited below:
/sys/bus/iscsi_flashnode/devices/flashnode_sess-<host_no>:<flashnode_id>/<session
attrs>
/sys/bus/iscsi_flashnode/devices/flashnode_conn-<host_no>:<flashnode_id>:<conn_id>/<conn
attrs>
Operations using iscsiadm:
=========================
List all target nodes stored in the FLASH of the adapter
\# iscsiadm -m host -H hostno -C flashnode -o show
View all parameters of one particular flash node
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o show
Update an entry and commit to adapter FLASH
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -n <name>
-v <value> -o update
Multiple name, value pairs can be specified in a single command for
update operation
Delete an entry
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o delete
Create a new entry
\# iscsiadm -m host -H hostno -C flashnode -o new -A <ipv4/ipv6>
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -n <name>
-v <value> -o update
Example, create new entry:
\#iscsiadm -m host -H 7 -C flashnode -o new -A ipv4
Flashnode index: 2
New flashnode for host7 added
\#iscsiadm -m host -H 7 -C flashnode -o show
qla4xxx: [0] 192.168.1.12:3260,2
iqn.2002-03.com.compellent:5000d310004b0716
qla4xxx: [1] 192.168.1.12:3260,2
qla4xxx: [2]
Here - The newly created entry is at flashnode_idx 2, use it to update
the entry
\# iscsiadm -m host -H 7 -C flashnode -x 2 -o update
flashnode.conn[0].ipaddress -v 192.168.1.13
\#iscsiadm -m host -H 7 -C flashnode -o show
qla4xxx: [0] 192.168.1.12:3260,2
iqn.2002-03.com.compellent:5000d310004b0716
qla4xxx: [1] 192.168.1.12:3260,2
qla4xxx: [2] 192.168.1.13:3260,0
Login
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o login
Logout
\# iscsiadm -m host -H hostno -C flashnode -x <flashnode_idx> -o logout
\# iscsiadm -m session -r sid -u
Signed-off-by: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com>
Signed-off-by: Manish Rangankar <manish.rangankar@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/iscsi_if.h | 190 |
1 files changed, 189 insertions, 1 deletions
diff --git a/include/iscsi_if.h b/include/iscsi_if.h index dad9fd8..20f2bc2 100644 --- a/include/iscsi_if.h +++ b/include/iscsi_if.h @@ -68,8 +68,14 @@ 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_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_MAX = ISCSI_UEVENT_DELETE_CHAP, + ISCSI_UEVENT_MAX = ISCSI_UEVENT_LOGOUT_FLASHNODE_SID, /* up events */ ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, @@ -219,6 +225,31 @@ 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; } u; union { /* messages k -> u */ @@ -276,6 +307,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,6 +317,7 @@ 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 */ }; struct iscsi_iface_param_info { @@ -502,6 +537,159 @@ enum iscsi_param { #define ISCSI_TGT_RESET_TMO (1ULL << ISCSI_PARAM_TGT_RESET_TMO) #define ISCSI_TARGET_ALIAS (1ULL << ISCSI_PARAM_TARGET_ALIAS) +/* 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, +}; + +#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, |